

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Usando AWS CloudShell na Amazon VPC
<a name="using-cshell-in-vpc"></a>

 AWS CloudShell a nuvem privada virtual (VPC) permite que você crie um CloudShell ambiente em sua VPC. Para cada ambiente de VPC, você pode atribuir uma VPC, adicionar uma sub-rede e associar até cinco grupos de segurança. AWS CloudShell herda a configuração de rede da VPC e permite que você AWS CloudShell use com segurança na mesma sub-rede que outros recursos na VPC e se conecte a eles. 

Com a Amazon VPC, você pode lançar AWS recursos em uma rede virtual logicamente isolada que você definiu. Essa rede virtual se assemelha a uma rede tradicional que você operaria no seu data center, com os benefícios de usar a infraestrutura dimensionável da AWS. Para obter mais informações sobre a VPC, consulte [Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html).

## Restrições operacionais
<a name="limitations"></a>

AWS CloudShell Os ambientes VPC têm as seguintes restrições: 
+ Você pode criar um máximo de dois ambientes de VPC por entidade principal do IAM.
+ Você pode atribuir no máximo cinco grupos de segurança a um ambiente de VPC.
+ Você não pode usar as opções de CloudShell upload e download no menu Ações para ambientes VPC. 
**nota**  
É possível fazer upload ou download de arquivos de ambientes VPC que têm acesso à Internet ingress/egress por meio de outras ferramentas de CLI.
+ Os ambientes de VPC não oferecem suporte ao armazenamento persistente. O armazenamento é temporário. Os dados e o diretório inicial são excluídos quando uma sessão do ambiente ativo termina. 
+ Seu AWS CloudShell ambiente só pode se conectar à Internet se estiver em uma sub-rede VPC privada. 
**nota**  
Os endereços IP públicos não são alocados para ambientes CloudShell VPC por padrão. Ambientes de VPC criados em sub-redes públicas com tabelas de rotas configuradas para rotear todo o tráfego para o gateway da internet não terão acesso à internet pública, mas sub-redes privadas configuradas com conversão de endereços de rede (NAT) terão acesso à internet pública. Os ambientes de VPC criados nessas sub-redes privadas terão acesso à internet pública. 
+ Para fornecer um CloudShell ambiente gerenciado para sua conta, AWS pode provisionar acesso à rede aos seguintes serviços para o host de computação subjacente:
  + Amazon S3
  + Endpoints da VPC
    + com.amazonaws.<region>.ssmmessages
    + com.amazonaws.<region>.logs
    + com.amazonaws.<region>.kms
    + com.amazonaws.<region>.execute-api
    + com.amazonaws.<region>.ecs-telemetry
    + com.amazonaws.<region>.ecs-agent
    + com.amazonaws.<region>.ecs
    + com.amazonaws.<region>.ecr.dkr
    + com.amazonaws.<region>.ecr.api
    + com.amazonaws.<region>.codecatalyst.packages
    + com.amazonaws.<region>.codecatalyst.git
    + aws.api.global.codecatalyst

  Você não pode restringir o acesso a esses endpoints modificando sua configuração de VPC.

  CloudShell O VPC está disponível em todas as AWS regiões e GovCloud regiões. Para ver uma lista das regiões nas quais a CloudShell VPC está disponível, consulte [AWS Regiões suportadas](supported-aws-regions.md) para. AWS CloudShell

# Criação de um CloudShell ambiente VPC
<a name="creating-vpc-environment"></a>

 Este tópico mostra as etapas para criar um ambiente de VPC em. CloudShell

**Pré-requisitos**

Seu administrador deve fornecer as permissões de IAM necessárias para que você possa criar ambientes de VPC. Para obter mais informações sobre como habilitar permissões para criar ambientes CloudShell VPC, consulte. [Permissões do IAM necessárias para criar e usar CloudShell ambientes VPC](aws-cloudshell-vpc-permissions-1.md) 

**Para criar um ambiente CloudShell VPC**

1. Na página do CloudShell console, escolha o ícone **\$1** e, em seguida, escolha **Criar ambiente VPC no** menu suspenso. 

1. Na página **Criar ambiente de VPC**, digite um nome para o ambiente de VPC na caixa **Nome**.

1. Na lista suspensa **Nuvem Privada Virtual (VPC)**, escolha uma VPC. 

1. Na lista suspensa **Sub-rede**, escolha uma sub-rede. 

1. Na lista suspensa Grupo de **segurança**, escolha um ou mais grupos de segurança que você deseja atribuir ao seu ambiente de VPC. 
**nota**  
Você pode escolher no máximo cinco grupos de segurança.

1. Escolha **Criar** para criar seu ambiente de VPC. 

1. (Opcional) Escolha **Ações** e, em seguida, escolha **Exibir detalhes** para revisar os detalhes do ambiente de VPC recém-criado. O endereço IP do seu ambiente de VPC é exibido no prompt da linha de comando.

Para obter mais informações sobre ambientes de VPC, consulte [Começando com AWS CloudShell](getting-started.md).

# Permissões do IAM necessárias para criar e usar CloudShell ambientes VPC
<a name="aws-cloudshell-vpc-permissions-1"></a>

