特定タグのついたEC2/RDSインスタンスだけ操作を禁止したい

記事タイトルとURLをコピーする

プロフェッショナルサービス課の杉村です。
いざやろうとすると、やり方を忘れてしまっていることってよくあります。
今回はそんな物事の中のひとつをご紹介します。

特定のタグがついているEC2・RDSの操作を制限するIAMポリシー

以下のIAMポリシーは、タグキー:Target、値=ProductionというタグがついているEC2やRDSの削除・停止・再起動を禁止するポリシーです。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "ec2:TerminateInstances",
                "ec2:StopInstances",
                "ec2:RebootInstances"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "ec2:ResourceTag/Target": "Production"
                }
            }
        },
        {
            "Effect": "Deny",
            "Action": [
                "rds:DeleteDBInstance",
                "rds:StopDBInstance",
                "rds:RebootDBInstance"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "rds:db-tag/Target": "Production"
                }
            }
        }
    ]
}

このポリシーをIAM User/Groupに追加すれば、たとえAmazonEC2FullAccessがアタッチされているIAMユーザでも、間違って本番用インスタンスを停止するようなことがありません。

上記に加えてEC2のタグを編集する権限 (ec2:CreateTags, ec2:DeleteTags) も奪ってしまえば、誤操作だけでなく悪意をもった操作も防げるため、なお安全です。

杉村 勇馬 (記事一覧)

クラウドインテグレーション部 技術3課 課長

マルチAWSアカウント管理運用やネットワーク関係のAWSサービスに関するブログをよく書いています

2020年10月現在、ハマっているものはポケモン ソード(遅い)