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