IAM ID へのアクセスを特定の Amazon EC2 リソースに制限する方法を教えてください。
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 ボリュームの作成方法を制限するにはどうすればよいですか?
関連するコンテンツ
- 質問済み 7年前lg...
- 質問済み 5ヶ月前lg...
- 質問済み 1年前lg...
- 質問済み 4年前lg...
- AWS公式更新しました 2年前
- AWS公式更新しました 1年前
- AWS公式更新しました 1ヶ月前