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


24

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

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

回答:


25

残念ながら、これをグローバルに行うことはできません。しかし、サポートする各AWS製品のそれは、あなたが一般的にすることができ、特定の地域へのアクセスを制限します。

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

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

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

ここにあります上記のドキュメント。


パーフェクト。これはまさに私が必要なもののように見えます。ありがとう!
ブルースP 14

5
代わりに"Condition": { "condition": {} }、それは必ず明記してください"Condition": { "StringEquals": {} }
Jasny -アーノルド・ダニエルズ

S3のような他のサービスはどうですか?
イヴM.

7

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

AWSセキュリティブログ

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


6

このようなものを使用してください。この例では、アクセスを2つの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で利用可能なポリシーを使用し、この1つのみをインラインでアタッチして、サービスを効果的に制限できます。
lkraider

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 IAMFAQから:

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


3
ワオ。アマゾンからの何と貧弱に書かれた答え。「最初は違います。」これは、アカウントの作成後に実行できることを意味していますか?それは、AWSが最初に起動されたときにできなかったが、今はできるということですか?「ユーザー権限を定義する際に地域を指定する必要はありません。」必要かどうかは尋ねませんでした。それが可能かどうか尋ねました。「ユーザーは、どの地域でもAWSサービスを使用できます。」明らかに、EEAAが上記に投稿した内容に基づくものではありません。IAMの「条件」ステートメントを使用すると、一部のサービスを地域ごとに制限できます。どうもありがとう。
ブルースP 14

1
@BruceP-それは悪い答えではありません。まったく問題ありません。ユーザーはグローバルです。ユーザー特権を制限できます。
EEAA 14

0

これは、1つのリージョンのみにユーザーの完全な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"
                }
            }
        }
    ]
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.