権限記述におけるAND・OR条件について

複数の実行権限の制御が適用される場合、それぞれの制御は以下のような条件となります。

AND・OR条件
OR 条件
a.IAMロール内のresourcesに複数の条件が記述された場合
b.ユーザーが複数のIAMグループに所属する場合
AND 条件 c.1つのIAMグループに複数のIAMロールが紐付いている場合
AND**条件 と **OR 条件について、例を上げて説明をします。

a.IAMロール内のresourcesに複数の条件が記述された場合

resourcesの配列内に2つ以上の条件を記述すると OR 条件となります。
以下のような条件で作成したIAMロールは、Keystoneもしくは管理機能のAPIを実行する権限をもつロールとなります。
resources[
    {
        "basePath" : "/ecl-keystone",
        "ipAddress" : "*",
        "path" : "*",
        "verb" : "*"
    },
    {
    "basePath" : "/ecl-sss",
        "ipAddress" : "*",
        "path" : "*",
        "verb" : "*"
    }
]

b.ユーザーが複数のIAMグループに所属する場合

ユーザーが複数のIAMグループに属する場合、これらのグループの実行権限制御の OR 条件となります。
a.IAMロール内のresourcesに複数の条件が記述された場合 の例であげたIAMロールを紐付けたグループと以下のようなIAMロールを紐付けたグループにユーザーを所属させるとします。
その場合、このユーザーはKeystoneもしくは管理機能もしくは仮想サーバーへの実行する権限をもつユーザーとなります。
resources[
    {
        "basePath" : "/ecl-nova",
        "ipAddress" : "*",
        "path" : "*",
        "verb" : "*"
    }
]

c.1つのIAMグループに複数のIAMロールが紐付いている場合

1つのIAMグループに複数のIAMロールが紐付いている場合、それらのIAMロールは AND 条件となります。
以下のような条件のIAMロールをそれぞれ別に作成します。
これらのIAMロールを1つのIAMグループに紐付けた場合、このIAMグループに属するユーザーは管理機能の全てのAPIかつ全てGETのAPI、つまり管理機能のGETのみが実行可能なユーザーとなります。
resources[
    {
        "basePath" : "/ecl-sss",
        "ipAddress" : "*",
        "path" : "*"
    }
]
resources[
    {
        "verb" : "GET"
    }
]

注釈

AND条件を設定する場合、2つのIAMロールどちらかにbasePath、ipAddress、path、verbのパラメータが定義されていなければなりません。