Provedor de credenciais IMDS - SDKs e ferramentas da AWS

Provedor de credenciais IMDS

nota

Para obter ajuda em compreender o layout das páginas de configurações ou interpretar a tabela Compatibilidade com SDKs e ferramentas da AWS a seguir, consulte Entender as páginas de configurações deste guia.

O serviço de metadados de instância (IMDS) fornece dados sobre sua instância que é possível usar para configurar ou gerenciar a instância em execução. Para obter mais informações, consulte Trabalhar com metadados de instância no Guia do usuário do Amazon EC2. O Amazon EC2 fornece um endpoint local disponível para instâncias que podem fornecer várias informações para a instância. Se a instância tiver uma função anexada, ela poderá fornecer um conjunto de credenciais válidas para essa função. Os SDKs podem usar esse endpoint para resolver credenciais como parte de sua cadeia de fornecedores de credenciais padrão. O serviço de metadados de instância versão 2 (IMDSv2), uma versão mais segura do IMDS que usa um token de sessão, é usado por padrão. Se ele falhar devido a uma condição que não pode ser repetida (códigos de erro HTTP 403, 404, 405), o IMDSv1 será usado como fallback.

Configure essa funcionalidade usando o seguinte:

AWS_EC2_METADATA_DISABLED: variável de ambiente

Se o serviço de metadados de instância (IMDS) do Amazon EC2 (IMDS) deve ou não ser usado para obter credenciais.

Valor padrão: false.

Valores válidos:

  • true – Não use o IMDS para obter credenciais.

  • false – Use o IMDS para obter credenciais.

ec2_metadata_v1_disabled: configuração de arquivo config da AWS compartilhado
AWS_EC2_METADATA_V1_DISABLED: variável de ambiente
aws.disableEc2MetadataV1: propriedade do sistema de JVM: apenas Java/Kotlin

Se o serviço de metadados de instância versão 1 (IMDSv1) deve ser usado como alternativa se o IMDSv2 falhar.

nota

Os novos SDKs não são compatíveis com IMDSv1 e, portanto, não oferecem suporte a essa configuração. Para obter detalhes, consulte a tabela Compatibilidade com SDKs e ferramentas da AWS.

Valor padrão: false.

Valores válidos:

  • true – Não use o IMDSv1 como alternativa.

  • false – Use o IMDSv1 como alternativa.

ec2_metadata_service_endpoint: configuração de arquivo config da AWS compartilhado
AWS_EC2_METADATA_SERVICE_ENDPOINT: variável de ambiente
aws.ec2MetadataServiceEndpoint: propriedade do sistema de JVM: apenas Java/Kotlin

O endpoint de IMDS. Esse valor substitui o local padrão onde os SDKs e as ferramentas da AWS pesquisarão metadados de instância do Amazon EC2.

Valor padrão: se ec2_metadata_service_endpoint_mode for igual a IPv4, o endpoint padrão será http://169.254.169.254. Se ec2_metadata_service_endpoint_mode for igual a IPv6, o endpoint padrão será http://[fd00:ec2::254].

Valores válidos: URL válido.

ec2_metadata_service_endpoint_mode: configuração de arquivo config da AWS compartilhado
AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE: variável de ambiente
aws.ec2MetadataServiceEndpointMode: propriedade do sistema de JVM: apenas Java/Kotlin

O modo de endpoint do IMDS.

Valor padrão:IPv4.

Valores válidos: IPv4, IPv6.

nota

O provedor de credenciais do IMDS faz parte do Entender a cadeia de provedores de credenciais. No entanto, o provedor de credenciais do IMDS só é verificado após vários outros provedores que estão nesta série. Portanto, se você quiser que seu programa use as credenciais desse provedor, você deve remover outros provedores de credenciais válidos da sua configuração ou usar um perfil diferente. Como alternativa, em vez de confiar na cadeia de provedores de credenciais para descobrir automaticamente qual provedor retorna credenciais válidas, especifique o uso do provedor de credenciais IMDS no código. Você pode especificar fontes de credenciais diretamente ao criar clientes de serviço.

Segurança para credenciais do IMDS

Por padrão, quando o AWS SDK não está configurado com credenciais válidas, o SDK tentará usar o serviço de metadados de instância (IMDS) do Amazon EC2 (IMDS) para recuperar as credenciais de uma função da AWS. Esse comportamento pode ser desativado definindo a variável de ambiente AWS_EC2_METADATA_DISABLED como true. Isso evita atividades de rede desnecessárias e aumenta a segurança em redes não confiáveis nas quais o serviço de metadados de instância do Amazon EC2 pode ser representado.

nota

Clientes AWS SDK configurados com credenciais válidas nunca usarão o IMDS para recuperar credenciais, independentemente de qualquer uma dessas configurações.

Desabilitando o uso das credenciais do Amazon EC2 IMDS

A forma como você define essa variável de ambiente depende do sistema operacional em uso, bem como se você deseja ou não que a alteração seja persistente.

Linux e macOS

Os clientes que usam Linux ou macOS podem definir essa variável de ambiente com o comando a seguir:

$ export AWS_EC2_METADATA_DISABLED=true

Se você quiser que essa configuração seja persistente em várias sessões de shell e reinicializações do sistema, você pode adicionar o comando acima ao seu arquivo de perfil de shell, como .bash_profile, .zsh_profile ou .profile.

Windows

Os clientes que usam Windows podem definir essa variável de ambiente com o comando a seguir:

$ set AWS_EC2_METADATA_DISABLED=true

Se você quiser que essa configuração seja persistente em várias sessões de shell e reinicializações do sistema, use o seguinte comando em vez disso:

$ setx AWS_EC2_METADATA_DISABLED=true
nota

O comando setx não aplica o valor à sessão atual do shell, então você precisará recarregar ou reabrir o shell para que a alteração entre em vigor.

Compatibilidade com SDKs e ferramentas da AWS

Os SDKs a seguir são compatíveis com os recursos e configurações descritos neste tópico. Quaisquer exceções parciais estão anotadas. As configurações de propriedade do sistema de JVM são compatíveis apenas como o AWS SDK para Java e o AWS SDK para Kotlin.

SDK Compatível Notas ou mais informações
AWS CLI v2 da2 Sim
SDK para C++ Sim
SDK para Go V2 (1.x) Sim
SDK para Go 1.x (V1) Sim Para usar as configurações do arquivo config compartilhado, você deve ativar o carregamento do arquivo de configuração; consulte Sessões.
SDK para Java 2.x Sim
SDK para Java 1.x Parcial Propriedades de sistema JVM: use com.amazonaws.sdk.disableEc2MetadataV1 em vez de aws.disableEc2MetadataV1; aws.ec2MetadataServiceEndpoint e aws.ec2MetadataServiceEndpointMode não compatíveis.
SDK para JavaScript 3.x Sim
SDK para JavaScript 2.x Sim
SDK para Kotlin Sim Não usa o fallback do IMDSv1.
SDK para .NET 4.x Sim
SDK para .NET 3.x Sim
SDK para PHP 3.x Sim
SDK para Python (Boto3) Sim
SDK para Ruby 3.x Sim
SDK para Rust Sim Não usa o fallback do IMDSv1.
SDK para Swift Sim
Ferramentas para PowerShell V5 Sim Você pode desabilitar explicitamente o fallback do IMDSv1 em código usando. [Amazon.Util.EC2InstanceMetadata]::EC2MetadataV1Disabled = $true
Ferramentas para PowerShell V4 Sim Você pode desabilitar explicitamente o fallback do IMDSv1 em código usando. [Amazon.Util.EC2InstanceMetadata]::EC2MetadataV1Disabled = $true