

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

# 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"
          ]
        }
      }
    }
  ]
}
```

------