Nota

Migra i segreti da AWS Secrets Manager a Oracle Cloud Infrastructure Secrets in Vault

Introduzione

Vantaggi della migrazione dei segreti da Amazon Web Services (AWS) a Oracle Cloud Infrastructure (OCI):

Tipi di segreto supportati nel vault OCI

Obiettivi

Prerequisiti

Migra i segreti da AWS a OCI

  1. Recupera e visualizza i segreti AWS. Per eseguire la migrazione dei segreti da AWS, assicurati innanzitutto di avere un elenco dei segreti da trasferire. In questo esempio viene eseguita la migrazione di due segreti: awssecret4 e awssecret5.

    Pulsante Modifica

    Lo screenshot riportato di seguito mostra i segreti di AWS Secrets Manager prima della migrazione.

    Pulsante Modifica

    Pulsante Modifica

  2. Creare un vault e una chiave di cifratura in OCI. Per impostare un vault e una chiave OCI per la cifratura dei segreti, vedere Creazione di una chiave di cifratura master.

    Pulsante Modifica

    Pulsante Modifica

  3. Utilizzare lo script Python per eseguire la migrazione dei segreti. Scaricare e salvare il seguente script Python come aws_to_oci_secret_migration.py. Lo script automatizza il processo di recupero dei segreti AWS e di memorizzazione in OCI Vault.

    Nota: sostituire i segnaposto, ad esempio your_aws_secret1, your_aws_region, your_oci_vault_id e così via, con i valori effettivi. Il prefisso specificato verrà utilizzato per creare i segreti nel vault, contribuendo a isolare la creazione di segreti utilizzando lo 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. Una volta salvato lo script, eseguirlo con il comando seguente.

    python3 aws_to_oci_secret_migration.py
    

    Pulsante Modifica

  5. Dopo aver eseguito correttamente lo script, è possibile verificare i segreti appena creati nel vault OCI.

    Pulsante Modifica

    Pulsante Modifica

Passi successivi

La migrazione dei segreti da AWS a OCI può aiutarti a semplificare le tue operations, soprattutto se stai sfruttando OCI per il resto della tua infrastruttura cloud. Utilizzando l'automazione Python, puoi trasferire in modo efficiente i segreti, assicurando che siano archiviati in modo sicuro e conformi agli standard di cifratura di OCI.

Conferme

Altre risorse di apprendimento

Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare un Oracle Learning Explorer.

Per la documentazione del prodotto, visita l'Oracle Help Center.