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

IAMポリシーによるEC2インスタンス操作制限

はじめに

IAMポリシーによるEC2インスタンスの操作制限について調べた内容の記事です。

IAMポリシーについて

IAMポリシーはAWSリソースに対する操作権限を記述したもので、IAMユーザー・IAMグループ・IAMロールに対しアタッチすることで操作権限を制御することができます。ポリシーはjson形式で記述されます。

操作制限の具体例

今回はIAMポリシーによる操作制御の具体例として、EC2インスタンスに対して以下の操作を許可するために必要なポリシーを調べました。各操作はマネージメントコンソールから行うことを想定しています。

  • EC2インスタンスが見れるだけ
  • 既存のEC2インスタンスの起動・停止を許可
  • EC2インスタンスの作成を許可
  • 既存のIAMロールをアタッチしたEC2インスタンスの作成を許可

EC2インスタンスが見れるだけ

AWS管理ポリシーの arn:aws:iam::aws:policy/ReadOnlyAccess のみをアタッチします。
これはAWSリソースに対する読み取りアクセスのみを許可するポリシーです。

既存のEC2インスタンスの起動・停止を許可

既存のEC2インスタンスの起動・停止を許可するポリシーです。
許可する対象としてEC2インスタンスに自身のユーザー名のOwnerタグがつけられているものに限定しています。
ポリシーは以下の2つの記述からなります。

  • EC2インスタンスの起動・停止の許可
  • EC2インスタンスの情報表示の許可

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:StartInstances",
                "ec2:StopInstances"
            ],
            "Resource": "arn:aws:ec2:*:*:instance/*",
            "Condition": {
                "StringEquals": {
                    "ec2:ResourceTag/Owner": "${aws:username}"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "ec2:DescribeInstances",
            "Resource": "*"
        }
    ]
}

EC2インスタンスの作成を許可

EC2インスタンスの作成を許可するポリシーです。
以下の2つの記述からなります。

  • EC2インスタンスの情報表示・コンソール出力の許可
  • EC2インスタンスの作成の許可

ちなみにこのポリシー下では既存のIAMロールをEC2インスタンスにアタッチすることができません。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:Describe*",
                "ec2:GetConsole*"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": [
                "arn:aws:ec2:*:*:subnet/*",
                "arn:aws:ec2:*:*:network-interface/*",
                "arn:aws:ec2:*:*:instance/*",
                "arn:aws:ec2:*:*:volume/*",
                "arn:aws:ec2:*::image/ami-*",
                "arn:aws:ec2:*:*:key-pair/*",
                "arn:aws:ec2:*:*:security-group/*"
            ]
        }
    ]
}

既存のIAMロールをアタッチしたEC2インスタンスの作成を許可

既存のIAMロールをアタッチしたEC2インスタンスの作成を許可するポリシーです。
1つ上で説明したポリシーに加え以下の3つのアクションを許可しています。

  • iam:Get*
  • iam:List*
  • iam:PassRole

上の2つはIAMの情報取得のための権限です。
iam:PassRoleはサービスにロールを渡す権限で、EC2インスタンスにIAMロールを設定する際に必要となります。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:Describe*",
                "ec2:GetConsole*"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": [
                "arn:aws:ec2:*:*:subnet/*",
                "arn:aws:ec2:*:*:network-interface/*",
                "arn:aws:ec2:*:*:instance/*",
                "arn:aws:ec2:*:*:volume/*",
                "arn:aws:ec2:*::image/ami-*",
                "arn:aws:ec2:*:*:key-pair/*",
                "arn:aws:ec2:*:*:security-group/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:Get*",
                "iam:List*",
                "iam:PassRole"
            ],
            "Resource": "*"
        }
    ]
}

参考

yumemi
みんなが知ってるあのサービス、実はゆめみが作ってます。スマホアプリ/Webサービスの企画・UX/UI設計、開発運用。Swift, Kotlin, PHP, Vue.js, React.js, Node.js, AWS等エンジニア・クリエイターの会社です。Twitterで情報配信中https://twitter.com/yumemiinc
http://www.yumemi.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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした