

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

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

 AWS CloudShell La nube privada virtual (VPC) le permite crear un CloudShell entorno en su VPC. Para cada entorno de VPC, puede asignar una VPC, añadir una subred y asociar hasta cinco grupos de seguridad. AWS CloudShell hereda la configuración de red de la VPC y le permite AWS CloudShell utilizarlos de forma segura dentro de la misma subred que otros recursos de la VPC y conectarse a ellos. 

Con Amazon VPC, puede lanzar AWS recursos en una red virtual aislada de forma lógica que haya definido. Esta red virtual es muy similar a la red tradicional que usaría en su propio centro de datos, pero con los beneficios que supone utilizar la infraestructura escalable de AWS. Para obtener más información sobre VPC, consulte [Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html).

## Restricciones operativas
<a name="limitations"></a>

AWS CloudShell Los entornos de VPC tienen las siguientes restricciones: 
+ Puede crear un máximo de dos entornos de VPC por entidad principal de IAM.
+ Puede asignar un máximo de cinco grupos de seguridad a un entorno de VPC.
+ No puede utilizar las opciones de CloudShell carga y descarga del menú Acciones para entornos de VPC. 
**nota**  
Es posible cargar o descargar archivos desde entornos de VPC que tienen acceso a Internet a ingress/egress través de otras herramientas de CLI.
+ Los entornos de VPC no admiten el almacenamiento persistente. El almacenamiento es efímero. Los datos y el directorio principal se eliminan cuando finaliza una sesión en el entorno activo. 
+ Su AWS CloudShell entorno solo puede conectarse a Internet si está en una subred de VPC privada. 
**nota**  
Las direcciones IP públicas no se asignan a los entornos de CloudShell VPC de forma predeterminada. Los entornos de VPC creados en subredes públicas con tablas de enrutamiento configuradas para enrutar todo el tráfico a una puerta de enlace de Internet no tendrán acceso a la Internet pública, pero las subredes privadas configuradas con Traducción de direcciones de red (NAT) sí lo tienen. Los entornos de VPC creados en dichas subredes privadas tendrán acceso a la Internet pública. 
+ Para proporcionar un CloudShell entorno gestionado para su cuenta, AWS puede proporcionar acceso de red a los siguientes servicios para el host informático subyacente:
  + Amazon S3
  + Puntos de conexión de VPC
    + com.amazonaws.<región>.ssmmessages
    + com.amazonaws.<región>.logs
    + com.amazonaws.<región>.kms
    + com.amazonaws.<región>.execute-api
    + com.amazonaws.<región>.ecs-telemetry
    + com.amazonaws.<región>.ecs-agent
    + com.amazonaws.<región>.ecs
    + com.amazonaws.<región>.ecr.dkr
    + com.amazonaws.<región>.ecr.api
    + com.amazonaws.<región>.codecatalyst.packages
    + com.amazonaws.<región>.codecatalyst.git
    + aws.api.global.codecatalyst

  No puede restringir el acceso a estos puntos de conexión mediante la modificación de la configuración de la VPC.

  CloudShell La VPC está disponible en todas AWS las regiones y GovCloud regiones. Para ver una lista de las regiones en las que está disponible la CloudShell VPC, consulte [AWS Regiones compatibles](supported-aws-regions.md) para. AWS CloudShell

# Creación de un entorno CloudShell de VPC
<a name="creating-vpc-environment"></a>

 En este tema se explican los pasos para crear un entorno de VPC en. CloudShell

**Requisitos previos**

El administrador debe proporcionarle los permisos de IAM necesarios para que pueda crear entornos de VPC. Para obtener más información sobre la habilitación de permisos para crear entornos de CloudShell VPC, consulte. [Permisos de IAM necesarios para crear y usar entornos de CloudShell VPC](aws-cloudshell-vpc-permissions-1.md) 

**Para crear un entorno de CloudShell VPC**

1. En la página de la CloudShell consola, selecciona el icono **\$1** y, a continuación, selecciona **Crear entorno de VPC** en el menú desplegable. 

1. En la página **Crear un entorno de VPC**, escriba un nombre para su entorno de este tipo en el cuadro **Nombre**.

1. En la lista desplegable **Nube privada virtual (VPC)**, elija una VPC de la lista desplegable. 

1. Seleccione una subred en la lista desplegable **Subred**. 

1. En la lista desplegable de grupos **Seguridad**, elija uno o más grupos de seguridad que quiera asignar a su entorno de VPC. 
**nota**  
Puede elegir un máximo de cinco grupos de seguridad.

1. Elija **Crear** para crear su entorno de VPC. 

1. (Opcional) Elija **Acciones** y, a continuación, seleccione **Ver detalles** para revisar los detalles del entorno de VPC recién creado. La dirección IP del entorno de VPC aparece en el símbolo de la línea de comandos.

Para obtener información sobre el uso de los entornos de VPC, consulte [Empezar con AWS CloudShell](getting-started.md).

# Permisos de IAM necesarios para crear y usar entornos de CloudShell VPC
<a name="aws-cloudshell-vpc-permissions-1"></a>

Para crear y usar entornos de CloudShell VPC, el administrador de IAM debe habilitar el acceso a los permisos de Amazon EC2 específicos de la VPC. En esta sección se enumeran los permisos de Amazon EC2 que son necesarios para crear y utilizar entornos de VPC.

 Para crear entornos de VPC, la política de IAM asignada a su rol debe incluir los siguientes permisos de Amazon EC2: 
