条件
ポリシー・ステートメントのオプションの条件要素は、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 tenancy
Allow group GroupAdmins to use users in tenancy where target.group.name != 'Administrators'
Allow group GroupAdmins to inspect groups in tenancy
Allow 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-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
拒否されたリクエストのリクエスト結果に適用できない変数
変数が受信リクエストに適用できない場合、条件はリクエストを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など)も適用します。
タグ・ベースのアクセス制御
条件および一連のタグ変数を使用して、リソースに適用されたタグに基づいてアクセスを定義するポリシーを記述します。リクエストしているリソース(ポリシー内のグループまたは動的グループ)、またはリクエストのターゲット(リソースまたはコンパートメント)に存在するタグに基づいて、アクセスを制御できます。タグ・ベースのアクセス制御では、ポリシーの柔軟性が提供され、コンパートメント、グループおよびリソースにまたがるアクセスを定義できます。タグによってアクセスの範囲を指定するポリシーを記述する方法の詳細は、タグを使用したアクセスの管理を参照してください。