web-dev-qa-db-ja.com

AWSユーザー/アカウントを特定のリージョンに制限することは可能ですか?

Eu-west-1リージョンで多くのAWSサービスを実行しています。残念ながら、一時的なリソースを作成する必要がある開発者や他の従業員の多くは、AWSのこの側面を忘れており、EC2インスタンスを起動したり、S3バケットを作成したりする前にこのリージョンを選択しないようです。その結果、多くの場合、 AWSが常に使用するデフォルトのように見えるため、us-east-1リージョン。

IAM(またはその他の方法)を使用して、ユーザーアカウントを特定のリージョン内でのみ起動/作成するように制限する方法はありますか?

24
Bruce P

残念ながら、これをグローバルに行うことはできません。ただし、それをサポートするAWS製品ごとに、通常、特定のリージョンへのアクセスをcan制限できます。

たとえば、EC2の場合、次のことができます。

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

もちろん、必要に応じてdenyルールも発行する必要があります。

こちら 上記のドキュメント。

25
EEAA

このようなものを使用してください。この例では、2つのAWSリージョンへのアクセスを制限しています。必要に応じて変更します。

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

2018年4月25日以降、AWSには、ユーザーがリクエストを送信できるリージョンを制限するために使用できるグローバルリソースaws:RequestedRegionがあります。これは、サービスが地域的であるかどうかに関係なく、すべてのサービスに適用できます。

AWSセキュリティブログ

残念ながら、これを組織のサービスコントロールポリシーで使用してアカウントにグローバルに適用することはできません。特定のリージョンにアカウントをロックする場合は、すべてのプリンシパルにポリシーをアタッチし、そうであることを監査する必要があります。

8
jaferrando

このスレッドで受け入れられた回答はSyntax Error on Policy。以下は私のために働きました:

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

}

4
PUG

EC2アクションのみを要求する場合は、他の応答で言及されているように制限できます。それが他のサービスである場合、それを実行できるかどうかはわかりません...例AWS Lambdaには、条件に追加できるlambda:regionがないようです。

3
nanodgb

私はこれがよりうまく機能することを発見しました(起動/停止/終了などを許可します)。

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

これは私にとってはうまくいきます、私は受け入れられた答えとして言及されたjsonでポリシーを作成しようとしましたが、それは私にとってはうまくいきません。

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

AWS IAMのFAQ から:

Q:ユーザーを地域で定義できますか?最初はありません。 AWSアカウントが今日のように、ユーザーはグローバルエンティティです。ユーザー権限を定義するときに、リージョンを指定する必要はありません。ユーザーは、どの地域でもAWSサービスを使用できます。

0
mtak

それが現在の解決策です-"eu-west-1"を使用します:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect"    : "Allow",
            "Action"    : "*",
            "Resource"  : "*",
            "Condition": 
            {
                "StringEquals": {
                    "aws:RequestedRegion": "eu-west-1"
                }
            }
        }
    ]
}
0
Xtigyro