このトピックでは、Alibaba Cloud RAM で使用されるポリシーの構造、構文、およびルールについて説明します。

ポリシー構造

ポリシー構造には、バージョン番号および文の一覧が含まれます。

各文には、Effect、Action、Resource、および Condition という要素が含まれます。 条件要素は省略可能です。
図 1. ポリシー構造

ポリシー構造

ポリシー構文を使用するにあたっての注意点

ポリシーの構文を使用する前に、その文字とルールを理解する必要があります。
  • ポリシー文字 :
    • ポリシー内の JSON 文字には { } [ ] " , : が含まれます。
    • ポリシーの構文の記述に使用される特殊文字には、= < > ( ) | が含まれます。
  • ポリシー文字を使用する場合のルール :
    • 要素に複数の値が必要な場合は、各値を区切るための区切り文字としてコンマ (,) が使用され、その他の値の記述には省略記号 (...) が使用されます。 たとえば、[ <action_string>, <action_string>, ...] などです。
      複数の値をサポートする要素は単一の値もサポートします。 つまり、 "Action": [<action_string>] および "Action": <action_string> の 2 つの記述は同等です。
    • 構文内に疑問符 (?) が付いている要素は、それが省略可能な要素であることを示します (例 : <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>, ...])
<resource_block> = ("Resource" | "NotResource") : 
    ("*" | [<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> = ("String" | "Number" | "Boolean")
説明 :
  • バージョン : 現在のポリシーバージョンは 1 です。
  • 文 : ポリシーには複数の文を記述できます。
    • 各文は Allow または Deny のどちらかにすることができます。
      文では、Action 要素と Resource 要素の両方に複数の値を指定できます。
    • 各文は独自の条件をサポートします。
      条件ブロックには、操作タイプが異なる複数の条件とそれらの条件の論理的な組み合わせを含めることができます。
  • Deny が有効になります。ユーザーに複数のポリシーを付与できます。 これらのポリシーに Allow 文と Deny 文が両方記述されている場合は、Deny が優先 (Allow 文は Deny 文に上書き) されます。
  • 要素値 :
    • 要素値が数値またはブール値の場合は、文字列などの二重引用符 ("") を使用して囲む必要があります。
    • 要素の値が文字列の場合は、あいまい一致にアスタリスク (*) などの文字および疑問符 (?) を使用できます。
      • アスタリスク (*) は、任意の数 (ゼロを含む) の許容文字数を示します。
        たとえば ecs:Describe* は、Describe で始まるすべての ECS アクションを示します。
      • 疑問符 (?) は、使用可能な 1 つの文字を示します。

ポリシー形式のチェック

RAM ポリシーは JSON 形式で表現する必要があります。 ポリシーを作成または更新すると、RAM はまず JSON 形式が正しいかどうかをチェックします。

  • JSON 構文標準の詳細は、「RFC 7159」をご参照ください。
  • JSON の検証ソフトやエディターなどのツールを使用して、JSON構文標準を満たすためのポリシーを検証するよう推奨します。