我有n个EC2实例,我希望将ec2操作限制为具有相同键/值标记的实例(I.E. platform = dev)。
我正在考虑使用附加到其默认IAM用户所在群组的IAM策略来执行此操作。
策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "ec2:*",
"Resource": "*",
"Condition": {
"StringEquals": {
"ec2:ResourceTag/tag:platform": "dev"
}
}
}
]}
我根据在线AWS文档设置了这个:Example Policies for Working With the AWS CLI or an AWS SDK
我在策略模拟器中检查它并按预期工作(传入开发并允许,否则被拒绝)。
然后在其中一个带有标签密钥/对的platform = dev的服务器上,我运行aws ec2 describe-instances
我得到了回复:
An error occurred (UnauthorizedOperation) when calling the DescribeInstances operation: You are not authorized to perform this operation.
但是如果我删除条件就可以了。我不明白我做错了什么。感谢任何帮助!
答案 0 :(得分:2)
问题在于并非每个API Action&资源将接受条件中的ec2:ResourceTag /标记。
我认为您可能正在授予过于宽泛的权限(操作:ec2:*),因此请确定您的实例需要执行哪些操作,然后决定如何限制它们。
可以在Supported Resource-Level Permissions for Amazon EC2 API Actions找到操作,资源和条件键列表。
答案 1 :(得分:1)
之前我遇到过这个问题,它与组合通配符和条件有关。为我们解决的问题是对行动(例如["ec2:DescribeInstances"]
)以及资源(arn:aws:ec2:region:accountid:instance/*
)更加明确。