我们在 eu-west-1 区域运行许多 AWS 服务。不幸的是,我们的许多开发人员和其他需要创建临时资源的员工似乎忘记了 AWS 的这一方面,在启动 EC2 实例、创建 S3 存储桶等之前没有选择此区域。因此,他们通常最终选择 us-east-1 区域,因为这似乎是 AWS 始终使用的默认区域。
有没有办法通过 IAM(或其他方式)限制用户帐户仅在特定区域内启动/创建事物?
答案1
不幸的是,您无法在全球范围内执行此操作。但是,对于支持它的每个 AWS 产品,您通常能限制对某个区域的访问。
例如,对于 EC2,您可以执行以下操作:
{
"Statement":[{
"Effect":"allow",
"Action":"RunInstances",
"Resource":"*",
"Condition":{
"StringEquals":{
"ec2:Region":"us-west-1"
}
}
}
]
}
deny
当然,你还需要在适当的情况下发布规则。
以下是上述内容的文件。
答案2
使用类似这样的方法。此示例限制对两个 AWS 区域的访问。根据需要进行修改。
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Deny",
"Action": "*",
"Resource": "*",
"Condition": {
"StringNotEquals": {
"aws:RequestedRegion": [
"eu-central-1",
"eu-west-1"
]
}
}
}]
}
答案3
自 2018 年 4 月 25 日起,AWS 拥有一个全局资源 aws:RequestedRegion,您可以使用它来限制用户可以发送请求的区域。这与服务是否为区域性无关,因此您可以将其应用于所有服务。
不幸的是,您不能在组织的服务控制策略中使用它来将其应用于全局帐户,如果您想将帐户锁定到某些区域,您必须将该策略附加到每个主体并审核是否如此。
答案4
如果您仅请求 EC2 操作,那么是的,您可以像其他回复中提到的那样对其进行限制。如果是其他服务,我不确定您是否可以这样做...例如,AWS Lambda 似乎没有您lambda:region
可以添加到条件中的选项。