Oracle Cloud Infrastructureドキュメント

ポリシーの構文

ポリシー・ステートメントの全体的な構文は次のとおりです:

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

文の空白や改行は無効です。

ポリシーとステートメントの数の制限については、「サービス制限」を参照してください。

Subject

1つ以上のコンマ区切りのグループを名前またはOCIDで指定します。 または、any-userを指定して、テナンシ内のすべてのユーザーをカバーします。

構文: group <group_name> | group id <group_ocid> | dynamic-group <dynamic-group_name> | dynamic-group id<dynamic-group_ocid> | any-user

次に例を示します。

  • 1つのグループを名前で指定するには:
    Allow group A-Admins to manage all-resources in compartment Project-A
  • 複数のグループを名前で指定するには(コンマの後のスペースはオプションです):
    Allow group A-Admins, B-Admins to manage all-resources in compartment Projects-A-and-B
  • OCIDによって単一のグループを指定するには(OCIDは簡潔にするために短縮されています):
    Allow group 

    id ocid1.group.oc1..aaaaaaaaqjihfhvxmum...awuc7i5xwe6s7qmnsbc6a


    to manage all-resources in compartment Project-A
  • OCIDによって複数のグループを指定するには(OCIDは簡潔にするために短縮されています):
    Allow group 

    id ocid1.group.oc1..aaaaaaaaqjihfhvxmumrl...wuc7i5xwe6s7qmnsbc6a,
    id ocid1.group.oc1..aaaaaaaavhea5mellwzb...66yfxvl462tdgx2oecyq


    to manage all-resources in compartment Projects-A-and-B
  • テナンシ内の任意のユーザーを指定するには:
    Allow any-user to inspect users in tenancy

動詞

単一の動詞を指定します。 動詞のリストについては、「動詞」を参照してください。 例:

Allow group A-Admins to manage all-resources in compartment Project-A

Resource-Type

単一のリソース・タイプを指定します。次のいずれかを指定できます:

  • 個々のリソース・タイプ(例えば、vcnssubnetsinstancesvolumesなど)は、
  • ファミリ・リソース・タイプ(例えば、virtual-network-familyinstance-familyvolume-familyなど)は、
  • all-resources: コンパートメント内のすべてのリソース(またはテナンシ)をカバーします。

ファミリ・リソース・タイプは、通常一緒に使用されるさまざまなコンポーネントをカバーします。 これにより、誰かにクラウド・ネットワークのさまざまな側面を操作するためのアクセス権を与えるポリシーを簡単に作成できます。

使用可能なリソース・タイプのリストについては、Resource-Typesを参照してください。

構文: <resource_type> | all-resources

次に例を示します。

  • 単一のリソース・タイプを指定するには:
    Allow group HelpDesk to manage users in tenancy
  • 複数のリソース・タイプを指定するには、別々の文を使用します:
    Allow group A-Users to manage instance-family in compartment Project-A

    Allow group A-Users to manage volume-family in compartment Project-A
  • コンパートメント内のすべてのリソース(またはテナンシ)を指定するには:
    Allow group A-Admins to manage all-resources in compartment Project-A

場所

名前またはOCID別の1つのコンパートメントまたはコンパートメント・パスを指定します。 または、tenancyを指定して、全体のテナンシをカバーします。 ユーザー、グループ、コンパートメントはテナンシに存在することに注意してください。 ポリシーは、テナンシまたは子供コンパートメントのいずれかに存在することができます。

ノート

特定のリージョンまたは「可用性ドメイン」へのアクセスを許可

特定のリージョンまたは「可用性ドメイン」にアクセスするポリシーを作成するには、条件付きでrequest.regionまたはrequest.ad変数を使用します。 条件を参照してください。

ステートメントにはロケーションが必要です。 コンパートメントにポリシーをアタッチする場合は、そのコンパートメントを作成するときにそのコンパートメントに入る必要があります。 詳細は、「ポリシー・アタッチメント」を参照してください。

