

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

# Amazon VPC AWS CloudShell での の使用
<a name="using-cshell-in-vpc"></a>

 AWS CloudShell Virtual Private Cloud (VPC) を使用すると、VPC に CloudShell 環境を作成できます。VPC 環境ごとに、VPC を割り当て、サブネットを追加し、最大 5 つのセキュリティグループを関連付けることができます。 は VPC のネットワーク設定を AWS CloudShell 継承し、VPC 内の他のリソースと同じサブネット内で AWS CloudShell を安全に使用して接続できるようにします。

Amazon VPC を使用すると、定義した論理的に分離された仮想ネットワークで AWS リソースを起動できます。仮想ネットワークは、お客様自身のデータセンターで運用されていた従来のネットワークによく似ていますが、 AWSのスケーラブルなインフラストラクチャを使用できるというメリットがあります。VPC の詳細については、「[Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html)」を参照してください。

## 運用上の制約
<a name="limitations"></a>

AWS CloudShell VPC 環境には次の制約があります。
+ IAM プリンシパルごとに作成できる VPC 環境の数は最大 2 つです。
+ VPC 環境に割り当てることができるセキュリティグループの数は最大 5 つです。
+ VPC 環境では、[アクション] メニューで CloudShell のアップロードおよびダウンロードオプションは使用できません。
**注記**  
ファイルのアップロードまたはダウンロードは、他の CLI ツールを介して、インターネットの進入/退出にアクセスできる VPC 環境から行うことができます。
+ VPC 環境は永続ストレージをサポートしていません。ストレージはエフェメラルです。アクティブな環境セッションが終了すると、データとホームディレクトリは削除されます。
+  AWS CloudShell 環境は、プライベート VPC サブネットにある場合にのみインターネットに接続できます。
**注記**  
デフォルトでは、パブリック IP アドレスは CloudShell の VPC 環境に割り当てられません。すべてのトラフィックをインターネットゲートウェイにルーティングするようにルーティングテーブルが設定されているパブリックサブネットに作成した VPC 環境は、パブリックインターネットにアクセスできません。しかし、ネットワークアドレス変換 (NAT) が設定されているプライベートサブネットは、パブリックインターネットにアクセスできます。このようなプライベートサブネットに作成した VPC 環境は、パブリックインターネットにアクセスできます。
+ アカウントにマネージド CloudShell 環境を提供するには、基盤となるコンピューティングホストに対して以下のサービスへのネットワークアクセスをプロビジョニング AWS できます。
  + Amazon S3
  + VPC エンドポイント
    + com.amazonaws.<リージョン>.ssmmessages
    + com.amazonaws.<リージョン>.logs
    + com.amazonaws.<リージョン>.kms
    + com.amazonaws.<リージョン>.execute-api
    + com.amazonaws.<リージョン>.ecs-telemetry
    + com.amazonaws.<リージョン>.ecs-agent
    + com.amazonaws.<リージョン>.ecs
    + com.amazonaws.<リージョン>.ecr.dkr
    + com.amazonaws.<リージョン>.ecr.api
    + com.amazonaws.<リージョン>.codecatalyst.packages
    + com.amazonaws.<リージョン>.codecatalyst.git
    + aws.api.global.codecatalyst

  VPC 設定を変更して、これらのエンドポイントへのアクセスを制限することはできません。

  CloudShell VPC は、すべての AWS リージョンと GovCloud リージョンで利用できます。CloudShell VPC が利用可能なリージョンのリストについては、[「 でサポートされている AWS リージョン AWS CloudShell](supported-aws-regions.md)」を参照してください。

# CloudShell の VPC 環境を作成する
<a name="creating-vpc-environment"></a>

 このトピックでは、CloudShell の VPC 環境を作成する手順について説明します。

**前提条件**

VPC 環境を作成するために必要な IAM アクセス許可を管理者から取得する必要があります。CloudShell の VPC 環境を作成するためのアクセス許可の有効化の詳細については、「[CloudShell の VPC 環境を作成および使用するために必要な IAM アクセス許可](aws-cloudshell-vpc-permissions-1.md)」を参照してください。

**CloudShell の VPC 環境を作成するには**

1. CloudShell コンソールページで、**[＋]** アイコンを選択し、ドロップダウンメニューから **[VPC 環境を作成]** を選択します。

1. **[VPC 環境を作成]** ページで、VPC 環境の名前を **[名前]** ボックスに入力します。

1. **[仮想プライベートクラウド (VPC)]** ドロップダウンリストから、VPC を選択します。

1. **[サブネット]** ドロップダウンリストから、サブネットを選択します。

1. **[セキュリティグループ]** ドロップダウンリストから、VPC 環境に割り当てるセキュリティグループを 1 つ以上選択します。
**注記**  
最大 5 つのセキュリティグループを選択できます。

1. **[作成]** を選択して VPC 環境を作成します。

1. (オプション) **[アクション]**、**[詳細を表示]** の順に選択し、新しく作成した VPC 環境の詳細を確認します。VPC 環境の IP アドレスがコマンドラインプロンプトに表示されます。

VPC 環境の使用方法については、「[の開始方法 AWS CloudShell](getting-started.md)」を参照してください。

# CloudShell の VPC 環境を作成および使用するために必要な IAM アクセス許可
<a name="aws-cloudshell-vpc-permissions-1"></a>

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**

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

## CloudShell へのフルアクセス (VPC へのアクセスを含む) を許可する IAM ポリシー
<a name="cshell-vpc-full-access-example-1"></a>

次の例は、CloudShell へのフルアクセス (VPC へのアクセスを含む) を許可する方法を示しています。

