

# Conceder permissões para usar o EC2 Instance Connect Endpoint
<a name="permissions-for-ec2-instance-connect-endpoint"></a>

Por padrão, as entidades do IAM não têm permissão para criar, descrever ou modificar os EC2 Instance Connect Endpoints. Um administrador do IAM deve criar políticas do IAM que concedam as permissões necessárias para executar ações específicas nos recursos necessários.

Para obter informações sobre a criação de políticas do IAM, consulte [Criação de políticas do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html), no *Manual do usuário do IAM*.

Os exemplos de políticas a seguir mostram como é possível controlar as permissões que os usuários têm sobre os EC2 Instance Connect Endpoints.

**Topics**
+ [Permissões para criar, descrever, modificar e excluir os endpoints do EC2 Instance Connect](#iam-CreateInstanceConnectEndpoint)
+ [Permissões para usar o EC2 Instance Connect Endpoint para se conectar às instâncias](#iam-OpenTunnel)
+ [Permissões para conectar somente de um intervalo de endereços IP específico](#iam-sourceip)

## Permissões para criar, descrever, modificar e excluir os endpoints do EC2 Instance Connect
<a name="iam-CreateInstanceConnectEndpoint"></a>

Para criar e modificar um endpoint do EC2 Instance Connect, os usuários precisam de permissões para as seguintes ações:
+ `ec2:CreateInstanceConnectEndpoint`
+ `ec2:CreateNetworkInterface`
+ `ec2:CreateTags`
+ `ec2:ModifyInstanceConnectEndpoint`
+ `iam:CreateServiceLinkedRole`

Para descrever e excluir EC2 Instance Connect Endpoints, os usuários precisam de permissões para as seguintes ações:
+ `ec2:DescribeInstanceConnectEndpoints` 
+ `ec2:DeleteInstanceConnectEndpoint`

É possível criar uma política que conceda permissão para criar, descrever, modificar e excluir os endpoints do EC2 Instance Connect em todas as sub-redes. Como alternativa, é possível restringir ações para sub-redes especificadas somente especificando os ARNs da sub-rede como o `Resource` permitido ou usando a chave de condição `ec2:SubnetID`. Você também pode usar a chave de condição `aws:ResourceTag` para permitir ou negar explicitamente a criação de endpoints com determinadas tags. Para ter mais informações, consulte [Políticas e permissões no IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html), no *Guia do usuário do IAM*.

**Exemplo de política do IAM**

No exemplo de política do IAM a seguir, a seção `Resource` concede permissão para criar, modificar e excluir endpoints em todas as sub-redes, especificadas pelo asterisco (`*`). As ações da API `ec2:Describe*` não oferecem suporte a permissões no nível do recurso. Portanto, o caractere curinga `*` é necessário no elemento `Resource`.

## Permissões para usar o EC2 Instance Connect Endpoint para se conectar às instâncias
<a name="iam-OpenTunnel"></a>

A ação `ec2-instance-connect:OpenTunnel` concede permissão para estabelecer uma conexão TCP com uma instância para se conectar via EC2 Instance Connect Endpoint. É possível especificar o EC2 Instance Connect Endpoint a ser usado. Como alternativa, um `Resource` com um asterisco (`*`) permite que os usuários usem qualquer EC2 Instance Connect Endpoint disponível. Você também pode restringir o acesso às instâncias com base na presença ou ausência de tags de recurso como chaves de condição.

**Condições**
+ `ec2-instance-connect:remotePort`: a porta na instância que pode ser usada para estabelecer uma conexão TCP. Quando essa chave de condição é usada, tentar conectar-se a uma instância em qualquer outra porta que não seja a especificada na política resultará em falha.
+ `ec2-instance-connect:privateIpAddress`: o endereço IP privado de destino associado à instância com a qual você deseja estabelecer uma conexão TCP. É possível especificar um único endereço IP, como `10.0.0.1/32`, ou um intervalo de IPs por meio de CIDRs, como `10.0.1.0/28`. Quando essa chave de condição é usada, tentar conectar-se a uma instância com um endereço IP privado diferente ou fora do intervalo CIDR resultará em falha. 
+ `ec2-instance-connect:maxTunnelDuration`: a duração máxima de uma conexão TCP estabelecida. A unidade é em segundos, e a duração varia de um mínimo de 1 segundo a um máximo de 3.600 segundos (uma hora). Se a condição não for especificada, a duração padrão será definida como 3.600 segundos (uma hora). A tentativa de conectar-se a uma instância por mais tempo do que a duração especificada na política do IAM ou por mais tempo do que o máximo padrão resultará em falha. A conexão é desconectada após a duração especificada.

  Se `maxTunnelDuration` for especificado na política do IAM e o valor especificado for inferior a 3.600 segundos (o padrão), você deverá especificar `--max-tunnel-duration` no comando ao conectar-se a uma instância. Para obter informações sobre como conectar-se a uma instância, consulte [Conexão com uma instância do Amazon EC2 usando o EC2 Instance Connect Endpoint](connect-using-eice.md).

Também é possível conceder a um usuário acesso para estabelecer conexões com instâncias com base na presença de tags de recursos no EC2 Instance Connect Endpoint. Para ter mais informações, consulte [Políticas e permissões no IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html), no *Guia do usuário do IAM*.

Para instâncias do Linux, a ação `ec2-instance-connect:SendSSHPublicKey` concede permissão para enviar a chave pública para uma instância. A condição `ec2:osuser` especifica o nome do usuário do SO (sistema operacional) que pode enviar a chave pública para uma instância. Use o [nome de usuário padrão da AMI](connection-prereqs-general.md#connection-prereqs-get-info-about-instance) que você usou para iniciar a instância. Para obter mais informações, consulte [Conceder permissões do IAM para o EC2 Instance Connect](ec2-instance-connect-configure-IAM-role.md).

**Exemplo de política do IAM**

Os exemplos de políticas do IAM apresentados a seguir permitem que uma entidade principal do IAM se conecte a uma instância usando somente o endpoint de conexão da instância do EC2 especificado, que é identificado pelo ID `eice-123456789abcdef` do endpoint especificado. A conexão será estabelecida com êxito somente se todas as condições forem atendidas.

**nota**  
As ações da API `ec2:Describe*` não oferecem suporte a permissões no nível do recurso. Portanto, o caractere curinga `*` é necessário no elemento `Resource`.

------
#### [ Linux ]

Este exemplo avalia se a conexão com a instância foi estabelecida na porta 22 (SSH), se o endereço IP privado da instância está dentro do intervalo de `10.0.1.0/31` (que compreende `10.0.1.0` e `10.0.1.1`) e `maxTunnelDuration` é menor ou igual a `3600` segundos. A conexão será desconectada após `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 ]

Este exemplo avalia se a conexão com a instância foi estabelecida na porta 3389 (RDP), se o endereço IP privado da instância está dentro do intervalo de `10.0.1.0/31` (que compreende `10.0.1.0` e `10.0.1.1`) e `maxTunnelDuration` é menor ou igual a `3600` segundos. A conexão será desconectada após `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": "*"
        }
    ]
}
```

------

------

## Permissões para conectar somente de um intervalo de endereços IP específico
<a name="iam-sourceip"></a>

O exemplo de política do IAM a seguir permite que uma entidade principal do IAM conecte-se a uma instância, desde que esteja se conectando a partir de um endereço IP dentro do intervalo de endereços IP especificado na política. Se a entidade principal do IAM chamar `OpenTunnel` desde um endereço IP que não esteja dentro de `192.0.2.0/24` (o exemplo de intervalo de endereços IP nesta política), a resposta será `Access Denied`. Para obter mais informações, 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) no *Guia do usuário do 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": "*"
        }
    ]
}
```

------