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.
Utilisation de AWS Secrets Manager Agent
Comment fonctionne l'agent Secrets Manager
L' AWS Secrets Manager Agent est un service HTTP côté client qui vous aide à normaliser la façon dont vous consommez les secrets de Secrets Manager dans vos environnements informatiques. Vous pouvez l'utiliser avec les services suivants :
-
AWS Lambda
-
Amazon Elastic Container Service
-
Amazon Elastic Kubernetes Service
-
Amazon Elastic Compute Cloud
L'agent Secrets Manager récupère et met en cache les secrets en mémoire, ce qui permet à vos applications d'obtenir des secrets auprès de localhost au lieu de passer des appels directs à Secrets Manager. L'agent Secrets Manager peut uniquement lire les secrets, il ne peut pas les modifier.
L'agent Secrets Manager est open source. Le code source, les instructions d'installation et les dernières informations de version sont disponibles sur GitHub
Important
L'agent Secrets Manager utilise les AWS informations d'identification de votre environnement pour appeler Secrets Manager. Il inclut une protection contre la falsification des requêtes côté serveur (SSRF) afin d'améliorer la sécurité des secrets. L'agent Secrets Manager utilise l'échange de clés post-quantique comme échange de ML-KEM clés ayant la priorité la plus élevée par défaut.
Comprendre la mise en cache des agents Secrets Manager
L'agent Secrets Manager utilise un cache en mémoire qui se réinitialise au redémarrage de l'agent Secrets Manager. Il actualise régulièrement les valeurs secrètes mises en cache en fonction des éléments suivants :
-
La fréquence de rafraîchissement par défaut (TTL) est de 300 secondes
-
Vous pouvez modifier le TTL à l'aide d'un fichier de configuration
-
L'actualisation a lieu lorsque vous demandez un secret après l'expiration du TTL
Note
L'agent Secrets Manager n'inclut pas l'invalidation du cache. 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.
Créez l'agent Secrets Manager
Avant de commencer, assurez-vous que les outils de développement standard et les outils Rust sont installés pour votre plateforme.
Note
La création de l'agent avec la fips fonctionnalité activée sur macOS nécessite actuellement la solution de contournement suivante :
-
Créez une variable d'environnement appelée
SDKROOTqui est définie sur le résultat de l'exécutionxcrun --show-sdk-path
Installation de l'agent Secrets Manager
Choisissez votre environnement informatique parmi les options d'installation suivantes.
Récupérez des secrets avec l'agent Secrets Manager
Pour récupérer un secret, appelez le point de terminaison local de l'agent Secrets Manager avec le nom du secret ou l'ARN comme 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 version différente, utilisez le paramètre VersionStage ou VersionId.
Important
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 leConfiguration de l'agent Secrets Manager.
Autorisations requises
L'agent Secrets Manager utilise le AWS SDK pour Rust, qui utilise la chaîne de fournisseurs AWS d'informations d'identification. L'identité de ces informations d'identification IAM détermine les autorisations dont dispose l'agent Secrets Manager pour récupérer les secrets.
-
secretsmanager:DescribeSecret -
secretsmanager:GetSecretValue
Pour en savoir plus sur les autorisations, consultez Référence des autorisations pour AWS Secrets Manager.
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é.
Exemples de demandes
Comprendre le paramètre 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 des informations les plus récentes.
- 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
-
Force-refresh une valeur secrète
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.
Récupérez les secrets entre les comptes grâce au chaînage des rôles
Le chaînage des rôles permet à l'agent Secrets Manager de récupérer les secrets d'autres AWS comptes en assumant des rôles IAM à l'aide de. AWS STS AssumeRole L'agent Secrets Manager crée et met en cache un client de mise en cache distinct pour chaque rôle ARN unique. Chaque client de rôle gère son propre cache indépendant, de sorte que le même secret extrait avec différents rôles possède des entrées de cache distinctes.
Autorisations requises
Pour utiliser le chaînage des rôles, vous devez disposer des éléments suivants :
-
Les informations d'identification de l'environnement de l'agent Secrets Manager doivent être
sts:AssumeRoleautorisées sur l'ARN du rôle cible. -
Le rôle cible doit disposer
secretsmanager:GetSecretValued'secretsmanager:DescribeSecretautorisations pour les secrets auxquels vous souhaitez accéder. -
La politique de confiance du rôle cible doit autoriser l'identité de l'agent Secrets Manager à l'assumer.
Récupérez les secrets de plusieurs comptes
Incluez le paramètre de roleArn requête dans votre demande à l'agent Secrets Manager afin de spécifier le rôle à assumer pour la récupération du secret.
Configuration et limites du chaînage des rôles
Configurez le chaînage des rôles à l'aide de l'max_rolesoption de votre fichier de configuration TOML. Cela définit le nombre maximum de rôles assumés simultanément, compris entre 1 et 20. La valeur par défaut est de 20.
Important
Les rôles supposés ne sont pas supprimés du cache des rôles de l'agent Secrets Manager. Une fois le nombre maximum de rôles atteint, les demandes comportant de nouveaux ARN de rôle sont rejetées avec une 400 erreur jusqu'au redémarrage de l'agent Secrets Manager.
Réponses aux erreurs liées au chaînage des rôles
400-
Le
roleArnformat n'est pas valide ou le nombre maximum de rôles supposés a été atteint. 403-
L'appel de AWS STS
AssumeRolea échoué. Vérifiez que la politique de confiance du rôle cible autorise l'identité de l'agent Secrets Manager à l'assumer.
Pre-fetch secrets au démarrage
Par défaut, l'agent Secrets Manager récupère les secrets à la demande lorsque votre application les demande. Grâce à la préextraction, l'agent Secrets Manager charge les secrets spécifiés dans le cache au démarrage, afin que votre application puisse y accéder immédiatement sans attendre le premier appel d'API. Pre-fetching s'exécute en tâche de fond : l'agent Secrets Manager commence à accepter les demandes immédiatement et ne les bloque pas une fois l'extraction terminée.
Vous pouvez spécifier les secrets à préextraire de deux manières :
-
Secrets explicites — Répertoriez les identifiants secrets ou ARN spécifiques.
-
Tag-based découverte — Découvrez des secrets par clé de tag. L'agent Secrets Manager récupère tous les secrets dotés de la balise spécifiée.
Autorisations requises
Outre les autorisations standard pour la récupération des secrets, la préextraction nécessite les éléments suivants :
-
secretsmanager:BatchGetSecretValue— Nécessaire pour toutes les opérations de pré-extraction. -
secretsmanager:ListSecrets— Obligatoire uniquement lors de l'utilisation de la découverte basée sur des balises.
Configurer la pré-extraction
Ajoutez une [prefetch] section à votre fichier de configuration TOML. Les options suivantes sont disponibles :
cache_buffer_ratio-
Fraction maximale du cache à remplir par client lors de la pré-extraction, comprise entre 0,1 et 1,0. La valeur par défaut est 0,8. Lorsque la limite de mémoire tampon est atteinte, l'agent Secrets Manager arrête de prérécupérer les secrets restants ; il n'élimine pas les entrées de cache existantes. Les secrets non chargés lors de la pré-extraction sont toujours disponibles sur demande.
max_jitter_seconds-
Délai aléatoire en secondes avant le début de la préextraction, compris entre 0 et 10. La valeur par défaut est 0. Utilisez-le pour empêcher les appels d'API synchronisés à l'échelle du parc lorsque plusieurs agents démarrent en même temps.
Exemple Pre-fetch configuration avec des secrets explicites
[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" }, ]
Exemple Pre-fetch configuration avec découverte basée sur des balises
[prefetch] cache_buffer_ratio = 0.8 filter_tags = [ { key = "Environment" }, { key = "Team" }, ]
Vous pouvez également combiner des secrets explicites et une découverte basée sur des balises dans la même configuration. Pour le préchargement entre comptes, ajoutez le champ. role_arn Pour de plus amples informations, veuillez consulter Récupérez les secrets entre les comptes grâce au chaînage des rôles.
Exemple Pre-fetch configuration avec accès entre comptes
[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" }, ]
Configuration de l'agent Secrets Manager
Pour modifier la configuration de l'agent Secrets Manager, créez un fichier de configuration TOML./aws_secretsmanager_agent --config
config.toml.
Options de configuration
log_level-
Niveau de détail indiqué dans les journaux pour l'agent Secrets Manager : DEBUG, INFO, WARN, ERROR ou NONE. La valeur par défaut est INFO.
log_to_file-
S'il faut ouvrir une session dans un fichier ou stdout/stderr :
trueoufalse. La valeur par défaut esttrue. http_port-
Port du serveur HTTP local, compris entre 1024 et 65535. La valeur par défaut est 2773.
region-
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-
Une liste de 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-
Une liste de noms de variables d'environnement que l'agent Secrets Manager vérifie dans l'ordre séquentiel 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, AWS_CONTAINER_AUTHORIZATION_TOKEN ». path_prefix-
Le préfixe d'URI utilisé pour déterminer si la demande est une demande basée sur le 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.
max_roles-
Le nombre maximum de rôles IAM simultanés pour l'accès entre comptes, compris entre 1 et 20. La valeur par défaut est de 20. Pour de plus amples informations, veuillez consulter Récupérez les secrets entre les comptes grâce au chaînage des rôles.
Fonctionnalités optionnelles
L'agent Secrets Manager peut être créé avec des fonctionnalités optionnelles en passant le --features drapeau àcargo build. Les fonctionnalités disponibles sont les suivantes :
Fonctions de génération
prefer-post-quantum-
Génère
X25519MLKEM768l'algorithme d'échange de clés ayant la priorité la plus élevée. Dans le cas contraire, il est disponible mais n'est pas prioritaire.X25519MLKEM768est un algorithme d'échange de clés hybride à sécurité post-quantique. fips-
Limite les suites de chiffrement utilisées par l'agent aux seuls FIPS-approved chiffrements.
Logging
- Journalisation locale
-
L'agent Secrets Manager enregistre les erreurs localement dans le fichier
logs/secrets_manager_agent.logou dans le fichier en stdout/stderr fonction de la variable delog_to_fileconfiguration. 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. - Rotation du journal
-
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.
- AWS journalisation des services
-
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 contenant
aws-secrets-manager-agent.
Vous pouvez configurer les options de journalisation dans leConfiguration de l'agent Secrets Manager.
Considérations sur la sécurité
- Domaine de confiance
-
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.
Important
Les applications soucieuses de la 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 les AWS SDK ou les solutions de mise en cache spécifiques au langage. Pour plus d'informations, voir Obtenir des secrets.