OCI IAMポリシー作成方法と構文について
今回は、OCIのリソースを扱ったことはあるがIAMポリシーを作成したことない方向けにOracle Cloud Infrastructure Identity and Access Management (IAM)ポリシー(以下、IAMポリシー)の設定手順と構文についてご紹介します。
目次[非表示]
- 1.はじめに
- 2.IAMポリシー作成方法
- 3.IAMポリシー構文
- 3.1.subject
- 3.2.verb
- 3.3.resource-type
- 3.4.location
- 3.5.conditions
- 4.まとめ
はじめに
IAMポリシーとは、Oracle Cloud Infrastructureリソースに対して誰がアクセスできるかを管理、操作権限を制御するための仕組みです。IAMポリシーを設定することによって、特定のコンパートメント内のリソースを使用できるようにしたり、ユーザーにネットワークリソースだけを使用できるようにしたりと詳細に設定することができます。
今回は、IAMポリシーの作成方法と、IAMポリシー構文とその要素についてご紹介します。
※記載している手順、画像は2024年5月時点のものになります。
今後、OCIコンソールのアップデートにより、記載している手順、及び画像と実際の作業手順が一致しない場合がございます。
予めご了承ください。
IAMポリシー作成方法
IAMポリシーを作成するために必要な権限につきましては下記に詳細がありますので、ご確認ください。
1.左上のメニュー>アイデンティティとセキュリティ>ポリシーを選択しクリックします。
2.「ポリシーの作成」をクリックします。
3.以下の項目を入力して「作成」をクリックします。
名前:自由に記入
説明:自由に記入
コンパートメント:IAMポリシーを管理するコンパートメント
※ルートコンパートメントでIAMポリシーを作成すると下層のすべての各コンパートメントを指定して権限の付与が可能であり、
IAMポリシーごとに付与範囲が異なっていても一元管理可能です。
ポリシー・ビルダー:手動エディタでIAMポリシー構文を記入し設定する方法と、ポリシー・ユース・ケース及び共通ポリシー・テンプレートで
アクセス対象と操作範囲を選択し、設定する方法の2種類があります。
今回は、手動エディタでIAMポリシー構文を記入し設定する方法をご紹介いたします。
IAMポリシー構文
ポリシー・ビルダーの手動エディタで記入するIAMポリシー構文の基本的な構文は、次のとおりです。
※where <conditions>は必須ではないので、省略することができます。
subject
subject:名前またはOCIDでグループ指定します
単一のグループも、複数のグループも指定することができます。
複数のグループを指定する場合は、カンマで区切ることで指定できます。
またany-groupを指定して、テナンシ内の全てのユーザー、インスタンス・プリンシパル及びリソース・プリンシパルを指定することもできます。
例) Gest-Group1というグループ名を持つグループを指定する場合は、下記の通りに記載します。
verb
verb:単一の動詞を指定します。動詞のリストは、inspect/read/use/manageの4つです。
動詞 |
権限 |
---|---|
inspect |
リソースに含まれる可能性がある機密情報またはユーザー指定メタデータにはアクセスせずに、リソースをリストできる権限。 |
read |
inspectに加えて、ユーザー指定のメタデータと実際のリソース自体を取得できる権限。 |
use |
readに加えて、既存のリソースを操作できる権限。一般に、この動詞には、リソースを作成または削除する機能はなく、リソースの更新機能のみが含まれる。 |
manage |
リソースの全ての権限が含まれる。 |
詳細については、下記をご覧ください。
例) Gest-Group1グループがリソースの全ての権限を持つ場合は、下記の通りに記載します。
resource-type
resource-type:単一のリソース・タイプを指定します。リソース・タイプは次のいずれかになります。
リソース・タイプ名 |
対象リソース・タイプ |
---|---|
vcns、subnets、instances、volumesなど |
個々のリソース・タイプ |
virtual-network-family、instance-family、volume-familyなど |
ファミリ・リソース・タイプ |
all-resources |
全てのOracle Cloud Infrastructureリソース・タイプ |
使用可能なリソース・タイプのリストの詳細については、下記をご覧ください。
例) Gest-Group1グループがOCI全てのリソースの全ての権限を持つ場合は、下記の通りに記載します。
location
location:名前またはOCIDで単一のコンパートメントまたはコンパートメント・パスを指定します。
または、tenancyを指定してテナンシ全体を対象とします。
コンパートメント単位に許可を付与する場合は下記になります。
テナンシ単位に許可を付与する場合は下記になります。
下記のようにCompartmentA、CompartmentB、ComparmentCと階層構造になっている3つのコンパートメントを例に記述方法をご紹介いたします。
【IAMポリシーの継承】
コンパートメントは親コンパートメントからIAMポリシーを「継承」します。
例えば、「Gest-Group1グループがCompartmentAコンパートメントのすべてのリソースを管理できる権限」を付与するIAMポリシーを
「ComparmentA」に以下の構文で作成した場合、Gest-Group1グループは、「CompartmentA」だけでなくComparmentAの子コンパートメントである
「CompartmentB」「 CompartmentC」の「すべてのリソースへの管理権限」を持つことになります。
構文:
作成するコンパートメント:ComparmentA
「Gest-Group1グループがCompartmentC配下の全リソースを管理できる権限」を付与したい場合、
「CompartmentC」に以下のIAMポリシーを作成します。
構文:
作成するコンパートメント: CompartmentC
【IAMポリシーのアタッチ】
IAMポリシーの管理はIAMポリシーを作成したコンパートメントで行うため、一元管理する場合と組織ごとに管理を分ける場合といったように用途にあわせてIAMポリシーのアタッチを変えることができます。
コンパートメントの上位にアタッチ:一元管理する場合に有効
コンパートメントの下位にアタッチ:組織ごとに管理を分ける場合に有効
また、一元管理したいがIAMポリシーは継承させたくない場合は、<compartment_name>にパスを指定することで作成することができます。
パスの書式は、パスの各コンパートメント名(またはOCID)をコロンで区切ります。
<compartment_level_1>:<compartment_level_2>: . . . <compartment_level_n>
①一元管理するためCompartmentAにIAMポリシーをアタッチするが、「Gest-Group1グループにCompartmentC配下の全リソースを管理できる
権限」を付与したい場合、「CompartmentA」に以下のIAMポリシーを作成します。
構文:
作成するコンパートメント: CompartmentA
②組織ごとに管理を分けるためCompartmentCにIAMポリシーをアタッチし、「Gest-Group1グループにCompartmentC配下の全リソースを
管理できる権限」を付与したい場合、「CompartmentC」に以下のIAMポリシーを作成します
構文:
作成するコンパートメント: CompartmentC
階層構造になっている場合の例として上記をご紹介いたしましたが、階層構造にしないコンパートメントでもIAMポリシーを作成することができます。
①一元管理するためルートコンパートメントにIAMポリシーをアタッチし、「Gest-Group1グループにCompartmentD配下の全リソースを管理できる
権限」を付与したい場合、「ルートコンパートメント」に以下のIAMポリシーを作成します。
構文:
作成するコンパートメント:ルートコンパートメント
②組織ごとに管理を分けるためCompartmentDにIAMポリシーをアタッチし、「Gest-Group1グループにCompartmentD配下の全リソースを
管理できる権限」を付与したい場合、「CompartmentD」に以下のIAMポリシーを作成します。
構文:
作成するコンパートメント:ComparmentD
conditions
conditions : 1つまたは複数の条件を指定します。
論理ORまたはANDを指定するには、anyまたはallを複数の条件で使用します。
すべてのサービスでサポートされる変数のリストの詳細については、下記をご覧ください。
例) Gest-Group1グループが、 testコンパートメント以外のコンパートメント配下の全リソースを管理できる権限を持つ場合は、
下記の通りに記載します。
まとめ
今回は、IAMポリシーの設定手順と構文についてご紹介させていただきました。
詳細については、公式ドキュメントにもございますので下記をご確認ください。