Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Uso de AWS Secrets Manager Agente
Cómo funciona el Agente de Secrets Manager
El AWS Secrets Manager agente es un servicio HTTP del lado del cliente que le ayuda a estandarizar la forma en que consume los secretos de Secrets Manager en todos sus entornos informáticos. Puede utilizarlo con los siguientes servicios:
-
AWS Lambda
-
Amazon Elastic Container Service
-
Amazon Elastic Kubernetes Service
-
Amazon Elastic Compute Cloud
El Agente de Secrets Manager recupera y almacena en caché los secretos en la memoria, lo que permite que las aplicaciones obtengan secretos de localhost en lugar de tener que hacer llamadas directas a Secrets Manager. El Agente de Secrets Manager solo puede leer secretos, pero no modificarlos.
The Secrets Manager Agent es de código abierto. El código fuente, las instrucciones de instalación y la información sobre la versión más reciente están disponibles en GitHub
importante
El agente de Secrets Manager utiliza las AWS credenciales de su entorno para llamar a Secrets Manager. Incluye protección contra la falsificación de solicitudes del lado del servidor (SSRF) para ayudar a mejorar la seguridad del secreto. El agente Secrets Manager utiliza el intercambio de ML-KEM claves poscuántico como el intercambio de claves de mayor prioridad de forma predeterminada.
Comprensión del almacenamiento en caché del Agente de Secrets Manager
El Agente de Secrets Manager utiliza una caché en memoria que se restablece cuando se reinicia. Regularmente, actualiza los valores de secretos almacenados en caché según lo siguiente:
-
La frecuencia de actualización predeterminada (TTL) es de 300 segundos
-
Se puede modificar TTL mediante un archivo de configuración
-
La actualización se produce cuando se solicita un secreto después de que TTL caduque
nota
El Agente de Secrets Manager no incluye la invalidación del caché. Si un secreto rota antes de que caduque la entrada del caché, el Agente de Secrets Manager podría devolver un valor secreto obsoleto.
El Agente de Secrets Manager devuelve los valores secretos en el mismo formato que la respuesta de GetSecretValue. Los valores de secretos no se cifran en caché.
Compilación del Agente de Secrets Manager
Antes de comenzar, asegúrese de tener instaladas las herramientas de desarrollo estándar y las herramientas de Rust en la plataforma.
nota
La compilación del agente con la característica fips habilitada en macOS requiere la siguiente solución alternativa:
-
Cree una variable de entorno llamada
SDKROOTque se establezca según el resultado de la ejecución dexcrun --show-sdk-path
Instale el Agente de Secrets Manager
Elija su entorno informático entre las siguientes opciones de instalación.
Recuperación de secretos con el Agente de Secrets Manager
Para recuperar un secreto, debe llamar al punto de conexión local del Agente de Secrets Manager con el nombre del secreto o ARN como parámetro de consulta. De forma predeterminada, el Agente de Secrets Manager recupera la versión AWSCURRENT del secreto. Para recuperar una versión diferente, utilice el parámetro versionStage o versionId.
importante
Para ayudar a proteger al Agente de Secrets Manager, debe incluir un encabezado de token SSRF como parte de cada solicitud: X-Aws-Parameters-Secrets-Token. El Agente de Secrets Manager rechaza las solicitudes que no tengan este encabezado o que tengan un token SSRF no válido. Puede personalizar el nombre del encabezado de SSRF en Configuración del Agente de Secrets Manager.
Permisos necesarios
El agente Secrets Manager usa el AWS SDK de Rust, que usa la cadena de proveedores de AWS credenciales. La identidad de estas credenciales de IAM determina los permisos que tiene el Agente de Secrets Manager para recuperar los secretos.
-
secretsmanager:DescribeSecret -
secretsmanager:GetSecretValue
Para obtener más información sobre los permisos, consulte Referencia de permisos para AWS Secrets Manager.
importante
Tras introducir el valor secreto en el Agente de Secrets Manager, cualquier usuario con acceso al entorno informático y al token SSRF podrá acceder al secreto desde la memoria caché del Agente de Secrets Manager. Para obtener más información, consulte Consideraciones de seguridad.
Solicitudes de ejemplo
Comprender el parámetro RefreshNow
El Agente de Secrets Manager utiliza una caché en memoria para almacenar valores de secretos, que actualiza periódicamente. Por defecto, esta actualización se produce cuando se solicita un secreto una vez transcurrido el tiempo de vida (TTL), normalmente cada 300 segundos. Sin embargo, este enfoque a veces puede dar como resultado valores de secretos obsoletos, especialmente si un secreto rota antes de que caduque la entrada del caché.
Para abordar esta limitación, el Agente de Secrets Manager admite un parámetro llamado refreshNow en la URL. Puede utilizar este parámetro para forzar una actualización inmediata del valor de un secreto, al omitir el caché y asegurándose de disponer de la información más actualizada.
- Comportamiento predeterminado (sin
refreshNow) -
-
Utiliza valores en caché hasta que caduque el TTL
-
Actualiza los secretos solo después del TTL (por defecto, 300 segundos)
-
Puede devolver valores obsoletos si los secretos rotan antes de que caduque la caché
-
- Comportamientos de
refreshNow=true -
-
Omite la memoria caché por completo
-
Recupera el último valor secreto directamente de Secrets Manager
-
Actualiza la caché con el valor nuevo y restablece el TTL
-
Garantiza que siempre se obtendrá el valor secreto más actualizado
-
Force-refresh un valor secreto
importante
El valor predeterminado de refreshNow es false. Cuando se establece en true, anula el TTL especificado en el archivo de configuración del Agente de Secrets Manager y realiza una llamada de API a Secrets Manager.
Recupera los secretos de las cuentas mediante el encadenamiento de roles
El encadenamiento de roles permite al agente de Secrets Manager recuperar secretos de otras AWS cuentas asumiendo funciones de IAM utilizando. AWS STS AssumeRole El agente Secrets Manager crea y almacena en caché un cliente de almacenamiento en caché independiente para cada ARN de rol único. Cada cliente de rol mantiene su propia caché independiente, por lo que el mismo secreto obtenido con diferentes roles tiene entradas de caché independientes.
Permisos necesarios
Para utilizar el encadenamiento de roles, necesita lo siguiente:
-
Las credenciales de entorno del agente de Secrets Manager deben tener
sts:AssumeRolepermiso en el ARN del rol de destino. -
El rol de destino debe tener los secretos a los que desea acceder
secretsmanager:GetSecretValuey lossecretsmanager:DescribeSecretpermisos correspondientes. -
La política de confianza del rol objetivo debe permitir que la identidad del agente de Secrets Manager la asuma.
Recupera los secretos de varias cuentas
Incluya el parámetro de roleArn consulta en su solicitud al agente de Secrets Manager para especificar qué función debe asumir para la recuperación del secreto.
Configuración y límites del encadenamiento de roles
Configure el encadenamiento de roles con la max_roles opción del archivo de configuración de TOML. Esto establece el número máximo de roles asumidos simultáneamente, en el rango de 1 a 20. El valor predeterminado es 20.
importante
Los roles asumidos no se eliminan de la caché de roles del agente de Secrets Manager. Una vez alcanzado el número máximo de funciones, las solicitudes con ARN de funciones nuevas se rechazan con un 400 error hasta que se reinicie el agente de Secrets Manager.
Respuestas de error relacionadas con el encadenamiento de roles
400-
El
roleArnformato no es válido o se ha alcanzado el número máximo de roles asumidos. 403-
La llamada a AWS STS
AssumeRoleno se realizó correctamente. Compruebe que la política de confianza del rol objetivo permita que la identidad del agente de Secrets Manager la asuma.
Pre-fetch secretos al inicio
De forma predeterminada, el agente de Secrets Manager busca los secretos a pedido cuando la aplicación los solicita. Con la recuperación previa, el agente Secrets Manager carga los secretos específicos en la memoria caché cuando se inicia, para que la aplicación pueda acceder a ellos inmediatamente sin esperar a la primera llamada a la API. Pre-fetching se ejecuta como una tarea en segundo plano: el agente de Secrets Manager comienza a aceptar solicitudes inmediatamente y no bloquea una vez finalizada la recuperación previa.
Puede especificar los secretos que desea recuperar previamente de dos maneras:
-
Secretos explícitos: enumere los ARN o ID secretos específicos.
-
Tag-based descubrimiento: descubra los secretos mediante una clave de etiqueta. El agente de Secrets Manager busca todos los secretos que tienen la etiqueta especificada.
Permisos necesarios
Además de los permisos estándar para recuperar secretos, la recuperación previa requiere lo siguiente:
-
secretsmanager:BatchGetSecretValue— Necesario para todas las operaciones de captura previa. -
secretsmanager:ListSecrets— Necesario solo cuando se utiliza la detección basada en etiquetas.
Configurar la captura previa
Añada una [prefetch] sección al archivo de configuración de TOML. Están disponibles las siguientes opciones:
cache_buffer_ratio-
La fracción máxima de la memoria caché que se debe llenar por cliente durante la captura previa, en el rango de 0,1 a 1,0. El valor predeterminado es 0.8. Cuando se alcanza el límite de búfer, el agente de Secrets Manager deja de recuperar previamente los secretos restantes; no desaloja las entradas de caché existentes. Los secretos que no se cargaron durante la captura previa siguen estando disponibles bajo demanda.
max_jitter_seconds-
Un retraso aleatorio de segundos antes de que comience la captura previa, en el rango de 0 a 10. El valor predeterminado es 0. Úselo para evitar que se sincronicen las llamadas a la API de toda la flota cuando se inician varios agentes al mismo tiempo.
ejemplo Pre-fetch configuración con secretos 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" }, ]
ejemplo Pre-fetch configuración con detección basada en etiquetas
[prefetch] cache_buffer_ratio = 0.8 filter_tags = [ { key = "Environment" }, { key = "Team" }, ]
También puede combinar secretos explícitos y detección basada en etiquetas en la misma configuración. Para la búsqueda previa entre cuentas, añada el campo. role_arn Para obtener más información, consulte Recupera los secretos de las cuentas mediante el encadenamiento de roles.
ejemplo Pre-fetch configuración con acceso a varias cuentas
[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" }, ]
Configuración del Agente de Secrets Manager
Para cambiar la configuración del Agente de Secrets Manager, cree un archivo de configuración TOML./aws_secretsmanager_agent --config
config.toml.
Opciones de configuración
log_level-
El nivel de detalle indicado en los registros del Agente de Secrets Manager: DEBUG, INFO, WARN, ERROR o NONE. El valor predeterminado es INFO.
log_to_file-
Si desea iniciar sesión en un archivo o stdout/stderr:
trueofalse. El valor predeterminado estrue. http_port-
El puerto del servidor HTTP local, en el rango de 1024 a 65 535. El valor predeterminado es 2773.
region-
La AWS región que se utilizará para las solicitudes. Si no se especifica ninguna región, el Agente de Secrets Manager determina la región a partir del SDK. Para obtener más información, consulte Especifique las credenciales y regiones predeterminadas en la Guía para desarrolladores del SDK de AWS para Rust.
ttl_seconds-
El TTL en segundos de los elementos almacenados en caché, en el rango de 0 a 3600. El valor predeterminado es 300, donde 0 indica que no hay almacenamiento en caché.
cache_size-
El número máximo de secretos que se pueden almacenar en caché está en el rango de 1 a 1000. El valor predeterminado es 1000.
ssrf_headers-
Una lista de nombres de encabezados que el Agente de Secrets Manager comprueba en busca del token SSRF. El valor predeterminado es "X-Aws-Parameters-Secrets-Token, X-Vault-Token».
ssrf_env_variables-
Una lista de nombres de variables de entorno que el Agente de Secrets Manager comprueba en orden secuencial en busca del token SSRF. La variable de entorno puede contener el token o una referencia al archivo del token, como en:
AWS_TOKEN=file:///var/run/awssmatoken. El valor predeterminado es "AWS_TOKEN, AWS_SESSION_TOKEN, AWS_CONTAINER_AUTHORIZATION_TOKEN». path_prefix-
El prefijo URI que se utiliza para determinar si la solicitud es una solicitud basada en una ruta. El valor predeterminado es “/v1/”.
max_conn-
El número máximo de conexiones desde clientes HTTP que permite el Agente de Secrets Manager, entre 1 y 1000. El valor predeterminado es 800.
max_roles-
El número máximo de funciones de IAM simultáneas para el acceso entre cuentas, oscila entre 1 y 20. El valor predeterminado es 20. Para obtener más información, consulte Recupera los secretos de las cuentas mediante el encadenamiento de roles.
Características opcionales
El Agente de Secrets Manager se puede crear con características opcionales pasando el marcador --features a cargo build. Las características disponibles son las siguientes:
Características de compilación
prefer-post-quantum-
Crea
X25519MLKEM768como el algoritmo de intercambio de claves de mayor prioridad. De lo contrario, está disponible, pero no es de máxima prioridad.X25519MLKEM768es un algoritmo híbrido de intercambio de claves con seguridad poscuántica. fips-
Restringe los conjuntos de cifrado utilizados por el agente a solo cifrados. FIPS-approved
Registro
- Registro local
-
El agente Secrets Manager registra los errores localmente en el archivo
logs/secrets_manager_agent.logo en stdout/stderr función de la variable delog_to_fileconfiguración. Cuando la aplicación llama al Agente de Secrets Manager para obtener un secreto, esas llamadas aparecen en el registro local. No aparecen en los CloudTrail registros. - Rotación de registros
-
El Agente de Secrets Manager crea un nuevo archivo de registro cuando el archivo alcanza los 10 MB y almacena hasta cinco archivos de registro en total.
- AWS registro de servicios
-
El registro no va a Secrets Manager, CloudTrail, o CloudWatch. Las solicitudes para obtener secretos del Agente de Secrets Manager no aparecen en esos registros. Cuando el agente de Secrets Manager llama a Secrets Manager para obtener un secreto, esa llamada se graba CloudTrail con una cadena de agente de usuario que contiene
aws-secrets-manager-agent.
Puede configurar las opciones del registro en Configuración del Agente de Secrets Manager.
Consideraciones de seguridad
- Dominio de confianza
-
En el caso de una arquitectura de agente, el dominio de confianza es el lugar donde se puede acceder al punto de conexión del agente y al token SSRF, que suele ser todo el host. El dominio de confianza del Agente de Secrets Manager debe coincidir con el dominio en el que están disponibles las credenciales de Secrets Manager para mantener la misma postura de seguridad. Por ejemplo, en Amazon EC2, el dominio de confianza del Agente de Secrets Manager sería el mismo que el dominio de las credenciales cuando se utilizan roles para Amazon EC2.
importante
Las aplicaciones preocupadas por la seguridad que aún no utilizan una solución de agente con las credenciales de Secrets Manager bloqueadas en la aplicación deberían considerar la posibilidad de utilizar los AWS SDK o las soluciones de almacenamiento en caché específicos del idioma. Para obtener más información, consulte Obtener secretos.