Concesión de permisos para el punto de conexión de EC2 Instance Connect - Amazon Elastic Compute Cloud

Concesión de permisos para el punto de conexión de EC2 Instance Connect

De forma predeterminada, las entidades de IAM no tienen permiso para crear, describir ni modificar puntos de conexión de EC2 Instance Connect. Un administrador de IAM puede crear políticas de IAM que concedan permisos necesarios para realizar acciones específicas en los recursos que necesitan.

Para obtener información acerca de las políticas de IAM, consulte Creación de políticas de IAM en la Guía del usuario de IAM.

En los siguientes ejemplos de políticas, se muestra cómo puede controlar los permisos que tienen los usuarios para los puntos de conexión de EC2 Instance Connect.

Permisos para crear, describir y eliminar los puntos de conexión de EC2 Instance Connect

Para crear un punto de conexión de EC2 Instance Connect, es necesario que los usuarios tenga permisos para las siguientes acciones:

  • ec2:CreateInstanceConnectEndpoint

  • ec2:CreateNetworkInterface

  • ec2:CreateTags

  • iam:CreateServiceLinkedRole

Para describir y eliminar los puntos de conexión de EC2 Instance Connect, es necesario que los usuarios tengan permisos para las siguientes acciones:

  • ec2:DescribeInstanceConnectEndpoints

  • ec2:DeleteInstanceConnectEndpoint

Puede crear una política que conceda permisos para crear, describir y eliminar puntos de conexión de EC2 Instance Connect en todas las subredes. Como alternativa, puede restringir las acciones de subredes específicas. Solo hace falta especifiar los ARN de la subred como el Resource permitido o mediante la clave de condición ec2:SubnetID. También puede usar la clave de condición aws:ResourceTag para permitir o denegar explícitamente la creación de puntos de conexión con determinadas etiquetas. Para obtener más información, consulte Políticas y permisos en IAM en la Guía del usuario de IAM.

Política de IAM de ejemplo

En el siguiente ejemplo de política de IAM, la sección del Resource concede permiso para crear y eliminar puntos de conexión en todas las subredes, especificados con el asterisco (*). Las acciones de la API ec2:Describe* no admiten permisos de recursos. Por lo tanto, el carácter comodín * es necesario en el elemento Resource.

{ "Version": "2012-10-17", "Statement": [{ "Sid": "GrantAllActionsInAllSubnets", "Action": [ "ec2:CreateInstanceConnectEndpoint", "ec2:DeleteInstanceConnectEndpoint", "ec2:CreateNetworkInterface", "ec2:CreateTags", "iam:CreateServiceLinkedRole" ], "Effect": "Allow", "Resource": "arn:aws:ec2:region:account-id:subnet/*" }, { "Action": [ "ec2:CreateNetworkInterface" ], "Effect": "Allow", "Resource": "arn:aws:ec2:::security-group/*" }, { "Sid": "DescribeInstanceConnectEndpoints", "Action": [ "ec2:DescribeInstanceConnectEndpoints" ], "Effect": "Allow", "Resource": "*" } ] }

Permisos para usar el punto de conexión de EC2 Instance Connect para conectarse a instancias

La acción ec2-instance-connect:OpenTunnel concede permiso para establecer una conexión TCP a una instancia a fin de conectarse a través del punto de conexión de EC2 Instance Connect. Puede especificar el punto de conexión de EC2 Instance Connect que se va a utilizar. Como alternativa, un Resource con asterisco (*) permite a los usuarios utilizar cualquier punto de conexión de EC2 Instance Connect disponible. También puede restringir el acceso a las instancias en función de la presencia o ausencia de etiquetas de recursos como claves de condición.

Condiciones
  • ec2-instance-connect:remotePort: el puerto de la instancia que se puede usar para establecer una conexión TCP. Cuando se utiliza esta clave de condición, se produce un error al intentar conectarse a una instancia en cualquier otro puerto que no sea el especificado en la política.

  • ec2-instance-connect:privateIpAddress: la dirección IP privada de destino asociada a la instancia con la que se quiere establecer una conexión TCP. Puede especificar una sola dirección IP, por ejemplo 10.0.0.1/32, o un rango de IP a través de los CIDR, como 10.0.1.0/28. Cuando se usa esta clave de condición, se produce un error al intentar conectarse a una instancia con una dirección IP privada diferente o fuera del rango del CIDR.

  • ec2-instance-connect:maxTunnelDuration: la duración máxima de una conexión TCP establecida. La unidad es segundos y la duración oscila entre un mínimo de 1 y un máximo de 3600 segundos (1 hora). Si no se especifica la condición, la duración predeterminada se establece en 3600 segundos (1 hora). Si intenta conectarse a una instancia durante más tiempo que el especificado en la política de IAM o durante más tiempo que el máximo predeterminado, se produce un error. La conexión termina una vez transcurrido el tiempo especificado.

    Si maxTunnelDuration se especifica en la política de IAM y su valor es inferior a 3600 segundos (el valor predeterminado), debe especificar --max-tunnel-duration en el comando al conectarse a una instancia. Para obtener más información sobre cómo conectarse a una instancia de base de datos, consulte Conexión a una instancia de Amazon EC2 mediante el punto de conexión de EC2 Instance Connect.

