Leia as credenciais da IAM função 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 IAM função em Amazon EC2

Você pode usar uma IAM função para gerenciar credenciais temporárias para aplicativos que estão sendo executados em uma EC2 instância e fazendo AWS CLI AWS API solicitações. Isso é preferível ao armazenamento de 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 os programas em execução na EC2 instância recebam credenciais temporárias. Para obter mais informações, consulte Usar uma IAM função para conceder permissões a aplicativos executados em EC2 instâncias da Amazon no Guia IAM do usuário.

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

Adquira credenciais de IAM função 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 SDK possam ser trocados 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. Nessa etapa, eles SDK usam um InstanceProfileCredentialsProvider para ler a IAM função definida no perfil da EC2 instância. SDKEm seguida, ele adquire credenciais temporárias para essa IAM função.

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 IAM função de forma programática

Como alternativa à cadeia de provedores de credenciais padrão que eventualmente usa um InstanceProfileCredentialsProvider onEC2, 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 IAM credenciais de função com segurança

Por padrão, EC2 as instâncias são executadas IMDS(Instance Metadata Service), o SDK que permite que as instâncias acessem informações como a IAM função que foi configurada. InstanceProfileCredentialsProvider EC2Por padrão, as instâncias executam duas versões doIMDS:

  • Instance Metadata Service versão 1 (IMDSv1) — um método de solicitação/resposta

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

IMDSv2é uma abordagem mais segura do queIMDSv1.

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

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

  • Variável de ambiente: AWS_EC2_METADATA_V1_DISABLED

  • JVMpropriedade do sistema: 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 IMDS função usando IMDSv1 se a IMDSv2 chamada inicial falhar.