Conceder permissões para usar o EC2 Instance Connect Endpoint - Amazon Elastic Compute Cloud

Conceder permissões para usar o EC2 Instance Connect Endpoint

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, 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.

Permissões para criar, descrever e excluir EC2 Instance Connect Endpoints

Para criar um EC2 Instance Connect Endpoint, os usuários precisam de permissões para as seguintes ações:

  • ec2:CreateInstanceConnectEndpoint

  • ec2:CreateNetworkInterface

  • ec2:CreateTags

  • 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 e excluir EC2 Instance Connect Endpoints 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 obter mais informações, consulte Políticas e permissões no IAM 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 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.

{ "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": "*" } ] }

Permissões para usar o EC2 Instance Connect Endpoint para se conectar às instâncias

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.

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 obter mais informações, consulte Políticas e permissões no IAM 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 que você usou para iniciar a instância. Para ter mais informações, consulte Conceder permissões do IAM para o EC2 Instance Connect.

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

{ "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

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

{ "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": "*" } ] }

Permissões para conectar somente de um intervalo de endereços IP específico

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, consulteaws:SourceIp no Guia do usuário do 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": "*" } ] }