+ `ec2:DescribeVpcs`
+ `ec2:DescribeSubnets`
+ `ec2:DescribeSecurityGroups`
+ `ec2:DescribeDhcpOptions`
+ `ec2:DescribeNetworkInterfaces`
+ `ec2:CreateTags`
+ `ec2:CreateNetworkInterface`
+ `ec2:CreateNetworkInterfacePermission`

Se recomienda incluir: 
+ **ec2:DeleteNetworkInterface**

**nota**  
Este permiso no es obligatorio, pero es necesario CloudShell para limpiar el recurso ENI (ENIs creado para entornos de CloudShell VPC que se etiquetan con una **ManagedByCloudShell** clave) creado por él. Si este permiso no está habilitado, debe limpiar manualmente el recurso ENI después de cada uso del entorno de CloudShell VPC.

## Política de IAM que otorga CloudShell acceso total, incluido el acceso a la VPC
<a name="cshell-vpc-full-access-example-1"></a>

En el siguiente ejemplo, se muestra cómo habilitar todos los permisos, incluido el acceso a la 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"
				}
			}
		}
	]
}
```

------

## Uso de claves de condición de IAM para entornos de VPC
<a name="cloudshell-vpc-condition-keys-1"></a>

Puede usar claves de condición CloudShell específicas para la configuración de la VPC a fin de proporcionar controles de permisos adicionales para sus entornos de VPC. También puede especificar las subredes y los grupos de seguridad que el entorno de VPC puede utilizar o no. 

CloudShell admite las siguientes claves de condición en las políticas de IAM:
+ `CloudShell:VpcIds`— Permitir o denegar una o más VPCs
+ `CloudShell:SubnetIds`: permiten o deniegan una o varias subredes.
+ `CloudShell:SecurityGroupIds`: permiten o deniegan uno o varios grupos de seguridad.

**nota**  
Si los permisos de los usuarios con acceso a CloudShell entornos públicos se modifican para añadir restricciones a la `cloudshell:createEnvironment` acción, podrán seguir accediendo a su entorno público actual. Sin embargo, si desea modificar una política de IAM con esta restricción e inhabilitar su acceso al entorno público existente, primero debe actualizar la política de IAM con la restricción y, a continuación, asegurarse de que todos los CloudShell usuarios de su cuenta eliminen manualmente el entorno público existente mediante la interfaz de usuario CloudShell web (**Acciones** → **Eliminar CloudShell ** entorno).

## Políticas de ejemplo con claves de condición para la configuración de la VPC
<a name="vpc-condition-keys-examples-1"></a>

En los ejemplos siguientes se muestra cómo utilizar claves de condición para la configuración de la VPC. Después de crear una instrucción de política con las restricciones deseadas, agregue la instrucción de política para el usuario o rol de destino.

### Cómo garantizar que los usuarios creen solo entornos de VPC y denieguen la creación de entornos públicos
<a name="permission-to-create-VPC-env-only-example-1"></a>

Para garantizar que los usuarios solo puedan crear entornos de VPC, use el permiso de denegación tal y como se muestra en el ejemplo siguiente: 

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

### Denegue a los usuarios el acceso a subredes o VPCs grupos de seguridad específicos
<a name="permission-deny-access-example-1"></a>

Para denegar a los usuarios el acceso a un VPCs contenido específico, utilice esta opción `StringEquals` para comprobar el valor de la `cloudshell:VpcIds` condición. En el ejemplo siguiente, se deniega a los usuarios el acceso a `vpc-1` y `vpc-2`:

Para denegar a los usuarios el acceso a una determinada condición VPCs, utilice esta opción `StringEquals` para comprobar el valor de la `cloudshell:SubnetIds` condición. En el ejemplo siguiente, se deniega a los usuarios el acceso a `subnet-1` y `subnet-2`:

Para denegar a los usuarios el acceso a una determinada condición VPCs, utilice esta opción `StringEquals` para comprobar el valor de la `cloudshell:SecurityGroupIds` condición. En el ejemplo siguiente, se deniega a los usuarios el acceso a `sg-1` y `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"
          ]
        }
      }
    }
  ]
}
```

------

### Cómo permitir a los usuarios crear entornos con configuraciones de VPC específicas
<a name="create-env-with-specific-VPC-conf-1"></a>

Para permitir que los usuarios accedan a una condición específica VPCs, utilice `StringEquals` para comprobar el valor de la `cloudshell:VpcIds` condición. En el ejemplo siguiente, se permite a los usuarios el acceso a `vpc-1` y `vpc-2`:

Para permitir a los usuarios acceder a una condición específica VPCs, utilice esta opción `StringEquals` para comprobar el valor de la `cloudshell:SubnetIds` condición. En el ejemplo siguiente, se permite a los usuarios el acceso a `subnet-1` y `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 a los usuarios acceder a una condición específica VPCs, utilice esta opción `StringEquals` para comprobar el valor de la `cloudshell:SecurityGroupIds` condición. En el ejemplo siguiente, se permite a los usuarios el acceso a `sg-1` y `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"
          ]
        }
      }
    }
  ]
}
```

------