このトピックでは、Resource Access Management (RAM) のアクセスポリシーの構文と構造について説明します。この情報を使用して、ポリシーを作成または更新できます。
前提条件
ポリシーの構文を使用する前に、ポリシーの文字とそのルールを理解してください。
アクセスポリシーには、次の文字が含まれています:
アクセスポリシーの JSON 文字:
{ } [ ] " , :。構文で使用される特殊文字には、
= < > ( ) |があります。
文字の使用ルールは次のとおりです:
要素が 1 つ以上の値を受け入れる場合、次の方法で指定できます:
複数の値を指定するには、コンマ (,) と省略記号 (...) を使用します。例:
[ <action_string>, <action_string>, ...]。単一の値を指定するには、単一要素の配列または文字列を使用できます。たとえば、
"Action": [<action_string>]と"Action": <action_string>は同じ効果を持ちます。
要素の後の疑問符 (?) は、その要素が任意であることを示します。例:
<condition_block?>。複数の値の間の縦線 (|) は、値の 1 つだけを選択する必要があることを示します。例:
("Allow" | "Deny")。ダブルクォーテーションマーク ("") で囲まれた値は、テキスト文字列を示します。例:
<version_block> = "Version" : ("1")。
ポリシーの構造
アクセスポリシーは、次の要素で構成されます:
バージョン番号。
文のリスト。各文には、効果、操作、リソース、および任意の条件が含まれます。
ポリシーの構文
policy = {
<version_block>,
<statement_block>
}
<version_block> = "Version" : ("1")
<statement_block> = "Statement" : [ <statement>, <statement>, ... ]
<statement> = {
<effect_block>,
<action_block>,
<resource_block>,
<condition_block?>
}
<effect_block> = "Effect" : ("Allow" | "Deny")
<action_block> = "Action" | "NotAction" :
("*" | <action_string> | [<action_string>, <action_string>, ...])
<resource_block> = "Resource" :
("*" | <resource_string> | [<resource_string>, <resource_string>, ...])
<condition_block> = "Condition" : <condition_map>
<condition_map> = {
<condition_type_string> : {
<condition_key_string> : <condition_value_list>,
<condition_key_string> : <condition_value_list>,
...
},
<condition_type_string> : {
<condition_key_string> : <condition_value_list>,
<condition_key_string> : <condition_value_list>,
...
}, ...
}
<condition_value_list> = (<condition_value> | [<condition_value>, <condition_value>, ...])
<condition_value> = ("String" | "Number" | "Boolean" | "Date and time" | "IP address")次のリストは、アクセスポリシーの構文を説明しています:
Version:アクセスポリシーのバージョン。この値は 1 に固定されており、変更できません。
Statement:アクセスポリシーには複数の文を含めることができます。
各文は、
AllowまたはDenyのいずれかの効果を指定します。説明Action 要素と Resource 要素はどちらも、単一の文で複数の値をサポートします。
各文は、独立した条件 (Condition) をサポートします。
説明条件ブロックは複数の条件を組み合わせることができ、各条件は異なる演算子タイプを使用できます。
明示的な拒否の優先:ユーザーには複数のアクセスポリシーを割り当てることができます。これらのポリシーに
AllowとDenyの両方の文が含まれている場合、明示的な拒否のルールが適用されます。要素の値:
要素の値が文字列、数値、日時、ブール値、または IP アドレスである場合は、ダブルクォーテーションマーク ("") で囲みます。
要素の値が文字列の場合、
*および?ワイルドカードを使用してあいまい一致を行うことができます。*ワイルドカードは、0 個以上の文字に一致します。たとえば、ecs:Describe*は、Describeで始まるすべての ECS 操作に一致します。?ワイルドカードは、ちょうど 1 文字に一致します。
ポリシーフォーマットの検証
アクセスポリシーは JSON フォーマットをサポートしています。アクセスポリシーを作成または更新するたびに、システムは JSON フォーマットを検証します。サードパーティの JSON 検証ツールまたはエディターを使用してフォーマットを検証することもできます。JSON 構文標準の詳細については、「RFC 7159」をご参照ください。