IAM政策是复杂的野兽。这将是很好的添加一个评论时,制作它们。比如说,
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1422979261000",
"Effect": "Allow",
"Action": [
"route53:ListHostedZones",
],
"Comment": "Foo"
# or Bar
"Resource": [
"*"
]
}
]
}
这两个都不管用。是否存在向这些策略添加注解的方法?
4条答案
按热度按时间lsmepo6l1#
Hyper Anthony的answer在严格意义上的“注解”是正确的-然而,在大多数情况下,您至少可以使用
Sid
作为伪注解来传达意图或任何约束等:Sid(语句ID)是您为策略语句提供的可选标识符**。可以为语句数组中的每个语句分配Sid值。在允许您指定ID元素的服务(如SQS和SNS)中,Sid值只是策略文档ID的子ID。在IAM中,Sid值在策略中必须是唯一的。[强调我的]
这是例如例如在AWS博客文章Demystifying EC2 Resource-Level Permissions中使用
TheseActionsSupportResourceLevelPermissions
:wb1gzix02#
不。一般来说,你描述的评论是are not allowed in JSON。要有效地创建注解,您需要允许一个描述注解的新元素。由于AWS是这个json对象的主人,他们将负责允许这一点。
目前,only allow the following elements:
2ul0zpep3#
JSON不支持注解。但是我们可以添加'Sid:'作为注解,以便将多个服务策略分类到一个策略中。下面我正在上传Ec2,S3,Lambda,ElasticBeanStalk服务的单个JSON策略。
7y4bm7vi4#
虽然Sid是解决缺乏评论能力的一个很好的解决方案,但使用标签也是另一种尚未提到的方法。另外,另一种方法是完全停止使用JSON。详情如下...
使用标签
当在AWS中创建策略时,you can add tags to that policy将允许您在键值对中插入用户生成的注解。
停止使用JSON
理想情况下,您的策略声明不应该存储在AWS中,因为您无法在那里获得源代码跟踪。在将代码部署到AWS之前,应始终使用Github或CodeCommit等工具来存储代码。AWS不应该是您应用程序的真实来源,而是使用Cloudformation、CDK、Terraform、AWS CLI等部署策略的地方。在这些情况下,您的策略文档可以存储为YAML(或其他语言)而不是JSON。例如,如果使用Typescript + CDK,则可以在代码中添加注解。或者如果你使用Cloudformation,使用支持注解的YAML。如果您使用AWS CLI,请在使用json之前使用YAML转换器工具。我相信这是对最初问题的最理想的回答,因为AWS等云环境几乎从未被设计为轻松跟踪随时间推移对部署代码的更改。例如,AWS IAM策略can only have 5 versions之前,您必须删除一个才能插入新版本的策略。