------
#### [ JSON ]

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Sid": "AllowCloudShellOperations",
			"Effect": "Allow",
			"Action": [
				"cloudshell:*"
			],
			"Resource": "*"
		},
		{
			"Sid": "AllowDescribeVPC",
			"Effect": "Allow",
			"Action": [
				"ec2:DescribeSubnets",
				"ec2:DescribeSecurityGroups",
				"ec2:DescribeVpcs"
			],
			"Resource": "*"
		},
		{
			"Sid": "AllowInspectVPCConfigurationViaCloudShell",
			"Effect": "Allow",
			"Action": [
				"ec2:DescribeDhcpOptions",
				"ec2:DescribeNetworkInterfaces"
			],
			"Resource": "*",
			"Condition": {
				"ForAnyValue:StringEquals": {
					"aws:CalledVia": "cloudshell.amazonaws.com"
				}
			}
		},
		{
			"Sid": "AllowCreateTagWithCloudShellKeyViaCloudShell",
			"Effect": "Allow",
			"Action": [
				"ec2:CreateTags"
			],
			"Resource": "arn:aws:ec2:*:*:network-interface/*",
			"Condition": {
				"StringEquals": {
					"ec2:CreateAction": "CreateNetworkInterface"
				},
				"ForAnyValue:StringEquals": {
					"aws:TagKeys": "ManagedByCloudShell",
					"aws:CalledVia": "cloudshell.amazonaws.com"
				}
			}
		},
		{
			"Sid": "AllowCreateNetworkInterfaceWithSubnetsAndSGViaCloudShell",
			"Effect": "Allow",
			"Action": [
				"ec2:CreateNetworkInterface"
			],
			"Resource": [
				"arn:aws:ec2:*:*:subnet/*",
				"arn:aws:ec2:*:*:security-group/*"
			],
			"Condition": {
				"ForAnyValue:StringEquals": {
					"aws:CalledVia": "cloudshell.amazonaws.com"
				}
			}
		},
		{
			"Sid": "AllowCreateNetworkInterfaceWithCloudShellTagViaCloudShell",
			"Effect": "Allow",
			"Action": [
				"ec2:CreateNetworkInterface"
			],
			"Resource": "arn:aws:ec2:*:*:network-interface/*",
			"Condition": {
				"ForAnyValue:StringEquals": {
					"aws:TagKeys": "ManagedByCloudShell",
					"aws:CalledVia": "cloudshell.amazonaws.com"
				}
			}
		},
		{
			"Sid": "AllowCreateNetworkInterfacePermissionWithCloudShellTagViaCloudShell",
			"Effect": "Allow",
			"Action": [
				"ec2:CreateNetworkInterfacePermission"
			],
			"Resource": "arn:aws:ec2:*:*:network-interface/*",
			"Condition": {
				"StringEquals": {
					"aws:ResourceTag/ManagedByCloudShell": ""
				},
				"ForAnyValue:StringEquals": {
					"aws:CalledVia": "cloudshell.amazonaws.com"
				}
			}
		},
		{
			"Sid": "AllowDeleteNetworkInterfaceWithCloudShellTagViaCloudShell",
			"Effect": "Allow",
			"Action": [
				"ec2:DeleteNetworkInterface"
			],
			"Resource": "arn:aws:ec2:*:*:network-interface/*",
			"Condition": {
				"StringEquals": {
					"aws:ResourceTag/ManagedByCloudShell": ""
				},
				"ForAnyValue:StringEquals": {
					"aws:CalledVia": "cloudshell.amazonaws.com"
				}
			}
		}
	]
}
```

------

## VPC 環境での IAM 条件キーの使用
<a name="cloudshell-vpc-condition-keys-1"></a>

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

CloudShell は IAM ポリシーで以下の条件キーをサポートしています。
+ `CloudShell:VpcIds` – 1 つ以上の VPC を許可または拒否する
+ `CloudShell:SubnetIds` – 1 つ以上のサブネットを許可または拒否する
+ `CloudShell:SecurityGroupIds` – 1 つ以上のセキュリティグループを許可または拒否する

**注記**  
ユーザーに CloudShell のパブリック環境へのアクセス権がある場合、ユーザーのアクセス許可を変更して `cloudshell:createEnvironment` アクションに制限を追加しても、ユーザーは依然として既存のパブリック環境にアクセスできます。ただし、この制限を追加して IAM ポリシーを変更し、既存のパブリック環境へのユーザーアクセスを無効にしたい場合は、まず、IAM ポリシーを更新して、この制限を含める必要があります。次に、アカウントのすべての CloudShell ユーザーに、CloudShell ウェブユーザーインターフェイスを使用して既存のパブリック環境を手動で確実に削除してもらいます (**[アクション]** → **[CloudShell 環境を削除]**)。

## VPC 設定の条件キーを使用したポリシーの例
<a name="vpc-condition-keys-examples-1"></a>

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

### ユーザーに VPC 環境の作成のみを許可し、パブリック環境の作成を拒否する
<a name="permission-to-create-VPC-env-only-example-1"></a>

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

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

### 特定の VPC、サブネット、セキュリティグループへのアクセスをユーザーに拒否する
<a name="permission-deny-access-example-1"></a>

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

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

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

------
#### [ JSON ]

****  

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

------

### 特定の VPC 設定で環境を作成することをユーザーに許可する
<a name="create-env-with-specific-VPC-conf-1"></a>

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

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

------
#### [ JSON ]

****  

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

------

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

------
#### [ JSON ]

****  

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

------