

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á.

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

------