【OCI】権限管理(ポリシー)について

# はじめに

**<font color="RoyalBlue">OCI</font>**のポリシーは、AWSのポリシー設定のようにポチポチでできなかったので
困惑まではしなかったですがまとめておきます。

# ポリシーの作成してみた

## ポリシーを設定するグループの作成

ダッシュボードから**<font color="RoyalBlue">「グループ」</font>**をクリック
![1_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111276/0df7b1ca-10b2-1ce2-22eb-567e1d8214fa.png)

**<font color="RoyalBlue">「グループの作成」</font>**をクリック
![1_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111276/255f1d87-7427-a5a9-0875-0c39af39b0a0.png)

**<font color="RoyalBlue">「名前」</font>**と**<font color="RoyalBlue">「説明」</font>**を入力して**<font color="RoyalBlue">「作成」</font>**をクリック
![1_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111276/c03a9d69-9fa3-ed20-baf6-468370d3f531.png)

作成されました。
![1_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111276/8d3c44e0-674e-3891-6f1b-b153ce96c947.png)

## ポリシーの作成

同じ画面から**<font color="RoyalBlue">「ポリシー」</font>**をクリック
![1_5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111276/2addc57c-5def-b30d-7eae-a868ff63e82f.png)

**<font color="RoyalBlue">「ポリシーの作成」</font>**をクリック
![1_6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111276/05c3f842-76e2-be0b-6b07-968387c8d375.png)

今回はロードバランサーとオブジェクトストレージの権限を当ててみました。
**<font color="RoyalBlue">「名前」</font>**、**<font color="RoyalBlue">「説明」</font>**、**<font color="RoyalBlue">「ステートメント」</font>**を入力したら
**<font color="RoyalBlue">「作成」</font>**をクリック
![1_8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111276/85f2c32b-f15d-d7f1-13a2-0d52b1989d2b.png)

これで作成が完了
該当グループに所属しているユーザにこのポリシーが適用されます。
![1_9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111276/78f8d775-882f-561f-fbac-d434fdcfb26f.png)

# ポリシーの書き方について

やりたいことによって指定方法がいろいろあるので基本は[ポリシーの構文マニュアル](https://docs.oracle.com/cd/E97706_01/Content/Identity/Concepts/policysyntax.htm#three)を見るのが良いと思うんですが、
私は以下の書き方で基本書いています。

**<font color="RoyalBlue">テナンシ全体</font>**に許可を与える構文

```
ALLOW GROUP <グループ名> to <動詞> <Resource-Types> IN TENANCY
```
**<font color="RoyalBlue">コンパートメント</font>**に許可を与える構文

```
ALLOW GROUP <グループ名> to <動詞> <Resource-Types> IN COMPARTMENT 
```

## 動詞について

マニュアルは以下から
[動詞についてのマニュアル](https://docs.oracle.com/cd/E97706_01/Content/Identity/Reference/policyreference.htm#Verbs)

簡単にまとめると

| 動詞              | 許可される権限                              | 主にこんなユーザ                              |
|:-----------------|:-------------------------------------------|:---------------------------------------------|
| **<font color="RoyalBlue">inspect</font>**      | 一覧の表示                                  | どんなリソースを使っているか知りたいだけのユーザ |
| **<font color="RoyalBlue">read</font>**         | 一覧の表示、メタデータ、データ                | 内容の表示だけを行いたいユーザ                 |
| **<font color="RoyalBlue">use</font>**          | 一覧の表示、メタデータ、データ、更新アクション | 既存リソースを利用していくユーザ                |
| **<font color="RoyalBlue">manage</font>**       | 全ての操作                                  | リソースの作成を行うユーザ、管理者              |


## Resource-Typesについて

マニュアルは以下から
[Resource-Typesについてのマニュアル](https://docs.oracle.com/cd/E97706_01/Content/Identity/Reference/policyreference.htm#Resource)

数が多くて紹介するの難しいんですが**<font color="RoyalBlue">ファミリ・リソース・タイプ</font>**という大きなリソースタイプが存在します。

| ファミリ・リソース・タイプ                                   | 許可されるリソース                            | 詳細リンク |
|:----------------------------------------------------------|:---------------------------------------------|:---------|
| **<font color="RoyalBlue">all-resources</font>**          | OCI全てのリソース                             | - |
| **<font color="RoyalBlue">cluster-family</font>**         | Container Engine for Kubernetes             | [Container Engine for Kubernetesの詳細](https://docs.cloud.oracle.com/ja-jp/iaas/Content/Identity/Reference/contengpolicyreference.htm) |
| **<font color="RoyalBlue">database-family</font>**        | データベース・サービス                        | [データベース・サービスの詳細](https://docs.oracle.com/cd/E97706_01/Content/Identity/Reference/databasepolicyreference.htm) |
| **<font color="RoyalBlue">dns</font>**                    | DNSサービス                                  | [DNSサービスの詳細](https://docs.oracle.com/cd/E97706_01/Content/Identity/Reference/dnspolicyreference.htm) |
| **<font color="RoyalBlue">file-family</font>**            | ファイル・ストレージ・サービス                 | [ファイル・ストレージ・サービスの詳細](https://docs.oracle.com/cd/E97706_01/Content/Identity/Reference/filestoragepolicyreference.htm) |
| **<font color="RoyalBlue">instance-family</font>**        | コンピュート                                 | [インスタンス・ファミリ・リソース・タイプの詳細](https://docs.oracle.com/cd/E97706_01/Content/Identity/Reference/corepolicyreference.htm#corepolicyreference.uHpe9) |
| **<font color="RoyalBlue">object-family</font>**          | オブジェクト・ストレージ、アーカイブ・ストレージ | [オブジェクト・ストレージ、アーカイブ・ストレージおよびデータ転送の詳細](https://docs.oracle.com/cd/E97706_01/Content/Identity/Reference/objectstoragepolicyreference.htm) |
| **<font color="RoyalBlue">virtual-network-family</font>** | ネットワーク                                  | [virtual-network-familyリソース・タイプの詳細](https://docs.oracle.com/cd/E97706_01/Content/Identity/Reference/corepolicyreference.htm#corepolicyreference.3EIlzR) |
| **<font color="RoyalBlue">volume-family</font>**          | ブロック・ボリューム                          | [volume-familyリソース・タイプの詳細](https://docs.oracle.com/cd/E97706_01/Content/Identity/Reference/corepolicyreference.htm#corepolicyreference.3d74np) |

細かく権限を設定しない場合は**<font color="RoyalBlue">ファミリ・リソース・タイプ</font>**を指定してもいいんですが、
細かく指定したい場合は詳細ページから内容を確認して指定してください。

こんな感じで動詞ごとに許可される内容が確認できます。

**<font color="RoyalBlue">objectsのリソース・タイプ</font>**
![1_10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111276/7d75c9ac-35ea-09d1-089b-344c20999dc5.png)

※注意するのが詳細ページが日本語に自動翻訳されて指定するリソースタイプの名前が日本語になってしまうので、
ソースから見たり、英語ページに飛んで確認しないといけないです。

オブジェクトだと原文::**<font color="RoyalBlue">objects</font>**の部分が指定名
![1_11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111276/0714e53d-24cf-1cd2-cf90-7eac85acf05f.png)

# おわりに

一人で利用する分にはデフォルトの全権限がついたままでいいと思いますが、
ユーザを追加していく際には担当に合わせた権限をつけてあげるのがいいと思います。