Controlar o acesso à API com políticas do IAM - AWS Secrets Manager

Controlar o acesso à API com políticas do IAM

Se você usar políticas do IAM para controlar o acesso aos Serviços da AWS com base em endereços IP, talvez seja necessário atualizar suas políticas para incluir intervalos de endereços IPv6. Este guia explica as diferenças entre IPv4 e IPv6 e descreve como atualizar suas políticas do IAM para oferecer suporte a ambos os protocolos. A implementação dessas mudanças ajuda você a manter o acesso seguro aos seus recursos da AWS, oferecendo, ao mesmo tempo, suporte ao IPv6.

O que é IPv6?

IPv6 é o padrão IP de última geração destinado a substituir o IPv4. A versão anterior, IPv4, usa um esquema de endereçamento de 32 bits para suportar 4,3 bilhões de dispositivos. Em vez disso, o IPv6 usa endereçamento de 128 bits para suportar aproximadamente 340 trilhões de trilhões de trilhões (ou 2 vezes a 128ª potência) de dispositivos.

Para obter mais informações, consulte a página de IPv6 da VPC.

Veja a seguir exemplos de endereços IPv6:

2001:cdba:0000:0000:0000:0000:3257:9652 # This is a full, unabbreviated IPv6 address. 2001:cdba:0:0:0:0:3257:9652 # The same address with leading zeros in each group omitted 2001:cdba::3257:965 # A compressed version of the same address.

Políticas de pilha dupla do IAM (IPv4 e IPv6)

É possível usar políticas do IAM para controlar o acesso às APIs do Secrets Manager e impedir que qualquer endereço IP fora do intervalo configurado possa acessar as APIs do Secrets Manager.

O endpoint de pilha dupla secretsmanager.{region}.amazonaws.com para APIs do Secrets Manager oferece suporte a IPv6 e IPv4.

Se você precisar de suporte a IPv4 e IPv6, atualize suas políticas de filtragem de endereços IP para gerenciar endereços IPv6. Caso contrário, é possível que você não consiga se conectar ao Secrets Manager por IPv6.

Quem deve fazer essa alteração?

Essa alteração afetará você caso use o endereçamento duplo com políticas que contenham aws:sourceIp. O endereçamento duplo indica que a rede oferece suporte a IPv4 e IPv6.

Se você estiver usando endereçamento duplo, atualize suas políticas do IAM que usem atualmente endereços no formato IPv4 para incluírem endereços no formato IPv6.

Quem não deve fazer essa alteração?

Essa alteração não afetará você se você usar somente redes IPv4.

Adição de IPv6 a uma política do IAM

As políticas do IAM usam a chave de condição aws:SourceIp para controlar o acesso a partir de endereços IP específicos. Se sua rede usa endereçamento duplo (IPv4 e IPv6), atualize suas políticas do IAM para incluir intervalos de endereços IPv6.

No elemento Condition das suas políticas, use os operadores IpAddress e NotIpAddress para condições de endereço IP. Não use operadores de string, pois eles não podem lidar com os vários formatos de endereço IPv6 válidos.

Estes exemplos usam aws:SourceIp. Para VPCs, use aws:VpcSourceIp.

A seguir está a política de referência Nega acesso a AWS com base no IP de origem do Guia do usuário do IAM. O NotIpAddress no elemento Condition lista dois intervalos de endereços IPv4, 192.0.2.0/24 e 203.0.113.0/24, aos quais será negado o acesso à API.

JSON
{ "Version":"2012-10-17", "Statement": { "Effect": "Deny", "Action": "*", "Resource": "*", "Condition": { "NotIpAddress": { "aws:SourceIp": [ "192.0.2.0/24", "203.0.113.0/24" ] }, "Bool": { "aws:ViaAWSService": "false" } } } }

Para atualizar essa política, altere o elemento Condition para incluir os intervalos de endereços IPv6 2001:DB8:1234:5678::/64 e 2001:cdba:3257:8593::/64.

nota

Não remova os endereços IPv4 existentes. Eles são necessários para retrocompatibilidade.

"Condition": { "NotIpAddress": { "aws:SourceIp": [ "192.0.2.0/24", <<DO NOT REMOVE existing IPv4 address>> "203.0.113.0/24", <<DO NOT REMOVE existing IPv4 address>> "2001:DB8:1234:5678::/64", <<New IPv6 IP address>> "2001:cdba:3257:8593::/64" <<New IPv6 IP address>> ] }, "Bool": { "aws:ViaAWSService": "false" } }

Para atualizar essa política para uma VPC, use aws:VpcSourceIp em vez de aws:SourceIp:

"Condition": { "NotIpAddress": { "aws:VpcSourceIp": [ "10.0.2.0/24", <<DO NOT REMOVE existing IPv4 address>> "10.0.113.0/24", <<DO NOT REMOVE existing IPv4 address>> "fc00:DB8:1234:5678::/64", <<New IPv6 IP address>> "fc00:cdba:3257:8593::/64" <<New IPv6 IP address>> ] }, "Bool": { "aws:ViaAWSService": "false" } }

Verificação se seu cliente tem suporte a IPv6

Se você usar o endpoint secretsmanager.{region}.amazonaws.com, verifique se é possível se conectar a ele. As etapas a seguir descrevem como realizar a verificação.

Este exemplo usa Linux e curl versão 8.6.0 e usa o serviço AWS Secrets Manager que possui endpoints habilitados para IPv6 localizados no endpoint amazonaws.com.

nota

O secretsmanager.{region}.amazonaws.com difere da convenção de nomenclatura típica de pilha dupla. Para obter uma lista completa de endpoints do Secrets Manager, consulte AWS Secrets ManagerEndpoints do .

Altere a Região da AWS para a mesma região onde seu serviço está localizado. Neste exemplo, usamos o endpoint us-east-1, ou seja, Leste dos EUA (Norte da Virgínia).

  1. Determine se o endpoint é resolvido com um endereço IPv6 usando o comando dig a seguir.

    $ dig +short AAAA secretsmanager.us-east-1.amazonaws.com > 2600:1f18:e2f:4e05:1a8a:948e:7c08:c1c3
  2. Determine se a rede do cliente pode fazer uma conexão IPv6 usando o comando curl a seguir. Um código de resposta 404 significa uma conexão bem-sucedida, enquanto um código de resposta 0 significa falha da conexão.

    $ curl --ipv6 -o /dev/null --silent -w "\nremote ip: %{remote_ip}\nresponse code: %{response_code}\n" https://secretsmanager.us-east-1.amazonaws.com > remote ip: 2600:1f18:e2f:4e05:1a8a:948e:7c08:c1c3 > response code: 404

Se um IP remoto foi identificado e o código de resposta não é 0, uma conexão de rede terá sido estabelecida com sucesso com o endpoint usando IPv6. O IP remoto deve ser um endereço IPv6 porque o sistema operacional deve selecionar o protocolo válido para o cliente.

Se o IP remoto estiver em branco ou o código de resposta for 0, a rede cliente ou o caminho da rede até o endpoint será somente IPv4. É possível verificar isso com o seguinte comando do curl:

$ curl -o /dev/null --silent -w "\nremote ip: %{remote_ip}\nresponse code: %{response_code}\n" https://secretsmanager.us-east-1.amazonaws.com > remote ip: 3.123.154.250 > response code: 404