条件
ポリシー・ステートメントのオプションの条件要素は、IAMで指定された属性に基づいてアクセスを制限します。
条件は、指定されたパラメータに基づいてリソースを返します。たとえば、条件を使用して、名前に特定の文字が含まれるリソースを返します。
単一条件の構文: variable =|!= value
複数条件の構文: any|all {<condition>,<condition>,...}
一連の条件に対して論理ORを作成するには、anyを使用します。一連の条件に対して論理ANDを作成するには、allを使用します。
条件照合では、大/小文字が区別される名前は無視されます。たとえば、BucketAという名前のバケットの条件も、bucketAという名前のバケットと一致します。
-
String:
-
'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-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など)も適用されます。
タグ・ベースのアクセス制御
条件およびタグ変数のセットを使用して、リソースに適用されるタグに基づいてアクセスを定義するポリシーを記述します。アクセスを、リクエストしているリソース(ポリシー内のグループまたは動的グループ)またはリクエストのターゲット(リソースのまたはコンパートメント)に存在するタグに基づいて制御することができます。タグベースのアクセス制御により、ポリシーに対する柔軟性が得られ、コンパートメント、グループおよびリソースにまたがるアクセスを定義できます。タグによってアクセスの範囲を指定するポリシーを記述する方法の詳細は、タグを使用したアクセスの管理を参照してください。