[OCI] 企業でOCIの利用標準化するときのコンパートメント払い出し手順をまとめてみた

# はじめに
企業におけるクラウド利用が進むにつれ、各企業では全社的なクラウド利用の標準化や統制などが必要になってきます。
標準化の中では、セキュリティ、コスト管理などの基準策定などに加えて、実際に各ユーザ部門からのクラウド利用の申請に対して環境を払い出す役割も担うケースがあります。

OCIではコンパートメントの概念があるため、社内の各ユーザからOCI利用のリクエストがあった場合には、コンパートメントを払い出して利用してもらうことになるケースが多いと思います。

この記事では、OCIのコンパートメントを払い出して利用してもらうまでの手順をまとめてみます。


# 利用開始までの流れ
今回想定する環境の構成はこちらです。
第二階層のProjectコンパートメント配下に、払い出し用の各コンパートメントが構成されています。
このような構成にすることで、各払い出しコンパートメントに関する権限の統制やコストの管理、払い出し状況の可視化もしやすくなります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2357379/19bf8c81-a68c-4a35-6eed-adb38f1c162c.png)

ここでは利用者に払い出す専用コンパートメントpoc01と、poc01内の管理権限を与えるためのユーザ、グループ、ポリシーを作成します。
実際に行う操作の流れはこちら。
1. コンパートメント作成
1. 利用者用IAMユーザの作成
1. グループ作成 / グループへのユーザ追加
1. IAMポリシー作成
1. 利用開始


# 手順
## 1. コンパートメントの作成
- ナビゲーション・メニューを開き、[アイデンティティとセキュリティ] > [アイデンティティ] > [コンパートメント] をクリックする
- 作成するコンパートメントの親にあたる、[project] コンパートメント を選択
- Projectコンパートメントの詳細ページに遷移したら、[コンパートメントの作成] をクリックする
- コンパートメントの名前と説明を記載し、[コンパートメントの作成] をクリックする

これで払い出すコンパートメント poc01 の作成が完了しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2357379/2cc94c77-58cb-4c34-9e57-174e8f94b7fd.png)

ドキュメントはこちらです。

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

## 2. IAMユーザの作成
実際の運用では、複数のユーザがこのコンパートメントを利用するリクエストが上がることも想定されるため、csvファイルによるインポートを利用して一括でユーザを作成します。
(申請を受け付ける際に、利用者側でcsvファイルに作成するユーザを記入もらう仕組みにするとよさそうですね)

- ナビゲーション・メニューを開き、[アイデンティティとセキュリティ] > [アイデンティティ] > [ドメイン] をクリックする
- [Default] ドメインをクリックする (他のドメインを使用の場合はそちらをクリックしてください)
- 左側のメニューから、[ユーザー] をクリックする
- [その他のアクション] > [ユーザーのインポート] をクリックする
- [サンプル・ファイルのダウンロード] をクリックし、インポートするcsvのテンプレートをダウンロードする
- ローカルPCでcsvファイルを編集し、追加するユーザの情報を記入する
- 先程のユーザのインポート画面で、編集したcsvをアップロードした後、[インポート] をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2357379/9a86c4eb-8ae6-b986-2f90-14a056ca21bf.png)

これでcsvファイルに記入したユーザが全て一括で作成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2357379/3810761f-db5e-ef01-a125-bc16b703c2bb.png)

:::note info
インポートするcsvは今回このようになっています。
記入したのは、A列(User ID)、B列(Last Name)、C列(First Name)、Q列(Work Email)、S列(Primary Email Type)で、これで無事に成功しました。(その他の列は空白)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2357379/9d93eb17-7044-a2a5-9168-7b875f05fe66.png)
:::
ユーザのインポートに関するドキュメントはこちらをご覧ください。

https://docs.oracle.com/ja-jp/iaas/Content/Identity/datatransfer/import-users.htm

## 3. グループの作成 / グループへのユーザ追加
作成したユーザを所属させてポリシーを付与するためのグループを作成し、そのグループにユーザを追加します。
- ナビゲーション・メニューを開き、[アイデンティティとセキュリティ] > [アイデンティティ] > [ドメイン] をクリックする
- [Default] ドメインをクリックする (他のドメインを使用の場合はそちらをクリックしてください)
- 左側のメニューから、[グループ] をクリックする
- [グループの作成] をクリックする
- グループ名と説明を記入し、先ほど作成したpoc01用のユーザにチェックを入れてから [作成] をクリックする 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2357379/fce6f698-ec2a-18df-c0a2-c31defac5d68.png)

これでpoc01用のグループの作成とユーザの追加が完了しました。

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

## 4. IAMポリシー作成
- ナビゲーション・メニューを開き、[アイデンティティとセキュリティ] > [アイデンティティ] > [ポリシー] をクリックする
- [ポリシーの作成] をクリックする
- 名前と説明を記入し、手動エディタで以下のポリシーを入力する
`Allow group prj_poc01 to manage all-resources in compartment poc01`
- [作成] をクリックする

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2357379/73926293-6ecd-c20a-b57d-cc0bc1d0f1cb.png)

https://docs.oracle.com/ja-jp/iaas/Content/Identity/policiesgs/get-started-with-policies.htm

## 5. 利用開始
ここまでの手順でユーザにpoc01コンパートメントの管理権限を付与できました。
最後に実際にリソースが作成できるかを確かめてみます。

新規ユーザでログインできました。このときMFAの登録も必要になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2357379/7535172d-c27f-bde1-21ce-1a0010f3ff5c.png)

Computeインスタンスを作成してみる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2357379/857f78b8-1f2a-829e-dd19-2f3ab6d20786.png)

無事にインスタンスを作成することができました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2357379/d7351437-1502-f07a-4e23-b760e5d3c30e.png)

# まとめ
この記事では、OCIで各リクエストに応じてOCI環境(コンパートメント)を払い出す手順をまとめてみました。
実運用に落とし込んでルーティン化すれば、そこまでの手間は掛からずに環境払い出しまでできると感じます。
このように、簡単に環境を分離して利用できるのはOCIの大きなメリットの一つですね。