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 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 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. 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 de solicitação/resposta
-
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 usar IMDSv2 somente e impedir que o SDK tente 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.