是否可以将AWS用户/账户限制为特定区域?


24

我们在eu-west-1地区运行了许多AWS服务。不幸的是,似乎许多需要创建临时资源的开发人员和其他员工忘记了AWS的这一方面,并​​且在启动EC2实例,创建S3存储桶等之前没有选择该区域。结果,他们常常最终陷入us-east-1区域,因为这似乎是AWS始终使用的默认区域。

是否可以通过IAM(或其他方式)限制用户帐户仅在特定区域内启动/创建事物?

Answers:


25

不幸的是,您无法在全球范围内这样做。但是,对于每个支持它的AWS产品,通常可以将访问限制在某个区域。

例如,对于EC2,您可以执行以下操作:

{
  "Statement":[{
    "Effect":"allow",
    "Action":"RunInstances",
    "Resource":"*",
    "Condition":{
      "StringEquals":{
        "ec2:Region":"us-west-1"
        }
      }
    }
  ]
}

当然,您也需要deny在适当的地方发布规则。

这是上面的文档。


完善。这看起来正是我所需要的。谢谢!
Bruce P

5
取而代之的"Condition": { "condition": {} }应该注明"Condition": { "StringEquals": {} }
Jasny阿诺-丹尼尔斯

S3等其他服务呢?
伊夫·

7

使用这样的东西。本示例将访问限制为两个AWS区域。根据需要进行修改。

{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Deny",
    "Action": "*",
    "Resource": "*",
    "Condition": {
      "StringNotEquals": {
        "aws:RequestedRegion": [
          "eu-central-1",
          "eu-west-1"
        ]
      }
    }
  }]
}

3
aws:RequestedRegion的答案是现在最相关的答案
majikman

1
谢谢您,有了此策略,您可以使用默认的AWS可用策略,并且仅附加一个内联策略,您就可以有效地限制任何服务。
lkraider

7

自2018年4月25日以来,AWS具有全局资源aws:RequestedRegion,您可以使用它来限制用户可以向其发送请求的区域。这与服务是否为区域服务无关,因此您可以将其应用于所有服务。

AWS安全博客

不幸的是,您不能在组织的“服务控制策略”中使用此策略将其全局应用到一个帐户,并且,如果要将帐户锁定在某些区域,则必须将该策略附加到每个主体,并进行审计。


4

对此线程的已接受答案给出了Syntax Error on Policy。下面为我​​工作:

{
"Statement": [
    {
        "Sid": "Stmt1375943389569",
        "Action": "ec2:*",
        "Effect": "Allow",
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "ec2:Region": "eu-central-1"
            }
        }
    }
]

}


3

如果仅要求EC2操作,则可以,如其他响应中所述,可以限制它。如果它是其他服务,我不确定您可以这样做...例如,AWS Lambda似乎没有lambda:region可以添加的条件。


0

AWS IAM常见问题解答中

问:可以在区域中定义用户吗?最初不是。用户是全球实体,就像今天的AWS账户一样。定义用户权限时,无需指定区域。用户可以在任何地理区域使用AWS服务。


3
哇。亚马逊给出的答案很差。“最初不是。” 这是否意味着可以在创建帐户后完成?这是否意味着AWS首次启动时无法启动,但现在可以了?“定义用户权限时不需要指定区域。” 我没有问是否需要。我问是否可以这样做。“用户能够在任何地理区域内使用AWS服务。” 显然不再基于上面的EEAA发布。IAM中的“条件”语句使您可以按地区限制某些服务。谢谢一样。
Bruce P

1
@BruceP-这不是一个糟糕的答案。很好 用户是全球性的。可以限制用户权限
EEAA 2014年

0

我发现这可以更好地工作(允许启动/停止/终止/等等),以便仅向一个区域的用户授予完全EC2访问权限-其他任何区域在任何尝试的访问期间都会显示错误。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": "*",
            "Effect": "Allow",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "ec2:Region": "us-east-1"
                }
            }
        }
    ]
}

0

这对我有用,我尝试使用提到的json创建策略作为可接受的答案,但对我不起作用。

{
    "Version": "2012-10-17",
    "Statement": [{
        "Action": "ec2:*",
        "Effect": "Allow",
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "ec2:Region": [
                    "us-east-1"
                ]
            }
        }
    }]
}

0

这是当前的解决方案-使用“ eu-west-1”:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect"    : "Allow",
            "Action"    : "*",
            "Resource"  : "*",
            "Condition": 
            {
                "StringEquals": {
                    "aws:RequestedRegion": "eu-west-1"
                }
            }
        }
    ]
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.