LoginSignup
6
8

More than 3 years have passed since last update.

AWSで操作可能なリージョンを縛るためのIAM Policy

Last updated at Posted at 2019-05-28

AWSのIAM Userが操作できるリージョンを縛るためのPolicyです。
以下は例となります。

policy.json(例)
{
       "Version": "2012-10-17",
       "Statement": [
              {
                     "Sid": "DenySpecificRegionsAccess",
                     "Effect": "Deny",
                     "Action": [
                            "ec2:*",
                            "rds:*",
                            "redshift:*",
                            "ecs:*",
                            "lambda:*",
                            "dynamodb:*",
                            "apigateway:*",
                            "batch:*",
                            "workspaces:*",
                            "glue:*"
                     ],
                     "Resource": [
                            "*"
                     ],
                     "Condition": {
                            "StringNotEquals": {
                                   "aws:RequestedRegion": [
                                          "ap-northeast-1",
                                          "us-east-1",
                                          "ap-northeast-3"
                                   ]
                            }
                     }
              }
       ]
}

ポイント

上記ポリシーを翻訳すると、
「リージョンがap-northeast-1/us-east-1/ap-northeast-3ではない場合、指定されたActionをDenyする」
となります。
別途、フルアクセスを当てておきつつ、追加でこのように書くと、リージョンがap-northeast-1/us-east-1/ap-northeast-3ならば全部利用できるがその他では操作できない、といったことを実現できます。(AllowよりもDenyが優先です)
これにより、無秩序にリソースが乱立することを防ぎ、ガバナンスが効いた使い方ができるようになります。

注意点

ならばActionに*って書けばいいんじゃないの?と考えるところですが、AWSにはリージョンの範囲がない「グローバル」のサービス(例:IAM など)があり、*と書くとこれらのサービスが使えなくなるという欠点があります。リージョンを縛るConditionは、最終的に操作するIAM Policyで指定されていなければならず、スイッチロールでは回避できないようです。上記のPolicy例では、全サービスを縛るために、Actionにサービス名をひたすら書き続ける必要があります。
現実解は、上記のポリシーのように書きつつ、Actionで乱用されるとまずいものだけを縛り、課金状況やCloudTrailで監視しながら、Actionに追加していくといった流れになるかと思います。
(誠に恐縮ですが、より良いやり方がありましたら、ご教示いただけると幸いです)

6
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8