También puede conceder acceso a un usuario para establecer conexiones a las instancias en función de la presencia de etiquetas de recursos en el punto de conexión de EC2 Instance Connect. Para obtener más información, consulte Políticas y permisos en IAM en la Guía del usuario de IAM.

Para instancias de Linux, la acción ec2-instance-connect:SendSSHPublicKey concede permiso a un usuario para insertar la clave pública en una instancia. La condición ec2:osuser especifica el nombre del usuario del SO (sistema operativo) que puede enviar la clave pública a una instancia. Utilice el nombre de usuario predeterminado para la AMI que se utilizó para lanzar la instancia. Para obtener más información, consulte Concesión de permisos de IAM para EC2 Instance Connect.

Política de IAM de ejemplo

Las siguientes políticas de IAM de ejemplo permiten que una entidad principal de IAM se conecte a una instancia con solo el punto de conexión de EC2 Instance Connect especificado, que se identifica por el ID de punto de conexión eice-123456789abcdef especificado. La conexión se establece correctamente solo si se cumplen todas las condiciones.

nota

Las acciones de la API ec2:Describe* no admiten permisos de recursos. Por lo tanto, el carácter comodín * es necesario en el elemento Resource.

Linux

En este ejemplo, se evalúa si la conexión a la instancia se establece en el puerto 22 (SSH), si la dirección IP privada de la instancia se encuentra dentro del intervalo de 10.0.1.0/31 (entre 10.0.1.0 y 10.0.1.1) y maxTunnelDuration es inferior o igual a 3600 segundos. La conexión se pierde después de 3600 segundos (1 hora).

{ "Version": "2012-10-17", "Statement": [{ "Sid": "EC2InstanceConnect", "Action": "ec2-instance-connect:OpenTunnel", "Effect": "Allow", "Resource": "arn:aws:ec2:region:account-id:instance-connect-endpoint/eice-123456789abcdef", "Condition": { "NumericEquals": { "ec2-instance-connect:remotePort": "22" }, "IpAddress": { "ec2-instance-connect:privateIpAddress": "10.0.1.0/31" }, "NumericLessThanEquals": { "ec2-instance-connect:maxTunnelDuration": "3600" } } }, { "Sid": "SSHPublicKey", "Effect": "Allow", "Action": "ec2-instance-connect:SendSSHPublicKey", "Resource": "*", "Condition": { "StringEquals": { "ec2:osuser": "ami-username" } } }, { "Sid": "Describe", "Action": [ "ec2:DescribeInstances", "ec2:DescribeInstanceConnectEndpoints" ], "Effect": "Allow", "Resource": "*" } ] }
Windows

En este ejemplo, se evalúa si la conexión a la instancia se establece en el puerto 3389 (RDP), si la dirección IP privada de la instancia se encuentra dentro del intervalo de 10.0.1.0/31 (entre 10.0.1.0 y 10.0.1.1) y maxTunnelDuration es inferior o igual a 3600 segundos. La conexión se pierde después de 3600 segundos (1 hora).

{ "Version": "2012-10-17", "Statement": [{ "Sid": "EC2InstanceConnect", "Action": "ec2-instance-connect:OpenTunnel", "Effect": "Allow", "Resource": "arn:aws:ec2:region:account-id:instance-connect-endpoint/eice-123456789abcdef", "Condition": { "NumericEquals": { "ec2-instance-connect:remotePort": "3389" }, "IpAddress": { "ec2-instance-connect:privateIpAddress": "10.0.1.0/31" }, "NumericLessThanEquals": { "ec2-instance-connect:maxTunnelDuration": "3600" } } }, { "Sid": "Describe", "Action": [ "ec2:DescribeInstances", "ec2:DescribeInstanceConnectEndpoints" ], "Effect": "Allow", "Resource": "*" } ] }

Permisos para conectarse solo desde un rango de direcciones IP específico

El siguiente ejemplo de política de IAM permite que una entidad principal de IAM se conecte a una instancia con la condición de que lo haga desde una dirección IP dentro del rango de direcciones IP especificado en la política. Si la entidad principal de IAM llama a OpenTunnel desde una dirección IP que no esté dentro de 192.0.2.0/24 (el rango de direcciones IP de ejemplo de esta política), la respuesta será Access Denied. Para obtener más información, consulte aws:SourceIp en la Guía del usuario de IAM.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "ec2-instance-connect:OpenTunnel", "Resource": "arn:aws:ec2:region:account-id:instance-connect-endpoint/eice-123456789abcdef", "Condition": { "IpAddress": { "aws:SourceIp": "192.0.2.0/24" }, "NumericEquals": { "ec2-instance-connect:remotePort": "22" } } }, { "Sid": "SSHPublicKey", "Effect": "Allow", "Action": "ec2-instance-connect:SendSSHPublicKey", "Resource": "*", "Condition": { "StringEquals": { "ec2:osuser": "ami-username" } } }, { "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:DescribeInstanceConnectEndpoints" ], "Resource": "*" } ] }