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á.
Provedores de credenciais
A ordem na qual a cadeia de provedores de credenciais padrão resolve as credenciais foi alterada com a versão 1.4.0. Para obter detalhes, consulte a nota abaixo.
Quando você envia solicitações para a Amazon Web Services usando o AWS SDK para Kotlin, as solicitações devem ser assinadas criptograficamente com credenciais emitidas por. AWS O Kotlin SDK assina a solicitação automaticamente para você. Para adquirir as credenciais, o SDK pode usar configurações que estão localizadas em vários lugares, por exemplo, propriedades do sistema JVM, variáveis de ambiente, arquivos compartilhados AWS config e metadados de credentials instâncias da Amazon. EC2
O SDK usa a abstração do provedor de credenciais para simplificar o processo de recuperação de credenciais de várias fontes. O SDK contém várias implementações de provedores de credenciais.
Por exemplo, se a configuração recuperada incluir configurações de acesso de login único do IAM Identity Center do config arquivo compartilhado, o SDK trabalhará com o IAM Identity Center para recuperar as credenciais temporárias que ele usa para fazer solicitações. Serviços da AWS Com essa abordagem de aquisição de credenciais, o SDK usa o provedor do IAM Identity Center (também conhecido como provedor de credenciais de SSO). A seção de configuração deste guia descreveu essa configuração.
Para usar um provedor de credenciais específico, você pode especificar um ao criar um cliente de serviço. Como alternativa, você pode usar a cadeia de provedores de credenciais padrão para pesquisar as configurações automaticamente.
A cadeia de fornecedores de credenciais padrão
Quando não especificado explicitamente na construção do cliente, o SDK para Kotlin usa um provedor de credenciais que verifica sequencialmente cada local onde você pode fornecer credenciais. Esse provedor de credenciais padrão é implementado como uma cadeia de provedores de credenciais.
Para usar a cadeia padrão para fornecer credenciais em seu aplicativo, crie um cliente de serviço sem fornecer explicitamente uma credentialsProvider propriedade.
val ddb = DynamoDbClient { region = "us-east-2" }
Para obter mais informações sobre a criação de clientes de serviço, consulte construir e configurar um cliente.
Saiba mais sobre a cadeia de fornecedores de credenciais padrão
A cadeia de provedores de credenciais padrão pesquisa a configuração de credenciais usando a seguinte sequência predefinida. Quando as configurações definidas fornecem credenciais válidas, a cadeia é interrompida.
- 1. AWS chaves de acesso (propriedades do sistema JVM)
-
O SDK procura as propriedades do sistema
aws.accessKeyId,aws.secretAccessKey, eaws.sessionTokenJVM. - 2. AWS chaves de acesso (variáveis de ambiente)
-
O SDK tenta carregar credenciais das variáveis de
AWS_SESSION_TOKENambienteAWS_ACCESS_KEY_IDandAWS_SECRET_ACCESS_KEYe. - 3. Token de identidade da Web
-
O SDK procura as variáveis de ambiente
AWS_WEB_IDENTITY_TOKEN_FILEeAWS_ROLE_ARN(ou as propriedadesaws.webIdentityTokenFiledo sistema JVM e).aws.roleArnCom base nas informações do token e na função, o SDK adquire credenciais temporárias. - 4. Um perfil em um arquivo de configuração
-
Nesta etapa, o SDK usa configurações associadas a um perfil. Por padrão, o SDK usa o compartilhado AWS
confige oscredentialsarquivos, mas se a variável deAWS_CONFIG_FILEambiente estiver definida, o SDK usará esse valor. Se a variável deAWS_PROFILEambiente (ou propriedade do sistemaaws.profileJVM) não estiver definida, o SDK procurará o perfil “padrão”, caso contrário, procurará o perfil que corresponde ao valor.AWS_PROFILE’sO SDK procura o perfil com base na configuração descrita no parágrafo anterior e usa as configurações definidas lá. Se as configurações encontradas pelo SDK contiverem uma combinação de configurações para diferentes abordagens de provedores de credenciais, o SDK usará a seguinte ordem:
-
AWS chaves de acesso (arquivo de configuração) - O SDK usa as configurações para
aws_access_key_idaws_access_key_id, e.aws_session_token -
Assumir a configuração da função - se o SDK encontrar
role_arnsource_profilee/oucredential_sourceconfigurações, ele tentará assumir uma função. Se o SDK encontrar asource_profileconfiguração, ele obterá credenciais de outro perfil para receber credenciais temporárias para a função especificada por.role_arnSe o SDK encontrar acredential_sourceconfiguração, ele obterá as credenciais de um contêiner do Amazon ECS, de uma EC2 instância da Amazon ou de variáveis de ambiente, dependendo do valor da configuração.credential_sourceEm seguida, ele usa essas credenciais para adquirir credenciais temporárias para a função.Um perfil deve conter a
source_profileconfiguração ou acredential_sourceconfiguração, mas não ambas. -
Configuração do token de identidade da Web - Se o SDK encontrar
role_arneweb_identity_token_fileconfigurar, ele adquire credenciais temporárias para acessar AWS recursos com base norole_arne no token. -
Configuração do token SSO — se o SDK encontrar
sso_role_nameas configuraçõessso_session,sso_account_id, (junto com umasso-sessionseção complementar nos arquivos de configuração), o SDK recuperará credenciais temporárias do serviço IAM Identity Center. -
Configuração de SSO herdada — se o SDK encontrar
sso_start_url,sso_region, esso_role_namedefinirsso_account_id, o SDK recuperará credenciais temporárias do serviço IAM Identity Center. -
Configuração do processo: se o SDK encontrar uma
credential_processconfiguração, ele usa o valor do caminho para invocar um processo e adquirir credenciais temporárias.
-
- 5. Credenciais do contêiner
-
O SDK procura variáveis de ambiente
AWS_CONTAINER_CREDENTIALS_RELATIVE_URIouAWS_CONTAINER_CREDENTIALS_FULL_URIeAWS_CONTAINER_AUTHORIZATION_TOKEN_FILEouAWS_CONTAINER_AUTHORIZATION_TOKEN. Ele usa esses valores para carregar credenciais do endpoint HTTP especificado por meio de uma solicitação GET. - 6. Credenciais IMDS
-
O SDK tenta buscar credenciais do Instance Metadata Service no endpoint HTTP padrão ou configurado. O SDK só oferece suporte IMDSv2.
Se as credenciais ainda não forem resolvidas neste momento, a criação do cliente falhará com uma exceção.
Nota: Alteração na ordem de resolução de credenciais
A ordenação da resolução de credenciais descrita acima é atual para o 1.4.x+ lançamento do SDK para Kotlin. Antes do 1.4.0 lançamento, os itens número 3 e 4 foram trocados e o item 4a atual seguiu o item 4f atual.
Especifique um provedor de credenciais
Você pode especificar um provedor de credenciais em vez de usar a cadeia de fornecedores padrão. Essa abordagem oferece controle direto sobre quais credenciais o SDK usa.
Por exemplo, para usar as credenciais de uma função presumida do IAM, especifique um StsAssumeRoleCredentialsProvider ao criar o cliente:
val ddb = DynamoDbClient { region = "us-east-1" credentialsProvider = StsAssumeRoleCredentialsProvider() }
Você também pode criar uma cadeia personalizada (CredentialsProviderChain) que combina vários fornecedores em seu pedido preferido.
Credenciais de cache com um provedor independente
Importante
A cadeia padrão armazena as credenciais em cache automaticamente. Provedores autônomos não armazenam credenciais em cache. Para evitar a busca de credenciais em cada chamada de API, envolva seu provedor com um. CachedCredentialsProvider O provedor em cache busca novas credenciais somente quando as atuais expiram.
Para armazenar credenciais em cache com um provedor independente, use a CachedCredentialsProvider classe:
val ddb = DynamoDbClient { region = "us-east-1" credentialsProvider = CachedCredentialsProvider(StsAssumeRoleCredentialsProvider()) }
Como alternativa, use a função cached() de extensão para obter um código mais conciso:
val ddb = DynamoDbClient { region = "us-east-1" credentialsProvider = StsAssumeRoleCredentialsProvider().cached() }