Note :

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

Présentation

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

Types de clé secrète pris en charge dans la chambre forte pour OCI

Objectifs

Préalables

Migrer des clés secrètes depuis AWS vers OCI

  1. Extraire et voir les clés secrètes AWS. Pour migrer des clés secrètes depuis 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 montre les clés secrètes dans AWS Secrets Manager avant la migration.

    Bouton Modifier

    Bouton Modifier

  2. Créez une chambre forte et une clé de chiffrement dans OCI. Pour configurer une chambre forte et une clé OCI pour chiffrer les clés secrètes, voir Création d'une clé de chiffrement principale.

    Bouton Modifier

    Bouton Modifier

  3. Utilisez un script Python pour migrer les clés secrètes. Téléchargez et enregistrez le script Python suivant sous le nom aws_to_oci_secret_migration.py. Le script automatise le processus d'extraction des clés secrètes AWS et de stockage dans le service de chambre forte OCI.

    Note : Remplacez les paramètres fictifs tels que your_aws_secret1, your_aws_region, your_oci_vault_id, etc., par vos valeurs réelles. Le préfixe spécifié sera utilisé pour créer les clés secrètes dans la chambre forte, ce qui aidera à 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 avec la commande suivante.

    python3 aws_to_oci_secret_migration.py
    

    Bouton Modifier

  5. Après avoir exécuté le script avec succès, vous pouvez vérifier les nouvelles clés secrètes créées dans la chambre forte OCI.

    Bouton Modifier

    Bouton Modifier

Étapes suivantes

La migration de clés secrètes d'AWS vers OCI peut vous aider à rationaliser vos opérations, en particulier si vous utilisez OCI pour le reste de votre infrastructure en nuage. 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 chiffrement d'OCI.

Confirmation

Autres ressources d'apprentissage

Explorez d'autres laboratoires sur la page docs.oracle.com/learn ou accédez à plus de contenu d'apprentissage gratuit sur le canal YouTube d'Oracle Learning. De plus, visitez education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.

Pour obtenir de la documentation sur le produit, visitez Oracle Help Center.