Encadeamento de IAM funções no Amazon Neptune - Amazon Neptune

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Encadeamento de IAM funções no Amazon Neptune

Importante

O novo recurso de conta cruzada de carga em massa introduzido na versão 1.2.1.0.R3 do mecanismo, que aproveita as IAM funções de encadeamento, pode, em alguns casos, fazer com que você observe um desempenho degradado do carregamento em massa. Como resultado, as atualizações das versões do mecanismo compatíveis com esse atributo foram temporariamente suspensas até que o problema seja resolvido.

Ao associar um perfil ao cluster, seu cluster poderá assumir esse perfil para obter acesso aos dados armazenados no Amazon S3. A partir da versão 1.2.1.0.R3 do mecanismo, se esse perfil não tiver acesso a todos os recursos necessários, você poderá encadear um ou mais perfis adicionais que o cluster poderá assumir para obter acesso a outros recursos. Cada perfil na cadeia assume o próximo perfil na cadeia, até que o cluster assuma o perfil no final da cadeia.

Para encadear perfis, você estabelece uma relação de confiança entre eles. Por exemplo, para encadear o RoleB com o RoleA, o RoleA precisa ter uma política de permissões que o possibilite assumir o RoleB e RoleB deve ter uma política de confiança que o permita transmitir as permissões de volta ao RoleA. Para obter mais informações, consulte Usando IAM funções.

O primeiro perfil da cadeia deve ser associado ao cluster que está carregando dados.

O primeiro perfil e cada perfil subsequente que assumir o perfil seguinte na cadeia devem ter:

  • Uma política que inclua uma declaração específica com o efeito Allow na ação sts:AssumeRole.

  • O Amazon Resource Name (ARN) da próxima função em um Resource elemento.

nota

O bucket de destino do Amazon S3 deve estar na mesma AWS região do cluster.

Acesso entre contas usando perfis encadeados

É possível conceder acesso entre contas encadeando um perfil ou perfis pertencentes a outra conta. Quando o cluster assume temporariamente um perfil pertencente a outra conta, ele pode obter acesso aos recursos dessa conta.

Por exemplo, suponha que a Conta A queira acessar dados em um bucket do Amazon S3 que pertença à Conta B:

  • A conta A cria uma função AWS de serviço para Neptune RoleA chamada e a anexa a um cluster.

  • A Conta B cria um perfil chamado RoleB que é autorizado a acessar os dados no bucket da Conta B.

  • A Conta A associa uma política de permissões ao RoleA que permite a ele assumir o RoleB.

  • A Conta B atribui uma política de confiança ao RoleB que permite a ele transmitir as permissões de volta ao RoleA.

  • Para acessar os dados no bucket da Conta B, a Conta A executa um comando do carregador usando um parâmetro iamRoleArn que encadeia RoleA e RoleB. Durante a operação do carregador, RoleA assume temporariamente RoleB para acessar o bucket do Amazon S3 na Conta B.

Diagrama que ilustra o acesso entre contas usando perfis encadeados

Por exemplo, o RoleA teria uma política de confiança que estabelecesse uma relação de confiança com o Neptune:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

O RoleA também teria uma política de permissão que permitisse a ele assumir o RoleB, que é de propriedade da Conta B:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1487639602000", "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Resource": "arn:aws:iam::(Account B ID):role/RoleB" } ] }

Por outro lado, o RoleB teria uma política de confiança para estabelecer uma relação de confiança com o RoleA:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Principal": { "AWS": "arn:aws:iam::(Account A ID):role/RoleA" } } ] }

O RoleB também precisaria de permissão para acessar dados no bucket do Amazon S3 localizado na Conta B.

Criação de um VPC endpoint AWS Security Token Service (STS)

O carregador Neptune requer VPC um endpoint AWS STS para quando você está IAM encadeando funções para acesso privado por meio de endereços IP privados. AWS STS APIs Você pode se conectar diretamente de uma Amazon VPC AWS STS a um VPC Endpoint de forma segura e escalável. Quando você usa um VPC endpoint de interface, ele fornece uma melhor postura de segurança porque você não precisa abrir firewalls de tráfego de saída. Ele também oferece os outros benefícios do uso de VPC endpoints da Amazon.

