OCIでコスト管理だけをするユーザーを作成したい


# 先に結論
以下のポリシーを、ユーザーの所属するグループに付与する。

```
Allow group <グループ名> to read usage-budgets in tenancy
Allow group <グループ名> to read usage-reports in tenancy

（請求系の権限も必要ならなら下記も追加）↓
Allow group <グループ名> to read accountmanagement-family in tenancy
```

# 上記ポリシー文の解説（読み飛ばしてもOK）
ポリシー文は公式ドキュメントによると以下の構成になってます。

> Allow `<subject>` to `<verb>` `<resource-type>` in `<location>` where <conditions>

- Subject: どこのグループに設定する？という設定。基本的には ```group <グループ名>```という書き方をする。IAMドメイン環境では、グループ名の前にドメインの指定をする'<ドメイン名>/<グループ名>'
- verb: どんな権限を与えるか？という設定。
    - inpect: 監査用の権限。サードパーティー監査者等に与えることが多い。リソースの概要を見ることができる。
    - read: 内部監査者用の権限。リソースの詳細を見ることができる。
    - use: 作業者の権限。リソースの作成・更新等を実施することができる。
    - manage: 管理者権限。 リソースの削除なども実施することができる。
- resource-type: なんのリソースに権限を与える？という設定。
- location: どの範囲に権限を与えるか？という設定。テナント全体に与えるのか、特定のコンパートメントにだけ与えるのかを指定。

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

以上を踏まえて、結論で出した設定は
- Subject: コスト管理だけをするユーザーが所属するグループ名
- verb: to readで、リソースの詳細を見ることができる権限を付与。
- resource-type: コスト管理用に以下の3つを与えている。 
    - usage-budgets: コスト管理の予算についてのリソース
    - usage-reports: リソース使用状況やコストに関するレポートを閲覧するためのリソース 


## Q. なんでグループの指定なの？
A. OCIではIAMポリシーはユーザーに対してポリシー指定することができないから。
なので、専用の権限が必要なグループを作成し、そのグループにユーザーを紐づければOK。

# 作業手順（コンソールでの概要手順）
## 1.コスト管理だけをするユーザーを作成する
左上のハンバーガーメニューから、[アイデンティティーとセキュリティ]→[ドメイン]を選択し、
[ユーザー]→[ユーザーの作成]で、新規ユーザーを作成
![CleanShot 2024-09-06 at 15.50.21@2x.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276568/2b52a2b4-bb86-f808-2a07-8fb60f7df606.png)
![CleanShot 2024-09-06 at 15.52.14@2x.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276568/80bdaa46-2938-83d8-f200-58167a296ea1.png)

## 2.グループを作成して、コスト管理だけをするユーザーを紐づける
左上のハンバーガーメニューから、[アイデンティティーとセキュリティ]→[ドメイン]を選択し、
[グループ]→[グループの作成]でグループを作成
作成時には、画面下のユーザー一覧から、1で作成したユーザーをチェックしてください。
![CleanShot 2024-09-06 at 15.50.21@2x.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276568/2b52a2b4-bb86-f808-2a07-8fb60f7df606.png)
![CleanShot 2024-09-06 at 15.53.36@2x.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276568/00673019-27e8-d781-3433-134496658979.png)

## 3.ポリシーを作成
左上のハンバーガーメニューから[アイデンティティーとセキュリティ]→[ポリシー]を選択し、
※今回はテナンシに紐づけるため※左ペインのコンパートメントを[〜〜(ルート)]を選択し、右ペインの[ポリシーの作成]をクリック
![CleanShot 2024-09-06 at 15.54.41@2x.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276568/370d56db-f86b-d491-7fb3-0493a4707278.png)
![CleanShot 2024-09-06 at 15.56.36@2x.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276568/5aa44942-be66-cb7f-d4ef-28e3412e01c4.png)


ポリシービルダーにて、手動エディタの表示にチェックを入れて、
結論で書いたポリシー文を入力する。（グループ名は置き換えてくださいね）
![CleanShot 2024-09-06 at 15.59.55@2x.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276568/f5790788-2505-f330-504b-d0a235293495.png)


# 動作確認の画面ショット集

- コスト分析画面は見れる
![CleanShot 2024-09-06 at 16.05.43@2x.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276568/14a2bef5-10d0-3f97-8221-2beb5b54e36b.png)

- 予算画面は見れる
![CleanShot 2024-09-06 at 16.07.50@2x.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276568/29c5e55d-c041-9001-9bfb-6c984492cb0b.png)

- 予算の作成は権限ナシでエラーとなる
![CleanShot 2024-09-06 at 16.08.55@2x.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276568/c2aadf4b-ae28-ab80-1980-343b15702c22.png)

- ComputeやVCNなどは何のリソースがあるかすら見れない
![CleanShot 2024-09-06 at 16.12.06@2x.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276568/0c8cae25-43cf-b09e-7ecf-364f84cd2be8.png)
![CleanShot 2024-09-06 at 16.13.34@2x.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276568/b820615f-cac2-3a0e-30a7-f795a6f0e041.png)

# 参考

- 公式のポリシー解説

https://docs.oracle.com/ja-jp/iaas/Content/Identity/policieshow/how-policies-work.htm

- 公式のポリシーリファレンス

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

- 先人による詳細な解説（めちゃめちゃ参考になります！）

https://qiita.com/Skogkatter112/items/9724bea9379364e83e47#2-1-%E3%83%9D%E3%83%AA%E3%82%B7%E3%83%BC%E3%81%AE%E6%A7%8B%E6%96%87