ポリシー構文

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

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

ステートメントのスペア領域または改行は無効です。

ポリシーおよびステートメントの数に対する制限については、サービス制限を参照してください。

サブジェクト

名前またはOCIDで1つ以上のグループをカンマで区切って指定します。または、any-groupを指定して、テナンシ内のすべてのユーザー、インスタンス・プリンシパルおよびリソース・プリンシパルをカバーします。

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

ノート

すべてのユーザーは、テナンシおよびサービス・プリンシパル内のすべてのユーザー、リソース・プリンシパルおよびインスタンス・プリンシパルへのアクセス権を付与します。any-userを使用せず、かわりにany-groupを使用することをお薦めします。または、リソースタイプを指定して、不要なプリンタがアクセスできないようにすることもできます。たとえば、{request.principal.type='disworkspace'}です。

例:

  • 名前で単一グループを指定するには:
    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-group to inspect users in tenancy

動詞

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

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

リソース・タイプ

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

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

ファミリ・リソース・タイプは、通常は一緒に使用される様々なコンポーネントをカバーしています。これにより、ユーザーがクラウド・ネットワークの様々な側面にアクセスするためのポリシーを容易に作成できます。

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

構文: <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で単一のコンパートメントまたはコンパートメント・パスを指定します。または、単純に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..aaaaaaaaexampleocid to manage all-resources in compartment id ocid1.compartment.oc1..aaaaaaaaexampleocid
  • 複数のコンパートメントを指定するには、別々のステートメントを使用します。
    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..aaaaaaaavheexampleocid to manage all-resources in compartment id ocid1.compartment.oc1..aaaaaaaayzexampleocid
    
    Allow group id ocd1.group.oc1..aaaaaaaaexampleocid to manage all-resources in compartment id ocid1.compartment.oc1..aaaaaexampledocid
  • ポリシーをアタッチしているコンパートメントの直接の子ではないコンパートメントを指定するには、パスを指定します。

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

条件

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

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

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

時間ベースの変数では、追加の演算子を使用できます。時間枠に基づいたリソースへのアクセスの制限を参照してください。

重要

条件の一致では、大文字と小文字は区別されません。このことは、大文字と小文字を区別する名前を許可するリソース・タイプの条件を記述するときに注意する必要があります。オブジェクト・ストレージ・サービスによって、「BucketA」という名前のバケットと「bucketA」という名前のバケットの両方を同じコンパートメントに作成できるとします。「BucketA」を指定する条件を記述すると、条件一致では大文字と小文字が区別されないため、「bucketA」にも適用されます。

すべてのサービスでサポートされる変数のリストは、すべてのリクエストの一般的な変数を参照してください。IAMポリシーの概要で各サービスの詳細も参照してください。条件に使用できる値のタイプは、次のとおりです。

タイプ
文字列

'johnsmith@example.com'

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

(値を囲む一重引用符が必要です)

パターン

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

/*HR/ (「HR」で終わる文字列と一致します)

/*HR*/ (「HR」を含む文字列と一致します)

例:

ノート

次の例では、条件を指定するステートメントによって、GroupAdminsが実際にすべてのユーザーとグループを一覧表示するわけではないため、inspect動詞を含むステートメントが完全性のために追加されます。これが必要な理由を理解するには、拒否されたリクエストのリクエスト結果に適用できない変数を参照してください。
  • 単一条件。

    次のポリシーでは、GroupAdminsグループが、「A-Users-」で始まる名前のグループを作成、更新または削除できます。

    Allow group GroupAdmins to manage groups in tenancy where target.group.name = /A-Users-*/
    Allow group GroupAdmins to inspect groups in tenancy
    次のポリシーにより、NetworkAdminsグループは、指定されたものを除く任意のコンパートメント内のクラウド・ネットワークを管理できます:
    Allow group NetworkAdmins to manage virtual-network-family in tenancy where target.compartment.id != 'ocid1.compartment.oc1..aaaaaaaaexampleocid'
  • 複数条件。

    次のポリシーにより、GroupAdminsは、A-Adminsグループ自体を除く、名前が「A-」で始まるグループを作成、更新または削除できます。

    Allow group GroupAdmins to manage groups in tenancy where all {target.group.name=/A-*/,target.group.name!='A-Admins'}
     
    Allow group GroupAdmins to inspect groups in tenancy