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 Secrets Manager Agente
Como o Agente do Secrets Manager funciona
O AWS Secrets Manager Agent é um serviço HTTP do lado do cliente que ajuda você a padronizar 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 Agente do Secrets Manager recupera e armazena segredos em cache na memória, permitindo que suas aplicações obtenham segredos do localhost em vez de fazer chamadas diretas para o Secrets Manager. O Agente do Secrets Manager só pode ler segredos, ele não pode modificá-los.
O Secrets Manager Agent é 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 Secrets Manager Agent 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 Secrets Manager Agent 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 sobre o armazenamento em cache do Agente do Secrets Manager
O Agente do Secrets Manager usa um cache em memória, ele é redefinido quando o Agente do Secrets Manager é 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 Agente do Secrets Manager não inclui a invalidação do cache. Se um segredo for alternado antes que a entrada do cache expire, o Agente do Secrets Manager poderá retornar um valor de segredo obsoleto.
O Agente do Secrets Manager retorna valores de segredos no mesmo formato da resposta de GetSecretValue. Os valores de segredos não são criptografados no cache.
Criação do Agente do Secrets Manager
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 agente com o recurso fips ativado no macOS requer a solução alternativa a seguir:
-
Crie uma variável de ambiente chamada
SDKROOTque é definida como o resultado da execução dexcrun --show-sdk-path
Instalação do Agente do Secrets Manager
Escolha seu ambiente de computação entre as opções de instalação a seguir.
Recuperação de segredos com o Agente do Secrets Manager
Para recuperar um segredo, chame o endpoint local do Agente do Secrets Manager e incluia o nome ou ARN do segredo como um parâmetro de consulta. Por padrão, o Agente do Secrets Manager recupera a versão AWSCURRENT do segredo. Para recuperar uma versão diferente, use o parâmetro versionStage ou versionId.
Importante
Para ajudar a proteger o Agente do Secrets Manager, é necessário incluir um cabeçalho de token SSRF como parte de cada solicitação: X-Aws-Parameters-Secrets-Token. O Agente do Secrets Manager 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 Agente do Secrets Manager.
Permissões obrigatórias
O Secrets Manager Agent usa o AWS SDK para Rust, que usa a cadeia de fornecedores de AWS credenciais. A identidade dessas credenciais do IAM determina as permissões que o Agente do Secrets Manager 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 do segredo é inserido no Agente do Secrets Manager, qualquer usuário com acesso ao ambiente computacional e ao token SSRF pode acessar o segredo a partir do cache do Agente do Secrets Manager. Para obter mais informações, consulte Considerações sobre segurança.
Exemplo de solicitações
Entendendo o parâmetro RefreshNow
O Agente do Secrets Manager usa um cache em memória para armazenar valores de segredos, 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 Agente do Secrets Manager 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 como true, substitui o TTL especificado no arquivo de configuração do Agente do Secrets Manager 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 Secrets Manager Agent recupere segredos de outras AWS contas assumindo funções do IAM usando. AWS STS AssumeRole O Secrets Manager Agent 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 de ambiente do Secrets Manager Agent 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 alvo deve permitir que a identidade do Secrets Manager Agent a assuma.
Recupere segredos de várias contas
Inclua o parâmetro de roleArn consulta em sua solicitação ao Secrets Manager Agent 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 Secrets Manager Agent. 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 Secrets Manager Agent 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 Secrets Manager Agent a assuma.
Pre-fetch segredos na startup
Por padrão, o Secrets Manager Agent busca segredos sob demanda quando seu aplicativo os solicita. Com a pré-busca, o Secrets Manager Agent carrega segredos específicos no cache quando é 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 Secrets Manager Agent 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 Secrets Manager Agent 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— Necessá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 [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 Secrets Manager Agent 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 agentes iniciam ao mesmo tempo.
exemplo Pre-fetch configuração com segredos explícitos
[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
[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 fazer a 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
[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 Agente do Secrets Manager
Para alterar a configuração do Agente do Secrets Manager, crie um arquivo de configuração TOML./aws_secretsmanager_agent --config
config.toml.
Opções de configuração
log_level-
O nível de detalhes relatado nos logs do Agente do Secrets Manager: 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. 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 Agente do Secrets Manager 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.
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.
ssrf_headers-
Uma lista de nomes de cabeçalhos que o Agente do Secrets Manager verifica para o token de 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 Agente do Secrets Manager verifica em ordem sequencial para o token de 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”. 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 Agente do Secrets Manager 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.
Recursos opcionais
O Agente do Secrets Manager pode ser criado com recursos opcionais passando o sinalizador --features 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 agente somente a cifras. FIPS-approved
Registro em log
- Log local
-
O Secrets Manager Agent registra os erros localmente no arquivo
logs/secrets_manager_agent.logou stdout/stderr dependendo da variável delog_to_fileconfiguração. Quando sua aplicação chama o Agente do Secrets Manager para obter um segredo, essas chamadas aparecem no log local. Eles não aparecem nos CloudTrail registros. - Alternância de logs
-
O Agente do Secrets Manager e armazena até cinco arquivos de log no total e cria um novo arquivo de log quando o arquivo atinge 10 MB.
- AWS registro de serviços
-
O registro não vai para o Secrets Manager, CloudTrail, ou CloudWatch. As solicitações para obter segredos do Agente do Secrets Manager não aparecem nesses logs. Quando o Secrets Manager Agent 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-secrets-manager-agent.
É possível configurar as opções de log em Configurar o Agente do Secrets Manager.
Considerações sobre segurança
- Domínio de confiança
-
Para uma arquitetura de agente, o domínio de confiança é onde o endpoint do agente e o token SSRF estão acessíveis, o que geralmente é o host inteiro. O domínio de confiança do Agente do Secrets Manager 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 Agente do Secrets Manager 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 de agente com as credenciais do Secrets Manager bloqueadas no aplicativo devem considerar o uso de AWS SDKs ou soluções de cache específicos do idioma. Para obter mais informações, consulte Obtenção de segredos.