catch-img

OCI IAMポリシー作成方法と構文について

今回は、OCIのリソースを扱ったことはあるがIAMポリシーを作成したことない方向けにOracle Cloud Infrastructure Identity and Access Management (IAM)ポリシー(以下、IAMポリシー)の設定手順と構文についてご紹介します。

目次[非表示]

  1. 1.はじめに
  2. 2.IAMポリシー作成方法
  3. 3.IAMポリシー構文
    1. 3.1.subject
    2. 3.2.verb
    3. 3.3.resource-type
    4. 3.4.location
    5. 3.5.conditions
  4. 4.まとめ


はじめに

IAMポリシーとは、Oracle Cloud Infrastructureリソースに対して誰がアクセスできるかを管理、操作権限を制御するための仕組みです。IAMポリシーを設定することによって、特定のコンパートメント内のリソースを使用できるようにしたり、ユーザーにネットワークリソースだけを使用できるようにしたりと詳細に設定することができます。
今回は、IAMポリシーの作成方法と、IAMポリシー構文とその要素についてご紹介します。
※記載している手順、画像は2024年5月時点のものになります。
 今後、OCIコンソールのアップデートにより、記載している手順、及び画像と実際の作業手順が一致しない場合がございます。
 予めご了承ください。

IAMポリシー作成方法

IAMポリシーを作成するために必要な権限につきましては下記に詳細がありますので、ご確認ください。

  管理者ロールの理解 必要に応じて他のユーザーに管理タスクを委任できるように、管理者ロールおよび各ロールに関連付けられた権限について学習します。 https://docs.oracle.com/ja-jp/iaas/Content/Identity/roles/understand-administrator-roles.htm#understand-administrator-roles

1.左上のメニュー>アイデンティティとセキュリティ>ポリシーを選択しクリックします。
2.「ポリシーの作成」をクリックします。


3.以下の項目を入力して「作成」をクリックします。
 名前:自由に記入
 説明:自由に記入
 コンパートメント:IAMポリシーを管理するコンパートメント
 ※ルートコンパートメントでIAMポリシーを作成すると下層のすべての各コンパートメントを指定して権限の付与が可能であり、
  IAMポリシーごとに付与範囲が異なっていても一元管理可能です。
 ポリシー・ビルダー:手動エディタでIAMポリシー構文を記入し設定する方法と、ポリシー・ユース・ケース及び共通ポリシー・テンプレートで
          アクセス対象と操作範囲を選択し、設定する方法の2種類があります。
         今回は、手動エディタでIAMポリシー構文を記入し設定する方法をご紹介いたします。

IAMポリシー構文

ポリシー・ビルダーの手動エディタで記入するIAMポリシー構文の基本的な構文は、次のとおりです。

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

※where <conditions>は必須ではないので、省略することができます。

subject

subject:名前またはOCIDでグループ指定します
     単一のグループも、複数のグループも指定することができます。
     複数のグループを指定する場合は、カンマで区切ることで指定できます。
     またany-groupを指定して、テナンシ内の全てのユーザー、インスタンス・プリンシパル及びリソース・プリンシパルを指定することもできます。

例) Gest-Group1というグループ名を持つグループを指定する場合は、下記の通りに記載します。

Allow group Gest-Group1 to <verb> <resource-type> in <location> where <conditions>

verb

verb:単一の動詞を指定します。動詞のリストは、inspect/read/use/manageの4つです。

動詞    
権限

inspect

リソースに含まれる可能性がある機密情報またはユーザー指定メタデータにはアクセスせずに、リソースをリストできる権限。

read

inspectに加えて、ユーザー指定のメタデータと実際のリソース自体を取得できる権限。

use

readに加えて、既存のリソースを操作できる権限。一般に、この動詞には、リソースを作成または削除する機能はなく、リソースの更新機能のみが含まれる。

manage

リソースの全ての権限が含まれる。

詳細については、下記をご覧ください。

  ポリシー・リファレンス(アイデンティティ・ドメインなし) 動詞、リソース・タイプ、一般的な変数など、IAMポリシー・リファレンスのトピックの概要を取得します。 https://docs.oracle.com/ja-jp/iaas/Content/Identity/Reference/policyreference.htm#Verbs

例) Gest-Group1グループがリソースの全ての権限を持つ場合は、下記の通りに記載します。

Allow group Gest-Group1 to manage <resource-type> in <location> where <conditions>

resource-type

resource-type:単一のリソース・タイプを指定します。リソース・タイプは次のいずれかになります。

リソース・タイプ名

対象リソース・タイプ

vcns、subnets、instances、volumesなど

個々のリソース・タイプ

virtual-network-family、instance-family、volume-familyなど

ファミリ・リソース・タイプ

all-resources

全てのOracle Cloud Infrastructureリソース・タイプ

