IAM ユーザー、グループ、またはロールに対して、特定の Virtual Private Cloud (VPC) 内での Amazon EC2 インスタンスの作成および管理権限を明示的に付与する IAM ポリシーを作成する必要があります。

AWS では現在、包括的な EC2 コントロールポリシーで Amazon リソースネーム (ARN) を指定する方法、または条件ステートメントとともに ARN を使用する方法で EC2 リソースへのアクセスを制御するポリシーを作成する直接の手段は提供していません。一部の EC2 API 操作は VPC ARN を通して制御できますが、すべてのオペレーションがこの方法で制御できるわけではありません。

EC2 インスタンスの作成および管理時に、カスタム IAM ポリシーを適用して IAM ユーザー、グループ、ロールを特定の VPC に制限できます。これを行うには、IAM エンティティに以下の権限を付与する IAM インスタンスプロファイル を使用します。

  • 特定の VPC での EC2 インスタンスを起動する。
  • その IAM エンティティによって起動された EC2 インスタンスを管理する。

このために IAM インスタンスプロファイルを作成するには、以下の手順を実行します。

1. アカウントで IAM ロールを作成します。このロールはインスタンスプロファイルから参照されます。

a. AWS IAM コンソールのナビゲーションペインで、[Roles]、[Create New Role] の順に選択します。

b. ロール名を入力し、[Next Step] を選択します。このロール名は後でポリシー内の ARN として参照します。

c. ロールタイプは、[AWS Service Roles] で [Amazon EC2] を選択します。

d. このロールにポリシーを添付する必要はありません。[Attach Policy] ページでは [Next Step] を選択します。

e. [Review] ページで、[Create Role] を選択します。

2. 管理ポリシーを作成して、VPC でインスタンスの起動と管理を行う IAM エンティティに適用します。

a. AWS IAM コンソールのナビゲーションペインで、[Policies]、[Create Policy] の順に選択します。

b. [Create Your Own Policy] を選択します。

c. ポリシー名には、「VPC Lockdown for VPC-ID」と入力します。ここでの VPC-ID はポリシーを適用する VPC の ID です。

d. オプションで、[Description] に情報を入力します。

e. 以下のカスタムポリシーをコピーして、[Policy Document] ボックスに貼り付けます。必ず、すべての ACCOUNTNUMBERREGIONおよび VPC-ID をお客様の環境に対応した値に置き換えてください。また、ROLENAME をステップ 1b で作成したロールの名前に置き換えてください。その語、[Create Policy] を選択します。

{

   "Version":"2012-10-17",

   "Statement": [

      {

         "Sid": "NonResourceBasedReadOnlyPermissions",

         "Action": [

            "ec2:Describe*",

            "ec2:CreateKeyPair",

            "ec2:CreateSecurityGroup",

            "iam:GetInstanceProfiles",

            "iam:ListInstanceProfiles"

         ],

         "Effect": "Allow",

         "Resource": "*"

      },

      {

         "Sid": "IAMPassRoleToInstance",

         "Action": [

            "iam:PassRole"

         ],

         "Effect": "Allow",

         "Resource": "arn:aws:iam::ACCOUNTNUMBER:role/ROLENAME"

      },

      {

         "Sid": "AllowInstanceActions",

         "Effect": "Allow",

         "Action": [

            "ec2:RebootInstances",

            "ec2:StopInstances",

            "ec2:TerminateInstances",

            "ec2:StartInstances",

            "ec2:AttachVolume",

            "ec2:DetachVolume"

         ],

         "Resource": "arn:aws:ec2:REGION:ACCOUNTNUMBER:instance/*",

         "Condition": {

            "StringEquals": {

               "ec2:InstanceProfile": "arn:aws:iam::ACCOUNTNUMBER:instance-profile/ROLENAME"

            }

         }

      },

      {

         "Sid": "EC2RunInstances",

         "Effect": "Allow",

         "Action": "ec2:RunInstances",

         "Resource": "arn:aws:ec2:REGION:ACCOUNTNUMBER:instance/*",

         "Condition": {

            "StringEquals": {

               "ec2:InstanceProfile": "arn:aws:iam::ACCOUNTNUMBER:instance-profile/ROLENAME"

            }

         }

      },

      {

         "Sid": "EC2RunInstancesSubnet",

         "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": "RemainingRunInstancePermissions",

         "Effect": "Allow",

         "Action": "ec2:RunInstances",

         "Resource": [

            "arn:aws:ec2:REGION:ACCOUNTNUMBER:volume/*",

            "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": "EC2VpcNonresourceSpecificActions",

         "Effect": "Allow",

         "Action": [

            "ec2:DeleteNetworkAcl",

            "ec2:DeleteNetworkAclEntry",

            "ec2:DeleteRoute",

            "ec2:DeleteRouteTable",

            "ec2:AuthorizeSecurityGroupEgress",

            "ec2:AuthorizeSecurityGroupIngress",

            "ec2:RevokeSecurityGroupEgress",

            "ec2:RevokeSecurityGroupIngress",

            "ec2:DeleteSecurityGroup"

         ],

         "Resource": "*",

         "Condition": {

            "StringEquals": {

               "ec2:vpc": "arn:aws:ec2:REGION:ACCOUNTNUMBER:vpc/VPC-ID"

            }

         }

      }

   ]

}

3. このポリシーをユーザー、グループ、またはロールに添付します。
     a. AWS IAM コンソールのナビゲーションペインで、[Users] (Groups や Roles でも手順は同じです) を選択します。
     b.ポリシーを添付するユーザー、グループ、またはロールを選択します。
     c. [Policy type] を選択し、次に [Customer Managed Policies] を選択してリストされるポリシーを絞り込みます。
     d. ステップ 2 で作成したポリシーを選択し、[Attach Policy] を選択します。

このカスタムポリシーをユーザー、グループ、ロールに添付すると、ポリシーによって以下の操作が許可されます。
     • AWS マネジメントコンソールにサインインし、EC2 ダッシュボードを開く。
     • エンティティまたはエンティティメンバーが指定した日時に EC2 インスタンスを起動する。
          o サブネットおよび VPC の正しい情報。
          o 許可されたインスタンスプロファイル。
     • 正しいインスタンスプロファイルを使用して起動された EC2 インスタンスで、以下の操作を実行する。
          o インスタンスの起動
          o インスタンスの停止
          o インスタンスの再起動
          o インスタンスの終了
          o インスタンスへのボリュームの添付
          o インスタンスからのボリュームのデタッチ
     • VPC から以下のアクションを実行する。
          o セキュリティグループの削除
          o ルートの削除
          o ルートテーブルの削除
          o ネットワーク ACL の削除
          o ACL エンティティの削除
          o セキュリティグループの Ingress ルールと Egress ルールの認証と取り消し

限度、IAM、ユーザーアクセス、VPC、EC2、インスタンスプロファイル、制限、ポリシー、アカウント、グループ、ロール


このページは役に立ちましたか? はい | いいえ

AWS サポートナリッジセンターに戻る

サポートが必要ですか?AWS サポートセンターをご覧ください。

公開日: 2015 年 12 月 8 日