OCIのユーザ管理とポリシー設定について確認する

# はじめに
OCIのユーザ管理およびポリシー設定について、以下のようなアーキテクチャを例にして確認したいと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/39aab9d5-c01f-bb28-f730-925c65202cee.png)

# 設計方針

以下の図のように、ネットワーク管理者とDB管理者はテナンシーで共通、アプリケーション開発者はコンパートメントごとにアクセスを制限します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/d8f937a8-1296-a8d2-8521-00427b645114.png)


|ポリシー|概要|グループ|コンパートメント
|:---|:---|:---|:---
|network-admin|クラウドネットワーク管理者|net_admin|ルート
|app_A|アプリケーションA開発者|app_A|system_A
|app_B|アプリケーションB開発者|app_B|system_B
|DBA|Autonoumous DB管理者|DBA|ルート

:::note info
この設計方針はベストプラクティスではなく、__一例__ です。
:::

# コンパートメント作成

OCIコンソールで、`アイデンティティ` → `コンパートメント` → `コンパートメントの作成`をクリックします。
以下の図のように設定してコンパートメントを作成します。

![スクリーンショット 2023-09-05 13.44.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/81596d8f-fea6-9a8f-30d6-9fec9c18a96b.png)

同様にもう一つのコンパートメント`system_B`を作成します。

# グループの作成
OCIではグループに対してポリシーを設定するので、ユーザが1人の場合でも必ずグループに属する必要があります。

以下の図のようにコンソールでグループを作成します。このとき、ユーザは割り当てずにグループのみ作成します。

![スクリーンショット 2023-09-05 13.47.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/473e5d43-3848-ffef-f56d-ec22fc18367f.png)

同様に、4つのグループを作成します。

![スクリーンショット 2023-09-05 15.18.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/e1ff1607-8916-5470-d68a-d11409874063.png)

# ユーザの作成
以下の図のようにコンソールでユーザを作成します。ユーザ作成時に、先ほど作成したグループ名を選択します。

なお、通常はメールアドレスをユーザ名にすることが多いですが、今回は私1人で複数のユーザを作成するので、ユーザ名とメールアドレスを別々にしています。

![スクリーンショット 2023-09-05 13.53.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/efac4989-6298-ed64-7629-3786047d666a.png)

## アクティベーション
ユーザを作成すると、設定したメールアドレスに以下のようなメールが届くので、リンクをクリックします。

![スクリーンショット 2023-09-05 13.54.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/de6c20b4-ec16-382c-aa39-b17a6f69dec0.png)

以下の画面になるので、パスワードを設定してログインします。

![スクリーンショット 2023-09-05 13.55.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/133e7ced-3505-98fa-0c9b-f3cc3f4c73ec.png)

スクリーンショット取り忘れましたが、初回ログイン時にMFAの設定を促されますので、画面に従ってMFAを設定します。

同様にその他のユーザを設定します。

# ポリシーの設定

OCIコンソールの`アイデンティティ` → `ポリシー`で`ポリシーの作成`をクリックします。
以下のようにしてNetwork管理者用のポリシーを設定します。

![スクリーンショット 2023-09-05 15.48.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/2258ff03-3a18-3f89-fba3-590713800c93.png)

同様にして以下の設定で4つのポリシーを設定します。

|ポリシー|コンパートメント|ステートメント
|:---|:---|:---
|network-admin|ルート|Allow group net_admin to manage virtual-network-family in tenancy
|app_A|system_A|Allow group app_A to manage instance-family in compartment system_A<br>Allow group app_A to use volume-family in compartment system_A<br>Allow group app_A to use virtual-network-family in compartment system_A
|app_B|system_B|Allow group app_B to manage instance-family in compartment system_B<br>Allow group app_B to use volume-family in compartment system_B<br>Allow group app_B to use virtual-network-family in compartment system_B
|DBA|ルート|Allow group DBA to manage autonomous-database in tenancy

https://docs.oracle.com/ja-jp/iaas/Content/Identity/policysyntax/policy-syntax.htm

https://docs.oracle.com/ja-jp/iaas/Content/Identity/policyreference/policyreference.htm

# 確認
各ユーザでログインして、想定通りにポリシーが設定できていることを確認します。
（想定通りでした）