Help us understand the problem. What is going on with this article?

特定リージョンのec2の操作を禁止した上で他リージョンでRDSを使うIAMポリシー

More than 5 years have passed since last update.

ec2を東京リージョンを使っているのでそこの操作や閲覧を禁止した上で、
東京以外のリージョンでRDSを検証をしたいというよくある(?)状況で使えるIAMのポリシーです。

ドキュメントを見ると、

//docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/UsingWithRDS.IAM.html
Amazon RDS コンソールの使用に必要なアクセス許可
Amazon RDS コンソールを使用するユーザーには、特定のアクションを実行するためのアクセス許可だけでなく、コンソール自体に必要になるアクションを実行するためのアクセス許可も付与する必要があります。たとえば、単にリソースを一覧表示するには、コンソールでは DescribeSecurityGroups や DescribeSubnets などの API アクションを実行します。コンソールを使用するユーザーには、これらのアクションを実行するためのアクセス許可が必要です。それらのアクセス許可がない場合、ユーザーは作業する必要のあるコンソールの一部で、タスクに対するアクセス許可がないというメッセージが表示されます。

とあり、どうやらマネジメントコンソールでアクセスするためにはRDSの他にec2やcloudwatch、snsの許可設定も必要とのことです。しかし、

"Resource":"arn:aws:rds:us-east-1:111111111:*"
"StringEquals": {
  "*:Region": "us-east-1"
}

などと、特定リージョンのみ指定したポリシーを作成しましたが、マネジメントコンソールでRDSへ移動すると以下のエラーが出てしまいます。

マネジメントコンソールのエラー.png

いろいろパラメーラーを変えているうちにアクセスしようとしているリージョンに加えて、他のリージョンの情報も取得できなければうまく表示できないっぽいことがわかってきました。
ということで結局、すべてのリージョンのRDS/ec2/cloudwatch/snsなどの必要なパラメータを許可した上で東京リージョンのec2は禁止するというポリシーにしたところうまくいきました。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "rds:*",
                "ec2:Describe*",
                "cloudwatch:GetMetricStatistics",
                "cloudwatch:DescribeAlarms",
                "sns:*"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Deny",
            "Action": [
                "ec2:*"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "ec2:Region": "ap-northeast-1"
                }
            }
        }
    ]
}
biatunky
田舎のクラウド屋さんです
https://heptagon.co.jp
heptagon
東北を拠点としてクラウドのインテグレーションサービスを行っています。
https://heptagon.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away