権限記述における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のパラメータが定義されていなければなりません。