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.
Limiter l'accès aux secrets
La sécurité est la priorité absolue de AWS. Dans le cadre AWS Well-Architected, les meilleures pratiques en matière de stockage et d'utilisation sécurisés des secrets recommandent de limiter l'accès aux secrets, de consigner et d'auditer l'accès aux secrets, et d'obtenir l'accès via une API au lieu d'accorder l'accès à une personne. Ceci est lié à la génération de mots de passe aléatoires en utilisant AWS Secrets Manager, comme indiqué précédemment dans ce guide.
Dans le passé, les informations d'identification utilisées pour s'authentifier auprès de bases de données APIs, de tiers, de jetons et d'autres secrets pouvaient avoir été intégrées dans le code source ou dans des fichiers d'environnement. Dans de nombreuses organisations, les administrateurs de base de données peuvent toujours accéder à toutes les informations d'identification des utilisateurs de base de données. Cependant, c'est plus sûr s'ils ne le font pas. Nous vous recommandons de :
-
Limitez l'accès à Secrets Manager par le biais d'une politique AWS Identity and Access Management (IAM) attachée à un rôle de AWS service ou à un rôle IAM pour les utilisateurs.
-
Étendez l'accès programmatique aux secrets dans Secrets Manager uniquement par le biais d'appels d'API à Secrets Manager.
-
Évitez d'utiliser des secrets codés en dur.
-
Ne transmettez pas de valeurs d'identification dans les variables.
-
Assurez-vous que les secrets sont directement utilisés par l'application ou l'infrastructure, plutôt que par un utilisateur humain.
L'exemple de code suivant montre une approche que vous pouvez utiliser pour protéger les données sensibles lors de la création d'une base de données. Lorsque vous créez la base de données, vous pouvez demander à l'utilisateur de saisir un mot de passe, puis le faire pivoter, ou vous pouvez utiliser un mot de passe aléatoire dès le départ. La génération d'un mot de passe aléatoire dès le départ peut vous aider à gérer et à gérer les informations d'identification de manière plus sécurisée.
L'extrait de code suivant crée une ressource de base de données et extrait le mot de passe password =
local.passwddata
à partir d'une variable locale.
resource "aws_db_instance" "default" { count = var.createdb == true ? 1 : 0 allocated_storage = 20 identifier = var.identifier db_name = var.databasename engine = "mysql" engine_version = "8.0.32" instance_class = "db.t3.micro" username = "admin" password = local.passwddata skip_final_snapshot = true publicly_accessible = false vpc_security_group_ids = [aws_security_group.db.id] db_subnet_group_name = aws_db_subnet_group.db.0.name }
L'extrait de code suivant crée un mot de passe aléatoire ou accepte le mot de passe fourni par l'utilisateur. Terraformenregistre ce mot de passe en tant que variable locale afin que vous puissiez utiliser cette variable de mot de passe ultérieurement dans le code.
locals { passwddata = var.passwddata != null ? var.passwddata : data.aws_secretsmanager_random_password.test.random_secrets }