AWS re:Postを使用することにより、以下に同意したことになります AWS re:Post 利用規約

IAM ID へのアクセスを特定の Amazon EC2 リソースに制限する方法を教えてください。

所要時間2分
0

AWS Identity and Access Management (IAM) の ID のアクセスを特定の Amazon Elastic Compute Cloud (Amazon EC2) リソースに制限したいと考えています。

簡単な説明

Amazon EC2 は、リソースレベルのアクセス許可または条件を部分的にサポートしています。リソースレベルのアクセス許可を使用して、IAM ID が特定の Amazon EC2 リソースにアクセスする方法を制御できます。

ABAC (タグに基づく認証) を使用して AWS リソースへのアクセスを制御することもできます。詳細については、「IAM チュートリアル: タグに基づいて AWS リソースにアクセスする権限を定義する」を参照してください。

解決策

次の IAM ポリシー例を使用して、ユースケースに合わせて Amazon EC2 インスタンスへのアクセスを制限してください。次に、アクセスを制限する IAM ID にポリシーをアタッチします。

アクセスをインスタンスの起動、停止、再起動のみに制限する

以下のポリシー例では、IAM ID へのアクセスを EC2 インスタンスの起動、停止、または再起動のみに制限しています。

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

: Owner をタグキーに、Bob をタグ値に、AccountId を AWS アカウント ID に置き換えます。

他の Amazon EC2 リソースを AWS リージョンごとに制限するには、アクションがリソースレベルのアクセス権限と条件をサポートしていることを確認してください。

EC2 インスタンスの起動をタグで制限する

以下のポリシー例では、Owner タグキーを使用して IAM ID へのアクセスを EC2 インスタンスのみ起動するように制限しています。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "ec2:RunInstances"
            ],
            "Resource": [
                "arn:aws:ec2:*:AccountId:instance/*"
            ],
            "Condition": {
                "StringNotLike": {
                    "aws:RequestTag/Owner": "*"
                }
            }
        },
        {
            "Sid": "AllowRunInstances",
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": [
                "arn:aws:ec2:*::image/*",
                "arn:aws:ec2:*::snapshot/*",
                "arn:aws:ec2:*:*:subnet/*",
                "arn:aws:ec2:*:*:network-interface/*",
                "arn:aws:ec2:*:*:security-group/*",
                "arn:aws:ec2:*:*:key-pair/*",
                "arn:aws:ec2:*:*:instance/*",
                "arn:aws:ec2:*:*:volume/*"
            ]
        },
        {
            "Sid": "AllowToDescribeAll",
            "Effect": "Allow",
            "Action": [
                "ec2:Describe*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowCreateTagsOnLaunching",
            "Effect": "Allow",
            "Action": [
                "ec2:CreateTags"
            ],
            "Resource": [
                "arn:aws:ec2:*:AccountId:*/*"
            ],
            "Condition": {
                "StringEquals": {
                    "ec2:CreateAction": [
                        "RunInstances"
                    ]
                }
            }
        }
    ]
}

: Owner をタグキーに、AccountId をアカウント ID に置き換えます。

EC2 インスタンスの起動をインスタンスタイプで制限する

次のポリシー例では、IAM ID へのアクセスを t3.* インスタンスタイプ で EC2 インスタンスのみ起動するように制限しています。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "ec2:RunInstances"
            ],
            "Resource": [
                "arn:aws:ec2:*:AccountId:instance/*"
            ],
            "Condition": {
                "StringNotLike": {
                    "ec2:InstanceType": "t3.*"
                }
            }
        },
        {
            "Sid": "AllowRunInstances",
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": [
                "arn:aws:ec2:*::image/*",
                "arn:aws:ec2:*::snapshot/*",
                "arn:aws:ec2:*:*:subnet/*",
                "arn:aws:ec2:*:*:network-interface/*",
                "arn:aws:ec2:*:*:security-group/*",
                "arn:aws:ec2:*:*:key-pair/*",
                "arn:aws:ec2:*:*:instance/*",
                "arn:aws:ec2:*:*:volume/*"
            ]
        },
        {
            "Sid": "AllowToDescribeAll",
            "Effect": "Allow",
            "Action": [
                "ec2:Describe*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowCreateTagsOnLaunching",
            "Effect": "Allow",
            "Action": [
                "ec2:CreateTags"
            ],
            "Resource": [
                "arn:aws:ec2:*:AccountId:*/*"
            ],
            "Condition": {
                "StringEquals": {
                    "ec2:CreateAction": [
                        "RunInstances"
                    ]
                }
            }
        }
    ]
}

注: インスタンスタイプ t3.* を使用するインスタンスタイプ (t3.nano など) に置き換えます。また、AccountId は使用するアカウント ID に置き換えます。

詳細については、「Amazon EC2 インスタンスタイプの命名規則」を参照してください。

関連情報

タグを使用して Amazon EC2 リソースへのアクセスを制御する IAM ポリシーを作成する方法を教えてください。

IAM ポリシータグを使用して EC2 インスタンスまたは EBS ボリュームの作成方法を制限するにはどうすればよいですか?

Amazon EC2 の ID ベースのポリシー

コメントはありません