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 arquivoconfigda AWS compartilhadoAWS_EC2_METADATA_V1_DISABLED: variável de ambienteaws.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 arquivoconfigda AWS compartilhadoAWS_EC2_METADATA_SERVICE_ENDPOINT: variável de ambienteaws.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_modefor igual aIPv4, o endpoint padrão seráhttp://169.254.169.254. Seec2_metadata_service_endpoint_modefor igual aIPv6, o endpoint padrão seráhttp://[fd00:ec2::254].Valores válidos: URL válido.
ec2_metadata_service_endpoint_mode: configuração de arquivoconfigda AWS compartilhadoAWS_EC2_METADATA_SERVICE_ENDPOINT_MODE: variável de ambienteaws.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 |