OCIでコンパートメントの作成とアクセス制御の設定方法

## 概要
* OCIアカウント作成はほかにも記事がいろいろできているのでコンパートメント作成およびユーザのアクセス制限の設定についてまとめます
* コンパートメントを作成してユーザを振り分けることで１つのアカウントでユーザ毎にアクセス制御ができます

## コンパートメント
コンパートメントを作成します。
* ![001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/e857ecc0-2f81-aee7-b935-838cfb61de9d.png)
* ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/a804b507-34e5-509a-de1d-6624262726df.png)
* ![003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/799c82bf-e492-bf41-a9c8-e884afb14e00.png)
* コンパートメントは階層構造を持つことができるので先ほど作成したコンパートメントにさらに子供のコンパーメントを作成します
* ![004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/874d47a2-376d-7d9e-08ce-e5403e27b330.png)
* ![005.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/f924b3a7-c389-2209-eef9-9db0ce81866e.png)
* ![007.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/db5149c1-9ed9-5925-e6a0-68a7d0f84e76.png)
* 最終的には以下のようになります
* ![008.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/e9130a85-bd96-83f7-8fb6-11fc8a8fd4b2.png)

## インスタンスの作成
* 作成したコンパートメントに対してインスタンスを作成します
* それぞれのコンパートメントに対して１つずつ合計２つインスタンスを作成します左側にあるコンパートメントを選ぶメニューで使用するコンパートメントを選択します。
* ![ins001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/06e16f0b-9fb3-77f9-66e3-1016f5ec29f5.png)
* インスタンスを作成します
* ![ins002_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/bdac3253-3612-852f-d46b-e20b894ff112.png)
* SSHキーもこのタイミングで作成します 共通したものを使う場合は公開キーファイルのアップロードを行います。
* ![ins002_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/8bdff59a-6215-214c-42dd-710bee4c867d.png)
* もう片方のほうも作成します
* ![ins004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/d8a0cbef-eb21-4c40-992f-bae0c75cf3d0.png)
* ![ins005_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/d596047b-2c25-871c-2b55-4268323f2c61.png)
* 先ほど作成したインスタンスと鍵を共通して使うためアップロードします。
* ![ins005_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/541ce722-b0fc-660e-8fb2-45914220cd5d.png)

## ユーザの作成
* ユーザを作成します。作成したユーザは後続の手順でグループに紐づけます
* ![user001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/4af89569-fdea-ca62-a8b9-b36e2329e828.png)
* ここではいったん作成済みのグループに所属させます
* ![user002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/5bc78d17-4eba-e982-ced8-a4319d3f068a.png)
* ユーザを作成するとメールが届くためメールを確認しておきますまた2段階認証もセットしておきます
* ![user003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/6e1c457b-002d-2262-b4fb-55253a156b22.png)


## グループの作成
* OCIでは権限を振る際にグループに対して設定するためユーザを所属させるグループを作成します
* 先ほど作成したユーザをグループに所属させますまた一時的に所属させたグループからは削除します
* ![group001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/4bca9821-a33a-e303-e676-6c295659e8e1.png)
* ![group002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/4376b7db-d474-ab94-90cb-5e3d21975345.png)


## ポリシーの作成
* グループに対して権限を設定します。AWSの場合はjsonで設定をしますが、OCIでは文章で設定を行います。使用できる構文等は[参考資料](https://docs.oracle.com/ja-jp/iaas/Content/Identity/Concepts/policysyntax.htm)を参照してください
* アクセスを許可したいコンパートメントを選択してポリシービルダーに何を許可するか？などを記載します
* コンパーメントなどは間違えたものを入力すると決定時にエラーになるので適宜修正してください
* ![policy001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/07368ad6-8ddd-e4c4-388b-350ade5c13fc.png)
* ![policy002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/a6786c42-5d91-ac99-31ef-d9bc91acac4a.png)

* このグループ、ポリシーのまわりはAWSのIAMIdentityCenterに似ているところがあるので使ったことがある人はイメージがつきやすいかと思います。


## 動作確認
* 作成したユーザでログインを行うと許されているコンパーメントのインスタンスのみしか見られないことが確認できます
* ほかのコンパートメントは選択できなくなっています
* ![conpins001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657697/e59dac94-ed52-bbcc-092c-9a2deb97822d.png)

### 参考資料

* https://docs.public.oneportal.content.oci.oraclecloud.com/ja-jp/iaas/Content/GSG/Concepts/baremetalintro.htm
* https://docs.oracle.com/ja-jp/iaas/Content/GSG/Tasks/addingusers.htm
* https://docs.oracle.com/ja-jp/iaas/Content/Identity/Concepts/policysyntax.htm