Nota
- Questa esercitazione richiede l'accesso a Oracle Cloud. Per iscriverti a un account gratuito, consulta Inizia a utilizzare Oracle Cloud Infrastructure Free Tier.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti di Oracle Cloud Infrastructure. Al termine del laboratorio, sostituisci questi valori con quelli specifici del tuo ambiente cloud.
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):
- Gestione centralizzata dei segreti: se stai già utilizzando OCI per l'infrastruttura, mantenere tutti i tuoi segreti in OCI Vault può semplificare la gestione assicurando che i criteri di sicurezza siano coerenti.
- Conformità e sicurezza: OCI Vault si integra con molti servizi di OCI in cui è necessario il controllo gestito dal cliente fornendo la cifratura con chiavi personalizzate, controlli dell'accesso e log di audit.
- Considerazioni sui costi: le opzioni di prezzo e storage di OCI Vault potrebbero essere più convenienti rispetto ad AWS Secrets Manager, a seconda del tuo utilizzo.
Tipi di segreto supportati nel vault OCI
-
Il servizio Segreti OCI supporta qualsiasi tipo di segreto, inclusi PASSPHRASE, SSH_KEY e BYTES. Sebbene si tratti di tipi che possono essere generati automaticamente da OCI, durante la creazione manuale dei segreti, questi tipi non sono limitati. Assicurati che i tipi di segreti in AWS corrispondano ai formati accettati da OCI. Per ulteriori informazioni, vedere Gestione dei segreti vault.
-
OCI Vault richiede che il contenuto segreto sia in formato base64, il che garantisce lo storage sicuro dei dati binari.
Obiettivi
- Questa esercitazione descrive come eseguire la migrazione dei segreti memorizzati in AWS Secrets Manager in OCI Vault utilizzando Python. Imparerai come recuperare i segreti da AWS e archiviarli in modo sicuro in OCI Secrets in Vault con la codifica base64.
Prerequisiti
-
SDK AWS e OCI: assicurati che le librerie
boto3
eoci
siano installate nel tuo ambiente. Questi sono gli SDK ufficiali rispettivamente per AWS e OCI. Eseguire il comando riportato di seguito per l'installazione.pip install boto3 oci
-
Impostazione vault OCI:
-
ID vault: l'identificativo univoco del vault OCI in cui verrà memorizzato il segreto.
-
ID chiave: chiave di cifratura per cifrare il segreto nel vault OCI.
-
ID compartimento: il compartimento OCI in cui risiede il vault.
-
-
Credenziali AWS: assicurarsi di disporre di credenziali AWS configurate correttamente in OCI Cloud Shell o nell'interfaccia CLI OCI, utilizzando
aws configure
o tramite variabili di ambiente. Per ulteriori informazioni, vedere Autenticazione mediante le credenziali utente IAM per l'interfaccia CLI AWS. -
Configurazione OCI: assicurarsi che
~/.oci/config
sia impostato correttamente utilizzando OCI Cloud Shell o OCI CLI con le credenziali OCI. Per ulteriori informazioni, vedere Installazione dell'interfaccia CLI.
Migra i segreti da AWS a OCI
-
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
eawssecret5
.Lo screenshot riportato di seguito mostra i segreti di AWS Secrets Manager prima della migrazione.
-
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.
-
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()
-
Una volta salvato lo script, eseguirlo con il comando seguente.
python3 aws_to_oci_secret_migration.py
-
Dopo aver eseguito correttamente lo script, è possibile verificare i segreti appena creati nel vault OCI.
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
- Autore - Vishak Chittuvalapil (Senior Cloud Engineer)
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.
Migrate Secrets from AWS Secrets Manager to Oracle Cloud Infrastructure Secrets in Vault
G17351-02
October 2024