Acceso a instancias de EC2 sin entrada con AWS Systems Manager - AWS Cloud9

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.

Acceso a instancias de EC2 sin entrada con AWS Systems Manager

Una “instancia de EC2 sin entrada” creada para un entorno EC2 permite que AWS Cloud9 se conecte a su instancia de Amazon EC2 sin necesidad de abrir ningún puerto entrante en esa instancia. Puede seleccionar la opción sin entrada al crear un entorno de EC2 mediante la consola, la interfaz de la línea de comandos, o una pila de AWS CloudFormation.

importante

No hay cargos adicionales por usar el Administrador de sesiones de Systems Manager para administrar las conexiones a la instancia de EC2.

Al seleccionar un tipo de entorno en la página Create environment (Crear entorno) de la consola, puede elegir una nueva instancia de EC2 que requiera conectividad entrante o una nueva instancia de EC2 sin entrada que no requiera lo siguiente:

  • New EC2 instance (Nueva instancia de EC2): con esta configuración, el grupo de seguridad de la instancia tiene una regla para permitir el tráfico de red entrante. El tráfico de red entrante está restringido a las direcciones IP aprobadas para las conexiones de AWS Cloud9. Un puerto entrante abierto permite que AWS Cloud9 se conecte a través de SSH a su instancia. Si utiliza AWS Systems Manager Session Manager, puede acceder a su instancia de Amazon EC2 a través de SSM sin abrir los puertos entrantes (sin entrada). Este método solo es aplicable a las nuevas instancias de Amazon EC2. Para obtener más información, consulte Beneficios de utilizar Systems Manager para entornos de EC2.

  • Existing compute (Computación existente): con esta configuración, se accede a una instancia de Amazon EC2 existente que requiere detalles de inicio de sesión de SSH, para los que la instancia debe tener una regla de grupo de seguridad entrante. Si utiliza esta opción, se crea un rol de servicio automáticamente. Puede ver el nombre del rol de servicio en una nota en la parte inferior de la pantalla de configuración.

Si se crea un entorno mediante AWS CLI, puede configurar una instancia de EC2 sin entrada estableciendo la opción --connection-type CONNECT_SSM al llamar al comando create-environment-ec2. Para obtener más información acerca de la creación de la función de servicio y del perfil de instancias necesarios, consulte Administrar perfiles de instancias para Systems Manager con AWS CLI.

Después de completar la creación de un entorno que utiliza una instancia de EC2 sin entrada, confirme lo siguiente:

Beneficios de utilizar Systems Manager para entornos de EC2

Permitir que el Administrador de sesiones controle la conexión segura entre AWS Cloud9 y su instancia de EC2 ofrece dos beneficios clave:

  • No es necesario abrir puertos entrantes para la instancia

  • Opción para lanzar la instancia en una subred pública o privada

No open inbound ports

Las conexiones seguras entre AWS Cloud9 y su instancia de EC2 las gestiona el Administrador de sesiones. El Administrador de sesiones es una capacidad completamente administrada de Systems Manager que permite que AWS Cloud9 se conecte a su instancia de EC2 sin necesidad de abrir puertos entrantes.

importante

La opción de utilizar Systems Manager para las conexiones sin entrada solo está disponible actualmente cuando se crean nuevos entornos de EC2.

Con el inicio de una sesión del Administrador de sesiones, se realiza una conexión con la instancia de destino. Con la conexión establecida, el entorno ahora puede interactuar con la instancia a través del servicio de Systems Manager. El servicio de Systems Manager se comunica con la instancia a través de Systems Manager Agent (SSM Agent).

SSM Agent se instala, de forma predeterminada, en todas las instancias utilizadas por los entornos de EC2.

Private/public subnets

Al seleccionar una subred para su instancia en la sección Network settings (advanced) Configuración de red (avanzada), puede seleccionar una subred privada o pública si se accede a la instancia de su entorno a través de Systems Manager.

Selección de una nueva instancia de EC2 sin entrada para su entorno

Subredes privadas

Para una subred privada, asegúrese de que la instancia todavía puede conectarse al servicio SSM. Para hacerlo, puede configurar una gateway NAT en una subred pública o configurar un punto de enlace de la VPC para Systems Manager.

