

# Concesión de permisos para el punto de conexión de EC2 Instance Connect
<a name="permissions-for-ec2-instance-connect-endpoint"></a>

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](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) 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.

**Topics**
+ [Permisos para crear, describir, modificar y eliminar los puntos de conexión de EC2 Instance Connect](#iam-CreateInstanceConnectEndpoint)
+ [Permisos para usar el punto de conexión de EC2 Instance Connect para conectarse a instancias](#iam-OpenTunnel)
+ [Permisos para conectarse solo desde un rango de direcciones IP específico](#iam-sourceip)

## Permisos para crear, describir, modificar y eliminar los puntos de conexión de EC2 Instance Connect
<a name="iam-CreateInstanceConnectEndpoint"></a>

Para crear y modificar un punto de conexión de EC2 Instance Connect, es necesario que los usuarios tengan permisos para las siguientes acciones:
+ `ec2:CreateInstanceConnectEndpoint`
+ `ec2:CreateNetworkInterface`
+ `ec2:CreateTags`
+ `ec2:ModifyInstanceConnectEndpoint`
+ `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, modificar 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 especificar 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) 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 `Resource` concede permiso para crear, modificar 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`.

## Permisos para usar el punto de conexión de EC2 Instance Connect para conectarse a instancias
<a name="iam-OpenTunnel"></a>

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](connect-using-eice.md).

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](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) 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](connection-prereqs-general.md#connection-prereqs-get-info-about-instance) que se utilizó para lanzar la instancia. Para obtener más información, consulte [Concesión de permisos de IAM para EC2 Instance Connect](ec2-instance-connect-configure-IAM-role.md).

**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).

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Sid": "EC2InstanceConnect",
            "Action": "ec2-instance-connect:OpenTunnel",
            "Effect": "Allow",
            "Resource": "arn:aws:ec2:{{us-east-1}}:{{111122223333}}: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).

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Sid": "EC2InstanceConnect",
            "Action": "ec2-instance-connect:OpenTunnel",
            "Effect": "Allow",
            "Resource": "arn:aws:ec2:{{us-east-1}}:{{111122223333}}: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
<a name="iam-sourceip"></a>

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 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceip](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceip) en la *Guía del usuario de IAM*.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Effect": "Allow",
            "Action": "ec2-instance-connect:OpenTunnel",
            "Resource": "arn:aws:ec2:{{us-east-1}}:{{111122223333}}: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": "*"
        }
    ]
}
```

------