条件
ポリシー・ステートメントのオプションのconditions要素は、IAMの指定された属性に基づいてアクセスを制限します。
条件は、指定されたパラメータに基づいてリソースを返します。たとえば、条件を使用して、名前に特定の文字が含まれるリソースを返します。
単一条件の構文: variable =|!= value
複数条件の構文: any|all {<condition>,<condition>,...}
一連の条件に対して論理ORを作成するには、anyを使用します。一連の条件に対して論理ANDを作成するには、allを使用します。
条件一致では、大/小文字が区別される名前は無視されます。たとえば、BucketAという名前のバケットの条件は、bucketAという名前のバケットにも一致します。
-
文字列:
-
'johnsmith@example.com' -
'ocid1.compartment.oc1.exampleuniqueID'(値を囲む一重引用符が必要です)
-
-
パターン:
-
/hr*/(「hr」で始まる文字列と一致する) -
/*hr/(「hr」で終わる文字列と一致) -
/*hr*/(「hr」を含む文字列と一致します。)
-
次の例では、条件を指定する文によって、GroupAdminsにすべてのユーザーおよびグループがリストされるわけではありません。
inspect動詞を含む文は、完全性のために追加されます。拒否されたリクエストのリクエスト結果に適用できない変数を参照してください。例:
-
単一条件:
1つのリソースタイプ(グループ)の単一条件
Allow group GroupAdmins to manage groups in tenancy where target.group.name = /A-Users-*/ Allow group GroupAdmins to inspect groups in tenancy多数のリソースタイプ(ユーザーおよびグループ)の単一条件
Allow group GroupAdmins to inspect users in tenancyAllow group GroupAdmins to use users in tenancy where target.group.name != 'Administrators'Allow group GroupAdmins to inspect groups in tenancyAllow group GroupAdmins to use groups in tenancy where target.group.name != 'Administrators'1つのリソース(グループ)に対する多数の条件
Allow group NetworkAdmins to manage virtual-network-family in tenancy where target.compartment.id != 'ocid1.compartment.oc1.exampleuniqueID' -
いくつかの条件
次のポリシーにより、GroupAdminsは、名前が"
A-"で始まるグループを作成、更新または削除できます(A-Adminsグループ自体は除く)。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
拒否されたリクエストのリクエスト結果に適用できない変数
変数が受信リクエストに適用されない場合、条件はリクエストをfalseとして評価し、リクエストは拒否されます。たとえば、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'
GroupAdminsのユーザーが、ListUsersやUpdateUser(ユーザーの説明を変更できる)など、ユーザーの一般的なAPI操作をコールしようとした場合、それらのAPI操作はuse usersでカバーされていても、リクエストは拒否されます。use usersのポリシー・ステートメントの例にはtarget.group.name変数が含まれていますが、ListUsersまたはUpdateUserリクエストではグループを指定していません。target.group.nameが指定されなかったため、リクエストは拒否されます。
API操作に特定のグループが含まれない場合に一般ユーザーにアクセス権を付与するには、付与するアクセス・レベルを付与する別の文を追加する必要がありますが、条件は含まれません。たとえば、ListUsersへのアクセス権を付与するには、次の文のような文が必要です。
Allow group GroupAdmins to inspect users in tenancy
UpdateUserへのアクセス権を付与する場合、次のステートメントが必要です(use動詞にはinspect動詞の機能が含まれているため、ListUsersも対象)。
Allow group GroupAdmins to use users in tenancy
この一般的な概念では、ターゲット変数を含む他のリソース・タイプ(ListGroupsなど)も適用されます。
タグ・ベースのアクセス制御
条件およびタグ変数のセットを使用して、リソースに適用されるタグに基づいてアクセスを定義するポリシーを記述します。リクエストしているリソース(ポリシー内のグループまたは動的グループ)に存在するタグ、またはリクエストのターゲット(リソースまたはコンパートメント)に存在するタグに基づいてアクセスを制御できます。タグベースのアクセス制御により、ポリシーを柔軟に制御できるため、コンパートメント、グループおよびリソースにまたがるアクセスを定義できます。タグによってアクセスの範囲を指定するポリシーを記述する方法の詳細は、タグを使用したアクセスの管理を参照してください。