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

sea*_*mcl 24 json amazon-web-services amazon-iam

IAM政策是复杂的野兽.在制作它们时添加注释会很不错.例如,

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1422979261000",
      "Effect": "Allow",
      "Action": [
        "route53:ListHostedZones",
      ],
      "Comment": "Foo"
      # or Bar
      "Resource": [
        "*"
      ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

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

Ste*_*pel 27

Hyper Anthony的答案在严格的"评论"意义上是正确的 - 但是,在大多数情况下,你至少可以使用Sid伪评论来传达意图或任何约束等.

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

这可以通过TheseActionsSupportResourceLevelPermissions在(非常有用的)AWS博客文章中使用(例如,揭秘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/*"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)
  • 正如在Sid中提到的,某些服务可能需要此元素并且具有唯一性要求,但我还没有遇到过结果命名约束.

  • 我也来到这里寻找如何评论IAM政策.我如何在6个月内记住AWS Principal代码所指的人?我的团队应该如何知道?如果AWS支持这些政策声明的"显示名称"和"描述"字段,那将非常有用. (3认同)

Ant*_*ace 16

不可以.通常,JSON中不允许您描述的注释.要有效地创建注释,您需要允许一个描述注释的新元素.由于AWS是此json对象的主人,因此他们将负责允许此操作.

他们目前只允许以下元素:

  • ID
  • 声明
  • 希德
  • 影响
  • 主要
  • NotPrincipal
  • 行动
  • NotAction
  • 资源
  • NotResource
  • 条件

  • 感谢您的链接。我知道 json 一般不支持注释,但很高兴知道甚至不允许使用临时字段。 (2认同)