Usando provedores de credenciais do AWS SDK para Rust - AWS SDK para Rust

Usando provedores de credenciais do AWS SDK para Rust

Todas as solicitações AWS devem ser assinadas criptograficamente usando as credenciais emitidas pela AWS. No runtime, o SDK recupera os valores de configuração para credenciais conferindo vários locais.

Se a configuração recuperada incluir configurações de acesso de SSO do AWS IAM Identity Center, o SDK trabalhará com o Centro de Identidade do IAM para recuperar as credenciais temporárias que ele usa para fazer solicitações para Serviços da AWS.

Se a configuração recuperada incluir credenciais temporárias, o SDK as usará para fazer chamadas dos AWS service (Serviço da AWS). As credenciais temporárias consistem em chaves de acesso e um token de sessão.

A autenticação com AWS pode ser realizada fora da sua base de código. Muitos métodos de autenticação podem ser detectados, usados e atualizados automaticamente pelo SDK usando a cadeia de provedores de credenciais.

Para ver opções guiadas para começar a utilizar a autenticação da AWS para seu projeto, consulte Autenticação e acesso no Guia de referência de ferramentas e AWS SDKs.

Cadeia de provedores de credenciais

Se, ao criar um cliente, você não especificar explicitamente um provedor de credenciais, o SDK para Rust usará uma cadeia de provedores de credenciais que vai conferir uma série de locais onde você pode fornecer credenciais. Depois que o SDK encontra as credenciais em um desses locais, a pesquisa é interrompida. Para obter detalhes sobre a construção de clientes, consulte Configurar clientes de serviço no código do AWS SDK para Rust no código.

O exemplo a seguir não especifica um provedor de credenciais no código. O SDK usa a cadeia de provedores de credenciais para detectar a autenticação configurada no ambiente de hospedagem e usa essa autenticação para chamadas para Serviços da AWS.

let config = aws_config::defaults(BehaviorVersion::latest()).load().await; let s3 = aws_sdk_s3::Client::new(&config);

Ordem de recuperação de credenciais

A cadeia de provedores de credenciais pesquisa as credenciais usando a seguinte sequência predefinida:

  1. Variáveis de ambiente de chave de acesso

    O SDK tenta carregar credenciais das variáveis de ambiente AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY e AWS_SESSION_TOKEN.

  2. Os arquivos AWS, config e credentials compartilhados

    O SDK tenta carregar credenciais do perfil da [default] nos arquivos compartilhados AWS, config e credentials. É possível usar a variável de ambiente AWS_PROFILE para escolher um perfil nomeado a ser carregado pelo SDK em vez de usar [default]. Os arquivos config e credentials são compartilhados por vários AWS SDKs e ferramentas. Para obter mais informações sobre esses arquivos, consulte os arquivos compartilhados config e credentials no AWS SDKs and Tools Reference Guide.

    Se você usa o Centro de Identidade do IAM para realizar a autenticação, é quando o SDK para Rust usa o token de SSO configurado com a execução do comando aws sso login da CLI da AWS. O SDK usa as credenciais temporárias que o Centro de Identidade do IAM trocou por um token válido. Depois, o SDK usa as credenciais temporárias quando chama Serviços da AWS. Para acessar informações detalhadas sobre esse processo, consulte Noções básicas sobre resolução de credenciais de SDK para Serviços da AWS no AWS SDKs and Tools Reference Guide.

  3. identidade da web AWS STS

    Ao criar aplicações móveis ou aplicações Web baseadas em clientes que exigem acesso à AWS, o AWS Security Token Service (AWS STS) exibe um conjunto de credenciais de segurança temporárias para usuários federados que são autenticados por meio de um provedor de identidades (IdP) público.

    • Quando você especifica isso em um perfil, o SDK ou a ferramenta tenta recuperar credenciais temporárias usando o método de API AssumeRoleWithWebIdentity do AWS STS. Para ver detalhes sobre esse método, consulte AssumeRoleWithWebIdentity na Referência da API do AWS Security Token Service.

    • Para receber orientação sobre como configurar esse provedor, consulte Federar com identidade Web ou OpenID Connect no Guia de referência de ferramentas e AWS SDKs.

    • Para ver detalhes sobre as propriedades de configuração do SDK para esse provedor, consulte Assumir o perfil de provedor de credenciais no Guia de referência de ferramentas e AWS SDKs.

  4. Credenciais de contêiner do Amazon ECS e do Amazon EKS

    Suas tarefas do Amazon Elastic Container Service e as contas de serviço do Kubernetes podem ter um perfil do IAM associado a elas. As permissões concedidas no perfil do IAM são assumidas pelos contêineres em execução na tarefa ou pelos contêineres do pod. Esse perfil permite que o código da aplicação SDK para Rust (no contêiner) use outros Serviços da AWS.

    O SDK tenta recuperar credenciais das variáveis de ambiente AWS_CONTAINER_CREDENTIALS_RELATIVE_URI ou AWS_CONTAINER_CREDENTIALS_FULL_URI, que podem ser definidas automaticamente pelo Amazon ECS e pelo Amazon EKS.

  5. Serviço de metadados da instância do Amazon EC2

    Crie um perfil do IAM e anexe-o à instância. A aplicação SDK para Rust na instância tenta recuperar as credenciais fornecidas pelo perfil nos metadados da instância.

  6. Se as credenciais ainda não tiverem sido resolvidas nesse ponto, a operação panics com um erro.

Para obter detalhes sobre as configurações do provedor de credenciais da AWS, consulte Standardized credential providers em Settings reference do AWS SDKs and Tools Reference Guide.

Provedor de credenciais explícito

Em vez de confiar na cadeia de provedores de credenciais para detectar seu método de autenticação, você pode especificar um provedor de credenciais específico a ser utilizado pelo SDK. Ao carregar sua configuração geral usando aws_config::defaults, você pode especificar um provedor de credenciais personalizado, conforme mostrado abaixo:

let config = aws_config::defaults(BehaviorVersion::latest()) .credentials_provider(MyCredentialsProvider::new()) .load() .await;

Você pode implementar seu próprio provedor de credenciais implementando a característica ProvideCredentials.

Armazenamento de identidade em cache

O SDK armazenará em cache as credenciais e outros tipos de identidade, como tokens de SSO. Por padrão, o SDK usa uma implementação de cache lento que carrega as credenciais na primeira solicitação, as armazena em cache e, depois, tenta atualizá-las durante outra solicitação quando elas estão prestes a expirar. Clientes criados com base no mesmo SdkConfig compartilharão um IdentityCache.