我们有一些用户基本上可以使用以下策略访问所有内容:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "*",
"Resource": "*"
}
]
}
有没有办法限制对所选VPC的访问?
我尝试创建以下策略并将其附加到用户(通过组):
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1504660000000",
"Effect": "Deny",
"Action": [
"ec2:*"
],
"Resource": [
"arn:aws:ec2:<REGION>:<ACCOUNT-ID>:vpc/<VPC-ID>"
]
}
]
}
我已经替换了&lt; REGION&gt; &LT; ACCOUNT-ID&GT;和&lt; VPC-ID&gt;&#34;。
策略模拟器正确拒绝访问(StartInstances,StopInstances等)。然而,附加了此策略的用户仍然可以在vpc中创建EC2实例。
答案 0 :(得分:2)
这是一个棘手的问题。您必须引用并包含所有操作,包括支持ec2:Vpc条件的recource,并拒绝API操作。对于其他操作,您必须找到API操作中常见的条件,并将这些操作包含在单独的语句块中,并通过其他方式拒绝这些操作,例如:使用标签或其他东西。
此外,由于用户具有AdministratorAccess,您必须确保用户无法分离此拒绝策略并升级该权限。
对于使用VPC的其他服务,例如RDS,这是不可能的。
[1] http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-iam-actions-resources.html
答案 1 :(得分:1)
在这里,你不想在一个VPC中给予ec2许可。因此,您应该将vpc视为条件和资源,如ec2。
请看下面的代码 -
{
"Effect": "Deny",
"Action": "ec2:*",
"Resource": "arn:aws:ec2:region:account:subnet/*",
"Condition": {
"StringEquals": {
"ec2:Vpc": "arn:aws:ec2:region:account:vpc/vpc-1a2b3c4d"
}
}
}
解释 - 这里我们拒绝对特定vpc下的ec2的权限。这里我在ec2中添加了子网,它是可选的。如果需要,您可以添加。