ポリシーをアタッチするコンパートメントの直接の子ではないコンパートメントを指定するには、コロン((:)をセパレータとして使用してコンパートメントへのパスを指定します。 詳細は、「ポリシーおよびコンパートメント階層」を参照してください。

構文: [ tenancy | compartment <compartment_name> | compartment id <compartment_ocid> ]

次に例を示します。

  • コンパートメントを名前で指定するには:
    Allow group A-Admins to manage all-resources in compartment Project-A
  • OCIDでコンパートメントを指定するには:
    Allow group
    id ocid1.group.oc1..aaaaaaaavhea5mellwzbmplwrpum46xfc73sb4rm66yfxvl462tdgx2oecyq

    to manage all-resources in compartment
    id ocid1.compartment.oc1..aaaaaaaayzfq...4fmameqh7lcdlihrvur7xq
  • 複数のコンパートメントを指定するには、別々のステートメントを使用します:
    Allow group InstanceAdmins to manage instance-family in compartment Project-A

    Allow group InstanceAdmins to manage instance-family in compartment Project-B
  • OCIDによって複数のコンパートメントを指定するには、別々の文を使用します:
    Allow group id 
    ocd1.group.oc1..aaaaaaaavhea5mell...b4rm66yfxvl462tdgx2oecyq
    to manage all-resources in compartment id
    ocid1.compartment.oc1..aaaaaaaayzfqei...ameq4h7lcdlihrvur7xq



    Allow group id
    ocd1.group.oc1..aaaaaaaavhea5mell...b4rm66yfxvl462tdgx2oecyq
    to manage all-resources in compartment id
    ocid1.compartment.oc1..aaaaaaaaphfjutov5s...vyypllbtctehnqg756a
  • ポリシーをアタッチするコンパートメントの直接の子でないコンパートメントを指定するには、パスを指定します:

    Allow group InstanceAdmins to manage instance-family in compartment Project-A:Project-A2

条件

1つまたは複数の条件を指定します。 anyまたはallを論理ORまたはANDにそれぞれ複数の条件で使用します。

単一の条件の構文: variable =|!= value

複数の条件の構文: any|all {<condition>,<condition>,...}

すべてのサービスでサポートされている変数のリストについては、「すべてのリクエストの一般変数」を参照してください。 また、「ポリシー・リファレンス」の各サービスの詳細も参照してください。 条件に使用できる値のタイプは次のとおりです:

タイプ
文字列

'johnsmith@example.com'

'ocid1.compartment.oc1..aaaaaaaaph...ctehnqg756a'

(値の前後に一重引用符が必要です)

パターン

/HR*/ ( "HR"で始まる文字列と一致する)

/*HR/ ( "HR"で終わる文字列と一致する)

/*HR*/ ( "HR"を含む文字列と一致する)

例:

  • 単一の条件。

    次のポリシーにより、GroupAdminsグループは、"A-Users-"で始まる名前のグループを作成、更新、または削除できます:

    Allow group GroupAdmins to manage groups in tenancy where target.group.name = /A-Users-*/

    次のポリシーにより、GroupAdminsグループはAdministratorsグループ以外のグループのメンバシップを管理できます:

    Allow group GroupAdmins to use users in tenancy where target.group.name != 'Administrators'
    
    Allow group GroupAdmins to use groups in tenancy where target.group.name != 'Administrators'

    次のポリシーにより、NetworkAdminsグループは、指定されたコンパートメント以外のコンパートメント内のクラウド・ネットワークを管理できます:

    Allow group NetworkAdmins to manage virtual-network-family in tenancy where target.compartment.id != 'ocid1.compartment.oc1..aaaaaaaayzfqeibduyox6icmdol6zyar3ugly4fmameq4h7lcdlihrvur7xq'

  • 複数の条件。

    次のポリシーでは、A-Adminsグループを除いて、A-Adminsが名前が"A-"で始まるグループを作成、更新、または削除することができます:

    Allow group GroupAdmins to manage groups in tenancy where 

    all {target.group.name=/A-*/,target.group.name!='A-Admins'}

上記のポリシーでは、ステートメントはGroupAdminsに実際にすべてのユーザーとグループをリストさせません。 理由を理解するには、「リクエストに適用されない変数は、要求が拒否された結果」を参照してください。