LoginSignup
0
0

More than 3 years have passed since last update.

IAMポリシーで特定のタグを持つEC2操作を制限する

Posted at

特定のタグを持つEC2操作を制限する

はい皆さんこんにちは

この記事はIAMポリシーによってEC2のタグを参照して権限を付けた事例の紹介です。

詳細

要件としては以下の内容でした。
・EC2にEnvタグ(値:dev)が付いたものだけ操作したい。
・Envタグ(値:prod)は操作出来ないようにする。
・タグが一致しているならAMIやスナップショットも取りたい

環境:
AWS EC2(AmazonLinux2)
コンソールにログインするユーザーのIAMポリシーを編集しながら検証

最終的な設定

必要な権限を付与しつつ、EC2:*を許可しておく。
そのうえで、prodタグを持っているEC2の操作を拒否する。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "1",
            "Effect": "Allow",
            "Action": [
                "trustedadvisor:*",
                "iam:*",
                "cloudwatch:*",
                "s3:*",
                "logs:*",
                "cloudtrail:*",
                "ec2:*",
                "support:*",
                "inspector:*",
                "directconnect:*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "2",
            "Effect": "Deny",
            "Action": [
                "ec2:*"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "ec2:ResourceTag/Env": "prod"
                }
            }
        }
    ]
}

色々やってみる

EC2のインスタンス一覧にはprodのサーバも表示される(これは仕方ない)

prodが入っているEC2のタグを操作しようとするとエラーになる

prodが入っているEC2の再起動でエラーになる

devが入っているEC2の再起動はOK

devが入っているEC2のAMIが取得できる

devが入っているEC2でスナップショットも可能です。

注意事項

タグが付いていないサーバも同様に操作が可能です。
何故こうしているかと言うと、
AMIやスナップショットが作成される時にタグが付いていないのでエラーになってしまいます。
なのでタグが無くてもAMIやスナップショットを許可する必要があります。

なお、スナップショットにEnv:prodのタグを付けた後に削除しようとした場合、想定通りエラーになります。

運用で必ずタグをつけるようにしましょう。

感想

本当はもっと権限を絞れると思いますが、今回は細かい制限は入れませんでした。
(あまり時間が無かったのもあり。)
これ以外にもっと効率の良いものがあれば更新します。

ありがとうございました。

0
0
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
0
0