環境の作成と使用 CloudShell VPCに必要なIAMアクセス許可 - AWS CloudShell

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

環境の作成と使用 CloudShell VPCに必要なIAMアクセス許可

環境を作成して使用する CloudShell VPCには、IAM管理者はVPC特定の Amazon アクセスEC2許可へのアクセスを有効にする必要があります。このセクションでは、VPC環境の作成と使用に必要な Amazon アクセスEC2許可を一覧表示します。

VPC 環境を作成するには、ロールに割り当てられたIAMポリシーに次の Amazon アクセスEC2許可が含まれている必要があります。

  • ec2:DescribeVpcs

  • ec2:DescribeSubnets

  • ec2:DescribeSecurityGroups

  • ec2:DescribeDhcpOptions

  • ec2:DescribeNetworkInterfaces

  • ec2:CreateTags

  • ec2:CreateNetworkInterface

  • ec2:CreateNetworkInterfacePermission

また、以下を含めることをお勧めします。

  • ec2:DeleteNetworkInterface

注記

このアクセス許可は必須ではありませんが、 がリソース (ENIs 環境用に CloudShell VPC作成された ENI は ManagedByCloudShell キーでタグ付けされています) をクリーンアップ CloudShell するために必要です。このアクセス許可が有効になっていない場合は、環境を使用するたびにENI CloudShell VPCリソースを手動でクリーンアップする必要があります。

IAM へのアクセスを含むフル CloudShell アクセスを付与する ポリシー VPC

次の例は、 へのアクセスを含む完全なアクセス許可を VPCに有効にする方法を示しています CloudShell。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCloudShellOperations", "Effect": "Allow", "Action": [ "cloudshell:*" ], "Resource": "*" }, { "Sid": "AllowDescribeVPC", "Effect": "Allow", "Action": [ "ec2:DescribeDhcpOptions", "ec2:DescribeNetworkInterfaces", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:DescribeVpcs" ], "Resource": "*" }, { "Sid": "AllowCreateTagWithCloudShellKey", "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "StringEquals": { "ec2:CreateAction": "CreateNetworkInterface" }, "ForAnyValue:StringEquals": { "aws:TagKeys": "ManagedByCloudShell" } } }, { "Sid": "AllowCreateNetworkInterfaceWithSubnetsAndSG", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface" ], "Resource": [ "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:security-group/*" ] }, { "Sid": "AllowCreateNetworkInterfaceWithCloudShellTag", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface" ], "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": "ManagedByCloudShell" } } }, { "Sid": "AllowCreateNetworkInterfacePermissionWithCloudShellTag", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterfacePermission" ], "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "StringEquals": { "aws:ResourceTag/ManagedByCloudShell": "" } } }, { "Sid": "AllowDeleteNetworkInterfaceWithCloudShellTag", "Effect": "Allow", "Action": [ "ec2:DeleteNetworkInterface" ], "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "StringEquals": { "aws:ResourceTag/ManagedByCloudShell": "" } } } ] }

VPC 環境でIAMの条件キーの使用

VPC 設定に CloudShell固有の条件キーを使用して、VPC環境に追加のアクセス許可コントロールを提供できます。VPC 環境が使用できるサブネットとセキュリティグループ、および使用できないサブネットとセキュリティグループを指定することもできます。

CloudShell は、 IAMポリシーで次の条件キーをサポートします。

  • CloudShell:VpcIds – 1 つ以上の を許可または拒否する VPCs

  • CloudShell:SubnetIds – 1 つ以上のサブネットを許可または拒否する

  • CloudShell:SecurityGroupIds – 1 つ以上のセキュリティグループを許可または拒否する

注記

パブリック CloudShell 環境へのアクセス権を持つユーザーのアクセス許可が変更されてcloudshell:createEnvironmentアクションに制限が追加された場合でも、既存のパブリック環境にアクセスできます。ただし、この制限を持つ IAMポリシーを変更し、既存のパブリック環境へのアクセスを無効にする場合は、まず制限を持つIAMポリシーを更新し、アカウント内のすべての CloudShell ユーザーが CloudShell ウェブユーザーインターフェイスを使用して既存のパブリック環境を手動で削除する必要があります (アクション CloudShell 環境の削除 )。

VPC 設定の条件キーを含むポリシーの例

次の例は、VPC設定に条件キーを使用する方法を示しています。必要な制限を含むポリシーステートメントを作成したら、このポリシーステートメントをターゲットの ユーザーまたはロールに追加します。

ユーザーがVPC環境のみを作成し、パブリック環境の作成を拒否することを確認する

ユーザーがVPC環境のみを作成できるようにするには、次の例に示すように拒否アクセス許可を使用します。

{ "Statement": [ { "Sid": "DenyCloudShellNonVpcEnvironments", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Deny", "Resource": "*", "Condition": { "Null": { "cloudshell:VpcIds": "true" } } } ] }

特定の VPCs、サブネット、またはセキュリティグループへのアクセスをユーザーに拒否する

特定の へのアクセスをユーザーに拒否するにはVPCs、 StringEqualsを使用してcloudshell:VpcIds条件の値を確認します。次の例では、 vpc-1および へのアクセスをユーザーに拒否しますvpc-2

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceOutOfVpc", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Deny", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "cloudshell:VpcIds": [ "vpc-1", "vpc-2" ] } } } ] }

特定の へのアクセスをユーザーに拒否するにはVPCs、 StringEqualsを使用してcloudshell:SubnetIds条件の値を確認します。次の例では、 subnet-1および へのアクセスをユーザーに拒否しますsubnet-2

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceOutOfSubnets", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Deny", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "cloudshell:SubnetIds": [ "subnet-1", "subnet-2" ] } } } ] }

特定の へのアクセスをユーザーに拒否するにはVPCs、 StringEqualsを使用してcloudshell:SecurityGroupIds条件の値を確認します。次の例では、ユーザーが sg-1および にアクセスすることを拒否しますsg-2

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceOutOfSecurityGroups", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Deny", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "cloudshell:SecurityGroupIds": [ "sg-1", "sg-2" ] } } } ] }

ユーザーが特定のVPC設定で環境を作成することを許可する

特定の へのアクセスをユーザーに許可するにはVPCs、 StringEqualsを使用してcloudshell:VpcIds条件の値を確認します。次の例では、 vpc-1および へのアクセスをユーザーに許可しますvpc-2

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceStayInSpecificVpc", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Allow", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "cloudshell:VpcIds": [ "vpc-1", "vpc-2" ] } } } ] }

特定の へのアクセスをユーザーに許可するにはVPCs、 StringEqualsを使用してcloudshell:SubnetIds条件の値を確認します。次の例では、 subnet-1および へのアクセスをユーザーに許可しますsubnet-2

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceStayInSpecificSubnets", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Allow", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "cloudshell:SubnetIds": [ "subnet-1", "subnet-2" ] } } } ] }

特定の へのアクセスをユーザーに許可するにはVPCs、 StringEqualsを使用してcloudshell:SecurityGroupIds条件の値を確認します。次の例では、 sg-1および へのアクセスをユーザーに許可しますsg-2

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceStayInSpecificSecurityGroup", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Allow", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "cloudshell:SecurityGroupIds": [ "sg-1", "sg-2" ] } } } ] }