web-dev-qa-db-ja.com

json IAMポリシーにコメントを追加するにはどうすればよいですか?

IAMポリシーは複雑な獣です。それらを作成するときにコメントを追加するといいでしょう。例えば、

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1422979261000",
      "Effect": "Allow",
      "Action": [
        "route53:ListHostedZones",
      ],
      "Comment": "Foo"
      # or Bar
      "Resource": [
        "*"
      ]
    }
  ]
}

これらはどちらも機能しません。これらのポリシーにコメントを追加する方法はありますか?

29
seanmcl

いいえ。一般的に、あなたが説明するコメントは JSONでは許可されていません です。コメントを効果的に作成するには、コメントを説明する新しい要素を許可する必要があります。 AWSはこのjsonオブジェクトのマスターであるため、これを許可する責任があります。

それらは現在 次の要素のみを許可します

  • バージョン
  • Id
  • ステートメント
  • シド
  • 効果
  • 主要な
  • NotPrincipal
  • アクション
  • NotAction
  • 資源
  • NotResource
  • 状態
16
Anthony Neace

Hyper Anthonyの answer は「コメント」の厳密な意味で正しいですが、ほとんどの場合、疑似コメントにSidを使用して、意図や制約などを伝えることができます。 :

Sid(ステートメントID)は、ポリシーステートメントに指定するオプションの識別子です。ステートメント配列の各ステートメントにSid値を割り当てることができます。 SQSやSNSなどのID要素を指定できるサービスでは、Sid値はポリシードキュメントのIDのサブIDにすぎません。 IAMでは、Sid値はポリシー内で一意である必要があります。 [重点鉱山]

これは、例えば(非常に役立つ)AWSブログ投稿内でのTheseActionsSupportResourceLevelPermissionsの使用によって例示 EC2リソースレベルの権限の説明

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "TheseActionsSupportResourceLevelPermissions",
            "Effect": "Allow",
            "Action": [
                "ec2:RunInstances",
                "ec2:TerminateInstances",
                "ec2:StopInstances",
                "ec2:StartInstances"
            ],
            "Resource": "arn:aws:ec2:us-east-1:accountid:instance/*"
        }
    ]
}
  • Sid 一部のサービスで説明されているように、この要素が必要であり、一意性の要件がある可能性がありますが、結果として生じる命名制約はまだ経験していません。
27
Steffen Opel