Leia as credenciais da função do IAM na Amazon EC2 usando o SDK for Java 2.x - 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 na Amazon EC2 usando o SDK for Java 2.x

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

Este tópico fornece informações sobre como configurar seu aplicativo Java para ser executado em uma EC2 instância e permitir que o AWS SDK for Java 2.x adquira credenciais de IAM 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 provedores de credenciais padrão no AWS SDK for Java 2.x 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. Nessa etapa, o SDK usa an InstanceProfileCredentialsProvider para ler a função do IAM definida no perfil da EC2 instância. 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 on 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 EC2 instâncias executam o IMDS (Instance Metadata Service), que permite que os SDKs acessem informações como a função do IAM que foi configurada. InstanceProfileCredentialsProvider EC2 as instâncias executam duas versões do IMDS por padrão:

  • Instance Metadata Service versão 1 (IMDSv1) — um método request/response

  • Instance Metadata Service versão 2 (IMDSv2) — um método orientado a sessões

IMDSv2 é uma abordagem mais segura do que IMDSv1.

Por padrão, o Java SDK primeiro tenta obter IMDSv2 a função do IAM, mas se isso falhar, ele tenta IMDSv1. No entanto, como IMDSv1 é menos seguro, AWS recomenda o uso de IMDSv2 somente e desabilitar o SDK de tentar IMDSv1.

Para usar a abordagem mais segura, desative o uso do SDK IMDSv1 fornecendo uma das configurações a seguir com um valor detrue.

  • 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 IMDSv1 se a chamada inicial IMDSv2 falhar.