IAM ユーザー、グループ、またはロールに明示的に許可を付与し、タグを使用して特定の VPC 内に EC2 インスタンスを作成および管理するための IAM ポリシーを作成するにはどうすればよいですか?
特定の VPC で Amazon Elastic Compute Cloud (Amazon EC2) インスタンスの作成および管理を行うため、IAM ユーザー、グループ、またはロールに許可を明示的に付与する AWS Identity and Access Management (IAM) ポリシーを作成するにはどうすればよいですか? IAM エンティティが特定のタグを使用して EC2 インスタンスを作成し、それらのタグを使用して VPC でそれらの EC2 インスタンスを管理できるように、許可を制限する必要があります。
簡単な説明
Amazon EC2 は制限されているサポートされているリソースレベルの許可を提供しますが、検討すべきアクション、リソース、条件が複数あります。EC2 インスタンスの起動などの特定の Amazon EC2 API アクションは、インスタンスを制御するタグを使用して、VPC ARN を通して制御することができます。
解決方法
タグを使用して特定の VPC で EC2 インスタンスを作成するため、カスタム IAM ポリシーを適用して IAM ユーザー、グループ、またはロールの許可を制限します。「ec2:ResourceTags」ポリシー条件を使用して、インスタンス制御を制限します。このポリシーは、一意のタグを使用して指定の VPC で EC2 インスタンスを起動するアクセス権限を付与します。制限されたタグを使用して、これらの EC2 インスタンスを管理できます。
インスタンスを起動する IAM エンティティを適用するマネージド型ポリシーを作成する
1. IAM コンソールを開き、ポリシーを選択してから、ポリシーの作成を選択します。
2. JSON タブを選択してから、このカスタムポリシーを入力します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "GrantIAMPassRoleOnlyForEC2", "Action": [ "iam:PassRole" ], "Effect": "Allow", "Resource": [ "arn:aws:iam::ACCOUNTNUMBER:role/ROLENAME", "arn:aws:iam::ACCOUNTNUMBER:role/ROLENAME" ], "Condition": { "StringEquals": { "iam:PassedToService": "ec2.amazonaws.com" } } }, { "Sid": "ReadOnlyEC2WithNonResource", "Action": [ "ec2:Describe*", "iam:ListInstanceProfiles" ], "Effect": "Allow", "Resource": "*" }, { "Sid": "ModifyingEC2WithNonResource", "Action": [ "ec2:CreateKeyPair", "ec2:CreateSecurityGroup" ], "Effect": "Allow", "Resource": "*" }, { "Sid": "RunInstancesWithTagRestrictions", "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:REGION:ACCOUNTNUMBER:instance/*", "arn:aws:ec2:REGION:ACCOUNTNUMBER:volume/*" ], "Condition": { "StringEquals": { "aws:RequestTag/TAG-KEY": "TAG-VALUE" } } }, { "Sid": "RemainingRunInstancePermissionsNonResource", "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:REGION::image/*", "arn:aws:ec2:REGION::snapshot/*", "arn:aws:ec2:REGION:ACCOUNTNUMBER*:network-interface/*", "arn:aws:ec2:REGION:ACCOUNTNUMBER*:key-pair/*", "arn:aws:ec2:REGION:ACCOUNTNUMBER*:security-group/*" ] }, { "Sid": "EC2RunInstancesVpcSubnet", "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:REGION:ACCOUNTNUMBER:subnet/*", "Condition": { "StringEquals": { "ec2:Vpc": "arn:aws:ec2:REGION:ACCOUNTNUMBER:vpc/VPC-ID" } } }, { "Sid": "EC2VpcNonResourceSpecificActions", "Effect": "Allow", "Action": [ "ec2:DeleteNetworkAcl", "ec2:DeleteNetworkAclEntry", "ec2:DeleteRoute", "ec2:DeleteRouteTable", "ec2:AuthorizeSecurityGroupEgress", "ec2:AuthorizeSecurityGroupIngress", "ec2:RevokeSecurityGroupEgress", "ec2:RevokeSecurityGroupIngress", "ec2:DeleteSecurityGroup", "ec2:CreateNetworkInterfacePermission", "ec2:CreateRoute", "ec2:UpdateSecurityGroupRuleDescriptionsEgress", "ec2:UpdateSecurityGroupRuleDescriptionsIngress" ], "Resource": "*", "Condition": { "StringEquals": { "ec2:Vpc": "arn:aws:ec2:REGION:ACCOUNTNUMBER:vpc/VPC-ID" } } }, { "Sid": "AllowInstanceActionsTagBased", "Effect": "Allow", "Action": [ "ec2:RebootInstances", "ec2:StopInstances", "ec2:TerminateInstances", "ec2:StartInstances", "ec2:AttachVolume", "ec2:DetachVolume", "ec2:AssociateIamInstanceProfile", "ec2:DisassociateIamInstanceProfile", "ec2:GetConsoleScreenshot", "ec2:ReplaceIamInstanceProfileAssociation" ], "Resource": [ "arn:aws:ec2:REGION:ACCOUNTNUMBER:instance/*", "arn:aws:ec2:REGION:ACCOUNTNUMBER:volume/*" ], "Condition": { "StringEquals": { "ec2:ResourceTag/TAG-KEY": "TAG-VALUE" } } }, { "Sid": "AllowCreateTagsOnlyLaunching", "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": [ "arn:aws:ec2:REGION:ACCOUNTNUMBER:instance/*", "arn:aws:ec2:REGION:ACCOUNTNUMBER:volume/*" ], "Condition": { "StringEquals": { "ec2:CreateAction": "RunInstances" } } } ] }
3. ACCOUNTNUMBER、REGION、TAG-KEY、TAG-VALUE、VPC-ID、および ROLENAME パラメータを環境の値に置き換えます。
4. (オプション) このポリシーを唯一の IAM ユーザーまたはグループへ割り当てようとしている場合は、TAG-KEY または TAG-VALUE パラメータを IAM ポリシー変数 ${aws:username}に置き換えます。このポリシー変数により、IAM サービスが IAM ユーザーの呼び出しの フレンドリ名 にこれらのパラメータを自動入力できるようにします。このステップでは、IAM ユーザーが指定された VPC でのみインスタンスを起動できるようにし、自分のインスタンスを制御できるようにします。
5. レビューポリシーを選択してから、名前に名前を入力します。たとえば、「VPC_Lockdown_VPC-ID」と入力します。ここで、「VPC-ID」は、このポリシーを適用しようとしている VPC の ID です。
6. ポリシーの作成 を選択します。
注: 一部のアイテムをお使いの環境の特定リソースに置き換える必要があります。詳細については、「Amazon リソースネーム (ARN)」を参照してください。
ポリシーをユーザー、グループ、またはロールにアタッチする
1. IAM コンソール ナビゲーションペインで、ユーザー、グループ、または ロールを選択します。
2. ポリシーをアタッチするユーザー、グループ、またはロールを選択します。
3. ポリシーをアタッチを選択します。
4. 検索ボックスに作成したポリシーの名前を入力してから、ポリシーを選択します。たとえば、「VPC_Lockdown_VPC-ID」と入力します。
5. [Attach Policy] (ポリシーのアタッチ) を選択します。
このカスタムポリシーがアタッチされている IAM エンティティは、AWS マネジメントコンソールにサインインし、Amazon EC2 ダッシュボードを開き、サブネット、VPC、タグを指定してから EC2 インスタンスを起動できます。
このポリシーにより、ポリシー条件「ec2:ResourceTags」を使用して、以下のアクションを制限します。
- インスタンスの開始
- インスタンスの停止
- インスタンスの再起動
- インスタンスの終了
- ボリュームをインスタンスにアタッチする
- ボリュームをインスタンスからデタッチする
- インスタンスから IAM インスタンスプロファイルの関連付けを解除する
- インスタンス向け IAM インスタンスプロファイルの関連付けを置き換える
- インスタンスのコンソールスクリーンショットの取得
このポリシーは、指定された VPC に対して以下のアクションを制限します。
- セキュリティグループの削除
- ルートの作成と削除
- ルートテーブルの削除
- ネットワーク ACL の削除
- ACL エントリの削除
- セキュリティグループの Ingress ルールと Egress ルールの認可
- ネットワークインターフェイス許可の作成
- Ingress ルールと Egress ルールのセキュリティグループ説明を更新する
関連するコンテンツ
- 質問済み 4年前lg...
- 質問済み 6ヶ月前lg...
- 質問済み 1ヶ月前lg...
- 質問済み 4ヶ月前lg...
- AWS公式更新しました 1年前
- AWS公式更新しました 1年前