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á.
Usar o AWS Provedor de credenciais de carga de trabalho
Como o AWS O Workload Credentials Provider funciona
O AWS Workload Credentials Provider (antigo AWS Secrets Manager Agent) fornece um serviço HTTP do lado do cliente que ajuda a padronizar a forma como você consome segredos do Secrets Manager em seus ambientes computacionais. É possível usá-lo com serviços a seguir:
-
AWS Lambda
-
Amazon Elastic Container Service
-
Amazon Elastic Kubernetes Service
-
Amazon Elastic Compute Cloud
O AWS Workload Credentials Provider recupera e armazena segredos na memória, permitindo que seus aplicativos obtenham segredos do localhost em vez de fazer chamadas diretas para o Secrets Manager. O provedor de credenciais de AWS carga de trabalho só pode ler segredos, não pode modificá-los.
O AWS Workload Credentials Provider é de código aberto. O código-fonte, as instruções de instalação e as informações da versão mais recente estão disponíveis em GitHub
Importante
O AWS Workload Credentials Provider usa as AWS credenciais do seu ambiente para chamar o Secrets Manager. Isso inclui proteção contra falsificação de solicitações do lado do servidor (SSRF) para ajudar a melhorar a segurança dos segredos. O AWS Workload Credentials Provider usa a troca de ML-KEM chaves pós-quântica como a troca de chaves de maior prioridade por padrão.
Noções básicas AWS Cache do provedor de credenciais de carga de trabalho
O AWS Workload Credentials Provider usa um cache na memória que é redefinido quando o AWS Workload Credentials Provider é reiniciado. Ele atualiza periodicamente os valores de segredos em cache com base no seguinte:
-
A frequência de atualização padrão (TTL) é de 300 segundos
-
É possível modificar o TTL usando um arquivo de configuração
-
A atualização ocorre quando você solicita um segredo após a expiração do TTL
nota
O provedor de credenciais AWS de carga de trabalho não inclui a invalidação do cache. Se um segredo girar antes que a entrada do cache expire, o AWS Workload Credentials Provider poderá retornar um valor secreto obsoleto.
O AWS Workload Credentials Provider retorna valores secretos no mesmo formato da resposta de. GetSecretValue Os valores de segredos não são criptografados no cache.
Tópicos
Construa o AWS Provedor de credenciais de carga de trabalho
Antes de começar, verifique se você tem as ferramentas de desenvolvimento padrão e as ferramentas do Rust instaladas em sua plataforma.
nota
Atualmente, criar o provedor com o fips recurso ativado no macOS requer a seguinte solução alternativa:
-
Crie uma variável de ambiente chamada
SDKROOTque é definida como o resultado da execução dexcrun --show-sdk-path
Instale o AWS Provedor de credenciais de carga de trabalho
Escolha seu ambiente de computação entre as opções de instalação a seguir.
Recupere segredos com o AWS Provedor de credenciais de carga de trabalho
Para recuperar um segredo, chame o endpoint local do AWS Workload Credentials Provider com o nome secreto ou ARN como parâmetro de consulta. Por padrão, o AWS Workload Credentials Provider recupera a AWSCURRENT versão do segredo. Para recuperar uma versão diferente, use o parâmetro versionStage ou versionId.
Importante
Para ajudar a proteger o provedor de credenciais de AWS carga de trabalho, você deve incluir um cabeçalho de token SSRF como parte de cada solicitação:. X-Aws-Parameters-Secrets-Token O AWS Workload Credentials Provider nega solicitações que não tenham esse cabeçalho ou que tenham um token SSRF inválido. É possível personalizar o nome do cabeçalho SSRF em Configurar o AWS Provedor de credenciais de carga de trabalho.
Permissões obrigatórias
O AWS Workload Credentials Provider usa o AWS SDK for Rust, que usa a cadeia de fornecedores de credenciais.AWS A identidade dessas credenciais do IAM determina as permissões que o provedor de credenciais AWS de carga de trabalho tem para recuperar segredos.
-
secretsmanager:DescribeSecret -
secretsmanager:GetSecretValue
Para obter mais informações sobre permissões, consulte Referência de permissões para AWS Secrets Manager.
Importante
Depois que o valor secreto é inserido no AWS Workload Credentials Provider, qualquer usuário com acesso ao ambiente computacional e ao token SSRF pode acessar o segredo do cache do Workload Credentials Provider.AWS Para obter mais informações, consulte Considerações sobre segurança.
Exemplo de solicitações
Entendendo o parâmetro RefreshNow
O AWS Workload Credentials Provider usa um cache na memória para armazenar valores secretos, que são atualizados periodicamente. Por padrão, essa atualização ocorre quando você solicita um segredo após a expiração da vida útil (TTL), normalmente a cada 300 segundos. No entanto, essa abordagem às vezes pode resultar em valores de segredo obsoletos, especialmente se um segredo for alternado antes que a entrada do cache expire.
Para resolver essa limitação, o AWS Workload Credentials Provider oferece suporte a um parâmetro chamado refreshNow na URL. É possível usar esse parâmetro para forçar uma atualização imediata do valor de um segredo, ignorando o cache e garantindo que você tenha as informações mais atualizadas.
- Comportamento padrão (sem
refreshNow) -
-
Usa valores em cache até que o TTL expire
-
Atualiza segredos somente após o TTL (padrão de 300 segundos)
-
Pode retornar valores obsoletos se os segredos forem alternados antes que o cache expire
-
- Comportamento com
refreshNow=true -
-
Ignora completamente o cache
-
Recupera o valor do segredo mais recente diretamente do Secrets Manager
-
Atualiza o cache com o novo valor e redefine o TTL
-
Garante que você sempre obtenha o valor secreto mais atual
-
Force-refresh um valor secreto
Importante
O valor padrão de refreshNow é false. Quando definido comotrue, ele substitui o TTL especificado no arquivo de configuração do AWS Workload Credentials Provider e faz uma chamada de API para o Secrets Manager.
Recupere segredos em todas as contas com o encadeamento de funções
O encadeamento de funções permite que o provedor de credenciais de AWS carga de trabalho recupere segredos de outras AWS contas assumindo funções do IAM usando.AWS STSAssumeRole O AWS Workload Credentials Provider cria e armazena em cache um cliente de cache separado para cada ARN de função exclusiva. Cada cliente de função mantém seu próprio cache independente, portanto, o mesmo segredo obtido com funções diferentes tem entradas de cache separadas.
Permissões obrigatórias
Para usar o encadeamento de funções, você precisa do seguinte:
-
As credenciais do ambiente do AWS Workload Credentials Provider devem ter
sts:AssumeRolepermissão no ARN da função de destino. -
A função de destino deve ter
secretsmanager:DescribeSecretpermissõessecretsmanager:GetSecretValuee permissões para os segredos que você deseja acessar. -
A política de confiança da função de destino deve permitir que a identidade do provedor de credenciais de AWS carga de trabalho a assuma.
Recupere segredos de várias contas
Inclua o parâmetro de roleArn consulta em sua solicitação ao AWS Workload Credentials Provider para especificar qual função assumir para a recuperação secreta.
Configuração e limites do encadeamento de funções
Configure o encadeamento de funções com a max_roles opção em seu arquivo de configuração TOML. Isso define o número máximo de funções assumidas simultaneamente, no intervalo de 1 a 20. O padrão é 20.
Importante
As funções assumidas não são removidas do cache de funções do provedor de credenciais AWS de carga de trabalho. Quando o número máximo de funções é atingido, as solicitações com novos ARNs de função são rejeitadas com um 400 erro até que o AWS Workload Credentials Provider seja reiniciado.
Respostas de erro para encadeamento de funções
400-
O
roleArnformato é inválido ou o número máximo de funções assumidas foi atingido. 403-
Falha na chamada AWS STS
AssumeRole. Verifique se a política de confiança da função de destino permite que a identidade do provedor de credenciais de AWS carga de trabalho a assuma.
Pre-fetch segredos na startup
Por padrão, o AWS Workload Credentials Provider busca segredos sob demanda quando seu aplicativo os solicita. Com a pré-busca, o AWS Workload Credentials Provider carrega segredos específicos no cache quando ele é inicializado, para que seu aplicativo possa acessá-los imediatamente sem esperar pela primeira chamada de API. Pre-fetching é executado como uma tarefa em segundo plano — o AWS Workload Credentials Provider começa a aceitar solicitações imediatamente e não bloqueia a conclusão da pré-busca.
Você pode especificar segredos para pré-busca de duas maneiras:
-
Segredos explícitos — Liste IDs secretos ou ARNs específicos.
-
Tag-based descoberta — Descubra segredos por chave de tag. O AWS Workload Credentials Provider busca todos os segredos que têm a tag especificada.
Permissões obrigatórias
Além das permissões padrão para recuperar segredos, a pré-busca exige o seguinte:
-
secretsmanager:BatchGetSecretValue— Obrigatório para todas as operações de pré-busca. -
secretsmanager:ListSecrets— Exigido somente ao usar a descoberta baseada em tags.
Configurar pré-busca
Adicione uma [capabilities.secrets_manager.prefetch] seção ao seu arquivo de configuração TOML. As seguintes opções estão disponíveis:
cache_buffer_ratio-
A fração máxima do cache a ser preenchida por cliente durante a pré-busca, na faixa de 0,1 a 1,0. O padrão é 0,8. Quando o limite do buffer é atingido, o AWS Workload Credentials Provider para de pré-buscar os segredos restantes — ele não despeja as entradas de cache existentes. Segredos não carregados durante a pré-busca ainda estão disponíveis sob demanda.
max_jitter_seconds-
Um atraso aleatório em segundos antes do início da pré-busca, no intervalo de 0 a 10. O padrão é 0. Use isso para evitar chamadas de API sincronizadas em toda a frota quando vários provedores iniciam ao mesmo tempo.
exemplo Pre-fetch configuração com segredos explícitos
[capabilities.secrets_manager.prefetch] cache_buffer_ratio = 0.6 max_jitter_seconds = 5 secrets = [ { secret_id = "arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret-AbCdEf" }, { secret_id = "MyOtherSecret" }, ]
exemplo Pre-fetch configuração com descoberta baseada em tags
[capabilities.secrets_manager.prefetch] cache_buffer_ratio = 0.8 filter_tags = [ { key = "Environment" }, { key = "Team" }, ]
Você também pode combinar segredos explícitos e descoberta baseada em tags na mesma configuração. Para pré-busca entre contas, adicione o campo. role_arn Para obter mais informações, consulte Recupere segredos em todas as contas com o encadeamento de funções.
exemplo Pre-fetch configuração com acesso entre contas
[capabilities.secrets_manager.prefetch] cache_buffer_ratio = 0.6 max_jitter_seconds = 5 secrets = [ { secret_id = "arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret-AbCdEf" }, { secret_id = "cross-account-secret", role_arn = "arn:aws:iam::987654321098:role/SecretAccessRole" }, ] filter_tags = [ { key = "Environment" }, { key = "Team", role_arn = "arn:aws:iam::987654321098:role/SecretAccessRole" }, ]
Configurar o AWS Provedor de credenciais de carga de trabalho
Para alterar a configuração do AWS Workload Credentials Provider, crie um arquivo de configuração TOML./aws-workload-credentials-provider sm
start --config config.toml
O arquivo de configuração oferece suporte a um formato aninhado. As opções do Secrets Manager são colocadas abaixo[capabilities.secrets_manager], com subseções para configurações de cache e segurança. As opções de registro são colocadas em[logging].
exemplo Exemplo de arquivo de configuração aninhado
[logging] log_level = "INFO" log_to_file = true [capabilities.secrets_manager] enabled = true http_port = 2773 region = "us-east-1" path_prefix = "/v1/" max_conn = 800 max_roles = 20 [capabilities.secrets_manager.cache] ttl_seconds = 300 cache_size = 1000 [capabilities.secrets_manager.security] ssrf_headers = ["X-Aws-Parameters-Secrets-Token", "X-Vault-Token"] ssrf_env_variables = ["AWS_TOKEN", "AWS_SESSION_TOKEN", "AWS_CONTAINER_AUTHORIZATION_TOKEN"]
nota
As teclas simples no nível raiz (por exemplo,http_port = 2773) ainda são suportadas para compatibilidade com versões anteriores dos arquivos de configuração existentes.
Opções de configuração do Secrets Manager
enabled-
Se o recurso Secrets Manager está ativo:
trueoufalse. O padrão étrue. http_port-
A porta do servidor de HTTP local, no intervalo de 1024 a 65535. O padrão é 2773.
region-
A AWS região a ser usada para solicitações. Se nenhuma região for especificada, o provedor de credenciais AWS de carga de trabalho determinará a região a partir do SDK. Para obter mais informações, consulte Especificação das suas credenciais e região padrão no Guia do desenvolvedor do SDK da AWS para Rust.
path_prefix-
O prefixo do URI usado para determinar se a solicitação é baseada em caminho. O padrão é "/v1/".
max_conn-
O número máximo de conexões de clientes HTTP que o AWS Workload Credentials Provider permite, na faixa de 1 a 1000. O padrão é 800.
max_roles-
O número máximo de funções simultâneas do IAM para acesso entre contas, na faixa de 1 a 20. O padrão é 20. Para obter mais informações, consulte Recupere segredos em todas as contas com o encadeamento de funções.
Opções de cache ([capabilities.secrets_manager.cache])
ttl_seconds-
O TTL, em segundos, para os itens em cache, no intervalo de 0 a 3600. O padrão é de 300. 0 indica que não há armazenamento em cache.
cache_size-
O número máximo de segredos que podem ser armazenados no cache, no intervalo de 1 a 1000. O padrão é 1000.
Opções de segurança ([capabilities.secrets_manager.security])
ssrf_headers-
Uma lista de nomes de cabeçalhos que o AWS Workload Credentials Provider verifica o token SSRF. O padrão é "X-Aws-Parameters-Secrets-Token, X-Vault-Token”.
ssrf_env_variables-
Uma lista de nomes de variáveis de ambiente que o AWS Workload Credentials Provider verifica em ordem sequencial para o token SSRF. A variável de ambiente pode conter o token ou uma referência ao arquivo de token, como em:
AWS_TOKEN=file:///var/run/awssmatoken. O padrão é "AWS_TOKEN, AWS_SESSION_TOKEN, AWS_CONTAINER_AUTHORIZATION_TOKEN”.
Opções de registro ([registro])
log_level-
O nível de detalhe relatado nos registros do AWS Workload Credentials Provider: DEBUG, INFO, WARN, ERROR ou NONE. O padrão é INFO.
log_to_file-
Se deve fazer login em um arquivo ou stdout/stderr:
trueoufalse. O padrão étrue.
Recursos opcionais
O AWS Workload Credentials Provider pode ser criado com recursos opcionais passando a --features bandeira para. cargo build Os recursos disponíveis são:
Recursos de compilação
prefer-post-quantum-
Torna
X25519MLKEM768o algoritmo de troca de chaves de maior prioridade. Caso contrário, ele estará disponível, mas não será de maior prioridade.X25519MLKEM768é um algoritmo de troca de chaves híbrido e pós-quântico seguro. fips-
Restringe os conjuntos de cifras usados pelo provedor somente a cifras. FIPS-approved
Registro em log
- Log local
-
O AWS Workload Credentials Provider registra os erros localmente no arquivo
logs/secrets_manager_provider.logou, stdout/stderr dependendo da variável delog_to_fileconfiguração. Quando seu aplicativo chama o AWS Workload Credentials Provider para obter um segredo, essas chamadas aparecem no registro local. Eles não aparecem nos CloudTrail registros. - Alternância de logs
-
O AWS Workload Credentials Provider cria um novo arquivo de log quando o arquivo atinge 10 MB e armazena até cinco arquivos de log no total.
- AWS registro de serviços
-
O registro não vai para o Secrets Manager, CloudTrail, ou CloudWatch. As solicitações para obter segredos do AWS Workload Credentials Provider não aparecem nesses registros. Quando o AWS Workload Credentials Provider faz uma chamada para o Secrets Manager para obter um segredo, essa chamada é gravada CloudTrail com uma string de agente de usuário contendo.
aws-workload-credentials-provider
É possível configurar as opções de log em Configurar o AWS Provedor de credenciais de carga de trabalho.
Considerações sobre segurança
- Domínio de confiança
-
Para uma arquitetura de provedor local, o domínio de confiança é onde o endpoint do provedor e o token SSRF estão acessíveis, o que geralmente é o host inteiro. O domínio de confiança do AWS Workload Credentials Provider deve corresponder ao domínio em que as credenciais do Secrets Manager estão disponíveis para manter a mesma postura de segurança. Por exemplo, no Amazon EC2, o domínio de confiança do AWS Workload Credentials Provider seria o mesmo que o domínio das credenciais ao usar funções para o Amazon EC2.
Importante
Aplicativos preocupados com a segurança que ainda não estão usando uma solução baseada em um provedor com as credenciais do Secrets Manager bloqueadas no aplicativo devem considerar o uso de SDKs ou soluções de cache específicos do idioma AWS. Para obter mais informações, consulte Obtenção de segredos.