La ventaja de utilizar la gateway NAT es que impide que internet inicie una conexión a la instancia en la subred privada. A la instancia de su entorno se le asigna una dirección IP privada en lugar de una pública. Por tanto, la puerta de enlace NAT reenvía el tráfico desde la instancia a Internet o a otros servicios de AWS y, a continuación, envía la respuesta a la instancia.

Para la opción de la VPC, cree al menos tres puntos de conexión de interfaz necesarios para Systems Manager: com.amazonaws.region.ssm, com.amazonaws.region.ec2messages y com.amazonaws.region.ssmmessages. Para obtener más información, consulte Creación de puntos de enlace de la VPC para Systems Manager en la Guía del usuario de AWS Systems Manager.

importante

Actualmente, si la instancia de EC2 de su entorno se lanza en una subred privada, no puede usar credenciales temporales administradas de AWS para permitir que el entorno de EC2 acceda a un servicio de AWS en nombre de una entidad de AWS (un usuario de IAM, por ejemplo).

Subredes públicas

Si el entorno de desarrollo usa SSM para acceder a una instancia de EC2, asegúrese de que la subred pública en la que se lanza la instancia asigna una dirección IP pública a la instancia. Para ello, puede especificar su propia dirección IP o habilitar la asignación automática de una dirección IP pública. Para ver los pasos necesarios para modificar la configuración de asignación automática de IP, consulte Direcciones IP en su VPC en la Guía del usuario de Amazon VPC.

Para obtener más información sobre la configuración de subredes privadas y públicas para las instancias de su entorno, consulte Cree una subred para AWS Cloud9.

Administración de permisos de Systems Manager

De forma predeterminada, Systems Manager no tiene permiso para realizar acciones en sus instancias de EC2. El acceso se proporciona a través de un perfil de instancias (IAM) de AWS Identity and Access Management. (Un perfil de instancias es un contenedor que pasa información del rol de IAM a una instancia de EC2 en el momento del lanzamiento).

Al crear la instancia de EC2 sin entrada con la consola de AWS Cloud9, tanto la función de servicio (AWSCloud9SSMAccessRole) como el perfil de instancias de IAM (AWSCloud9SSMInstanceProfile) se crean automáticamente. (Puede ver AWSCloud9SSMAccessRole en la consola de administración de IAM. Los perfiles de instancias no se muestran en la consola de IAM).

importante

Si crea un entorno de EC2 sin entrada por primera vez con AWS CLI, debe definir explícitamente la función servicio y el perfil de instancias necesarios. Para obtener más información, consulte Administrar perfiles de instancias para Systems Manager con AWS CLI.

importante

Si está creando un entorno de AWS Cloud9 y utiliza Amazon EC2 Systems Manager con las políticas asociadas de AWSCloud9Administrator o AWSCloud9User, también debe asociar una política personalizada que tenga permisos de IAM específicos. A este respecto, consulte Política de IAM personalizada para la creación de un entorno SSM Esto se debe a un problema de permisos con las políticas AWSCloud9Administrator yAWSCloud9User.

Para una protección de seguridad adicional, el rol vinculado al servicio de AWS Cloud9, AWSServiceRoleforAWSCloud9, presenta una restricción PassRole en su política AWSCloud9ServiceRolePolicy. Cuando pasa un rol de IAM a un servicio, permite a ese servicio asumir el rol y ejecutar acciones en su nombre. En este caso, el permiso PassRole garantiza que AWS Cloud9 pueda pasar solo el rol AWSCloud9SSMAccessRole (y su permiso) a una instancia de EC2. Esto restringe las acciones que se pueden realizar en la instancia EC2 solo a las requeridas por AWS Cloud9.

nota

Si ya no necesita utilizar Systems Manager para acceder a una instancia, puede eliminar la función de servicio AWSCloud9SSMAccessRole. Para obtener información, consulte Eliminación de roles o perfiles de instancia en la Guía del usuario de IAM.

Administrar perfiles de instancias para Systems Manager con AWS CLI

