Cours > Module > Chapitre

Lab : Démarrer avec AWS Secrets Manager

Objectif

Ce laboratoire vous guidera pas à pas dans l’utilisation d’AWS Secrets Manager pour stocker, récupérer et gérer des informations sensibles, comme des mots de passe, des clés API et des identifiants de base de données.

À l’issue de ce lab, vous serez capable de :
Créer et stocker un secret dans AWS Secrets Manager.
Récupérer un secret via AWS CLI et AWS SDK (Boto3).
Utiliser un secret dans une application AWS Lambda.
Automatiser la rotation d’un secret pour une base de données RDS.

Pré-requis

Avant de commencer, assurez-vous d’avoir :

  • Un compte AWS avec les permissions nécessaires.
  • AWS CLI installé et configuré (aws configure).
  • Une instance EC2 ou une machine locale avec Python et AWS SDK (boto3).
  • Une base de données RDS MySQL (optionnel, mais nécessaire pour la rotation automatique).

Étape 1 : Création d’un Secret dans AWS Secrets Manager

  1. Accéder à AWS Secrets Manager
    • Connectez-vous à la console AWS.
    • Recherchez et ouvrez le service Secrets Manager.
    • Cliquez sur Store a new secret (Stocker un nouveau secret).
  2. Sélection du type de secret
    • Si vous souhaitez stocker des identifiants de base de données RDS, sélectionnez Credentials for RDS database.
    • Si vous stockez des clés API ou autres secrets, sélectionnez Other type of secret.
  3. Saisir les valeurs du secret
    • Pour une base de données RDS :
      • Nom d’utilisateur : admin
      • Mot de passe : SuperSecret123!
      • Hôte de la base de données : database.example.com
      • Port : 3306 (pour MySQL)
    • Pour un autre type de secret (ex : clé API) :
      • Key : API_KEY
      • Value : sk-xyz-1234567890
  4. Nom du secret
    • Donnez un nom explicite au secret, par exemple :
      • MyDatabaseSecret pour un secret RDS.
      • MyAPISecret pour une clé API.
    • Ajoutez des balises (tags) pour organiser les secrets.
  5. Configurer la rotation (optionnel à cette étape)
    • Laissez la rotation désactivée pour le moment (elle sera activée plus tard).
  6. Enregistrer le secret
    • Cliquez sur Next, vérifiez les informations, puis cliquez sur Store (Stocker).

Étape 2 : Récupération du Secret via AWS CLI

Une fois le secret stocké, testons sa récupération en utilisant AWS CLI.

Lister les secrets disponibles

aws secretsmanager list-secrets

Récupérer un secret spécifique

aws secretsmanager get-secret-value --secret-id MyDatabaseSecret

Vous verrez une sortie JSON contenant les informations du secret.

Extraire uniquement la valeur du secret

aws secretsmanager get-secret-value --secret-id MyDatabaseSecret --query SecretString --output text

Ce format est utile pour l’intégration dans des scripts.

Étape 3 : Utilisation du Secret dans une Application Python

Nous allons maintenant récupérer et utiliser le secret dans un script Python en utilisant AWS SDK (boto3).

Installer boto3 (si nécessaire)

 

				
					pip install boto3
				
			

Créer un script Python pour récupérer le secret
Fichier : retrieve_secret.py

				
					import boto3
import json

def get_secret(secret_name, region="us-east-1"):
    client = boto3.client("secretsmanager", region_name=region)
    response = client.get_secret_value(SecretId=secret_name)
    secret = json.loads(response["SecretString"])
    return secret

if __name__ == "__main__":
    secret_data = get_secret("MyDatabaseSecret")
    print("Nom d'utilisateur :", secret_data["username"])
    print("Mot de passe :", secret_data["password"])
    print("Hôte :", secret_data["host"])

				
			

Exécuter le script
bash

python retrieve_secret.py

Si tout fonctionne correctement, le script affichera les valeurs du secret.

Étape 4 : Automatiser la Rotation du Secret pour RDS

AWS Secrets Manager permet de faire tourner automatiquement les mots de passe des bases de données.

  1. Activer la rotation du secret
    • Accédez à AWS Secrets Manager > MyDatabaseSecret.
    • Cliquez sur Edit Rotation (Modifier la rotation).
    • Activez la rotation et sélectionnez Create a new Lambda function.
    • AWS générera automatiquement une fonction Lambda pour mettre à jour le secret dans Amazon RDS.
  2. Définir la fréquence de rotation
    • Par défaut, AWS propose une rotation tous les 30 jours.
    • Vous pouvez modifier cette valeur selon vos besoins.
  3. Tester la rotation
    • Cliquez sur Rotate Secret Now pour tester immédiatement la rotation.

Étape 5 : Utilisation du Secret dans AWS Lambda

Nous allons créer une fonction Lambda qui récupère le secret et l’utilise pour se connecter à une base de données.

  1. Créer une fonction Lambda
    • Accédez à AWS Lambda > Créer une fonction.
    • Sélectionnez Créer une fonction à partir de zéro.
    • Nommez-la LambdaWithSecret et choisissez Python 3.9.
  2. Ajouter les permissions Secrets Manager
    • Allez dans l’onglet Permissions de Lambda.
    • Ajoutez la policy SecretsManagerReadWrite.

Ajouter le code suivant

				
					import boto3
import json

def lambda_handler(event, context):
    secret_name = "MyDatabaseSecret"
    client = boto3.client("secretsmanager", region_name="us-east-1")

    response = client.get_secret_value(SecretId=secret_name)
    secret = json.loads(response["SecretString"])

    return {
        "statusCode": 200,
        "body": f"Connexion à {secret['host']} avec l'utilisateur {secret['username']}"
    }

				
			

Tester la fonction

    • Déployez le code et cliquez sur Test dans AWS Lambda.
    • La réponse affichera les détails du secret récupéré.

6. Test du déplacement d’objet

  1. Allez dans S3, ouvrez le bucket source.

  2. Cliquez sur “Téléverser” (Upload), et chargez un fichier (ex: test.txt).

  3. Quelques secondes après :

    • Le fichier devrait être automatiquement déplacé dans le bucket destination.
    • Il ne doit plus être présent dans le bucket source.

Vérifiez dans CloudWatch Logs (AWS Lambda > Monitoring > View logs in CloudWatch) que Lambda a bien été invoquée et a traité l’objet.

Étape 6 : Nettoyage des Ressources

Si vous n’avez plus besoin des ressources créées, pensez à les supprimer :

aws secretsmanager delete-secret --secret-id MyDatabaseSecret --force-delete-without-recovery
aws lambda delete-function --function-name LambdaWithSecret

Conclusion

Compétences acquises :

  • Stockage et récupération sécurisée des secrets.
  • Automatisation de la rotation des mots de passe RDS.
  • Intégration des secrets dans une application Python et une fonction AWS Lambda.
×

Panier