Ao usar um VPC Endpoint, o tráfego para AWS STS não é transmitido pela Internet e nunca sai da rede Amazon. Você VPC está conectado com segurança, AWS STS sem riscos de disponibilidade ou restrições de largura de banda no tráfego da sua rede. Para obter mais informações, consulte Usando VPC endpoints de AWS STS interface.

Para configurar o acesso para AWS Security Token Service (STS)
  1. Faça login no AWS Management Console e abra o VPC console da Amazon em https://console.aws.amazon.com/vpc/.

  2. No painel de navegação, escolha Endpoints.

  3. Escolha Create Endpoint (Criar endpoint).

  4. Selecione o Nome do serviço com.amazonaws.region.sts para o endpoint do tipo Interface.

  5. Escolha o VPCque contém sua instância e instância de banco de dados Neptune. EC2

  6. Marque a caixa de seleção ao lado da sub-rede na qual sua EC2 instância está presente. Não é possível selecionar várias sub-redes em uma mesma zona de disponibilidade.

  7. Em IP address type (Tipo de endereço IP), escolha uma das seguintes opções:

    • IPv4— Atribua IPv4 endereços às interfaces de rede do seu terminal. Essa opção é suportada somente se todas as sub-redes selecionadas tiverem intervalos de IPv4 endereços.

    • IPv6— Atribua IPv6 endereços às interfaces de rede do seu terminal. Essa opção é suportada somente se todas as sub-redes selecionadas forem IPv6 sub-redes somente.

    • Dualstack — atribua IPv6 endereços IPv4 e endereços às suas interfaces de rede de endpoints. Essa opção é suportada somente se todas as sub-redes selecionadas tiverem intervalos de IPv6 endereços IPv4 e ambos.

  8. Em Grupos de segurança, selecione os grupos de segurança a serem associados às interfaces de rede do VPC endpoint. Você precisaria selecionar todos os grupos de segurança anexados à sua instância e instância de banco de dados Neptune. EC2

  9. Em Política, selecione Acesso total para permitir todas as operações de todos os diretores em todos os recursos no VPC endpoint. Caso contrário, selecione Personalizado para anexar uma política de VPC endpoint que controle as permissões que os diretores têm para realizar ações em recursos no endpoint. VPC Essa opção estará disponível somente se o serviço oferecer suporte a políticas de VPC endpoint. Para obter mais informações, consulte Endpoint policies.

  10. (Opcional) Para adicionar uma tag, escolha Adicionar nova tag e insira a chave e o valor da tag que você deseja.

  11. Escolha Criar endpoint.

Para obter informações sobre a criação do endpoint, consulte VPCEndpoints no Guia VPC do usuário da Amazon. Observe que o Amazon STS VPC Endpoint é um pré-requisito obrigatório para IAM o encadeamento de funções.

Agora que você concedeu acesso ao AWS STS endpoint, pode se preparar para carregar os dados. Para obter informações sobre os formatos compatíveis, consulte Formatos de dados de carga.

Encadear perfis em um comando de carregador

Você pode especificar o encadeamento de funções ao executar um comando do carregador incluindo uma lista de funções ARNs separada por vírgula no parâmetro. iamRoleArn

Embora na maioria das vezes você precise ter apenas dois perfis em uma cadeia, certamente é possível encadear três ou mais. Por exemplo, esse comando do carregador encadeia três perfis:

curl -X POST https://localhost:8182/loader \ -H 'Content-Type: application/json' \ -d '{ "source" : "s3://(the target bucket name)/(the target date file name)", "iamRoleArn" : "arn:aws:iam::(Account A ID):role/(RoleA),arn:aws:iam::(Account B ID):role/(RoleB),arn:aws:iam::(Account C ID):role/(RoleC)", "format" : "csv", "region" : "us-east-1" }'