Administrar el acceso a AWS CloudShell y el uso con políticas de IAM
Con los recursos de administración de acceso que puede proporcionar AWS Identity and Access Management, los administradores pueden conceder permisos a los usuarios de IAM. De esta forma, estos usuarios pueden acceder a AWS CloudShell y usar las funciones del entorno. Los administradores también pueden crear políticas que especifiquen de forma pormenorizada qué acciones pueden realizar esos usuarios en el entorno del intérprete de comandos.
La forma más rápida de que un administrador conceda acceso a los usuarios es mediante una política administrada de AWS. Una política administrada de AWS es una política independiente creada y administrada por AWS. La siguiente política administrada de AWS para AWS CloudShell se puede adjuntar a las identidades de IAM:
-
AWSCloudShellFullAccess: concede permiso para usar AWS CloudShell con acceso completo a todas las características.
La política AWSCloudShellFullAccess utiliza el carácter comodín (*) para conceder a la identidad de IAM (usuario, rol o grupo) acceso total a CloudShell y a las características. Para obtener más información sobre esta política, consulte AWSCloudShellFullAccess en la Guía del usuario de la política administrada de AWS.
nota
Las identidades de IAM con las siguientes políticas de administración de AWS también pueden iniciar CloudShell. Sin embargo, estas políticas ofrecen amplios permisos. Por lo tanto, le recomendamos que solo conceda estas políticas si son esenciales para el puesto de trabajo de un usuario de IAM.
-
Administrador: Proporciona a los usuarios de IAM acceso completo y les permite delegar permisos a cada servicio y recurso en AWS.
-
Usuario avanzado desarrollador: Permite a los usuarios de IAM realizar tareas de desarrollo de aplicaciones y crear y configurar recursos y servicios que soporten el desarrollo consciente de aplicaciones de AWS.
Para obtener más información sobre cómo adjuntar políticas gestionadas, consulte Agregar de permisos de identidad de IAM (consola) en la Guía del usuario de IAM.
Administrar las acciones permitidas en AWS CloudShell mediante políticas personalizadas
Si quiere administrar las acciones que un usuario de IAM puede realizar con CloudShell, cree una política personalizada que utilice la política administrada CloudShellPolicy como plantilla. Alternativamente, edite una política en línea que esté incrustada en la identidad IAM relevante (usuario, grupo o rol).
Por ejemplo, puede permitir que los usuarios de IAM accedan a CloudShell, pero impedirles que reenvíen las credenciales del entorno de CloudShell que utilizan para iniciar sesión en la AWS Management Console.
importante
Para iniciar AWS CloudShell desde la AWS Management Console, un usuario de IAM necesita permisos para realizar las siguientes acciones:
-
CreateEnvironment
-
CreateSession
-
GetEnvironmentStatus
-
StartEnvironment
Si una de estas acciones no está permitida explícitamente en una política adjunta, se devuelve un error de permisos de IAM al intentar iniciar CloudShell.
Nombre | Descripción del permiso concedido | ¿Es necesario para iniciar CloudShell? |
---|---|---|
|
Crea un entorno de CloudShell, recupera el diseño al inicio de la sesión de CloudShell y guarda el diseño actual de la aplicación web en el backend. Este permiso solo espera |
Sí |
|
Se conecta a un entorno de CloudShell desde la AWS Management Console. |
Sí |
|
Lea el estado de un entorno de CloudShell. |
Sí |
|
Elimina un entorno de CloudShell. |
No |
|
Genera direcciones URL de Amazon S3 prefirmadas que se utilizan para descargar archivos a través de CloudShell mediante la interfaz web de CloudShell. Esto opción no está disponible para los entornos de VPC. |
No |
|
Genera direcciones URL de Amazon S3 prefirmadas que se utilizan para cargar archivos a través de CloudShell mediante la interfaz web de CloudShell. Esto opción no está disponible para los entornos de VPC. |
No |
|
Describe los entornos. |
No |
|
Reenvía las credenciales utilizadas para iniciar sesión en la AWS Management Console en CloudShell. |
No |
|
Inicia un entorno de CloudShell que está detenido. |
Sí |
|
Detiene un entorno de CloudShell que se está ejecutando. |
No |
Ejemplos de políticas de IAM para
Los siguientes ejemplos muestran cómo se pueden crear políticas para restringir quién puede acceder a CloudShell. Los ejemplos también muestran las acciones que se pueden realizar en el entorno del intérprete de comandos.
La siguiente política impone una denegación total del acceso a CloudShell y sus funciones.
{ "Version": "2012-10-17", "Statement": [{ "Sid": "DenyCloudShell", "Effect": "Deny", "Action": [ "cloudshell:*" ], "Resource": "*" }] }
La siguiente política permite a los usuarios de IAM acceder a CloudShell, pero les impide generar URL prefirmadas para cargar y descargar archivos. Los usuarios pueden seguir transfiriendo archivos hacia y desde el entorno, utilizando clientes como, por ejemplo, wget
.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowUsingCloudshell", "Effect": "Allow", "Action": [ "cloudshell:*" ], "Resource": "*" }, { "Sid": "DenyUploadDownload", "Effect": "Deny", "Action": [ "cloudshell:GetFileDownloadUrls", "cloudshell:GetFileUploadUrls" ], "Resource": "*" }] }
La siguiente política permite a los usuarios de IAM tener acceso total a CloudShell. Sin embargo, la política impide que las credenciales que utilizó para iniciar sesión en la AWS Management Console se reenvíen al entorno CloudShell. Los usuarios de IAM con esta política deben configurar manualmente sus credenciales en CloudShell.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowUsingCloudshell", "Effect": "Allow", "Action": [ "cloudshell:*" ], "Resource": "*" }, { "Sid": "DenyCredentialForwarding", "Effect": "Deny", "Action": [ "cloudshell:PutCredentials" ], "Resource": "*" }] }
La siguiente política permite a los usuarios de IAM crear entornos de AWS CloudShell.
{ "Version": "2012-10-17", "Statement": [{ "Sid": "CloudShellUser", "Effect": "Allow", "Action": [ "cloudshell:CreateEnvironment", "cloudshell:CreateSession", "cloudshell:GetEnvironmentStatus", "cloudshell:StartEnvironment" ], "Resource": "*" }] }
Permisos necesarios de IAM para crear y usar entornos de VPC de CloudShell
Para crear y usar entornos de VPC de CloudShell, el administrador de IAM debe habilitar el acceso a los permisos de Amazon EC2 específicos de 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
También se recomienda incluir:
-
ec2:DeleteNetworkInterface
nota
Este permiso no es obligatorio, pero es necesario para que CloudShell limpie el recurso de interfaz de red elástica (las interfaces de red elásticas creadas para los entornos de VPC de CloudShell se etiquetan con la clave ManagedByCloudShell) que ha creado. Si este permiso no está habilitado, debe limpiar manualmente el recurso de interfaz de red elástica después de cada uso del entorno de VPC de CloudShell.
Política de IAM que concede acceso total a CloudShell con acceso a VPC incluido
En el siguiente ejemplo se muestra cómo habilitar todos los permisos en CloudShell, incluido el acceso a la VPC:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCloudShellOperations", "Effect": "Allow", "Action": [ "cloudshell:*" ], "Resource": "*" }, { "Sid": "AllowDescribeVPC", "Effect": "Allow", "Action": [ "ec2:DescribeDhcpOptions", "ec2:DescribeNetworkInterfaces", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:DescribeVpcs" ], "Resource": "*" }, { "Sid": "AllowCreateTagWithCloudShellKey", "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "StringEquals": { "ec2:CreateAction": "CreateNetworkInterface" }, "ForAnyValue:StringEquals": { "aws:TagKeys": "ManagedByCloudShell" } } }, { "Sid": "AllowCreateNetworkInterfaceWithSubnetsAndSG", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface" ], "Resource": [ "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:security-group/*" ] }, { "Sid": "AllowCreateNetworkInterfaceWithCloudShellTag", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface" ], "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": "ManagedByCloudShell" } } }, { "Sid": "AllowCreateNetworkInterfacePermissionWithCloudShellTag", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterfacePermission" ], "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "StringEquals": { "aws:ResourceTag/ManagedByCloudShell": "" } } }, { "Sid": "AllowDeleteNetworkInterfaceWithCloudShellTag", "Effect": "Allow", "Action": [ "ec2:DeleteNetworkInterface" ], "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "StringEquals": { "aws:ResourceTag/ManagedByCloudShell": "" } } } ] }
Uso de claves de condición de IAM para entornos de VPC
Puede usar claves de condición específicas de CloudShell para la configuración de la VPC a fin de proporcionar controles de permisos adicionales para los 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
: permiten o deniegan una o varias VPC. -
CloudShell:SubnetIds
: permiten o deniegan una o varias subredes. -
CloudShell:SecurityGroupIds
: permiten o deniegan uno o varios grupos de seguridad.
nota
En caso de modificarse los permisos de los usuarios con acceso a entornos públicos de CloudShell para agregar una restricción a la acción cloudshell:createEnvironment
, estos siguen conservando el acceso a su entorno público existente. Sin embargo, si quiere modificar una política de IAM con esta restricción y deshabilitar 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 usuarios de CloudShell de su cuenta eliminen manualmente el entorno público existente mediante la interfaz de usuario web de CloudShell (Acciones → Eliminar entorno de CloudShell).
Políticas de ejemplo con claves de condición para la configuración de la VPC
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
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" } } } ] }
Denegar a los usuarios el acceso a VPC, subredes o grupos de seguridad específicos
Para denegar a los usuarios el acceso a VPC específicas, utilice StringEquals
para comprobar el valor de la condición cloudshell:VpcIds
. En el ejemplo siguiente, se deniega a los usuarios el acceso a vpc-1
y vpc-2
:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceOutOfVpc", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Deny", "Resource": "*", "Condition": { "StringEquals": { "cloudshell:VpcIds": [ "vpc-1", "vpc-2" ] } } } ] }
Para denegar a los usuarios el acceso a VPC específicas, utilice StringEquals
para comprobar el valor de la condición cloudshell:SubnetIds
. En el ejemplo siguiente, se deniega a los usuarios el acceso a subnet-1
y subnet-2
:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceOutOfVpc", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Deny", "Resource": "*", "Condition": { "StringEquals": { "cloudshell:VpcIds": [ "vpc-1", "vpc-2" ] } } } ] }
Para denegar a los usuarios el acceso a VPC específicas, utilice StringEquals
para comprobar el valor de la condición cloudshell:SecurityGroupIds
. En el ejemplo siguiente, se deniega a los usuarios el acceso a sg-1
y sg-2
:
{ "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
Para permitir a los usuarios el acceso a VPC específicas, utilice StringEquals
para comprobar el valor de la condición cloudshell:VpcIds
. En el ejemplo siguiente, se permite a los usuarios el acceso a vpc-1
y vpc-2
:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceStayInSpecificVpc", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "cloudshell:VpcIds": [ "vpc-1", "vpc-2" ] } } } ] }
Para permitir a los usuarios el acceso a VPC específicas, utilice StringEquals
para comprobar el valor de la condición cloudshell:SubnetIds
. En el ejemplo siguiente, se permite a los usuarios el acceso a subnet-1
y subnet-2
:
{ "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 el acceso a VPC específicas, utilice StringEquals
para comprobar el valor de la condición cloudshell:SecurityGroupIds
. En el ejemplo siguiente, se permite a los usuarios el acceso a sg-1
y sg-2
:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceStayInSpecificSecurityGroup", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Allow", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "cloudshell:SecurityGroupIds": [ "sg-1", "sg-2" ] } } } ] }
Permisos para acceder a Servicios de AWS
CloudShell usa las credenciales de IAM que utilizó para iniciar sesión en la AWS Management Console.
nota
Para usar las credenciales de IAM que utilizó para iniciar sesión en la AWS Management Console, debe tener el permiso cloudshell:PutCredentials
.
Esta característica de autenticación previa de CloudShell facilita el uso de la AWS CLI. Sin embargo, un usuario IAM aún requiere permisos explícitos para los Servicios de AWS que se ejecutan desde la línea de comandos.
Por ejemplo, supongamos que los usuarios de IAM deben crear buckets de Amazon S3 y cargar archivos como objetos en ellos. Puede crear una política que permita esas acciones de forma explícita. La consola de IAM ofrece un editor visual interactivo que guía el proceso de creación de un documento de política con formato JSON. Después de crear la política, puede adjuntarla a la identidad IAM correspondiente (usuario, grupo o rol).
Para obtener más información sobre cómo adjuntar políticas gestionadas, consulte Agregar de permisos de identidad de IAM (consola) en la Guía del usuario de IAM.
Permisos para acceder a las características de la CLI de Amazon Q en CloudShell
Para utilizar las características de la CLI de Amazon Q en CloudShell, como las sugerencias en línea, el chat y la traducción, asegúrese de tener los permisos de IAM necesarios. Si no puede acceder a las características de la CLI de Amazon Q en CloudShell, póngase en contacto con el administrador para que le proporcione los permisos de IAM necesarios. Para obtener más información, consulte Ejemplos de políticas basadas en identidad para Amazon Q Developer en la Guía del usuario de Amazon Q Developer.