我有N X EC2实例,我希望将EC2操作限制为具有相同键/值标签的实例(即平台= dev)。
我正在考虑使用与小组附加的IAM策略进行此操作。
策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "ec2:*",
"Resource": "*",
"Condition": {
"StringEquals": {
"ec2:ResourceTag/tag:platform": "dev"
}
}
}
]}
我按照在线AWS文档进行设置:与AWS CLI或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.
但是,如果我删除条件,则其有效。我不明白我在做什么错。任何帮助都将得到感激!
问题是不是每个API操作&资源将在条件下接受EC2:Resourcetag/tag。
我认为您可能会授予过度的Broad权限(Action:EC2:*),因此请弄清楚您的实例需要采取哪些操作,然后决定如何限制它们。
可以在Amazon EC2 API操作的支持的资源级权限上找到操作,资源和条件密钥的列表。
我以前曾遇到过这个问题,这与结合通配符和条件有关。为我们解决的问题是在动作(例如["ec2:DescribeInstances"]
)和资源上更加明确(arn:aws:ec2:region:accountid:instance/*
)。