Para criar e usar ambientes de CloudShell VPC, o administrador do IAM deve habilitar o acesso às permissões específicas da VPC no Amazon EC2. Esta seção lista as permissões do Amazon EC2 necessárias para criar e usar ambientes de VPC.

 Para criar ambientes de VPC, a política do IAM atribuída à sua função deve incluir as seguintes permissões do Amazon EC2: 
+ `ec2:DescribeVpcs`
+ `ec2:DescribeSubnets`
+ `ec2:DescribeSecurityGroups`
+ `ec2:DescribeDhcpOptions`
+ `ec2:DescribeNetworkInterfaces`
+ `ec2:CreateTags`
+ `ec2:CreateNetworkInterface`
+ `ec2:CreateNetworkInterfacePermission`

Recomendamos incluir: 
+ **ec2:DeleteNetworkInterface**

**nota**  
Essa permissão não é obrigatória, mas é necessária CloudShell para limpar o recurso ENI (ENIs criado para ambientes CloudShell VPC marcados **ManagedByCloudShell** com chave) criado por ele. Se essa permissão não estiver habilitada, você deverá limpar manualmente o recurso ENI após cada uso do ambiente CloudShell VPC.

## Política do IAM que concede CloudShell acesso total, incluindo acesso à VPC
<a name="cshell-vpc-full-access-example-1"></a>

O exemplo a seguir mostra como habilitar permissões completas, incluindo acesso à VPC, para: CloudShell

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

------

## Usar chaves de condição do IAM para ambientes de VPC
<a name="cloudshell-vpc-condition-keys-1"></a>

Você pode usar chaves CloudShell de condição específicas para configurações de VPC para fornecer controles de permissão adicionais para seus ambientes de VPC. Também é possível especificar as sub-redes e os grupos de segurança que os usuários do ambiente de VPC podem e não podem usar. 

CloudShell é compatível com as seguintes chaves de condição nas políticas do IAM:
+ `CloudShell:VpcIds`— Permitir ou negar um ou mais VPCs
+ `CloudShell:SubnetIds`: permitir ou negar uma ou mais sub-redes
+ `CloudShell:SecurityGroupIds`: permitir ou negar um ou mais grupos de segurança

**nota**  
Se as permissões dos usuários com acesso a CloudShell ambientes públicos forem modificadas para adicionar restrições à `cloudshell:createEnvironment` ação, eles ainda poderão acessar o ambiente público existente. No entanto, se você quiser modificar uma política do IAM com essa restrição e desativar o acesso ao ambiente público existente, primeiro atualize a política do IAM com a restrição e, em seguida, garanta que cada CloudShell usuário em sua conta exclua manualmente o ambiente público existente usando a interface de usuário da CloudShell web (**Ações** → **Excluir CloudShell ** ambiente).

## Políticas de exemplo com chaves de condição para configurações de VPC
<a name="vpc-condition-keys-examples-1"></a>

Os exemplos a seguir demonstram como usar chaves de condição para configurações de VPC. Depois de criar uma instrução de política com as restrições desejadas, acrescente a instrução de política para o usuário ou a função de destino.

### Garanta que os usuários criem somente ambientes de VPC e neguem a criação de ambientes públicos
<a name="permission-to-create-VPC-env-only-example-1"></a>

Para garantir que os usuários possam criar somente ambientes de VPC, use a permissão de negação, conforme mostrado no seguinte exemplo: 

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

### Negar aos usuários acesso a grupos específicos VPCs, sub-redes ou grupos de segurança
<a name="permission-deny-access-example-1"></a>

Para negar aos usuários acesso a VPCs informações específicas, use `StringEquals` para verificar o valor da `cloudshell:VpcIds` condição. O seguinte exemplo nega aos usuários acesso à `vpc-1` e à `vpc-2`:

Para negar aos usuários acesso a VPCs informações específicas, use `StringEquals` para verificar o valor da `cloudshell:SubnetIds` condição. O seguinte exemplo nega aos usuários acesso à `subnet-1` e à `subnet-2`:

Para negar aos usuários acesso a VPCs informações específicas, use `StringEquals` para verificar o valor da `cloudshell:SecurityGroupIds` condição. O seguinte exemplo nega aos usuários acesso à `sg-1` e à `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"
          ]
        }
      }
    }
  ]
}
```

------

### Permitir que os usuários criem ambientes com configurações de VPC específicas
<a name="create-env-with-specific-VPC-conf-1"></a>

Para permitir que os usuários acessem VPCs dados específicos, use `StringEquals` para verificar o valor da `cloudshell:VpcIds` condição. O seguinte exemplo dá aos usuários permissão para acessar `vpc-1` e `vpc-2`:

Para permitir que os usuários acessem VPCs dados específicos, use `StringEquals` para verificar o valor da `cloudshell:SubnetIds` condição. O seguinte exemplo dá aos usuários permissão para acessar `subnet-1` e `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"
          ]
        }
      }
    }
  ]
}
```

------

Para permitir que os usuários acessem VPCs dados específicos, use `StringEquals` para verificar o valor da `cloudshell:SecurityGroupIds` condição. O seguinte exemplo dá aos usuários permissão para acessar `sg-1` e `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"
          ]
        }
      }
    }
  ]
}
```

------