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.sessionToken
JVM. - 2. AWS chaves de acesso (variáveis de ambiente)
-
O SDK tenta carregar credenciais das variáveis de
AWS_SESSION_TOKEN
ambienteAWS_ACCESS_KEY_ID
andAWS_SECRET_ACCESS_KEY
e. - 3. Token de identidade da Web
-
O SDK procura as variáveis de ambiente
AWS_WEB_IDENTITY_TOKEN_FILE
eAWS_ROLE_ARN
(ou as propriedadesaws.webIdentityTokenFile
do sistema JVM e).aws.roleArn
Com 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
config
e oscredentials
arquivos, mas se a variável deAWS_CONFIG_FILE
ambiente estiver definida, o SDK usará esse valor. Se a variável deAWS_PROFILE
ambiente (ou propriedade do sistemaaws.profile
JVM) não estiver definida, o SDK procurará o perfil “padrão”, caso contrário, procurará o perfil que corresponde ao valor.AWS_PROFILE’s
O 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_id
aws_access_key_id
, e.aws_session_token
-
Assumir a configuração da função - se o SDK encontrar
role_arn
source_profile
e/oucredential_source
configurações, ele tentará assumir uma função. Se o SDK encontrar asource_profile
configuração, ele obterá credenciais de outro perfil para receber credenciais temporárias para a função especificada por.role_arn
Se o SDK encontrar acredential_source
configuraçã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_source
Em seguida, ele usa essas credenciais para adquirir credenciais temporárias para a função.Um perfil deve conter a
source_profile
configuração ou acredential_source
configuração, mas não ambas. -
Configuração do token de identidade da Web - Se o SDK encontrar
role_arn
eweb_identity_token_file
configurar, ele adquire credenciais temporárias para acessar AWS recursos com base norole_arn
e no token. -
Configuração do token SSO — se o SDK encontrar
sso_role_name
as configuraçõessso_session
,sso_account_id
, (junto com umasso-session
seçã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_name
definirsso_account_id
, o SDK recuperará credenciais temporárias do serviço IAM Identity Center. -
Configuração do processo: se o SDK encontrar uma
credential_process
configuraçã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_URI
ouAWS_CONTAINER_CREDENTIALS_FULL_URI
eAWS_CONTAINER_AUTHORIZATION_TOKEN_FILE
ouAWS_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 autônomo
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() }