Remarques :

Migration de clés secrètes d'AWS Secrets Manager vers les clés secrètes Oracle Cloud Infrastructure Secrets in Vault

Introduction

Avantages liés à la migration de clés secrètes d'Amazon Web Services (AWS) vers Oracle Cloud Infrastructure (OCI) :

Types de clé secrète pris en charge dans OCI Vault

Objectifs

Prérequis

Migrer des clés secrètes d'AWS vers OCI

  1. Récupérez et affichez les clés secrètes AWS. Pour migrer des clés secrètes à partir d'AWS, assurez-vous d'abord d'avoir une liste des clés secrètes à transférer. Dans cet exemple, nous migrons deux clés secrètes : awssecret4 et awssecret5.

    Bouton Modifier

    La capture d'écran suivante présente les clés secrètes dans AWS Secrets Manager avant la migration.

    Bouton Modifier

    Bouton Modifier

  2. Créez un coffre et une clé de cryptage dans OCI. Afin de configurer un coffre OCI et une clé pour le cryptage des clés secrètes, reportez-vous à Création d'une clé de cryptage maître.

    Bouton Modifier

    Bouton Modifier

  3. Utilisez le script Python pour migrer les clés secrètes. Téléchargez et enregistrez le script Python suivant en tant que aws_to_oci_secret_migration.py. Le script automatise le processus d'extraction des clés secrètes AWS et de stockage dans OCI Vault.

    Remarque : remplacez les espaces réservés tels que your_aws_secret1, your_aws_region, your_oci_vault_id, etc., par vos valeurs réelles. Le préfixe indiqué sera utilisé pour créer les clés secrètes dans le coffre, ce qui permettra d'isoler la création de clés secrètes à l'aide du script.

    Script:

    import boto3  # AWS SDK to interact with AWS services
    import oci  # OCI SDK to interact with Oracle Cloud
    import base64  # To handle base64 encoding
    from botocore.exceptions import ClientError  # For handling errors with AWS
    
    # AWS configuration
    AWS_SECRET_NAMES = ["your_aws_secret1", "your_aws_secret2"]  # List of AWS secrets to migrate
    AWS_REGION = "your_aws_region"  # AWS region where the secrets are stored
    
    # OCI configuration
    VAULT_ID = "your_oci_vault_id"  # OCI Vault ID
    COMPARTMENT_ID = "your_oci_compartment_id"  # OCI Compartment ID
    KEY_ID = "your_oci_key_id"  # OCI Key ID
    OCI_SECRET_NAME_PREFIX = "your_prefix"  # Prefix for the secret names in OCI Vault
    
    def get_aws_secret(secret_name):
        """Retrieve the secret value from AWS Secrets Manager."""
        session = boto3.session.Session()  # Create a session with AWS
        client = session.client(service_name='secretsmanager', region_name=AWS_REGION)  # Create a Secrets Manager client
    
        try:
            # Get the secret value
            get_secret_value_response = client.get_secret_value(SecretId=secret_name)
            secret = get_secret_value_response['SecretString']  # This is the actual secret data
            return secret
        except ClientError as e:
            print(f"Error retrieving secret from AWS: {e}")  # In case something goes wrong
            return None
    
    def create_oci_secret(secret_content, secret_name):
        """Create a new secret in OCI Vault."""
        config = oci.config.from_file()  # This loads your OCI configuration from ~/.oci/config
        vaults_client = oci.vault.VaultsClient(config)  # Use the VaultsClient to create a secret in OCI Vault
    
        # Encode secret content to Base64 format
        secret_content_base64 = base64.b64encode(secret_content.encode('utf-8')).decode('utf-8')  # Proper base64 encoding
    
        try:
            # Creating a new secret in OCI Vault
            create_secret_response = vaults_client.create_secret(
                create_secret_details=oci.vault.models.CreateSecretDetails(
                    vault_id=VAULT_ID,
                    compartment_id=COMPARTMENT_ID,
                    secret_name=secret_name,
                    key_id=KEY_ID,
                    secret_content=oci.vault.models.Base64SecretContentDetails(
                        content=secret_content_base64,  # Base64 encoded content
                        content_type="BASE64"  # Specifying the content type as BASE64
                    ),
                    description="Migrated from AWS Secrets Manager"  # A brief description
                )
            )
            print(f"Secret '{secret_name}' successfully created in OCI Vault.")
        except oci.exceptions.ServiceError as e:
            print(f"Error creating secret in OCI Vault: {e}")  # If something goes wrong
    
    def main():
        # Step 1: Retrieve and migrate secrets from AWS Secrets Manager
        for aws_secret_name in AWS_SECRET_NAMES:
            aws_secret_content = get_aws_secret(aws_secret_name)
    
            if aws_secret_content:
                # Generate OCI secret name based on AWS secret name
                oci_secret_name = f"{OCI_SECRET_NAME_PREFIX}_{aws_secret_name}"
                # Step 2: Create the secret in OCI Vault
                create_oci_secret(aws_secret_content, oci_secret_name)
    
    if __name__ == "__main__":
        main()
    
  4. Une fois le script enregistré, exécutez-le à l'aide de la commande suivante.

    python3 aws_to_oci_secret_migration.py
    

    Bouton Modifier

  5. Une fois le script exécuté, vous pouvez vérifier les clés secrètes nouvellement créées dans OCI Vault.

    Bouton Modifier

    Bouton Modifier

Etapes suivantes

La migration des clés secrètes d'AWS vers OCI peut vous aider à rationaliser vos opérations, en particulier si vous exploitez OCI pour le reste de votre infrastructure cloud. En utilisant l'automatisation Python, vous pouvez transférer efficacement les clés secrètes, en vous assurant qu'elles sont stockées en toute sécurité et conformes aux normes de cryptage d'OCI.

Remerciements

Ressources de formation supplémentaires

Explorez d'autres ateliers sur docs.oracle.com/learn ou accédez à d'autres contenus de formation gratuits sur le canal Oracle Learning YouTube. De plus, visitez le site education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.

Pour obtenir la documentation produit, consultez le site Oracle Help Center.