También puede crear un entorno de EC2 sin entrada con AWS CLI. Cuando llame a create-environment-ec2, establezca la opción --connection-type en CONNECT_SSM.

Si utiliza esta opción, la función de servicio AWSCloud9SSMAccessRole y AWSCloud9SSMInstanceProfile no se crean automáticamente. Por lo tanto, para crear el perfil de servicio y el perfil de instancias necesarios, realice una de las siguientes acciones:

  • Cree un entorno de EC2 usando la consola una vez que la función de servicio AWSCloud9SSMAccessRole y AWSCloud9SSMInstanceProfile se hayan creado automáticamente. Una vez creados, la función de servicio y el perfil de instancias están disponibles para cualquier entorno de EC2 adicional creado mediante AWS CLI.

  • Ejecute los siguientes comandos de AWS CLI para crear la función de servicio y el perfil de instancias.

    aws iam create-role --role-name AWSCloud9SSMAccessRole --path /service-role/ --assume-role-policy-document '{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Principal": {"Service": ["ec2.amazonaws.com","cloud9.amazonaws.com"] },"Action": "sts:AssumeRole"}]}' aws iam attach-role-policy --role-name AWSCloud9SSMAccessRole --policy-arn arn:aws:iam::aws:policy/AWSCloud9SSMInstanceProfile aws iam create-instance-profile --instance-profile-name AWSCloud9SSMInstanceProfile --path /cloud9/ aws iam add-role-to-instance-profile --instance-profile-name AWSCloud9SSMInstanceProfile --role-name AWSCloud9SSMAccessRole

Proporcionar a los usuarios acceso a las instancias administradas por el Administrador de sesiones

Para abrir un entorno de AWS Cloud9 que está conectado a una instancia de EC2 a través de Systems Manager, un usuario debe tener permiso para la operación de la API, StartSession. Esta operación inicia una conexión a la instancia de EC2 administrada para una sesión del Administrador de sesiones. Puede dar acceso a los usuarios mediante una política administrada específica de AWS Cloud9 (recomendado) o bien mediante una política de IAM y la adición de los permisos necesarios.

Método Descripción

Usar una política administrada específica de AWS Cloud9

Se recomienda utilizar políticas administradas de AWS para permitir a los usuarios acceder a instancias de EC2 administradas por Systems Manager. Las directivas administradas proporcionan un conjunto de permisos para casos de uso de AWS Cloud9 estándar y se pueden adjuntar fácilmente a una entidad de IAM.

Todas las políticas administradas también incluyen los permisos para ejecutar la operación de API StartSession. Las siguientes son las políticas administradas específicas de AWS Cloud9:

  • AWSCloud9Administrator (arn:aws:iam::aws:policy/AWSCloud9Administrator)

  • AWSCloud9User (arn:aws:iam::aws:policy/AWSCloud9User)

  • AWSCloud9EnvironmentMember (arn:aws:iam::aws:policy/AWSCloud9EnvironmentMember)

importante

Si está creando un entorno de AWS Cloud9 y utiliza Amazon EC2 Systems Manager con las políticas asociadas de AWSCloud9Administrator o AWSCloud9User, también debe asociar una política personalizada que tenga permisos de IAM específicos. A este respecto, consulte Política de IAM personalizada para la creación de un entorno SSM Esto se debe a un problema de permisos con las políticas AWSCloud9Administrator yAWSCloud9User.

Para obtener más información, consulte AWS políticas gestionadas para AWS Cloud9.

Editar una política de IAM y agregar instrucciones de política obligatorias

Para editar una política existente, puede añadir permisos para la API de StartSession. Para editar una política mediante la AWS Management Console o AWS CLI, siga las instrucciones que se proporcionan en Edición de políticas de IAM en la Guía del usuario de IAM.

Cuando edite la política, agregue la instrucción policy statement (véase a continuación), que permite que la operación de API ssm:startSession se ejecute.

