

# Concesión de permisos de IAM para EC2 Instance Connect
<a name="ec2-instance-connect-configure-IAM-role"></a>

Si quiere conectarse a una instancia con EC2 Instance Connect, debe crear una política de IAM que conceda permisos a los usuarios para las siguientes acciones y condiciones:
+ Acción `ec2-instance-connect:SendSSHPublicKey`: concede permiso a un usuario para insertar la clave pública en una instancia.
+ Condición `ec2:osuser`: especifica el nombre del usuario de SO que puede enviar la clave pública a una instancia. Utilice el nombre de usuario predeterminado para la AMI que utilizó para lanzar la instancia. El nombre de usuario predeterminado para AL2023 y Amazon Linux 2 es `ec2-user` y para Ubuntu es `ubuntu`.
+ Acción `ec2:DescribeInstances`: es necesaria cuando se utiliza la consola de EC2 debido a que el encapsulador la llama. Es posible que los usuarios ya tengan permiso para llamar a esta acción desde otra política.
+ Acción `ec2:DescribeVpcs`: necesaria para conectarse a una dirección IPv6.

Considere restringir el acceso a instancias de EC2 específicas. De lo contrario, todas las entidades principales de IAM con permiso para la acción `ec2-instance-connect:SendSSHPublicKey` pueden conectarse a todas las instancias de EC2. Puede restringir el acceso mediante la especificación de ARN de recursos o al usar etiquetas de recurso como [claves de condición](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2instanceconnect.html#amazonec2instanceconnect-policy-keys).

Para obtener más información, consulte [Acciones, recursos y claves de condiciones para Amazon EC2 Instance Connect](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2instanceconnect.html).

Para obtener información acerca de las políticas de IAM, consulte [Creación de políticas de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) en la *Guía del usuario de IAM*.

## Concesión de permisos para que los usuarios se conecten a instancias específicas
<a name="eic-permissions-allow-users-to-connect-to-specific-instances"></a>

La siguiente política de IAM concede permiso para conectarse a instancias específicas, identificadas por sus ARN de recursos. 

En el siguiente ejemplo de política de IAM, se especifican las siguientes acciones y condiciones:
+ La acción `ec2-instance-connect:SendSSHPublicKey` concede a los usuarios permiso para conectarse a dos instancias, especificadas por los ARN del recurso. Para conceder a los usuarios permiso para conectarse a *todas* las instancias de EC2, sustituya los ARN del recurso por el carácter comodín `*`.
+ La condición `ec2:osuser` concede permiso para conectarse a las instancias solo si se especifica {{ami-username}} al conectarse.
+ La acción `ec2:DescribeInstances` se especifica para conceder permisos a los usuarios que usarán la consola para conectarse a sus instancias. Si los usuarios solo utilizarán un cliente SSH para conectarse a sus instancias, puede omitir `ec2:DescribeInstances`. Tenga en cuenta que 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`.
+ La acción `ec2:DescribeVpcs` se especifica para otorgar permisos a los usuarios que utilizarán la consola para conectarse a sus instancias con una dirección IPv6. Si los usuarios van a utilizar únicamente una dirección IPv4 pública, puede omitir `ec2:DescribeVpcs`. Tenga en cuenta que 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`.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Effect": "Allow",
            "Action": "ec2-instance-connect:SendSSHPublicKey",
            "Resource": [
                "arn:aws:ec2:{{us-east-1}}:{{111122223333}}:instance/{{i-1234567890abcdef0}}",
                "arn:aws:ec2:{{us-east-1}}:{{111122223333}}:instance/{{i-0598c7d356eba48d7}}"
            ],
            "Condition": {
                "StringEquals": {
                    "ec2:osuser": "{{ami-username}}"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeVpcs"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## Concesión de permisos para que los usuarios se conecten a instancias con etiquetas específicas
<a name="eic-permissions-allow-users-to-connect-to-instances-with-specific-tags"></a>

El control de acceso basado en atributos (ABAC) es una estrategia de autorización que define permisos basados en etiquetas que pueden asociarse a usuarios y recursos de AWS. Puede utilizar etiquetas de recursos para controlar el acceso a una instancia. Para obtener más información sobre el uso de etiquetas para controlar el acceso a los recursos de AWS, consulte [Control de acceso a los recursos de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-resources) en la *Guía del usuario de IAM*.

En el siguiente ejemplo de política de IAM, la acción `ec2-instance-connect:SendSSHPublicKey` concede a los usuarios permiso para conectarse a cualquier instancia (lo que se indica mediante el carácter comodín `*` en el ARN del recurso) con la condición de que la instancia tenga una etiqueta de recurso con key=`tag-key` y value=`tag-value`.

La acción `ec2:DescribeInstances` se especifica para conceder permisos a los usuarios que usarán la consola para conectarse a sus instancias. Si los usuarios solo utilizarán un cliente SSH para conectarse a sus instancias, puede omitir `ec2:DescribeInstances`. Tenga en cuenta que 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`.

La acción `ec2:DescribeVpcs` se especifica para otorgar permisos a los usuarios que utilizarán la consola para conectarse a sus instancias con una dirección IPv6. Si los usuarios van a utilizar únicamente una dirección IPv4 pública, puede omitir `ec2:DescribeVpcs`. Tenga en cuenta que 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`.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Effect": "Allow",
            "Action": "ec2-instance-connect:SendSSHPublicKey", 
            "Resource": "arn:aws:ec2:{{us-east-1}}:{{111122223333}}:instance/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/{{tag-key}}": "{{tag-value}}"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeVpcs"
            ],
            "Resource": "*"
        }
    ]
}
```

------