如何在json IAM策略中添加注释?

时间:2015-02-03 16:17:34

标签: json amazon-web-services amazon-iam

IAM政策是复杂的野兽。在制作评论时添加评论会很不错。例如,

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

这些都不奏效。是否存在向这些政策添加评论的方法?

2 个答案:

答案 0 :(得分:24)

Hyper Anthony的answer在严格意义上是正确的评论' - 但是,在大多数情况下,您至少可以使用Sid伪注释来传达意图或任何约束等。:

  

Sid(声明ID)是您为策略声明提供的的可选标识符。您可以为语句数组中的每个语句分配Sid值。在允许您指定ID元素的服务中,例如SQS和SNS,Sid值只是策略文档ID的子ID。在IAM中,Sid值在策略中必须是唯一的。 [强调我的]

这是例如例如,在(非常有用的)AWS博客帖子Demystifying EC2 Resource-Level Permissions中使用TheseActionsSupportResourceLevelPermissions

{
    "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中提到的,某些服务可能需要此元素并且具有唯一性要求,但我还没有遇到过命名限制。

答案 1 :(得分:13)

没有。通常,在您描述评论are not allowed in JSON时。要有效地创建注释,您需要允许一个描述注释的新元素。由于AWS是此json对象的主人,因此他们将负责允许此操作。

他们目前only allow the following elements

  • 编号
  • 声明
  • 西特
  • 效果
  • 主要
  • NotPrincipal
  • 动作
  • NotAction
  • 资源
  • NotResource
  • 条件