IAM策略变量非常酷,您可以创建通用策略,例如,使用户根据用户名访问S3存储桶中的路径,如下所示:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": ["s3:GetObject","s3:PutObject","s3:DeleteObject"],
"Effect": "Allow",
"Resource": "arn:aws:s3:::fooCorp-user-files/${aws:username}/*"
},
{
"Action": "s3:ListBucket",
"Effect": "Allow",
"Resource": "arn:aws:s3:::fooCorp-user-files"
}
]
}
我的问题是,如何使用角色(附加到EC2实例)而不是用户帐户来完成此操作?
我有许多应用程序服务器具有唯一的IAM用户帐户,这些帐户已链接到与上述类似的通用策略。这样可以隔离每个用户/应用可访问的文件,而无需创建多个策略。
我想将这些服务器切换为使用角色,但似乎没有类似的IAM变量aws:rolename
。
该文档表明,使用分配给EC2实例的角色时aws:username
变量不是集和aws:userid
是[role-id]:[ec2-instance-id]
(这是无益的任一)。
这确实看起来应该是您应该能够做的事情。还是我走错路了?
我一直在寻找相同的东西,经过大量搜索后得出的结论是,不可能在IAM策略中使用角色名称作为变量(不过,我想证明事实是错误的)。
相反,我用a标记了我的角色,name
并得到了以下结果:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": ["s3:GetObject","s3:PutObject","s3:DeleteObject"],
"Effect": "Allow",
"Resource": "arn:aws:s3:::fooCorp-user-files/${aws:PrincipalTag/name}/*"
},
{
"Action": "s3:ListBucket",
"Effect": "Allow",
"Resource": "arn:aws:s3:::fooCorp-user-files"
}
]
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句