使用可能なリソース・タイプのリストの詳細については、下記をご覧ください。

  ポリシー・リファレンス(アイデンティティ・ドメインなし) 動詞、リソース・タイプ、一般的な変数など、IAMポリシー・リファレンスのトピックの概要を取得します。 https://docs.oracle.com/ja-jp/iaas/Content/Identity/Reference/policyreference.htm#Resource

例) Gest-Group1グループがOCI全てのリソースの全ての権限を持つ場合は、下記の通りに記載します。

Allow group Gest-Group1 to manage all-resources in <location> where <conditions>

location

location:名前またはOCIDで単一のコンパートメントまたはコンパートメント・パスを指定します。
     または、tenancyを指定してテナンシ全体を対象とします。

コンパートメント単位に許可を付与する場合は下記になります。

Allow group <group_name> to <verb> <resource-type> in compartment <compartment_name>

テナンシ単位に許可を付与する場合は下記になります。

Allow group <group_name> to <verb> <resource-type> in tenancy

下記のようにCompartmentA、CompartmentB、ComparmentCと階層構造になっている3つのコンパートメントを例に記述方法をご紹介いたします。

【IAMポリシーの継承】

コンパートメントは親コンパートメントからIAMポリシーを「継承」します。

例えば、「Gest-Group1グループがCompartmentAコンパートメントのすべてのリソースを管理できる権限」を付与するIAMポリシーを
「ComparmentA」に以下の構文で作成した場合、Gest-Group1グループは、「CompartmentA」だけでなくComparmentAの子コンパートメントである
CompartmentB」「 CompartmentC」の「すべてのリソースへの管理権限」を持つことになります。

構文:

Allow group Gest-Group1 to manage all-resources in compartment CompartmentA


作成するコンパートメント:ComparmentA

Gest-Group1グループがCompartmentC配下の全リソースを管理できる権限」を付与したい場合、
CompartmentC」に以下のIAMポリシーを作成します。

構文: 

Allow group Gest-Group1 to manage all-resources in compartment CompartmentC


作成するコンパートメント: 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ポリシーを作成します。

構文:

Allow group Gest-Group1 to manage all-resources in compartment CompartmentA: CompartmentB:CompartmentC


作成するコンパートメント: CompartmentA

組織ごとに管理を分けるためCompartmentCにIAMポリシーをアタッチし、「Gest-Group1グループにCompartmentC配下の全リソースを
 管理できる権限」を付与したい場合、「CompartmentC」に以下のIAMポリシーを作成します

構文: 

Allow group Gest-Group1 to manage all-resources in compartment CompartmentC


作成するコンパートメント: CompartmentC

階層構造になっている場合の例として上記をご紹介いたしましたが、階層構造にしないコンパートメントでもIAMポリシーを作成することができます。

①一元管理するためルートコンパートメントにIAMポリシーをアタッチし、「Gest-Group1グループにCompartmentD配下の全リソースを管理できる
 権限」を付与したい場合、「ルートコンパートメント」に以下のIAMポリシーを作成します。

構文:

Allow group Gest-Group1 to manage all-resources in compartment CompartmentD


作成するコンパートメント:ルートコンパートメント

②組織ごとに管理を分けるためCompartmentDにIAMポリシーをアタッチし、「Gest-Group1グループにCompartmentD配下の全リソースを
 管理できる権限」を付与したい場合、「CompartmentD」に以下のIAMポリシーを作成します。

構文:

Allow group Gest-Group1 to manage all-resources in compartment ComparmentD


作成するコンパートメント:ComparmentD

conditions

conditions : 1つまたは複数の条件を指定します。
       論理ORまたはANDを指定するには、anyまたはallを複数の条件で使用します。

すべてのサービスでサポートされる変数のリストの詳細については、下記をご覧ください。

  ポリシー・リファレンス(アイデンティティ・ドメインなし) 動詞、リソース・タイプ、一般的な変数など、IAMポリシー・リファレンスのトピックの概要を取得します。 https://docs.oracle.com/ja-jp/iaas/Content/Identity/Reference/policyreference.htm#General

例) Gest-Group1グループが、 testコンパートメント以外のコンパートメント配下の全リソースを管理できる権限を持つ場合は、
下記の通りに記載します。

Allow group Gest-Group1 to manage all-resources in tenancy where target.compartment.name != test

まとめ

今回は、IAMポリシーの設定手順と構文についてご紹介させていただきました。
詳細については、公式ドキュメントにもございますので下記をご確認ください。

  ポリシーの仕組み(アイデンティティ・ドメインなし) Identity and Access Management (IAM)ポリシーの基本機能と、ポリシーの仕組みについて学習します。 https://docs.oracle.com/ja-jp/iaas/Content/Identity/Concepts/policies.htm


ページトップへ戻る