Leia as credenciais da função do IAM em Amazon EC2 - AWS SDK for Java 2.x

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

Leia as credenciais da função do IAM em Amazon EC2

Você pode usar uma função do IAM para gerenciar credenciais temporárias para aplicativos que estão sendo executados em uma instância do EC2 e fazendo solicitações AWS CLI de AWS API. É preferível fazer isso a armazenar chaves de acesso na instância do EC2. Para atribuir uma AWS função a uma instância do EC2 e disponibilizá-la para todos os seus aplicativos, você cria um perfil de instância anexado à instância. Um perfil de instância contém o perfil e permite que os programas em execução na instância do EC2 obtenham credenciais temporárias. Para mais informações, consulte Usar um perfil do IAM para conceder permissões a aplicações em execução nas instâncias do Amazon EC2 no Guia do usuário do IAM.

Este tópico fornece informações sobre como configurar seu aplicativo Java para ser executado em uma instância do EC2 e permitir que o SDK for Java IAM adquira credenciais de função.

Adquira credenciais de função do IAM do ambiente

Se seu aplicativo criar um cliente AWS de serviço usando o create método (ou builder().build() métodos), o SDK for Java usará a cadeia de fornecedores de credenciais padrão. A cadeia de fornecedores de credenciais padrão pesquisa o ambiente de execução em busca de elementos de configuração que o SDK possa trocar por credenciais temporárias. A seção Cadeia de fornecedores de credenciais padrão descreve o processo completo de pesquisa.

A etapa final na cadeia de fornecedores padrão está disponível somente quando seu aplicativo é executado em uma Amazon EC2 instância. Nesta etapa, o SDK usa um InstanceProfileCredentialsProvider para ler o perfil do IAM definido no perfil da instância do EC2. Depois, o SDK adquire credenciais temporárias para esse perfil do IAM.

Embora essas credenciais sejam temporárias e acabem expirando, o InstanceProfileCredentialsProvider as atualiza periodicamente para você, de maneira que elas continuem permitindo o acesso à AWS.

Adquira credenciais de função do IAM de forma programática

Como alternativa à cadeia de provedores de credenciais padrão que eventualmente usa um InstanceProfileCredentialsProvider no EC2, você pode configurar um cliente de serviço explicitamente com um. InstanceProfileCredentialsProvider Essa abordagem é mostrada no trecho a seguir.

S3Client s3 = S3Client.builder() .credentialsProvider(InstanceProfileCredentialsProvider.create()) .build();

Adquira com segurança as credenciais da função do IAM

Por padrão, as instâncias do EC2 executam o IMDS (Instance Metadata Service), que permite que os SDKs acessem informações como InstanceProfileCredentialsProvider a função do IAM que foi configurada. As instâncias do EC2 executam duas versões do IMDS por padrão:

  • Serviço de metadados da instância versão 1 (IMDSv1) – um método de solicitação/resposta

  • Serviço de metadados da instância versão 2 (IMDSv2): um método orientado a sessões

O IMDSv2 é uma abordagem mais segura do que o IMDSv1.

Por padrão, o Java SDK primeiro tenta o IMDSv2 para obter a função do IAM, mas se isso falhar, ele tenta o IMDSv1. No entanto, como o IMDSv1 é menos seguro, AWS recomenda usar somente o IMDSv2 e impedir que o SDK experimente o IMDSv1.

Para usar a abordagem mais segura, desabilite o SDK de usar o IMDSv1 fornecendo uma das configurações a seguir com um valor de. true

  • Variável de ambiente: AWS_EC2_METADATA_V1_DISABLED

  • Propriedade do sistema JVM: aws. disableEc2MetadataV1

  • Configuração do arquivo de configuração compartilhado: ec2_metadata_v1_disabled

Com uma dessas configurações definida comotrue, o SDK não carrega as credenciais da função IMDS usando o IMDSv1 se a chamada inicial do IMDSv2 falhar.