Puede utilizar los siguientes permisos para ejecutar la operación de la API StartSession. La clave de condición ssm:resourceTag especifica que se puede iniciar una sesión del Administrador de sesiones para cualquier instancia (Resource: arn:aws:ec2:*:*:instance/*) con la condición de que la instancia sea un entorno de desarrollo de EC2 de AWS Cloud9 (aws:cloud9:environment).

nota

Las siguientes políticas administradas también incluyen estas instrucciones de política: AWSCloud9Administrator, AWSCloud9User y AWSCloud9EnvironmentMember.

{ "Effect": "Allow", "Action": "ssm:StartSession", "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringLike": { "ssm:resourceTag/aws:cloud9:environment": "*" }, "StringEquals": { "aws:CalledViaFirst": "cloud9.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "ssm:StartSession" ], "Resource": [ "arn:aws:ssm:*:*:document/*" ] }

Uso de AWS CloudFormation para crear entornos de EC2 sin entrada

Si utiliza una plantilla de AWS CloudFormation para definir un entorno de desarrollo de Amazon EC2 sin entrada, haga lo siguiente antes de crear la pila:

  1. Cree una función de servicio de AWSCloud9SSMAccessRole y un perfil de instancias de AWSCloud9SSMInstanceProfile. Para obtener más información, consulte Crear una función de servicio y un perfil de instancias con una plantilla de AWS CloudFormation.

  2. Actualice la política para la entidad de IAM que llama a AWS CloudFormation. De esta manera, la entidad pueda iniciar una sesión de Session Manager que se conecte a la instancia de EC2. Para obtener más información, consulte Agregar permisos de Systems Manager a una política de IAM.

Crear una función de servicio y un perfil de instancias con una plantilla de AWS CloudFormation

Debe crear la función de servicio AWSCloud9SSMAccessRole y el perfil de instancias AWSCloud9SSMInstanceProfile para permitir que Systems Manager administre la instancia de EC2 que respalda su entorno de desarrollo.

Si ya ha creado AWSCloud9SSMAccessRole y AWSCloud9SSMInstanceProfile anteriormente mediante la creación de un entorno de EC2 sin entrada with the console o la ejecución de comandos de AWS CLI, el rol de servicio y el perfil de instancia ya están disponibles para su uso.

nota

Supongamos que intenta crear una pila de AWS CloudFormation para un entorno de EC2 sin entrada, pero no ha creado primero el rol de servicio y el perfil de instancia necesarios. En ese caso, la pila no se crea y aparece el siguiente mensaje de error:

El perfil de instancias AWSCloud9SSMInstanceProfile no existe en la cuenta.

Al crear un entorno de EC2 sin entrada por primera vez mediante AWS CloudFormation, puede definir AWSCloud9SSMAccessRole y AWSCloud9SSMInstanceProfile como recursos de IAM en la plantilla.

Este extracto de una plantilla de ejemplo muestra cómo definir estos recursos. La acción AssumeRole devuelve credenciales de seguridad que proporcionan acceso tanto al entorno de AWS Cloud9 como a su instancia de EC2.

AWSTemplateFormatVersion: 2010-09-09 Resources: AWSCloud9SSMAccessRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Principal: Service: - cloud9.amazonaws.com - ec2.amazonaws.com Action: - 'sts:AssumeRole' Description: 'Service linked role for AWS Cloud9' Path: '/service-role/' ManagedPolicyArns: - arn:aws:iam::aws:policy/AWSCloud9SSMInstanceProfile RoleName: 'AWSCloud9SSMAccessRole' AWSCloud9SSMInstanceProfile: Type: "AWS::IAM::InstanceProfile" Properties: InstanceProfileName: AWSCloud9SSMInstanceProfile Path: "/cloud9/" Roles: - Ref: AWSCloud9SSMAccessRole

Agregar permisos de Systems Manager a una política de IAM

Después de definir un rol de servicio y un perfil de instancia en la plantilla de AWS CloudFormation, asegúrese de que la entidad de IAM que crea la pila tiene permiso para iniciar una sesión de Session Manager. Una sesión es una conexión realizada a la instancia de EC2 mediante Session Manager.

nota

Si no agrega permisos para iniciar una sesión del Administrador de sesiones antes de crear una pila para un entorno de EC2 sin entrada, se devuelve un error AccessDeniedException.

Añada los siguientes permisos a la política para la entidad de IAM mediante una llamada a AWS CloudFormation.

{ "Effect": "Allow", "Action": "ssm:StartSession", "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringLike": { "ssm:resourceTag/aws:cloud9:environment": "*" }, "StringEquals": { "aws:CalledViaFirst": "cloudformation.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "ssm:StartSession" ], "Resource": [ "arn:aws:ssm:*:*:document/*" ] }

Configuración de puntos de enlace de la VPC para Amazon S3 para descargar dependencias

Si la instancia de EC2 de su entorno de AWS Cloud9 no tiene acceso a Internet, debe crear un punto de conexión de VPC para un bucket de Amazon S3 especificado. Este bucket contiene las dependencias necesarias para mantener su IDE actualizado.

La configuración de un punto de conexión de VPC para Amazon S3 también implica personalizar la política de acceso. Desea que la política de acceso permita el acceso solo al bucket de S3 de confianza que contiene las dependencias que se van a descargar.

nota

Puede crear y configurar puntos de enlace de la VPC mediante la AWS Management Console, AWS CLI o la API de Amazon VPC. En el siguiente procedimiento, se muestra cómo crear un punto de conexión de VPC con la interfaz de la consola.

Crear y configurar un punto de enlace de la VPC para Amazon S3

  1. En la AWS Management Console, vaya a la página de la consola de Amazon VPC.

  2. En la barra de navegación, elija Endpoints (Puntos de enlace).

  3. En la página Endpoints (Puntos de enlace), elija Create Endpoint (Crear punto de enlace).

  4. En la página Create Endpoint (Crear un punto de conexión), introduzca “s3” en el campo de búsqueda y pulse Intro para ver una lista de los puntos de conexión disponibles para Amazon S3 en la Región de AWSactual.

  5. En la lista de puntos de enlace de Amazon S3 devuelta, seleccione el tipo Gateway.

  6. A continuación, elija la VPC que contiene la instancia de EC2 de su entorno.

  7. Ahora elija la tabla de enrutamiento de la VPC. De esta forma, las subredes asociadas pueden acceder al punto de conexión. La instancia de EC2 de su entorno se encuentra en una de estas subredes.

  8. En la sección Policy (Política), haga clic en la opción Custom (Personalizada) y reemplace la política estándar por la siguiente.

    { "Version": "2008-10-17", "Statement": [ { "Sid": "Access-to-C9-bucket-only", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::{bucket_name}/content/dependencies/*" } ] }

    Para el elemento Resource, reemplace {bucket_name} por el nombre real del bucket que está disponible en su Región de AWS. Por ejemplo, si utiliza AWS Cloud9 en la región Europa (Irlanda), especifique lo siguiente: "Resource": "arn:aws:s3:::static-eu-west-1-prod-static-hld3vzaf7c4h/content/dependencies/.

    En la siguiente tabla, se incluyen los nombres de bucket de las Regiones de AWS donde AWS Cloud9 está disponible.

    Buckets de Amazon S3 en las regiones de AWS Cloud9
    Región de AWS Nombre del bucket

    Este de EE. UU. (Ohio)

    static-us-east-2-prod-static-1c3sfcvf9hy4m

    Este de EE. UU. (Norte de Virginia)

    static-us-east-1-prod-static-mft1klnkc4hl

    EE.UU. Oeste (Oregón)

    static-us-west-2-prod-static-p21mksqx9zlr

    Oeste de EE. UU. (Norte de California)

    static-us-west-1-prod-static-16d59zrrp01z0

    Africa (Cape Town)

    static-af-south-1-prod-static-v6v7i5ypdppv

    Asia Pacific (Hong Kong)

    static-ap-east-1-prod-static-171xhpfkrorh6

    Asia Pacific (Mumbai)

    static-ap-south-1-prod-static-ykocre202i9d

    Asia Pacific (Osaka)

    static-ap-northeast-3-prod-static-ivmxqzrx2ioi

    Asia Pacific (Seoul)

    static-ap-northeast-2-prod-static-1wxyctlhwiajm

    Asia Pacífico (Singapur)

    static-ap-southeast-1-prod-static-13ibpyrx4vk6d

    Asia Pacífico (Sídney)

    static-ap-southeast-2-prod-static-1cjsl8bx27rfu

    Asia Pacífico (Tokio)

    static-ap-northeast-1-prod-static-4fwvbdisquj8

    Canada (Central)

    static-ca-central-1-prod-static-g80lpejy486c

    Europe (Frankfurt)

    static-eu-central-1-prod-static-14lbgls2vrkh

    Europa (Irlanda)

    static-eu-west-1-prod-static-hld3vzaf7c4h

    Europa (Londres)

    static-eu-west-2-prod-static-36lbg202837x

    Europa (Milán)

    static-eu-south-1-prod-static-1379tzkd3ni7d

    Europe (Paris)

    static-eu-west-3-prod-static-1rwpkf766ke58

    Europe (Stockholm)

    static-eu-north-1-prod-static-1qzw982y7yu7e

    Middle East (Bahrain)

    static-me-south-1-prod-static-gmljex38qtqx

    América del Sur (São Paulo)

    static-sa-east-1-prod-static-1cl8k0y7opidt

    Israel (Tel Aviv)

    static-il-central-1-prod-static-k02vrnhcesue

  9. Elija Create Endpoint (Crear punto de conexión).

    Si ha proporcionado la información de configuración correcta, un mensaje muestra el ID del punto de conexión que se ha creado.

  10. Para verificar que su IDE puede acceder al bucket de Amazon S3, inicie una sesión del terminal mediante las opciones Window (Ventana), New Terminal (Nuevo terminal) en la barra de menús. A continuación, ejecute el siguiente comando y reemplace {bucket_name} por el nombre real del bucket de su región.

    ping {bucket_name}.s3.{region}.amazonaws.com.

    Por ejemplo, si creó un punto de conexión para un bucket de Amazon S3 en la región Este de EE. UU. (Norte de Virginia), ejecute el siguiente comando:

    ping static-us-east-1-prod-static-mft1klnkc4hl.s3.us-east-1.amazonaws.com

    Si el ping obtiene una respuesta, esto confirma que su IDE puede acceder al bucket y a sus dependencias.

Para obtener más información acerca de esta característica, consulte Endpoints for Amazon S3 (Puntos de conexión para Amazon S3) en la AWS PrivateLink Guide (Guía de AWS PrivateLink).

Configuración de puntos de enlace de la VPC para conectividad privada

Cuando se lanza una instancia en una subred con la opción access using Systems Manager (Acceso a través de Systems Manager), su grupo de seguridad no tiene una regla de entrada que permita el tráfico de red entrante. Sin embargo, el grupo de seguridad tiene una regla de salida que permite el tráfico saliente de la instancia. Esto es necesario para descargar paquetes y bibliotecas necesarios para mantener el IDE de AWS Cloud9 actualizado.

Para evitar el tráfico saliente y entrante de la instancia, cree y configure los puntos de conexión de Amazon VPC para Systems Manager. Con un punto de conexión de VPC de la interfaz (punto de conexión de la interfaz), puede conectarse a servicios con tecnología de AWS PrivateLink. AWS PrivateLink es una tecnología que puede utilizarse para obtener acceso de forma privada a las API de Amazon EC2 y Systems Manager mediante direcciones IP privadas. Para configurar los puntos de enlace de la VPC para que utilicen Systems Manager, siga las instrucciones proporcionadas en este Recursos del Centro de Conocimientos.

aviso

Supongamos que configura un grupo de seguridad que no permite el tráfico de red entrante o saliente. En ese caso, la instancia de EC2 que admite el IDE de AWS Cloud9 no tiene acceso a Internet. Debe crear un punto de conexión de Amazon S3 para su VPC para permitir el acceso a las dependencias contenidas en un bucket de S3 de confianza. Además, es posible que algunos Servicios de AWS, como AWS Lambda, no funcionen según lo previsto sin acceso a internet.

Con AWS PrivateLink, existen cargos de procesamiento de datos por cada gigabyte procesado a través del punto de conexión de VPC. Esto es independiente del origen o el destino del tráfico. Para obtener más información, consulte Precios de AWS PrivateLink.