Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
AWS Secrets Manager Agent
L' AWS Secrets Manager agent est un service HTTP côté client que vous pouvez utiliser pour normaliser la consommation des secrets issus de Secrets Manager dans des environnements tels qu'Amazon Elastic Container Service, AWS Lambda Amazon Elastic Kubernetes Service et Amazon Elastic Compute Cloud. L'agent Secrets Manager peut récupérer et mettre en cache des secrets en mémoire afin que vos applications puissent les utiliser directement depuis le cache. Cela signifie que vous pouvez récupérer les secrets dont votre application a besoin auprès de l'hôte local au lieu d'appeler Secrets Manager. L'agent Secrets Manager peut uniquement envoyer des demandes de lecture à Secrets Manager ; il ne peut pas modifier les secrets.
L'agent Secrets Manager utilise les AWS informations d'identification que vous fournissez dans votre environnement pour appeler Secrets Manager. L'agent Secrets Manager offre une protection contre la falsification des requêtes côté serveur (SSRF) afin d'améliorer la sécurité des secrets. Vous pouvez configurer l'agent Secrets Manager en définissant le nombre maximum de connexions, la durée de vie (TTL), le port HTTP localhost et la taille du cache.
Comme l'agent Secrets Manager utilise un cache en mémoire, il est réinitialisé au redémarrage de l'agent Secrets Manager. L'agent Secrets Manager actualise régulièrement la valeur du secret mis en cache. L'actualisation a lieu lorsque vous essayez de lire un secret depuis l'agent Secrets Manager après l'expiration du TTL. La fréquence de rafraîchissement (TTL) par défaut est de 300 secondes, et vous pouvez la modifier en utilisant une Fichier de configuration valeur que vous transmettez à l'agent Secrets Manager à l'aide de l'argument de ligne de --config
commande. L'agent Secrets Manager n'inclut pas l'invalidation du cache. Par exemple, si un secret change avant l'expiration de l'entrée du cache, l'agent Secrets Manager peut renvoyer une valeur secrète périmée.
L'agent Secrets Manager renvoie les valeurs secrètes dans le même format que la réponse deGetSecretValue
. Les valeurs secrètes ne sont pas chiffrées dans le cache.
Pour télécharger le code source, voir https://github.com/aws/aws-secretsmanager-agent
Rubriques
Étape 1 : Création du binaire de l'agent Secrets Manager
Pour créer le binaire de l'agent Secrets Manager de manière native, vous avez besoin des outils de développement standard et des outils Rust. Vous pouvez également effectuer une compilation croisée pour les systèmes qui le supportent, ou vous pouvez utiliser Rust Cross pour effectuer une compilation croisée.
Étape 2 : Installation de l'agent Secrets Manager
Selon le type de calcul, plusieurs options s'offrent à vous pour installer l'agent Secrets Manager.
Étape 3 : récupérer des secrets avec l'agent Secrets Manager
Pour utiliser l'agent, vous devez appeler le point de terminaison local de l'agent Secrets Manager et inclure le nom ou l'ARN du secret en tant que paramètre de requête. Par défaut, l'agent Secrets Manager récupère la AWSCURRENT
version du secret. Pour récupérer une autre version, vous pouvez définir versionStage
ouversionId
.
Pour protéger l'agent Secrets Manager, vous devez inclure un en-tête de jeton SSRF dans chaque demande :X-Aws-Parameters-Secrets-Token
. L'agent Secrets Manager refuse les demandes qui ne contiennent pas cet en-tête ou qui contiennent un jeton SSRF non valide. Vous pouvez personnaliser le nom de l'en-tête SSRF dans leFichier de configuration.
L'agent Secrets Manager utilise le AWS SDK pour Rust, qui utilise la chaîne de fournisseurs d'informations d'identification par défaut. L'identité de ces informations d'identification IAM détermine les autorisations dont dispose l'agent Secrets Manager pour récupérer les secrets.
Autorisations requises :
secretsmanager:DescribeSecret
secretsmanager:GetSecretValue
Pour de plus amples informations, veuillez consulter Référence des autorisations .
Important
Une fois la valeur secrète saisie dans l'agent Secrets Manager, tout utilisateur ayant accès à l'environnement informatique et au jeton SSRF peut accéder au secret depuis le cache de l'agent Secrets Manager. Pour de plus amples informations, veuillez consulter Considérations sur la sécurité.
Actualisez de force les secrets avec RefreshNow
L'agent Secrets Manager utilise un cache en mémoire pour stocker les valeurs secrètes, qu'il actualise régulièrement. Par défaut, cette actualisation a lieu lorsque vous demandez un secret après l'expiration du délai de vie (TTL), généralement toutes les 300 secondes. Cependant, cette approche peut parfois entraîner des valeurs secrètes périmées, en particulier si un secret change avant l'expiration de l'entrée du cache.
Pour pallier cette limitation, l'agent Secrets Manager prend en charge un paramètre appelé refreshNow
dans l'URL. Vous pouvez utiliser ce paramètre pour forcer l'actualisation immédiate de la valeur d'un secret, en contournant le cache et en vous assurant de disposer du maximum up-to-date d'informations.
- Comportement par défaut (sans
refreshNow
) -
-
Utilise les valeurs mises en cache jusqu'à l'expiration du TTL
-
Actualise les secrets uniquement après TTL (300 secondes par défaut)
-
Peut renvoyer des valeurs périmées si les secrets changent avant l'expiration du cache
-
- Comportement avec
refreshNow=true
-
-
Contourne complètement le cache
-
Récupère la dernière valeur secrète directement depuis Secrets Manager
-
Met à jour le cache avec la nouvelle valeur et réinitialise le TTL
-
Garantit que vous obtenez toujours la valeur secrète la plus récente
-
En utilisant ce refreshNow
paramètre, vous pouvez vous assurer de toujours travailler avec les valeurs secrètes les plus récentes, même dans les scénarios où une rotation fréquente des secrets est nécessaire.
refreshNowcomportement des paramètres
- refreshNowréglé sur
true
-
Si l'agent Secrets Manager ne parvient pas à récupérer le secret depuis Secrets Manager, il renvoie une erreur et ne met pas à jour le cache.
- refreshNowdéfini sur
false
ou non spécifié -
L'agent Secrets Manager suit son comportement par défaut :
-
Si la valeur mise en cache est plus récente que le TTL, l'agent Secrets Manager renvoie la valeur mise en cache.
-
Si la valeur mise en cache est plus ancienne que le TTL, l'agent Secrets Manager appelle Secrets Manager.
-
Utilisation du paramètre RefreshNow
Pour utiliser le refreshNow paramètre, incluez-le dans l'URL de la requête GET de l'agent Secrets Manager.
Exemple : requête GET de l'agent Secrets Manager avec le paramètre RefreshNow
Important
La valeur par défaut de refreshNow
est false
. Lorsqu'il est défini surtrue
, il remplace le TTL spécifié dans le fichier de configuration de l'agent Secrets Manager et envoie un appel d'API à Secrets Manager.
Configuration de l'agent Secrets Manager
Pour modifier la configuration de l'agent Secrets Manager, créez un fichier de configuration TOML./aws-secrets-manager-agent --config config.toml
.
La liste suivante indique les options que vous pouvez configurer pour l'agent Secrets Manager.
log_level — Niveau de détail indiqué dans les journaux de l'agent Secrets Manager : DEBUG, INFO, WARN, ERROR ou NONE. La valeur par défaut est INFO.
http_port — Port du serveur HTTP local, compris entre 1024 et 65535. La valeur par défaut est 2773.
région — La AWS région à utiliser pour les demandes. Si aucune région n'est spécifiée, l'agent Secrets Manager détermine la région à partir du SDK. Pour plus d'informations, consultez Spécifier vos informations d'identification et la région par défaut dans le guide du développeur du AWS SDK pour Rust.
ttl_seconds — Le TTL en secondes pour les éléments mis en cache, compris entre 0 et 3 600. La valeur par défaut est 300. 0 indique qu'il n'y a pas de mise en cache.
cache_size — Le nombre maximum de secrets pouvant être stockés dans le cache, compris entre 1 et 1 000. La valeur par défaut est 1000.
ssrf_headers — Liste des noms d'en-têtes que l'agent Secrets Manager vérifie pour le jeton SSRF. La valeur par défaut est « X-Aws-Parameters-Secrets-Token ». X-Vault-Token
ssrf_env_variables — Liste de noms de variables d'environnement que l'agent Secrets Manager vérifie pour le jeton SSRF. La variable d'environnement peut contenir le jeton ou une référence au fichier du jeton comme dans :
AWS_TOKEN=file:///var/run/awssmatoken
La valeur par défaut est «AWS_TOKEN, AWS_SESSION _TOKEN ».path_prefix — Le préfixe d'URI utilisé pour déterminer si la demande est une demande basée sur un chemin. La valeur par défaut est « /v1/ ».
max_conn — Le nombre maximum de connexions depuis des clients HTTP autorisées par l'agent Secrets Manager, compris entre 1 et 1 000. La valeur par défaut est 800.
Journalisation
L'agent Secrets Manager enregistre les erreurs localement dans le fichierlogs/secrets_manager_agent.log
. Lorsque votre application appelle l'agent Secrets Manager pour obtenir un secret, ces appels apparaissent dans le journal local. Ils n'apparaissent pas dans les CloudTrail journaux.
L'agent Secrets Manager crée un nouveau fichier journal lorsque le fichier atteint 10 Mo, et il stocke jusqu'à cinq fichiers journaux au total.
Le journal n'est pas envoyé à Secrets Manager CloudTrail, ou CloudWatch. Les demandes d'obtention de secrets de la part de l'agent Secrets Manager n'apparaissent pas dans ces journaux. Lorsque l'agent Secrets Manager appelle Secrets Manager pour obtenir un secret, cet appel est enregistré CloudTrail avec une chaîne d'agent utilisateur contenantaws-secrets-manager-agent
.
Vous pouvez configurer la connexion auFichier de configuration.
Considérations sur la sécurité
Pour une architecture d'agent, le domaine de confiance correspond à l'endroit où le point de terminaison de l'agent et le jeton SSRF sont accessibles, c'est-à-dire généralement l'ensemble de l'hôte. Le domaine de confiance de l'agent Secrets Manager doit correspondre au domaine dans lequel les informations d'identification du Secrets Manager sont disponibles afin de maintenir le même niveau de sécurité. Par exemple, sur Amazon, EC2 le domaine de confiance de l'agent Secrets Manager serait le même que celui des informations d'identification lors de l'utilisation de rôles pour Amazon EC2.
Les applications soucieuses de sécurité qui n'utilisent pas déjà une solution d'agent avec les informations d'identification de Secrets Manager verrouillées sur l'application devraient envisager d'utiliser des solutions spécifiques à la langue AWS SDKs ou de mise en cache. Pour de plus amples informations, veuillez consulter Obtenez des secrets auprès de AWS Secrets Manager.