このトピックでは、Resource Access Management (RAM) でポリシーを作成または更新するために使用される構造と構文について説明します。
ポリシー構文の規則
ポリシー構文には、次の規則が使用されます。
ポリシー内の文字
次の文字は、ポリシー構文の予約済み JSON 文字です。
{ } [ ] " , :次の文字は、ポリシー構文の特殊文字です。
= < > ( ) |
文字の使用
要素に複数の値を設定できる場合は、次のいずれかの操作を実行できます。
コンマ (,) をデリミタとして使用して各値を区切り、省略記号 (...) を使用して残りの値を記述します。例:
[ <action_string>, <action_string>, ...]1 つの値のみを含めます。例:
"Action": [<action_string>]および"Action": <action_string>。
要素の後に続く疑問符 (?) は、その要素がオプションであることを示します。例:
<condition_block?>。要素間の縦棒 (|) は、複数のオプションを示します。例:
("Allow" | "Deny")。オプションのいずれか 1 つのみを使用できます。文字列は二重引用符 (") で囲みます。例:
<version_block> = "Version" : ("1")。
ポリシーの構造
ポリシー構造には、次のコンポーネントが含まれます。
バージョン番号。
ステートメントのリスト。各ステートメントには、Effect、Action/NotAction、Resource、および Condition の各要素が含まれています。Condition 要素はオプションです。
ポリシー構文
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 です。バージョンは変更できません。
Statements:ポリシーには複数のステートメントを含めることができます。
各ステートメントの効果は、
AllowまたはDenyのいずれかになります。説明ステートメントでは、Action 要素と Resource 要素の両方に複数の値を設定できます。
各ステートメントには独自の条件を設定できます。
説明条件ブロックには、異なる演算子を持つ複数の条件を含めることができます。
権限の優先順位:RAM ユーザーに複数のポリシーをアタッチできます。リクエストに適用されるポリシーに
AllowステートメントとDenyステートメントが含まれている場合、Deny ステートメントは Allow ステートメントよりも優先されます。要素値:
要素値が文字列、数値、日付、時刻、ブール値、または IP アドレスの場合、値は二重引用符 ("") で囲む必要があります。
要素値が文字列の場合、アスタリスク (
*) や疑問符 (?) などのワイルドカード文字を使用できます。アスタリスク (
*) は、使用できる文字数 (ゼロを含む) を示します。たとえば、要素値がecs:Describe*の場合、Describeで始まるすべての Elastic Compute Service (ECS) 操作を使用できます。疑問符 (
?) は、許可される文字を示します。
ポリシー構文チェック
ポリシーは JSON ファイルとして保存されます。ポリシーを作成または更新すると、RAM はポリシーが作成または更新される前に JSON 構文が有効かどうかを確認します。また、JSON バリデーターやエディターなどのツールを使用して、ポリシーが JSON 構文標準を満たしているかどうかを確認することもできます。JSON 構文標準の詳細については、「RFC 7159」をご参照ください。