Hinweis:
- Dieses Tutorial erfordert Zugriff auf Oracle Cloud. Informationen zur Registrierung für einen kostenlosen Account finden Sie unter Erste Schritte mit Oracle Cloud Infrastructure Free Tier.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. Ersetzen Sie diese Werte nach Abschluss der Übung durch Werte, die für Ihre Cloud-Umgebung spezifisch sind.
Secrets von AWS Secrets Manager zu Oracle Cloud Infrastructure Secrets in Vault migrieren
Einführung
Vorteile bei der Migration von Secrets von Amazon Web Services (AWS) zu Oracle Cloud Infrastructure (OCI):
- Zentralisiertes Secret-Management: Wenn Sie OCI bereits für die Infrastruktur verwenden, kann die Aufbewahrung aller Secrets in OCI Vault die Verwaltung vereinfachen, indem sichergestellt wird, dass die Sicherheits-Policys konsistent sind.
- Compliance und Sicherheit: OCI Vault lässt sich in viele OCI-Services integrieren, bei denen vom Kunden verwaltete Kontrolle erforderlich ist, indem benutzerdefinierte Schlüssel, Zugriffskontrollen und Auditlogs verschlüsselt werden.
- Kostenüberlegung: Die Preis- und Speicheroptionen von OCI Vault sind je nach Nutzung möglicherweise kostengünstiger als AWS Secrets Manager.
Unterstützte Secret-Typen in OCI Vault
-
Der OCI Secrets-Service unterstützt alle Secret-Typen, einschließlich PASSPHRASE, SSH_KEY und BYTES. Während dies Typen sind, die von OCI automatisch generiert werden können, sind Sie beim manuellen Erstellen von Secrets nicht auf diese Typen beschränkt. Stellen Sie sicher, dass die Secret-Typen in AWS den von OCI akzeptierten Formaten entsprechen. Weitere Informationen finden Sie unter Vault-Secrets verwalten.
-
Der OCI Vault erfordert, dass Secret-Inhalte im base64-Format vorliegen, was die sichere Speicherung von Binärdaten sicherstellt.
Ziele
- Dieses Tutorial zeigt, wie Sie in AWS Secrets Manager gespeicherte Secrets mit Python in OCI Vault migrieren. Sie lernen, wie Sie Secrets aus AWS abrufen und mit der base64-Codierung sicher in OCI Secrets in Vault speichern.
Voraussetzungen
-
AWS- und OCI-SDKs: Stellen Sie sicher, dass die
boto3
- undoci
-Librarys in Ihrer Umgebung installiert sind. Dies sind die offiziellen SDKs für AWS bzw. OCI. Führen Sie den folgenden Befehl zur Installation aus.pip install boto3 oci
-
OCI Vault-Setup:
-
Vault-ID: Die eindeutige ID des OCI Vault, in dem das Secret gespeichert wird.
-
Schlüssel-ID: Ein Verschlüsselungsschlüssel zur Verschlüsselung des Secrets im OCI-Vault.
-
Compartment-ID: Das OCI-Compartment, in dem sich der Vault befindet.
-
-
AWS-Zugangsdaten: Stellen Sie sicher, dass AWS-Zugangsdaten ordnungsgemäß in OCI Cloud Shell oder OCI-CLI mit
aws configure
oder über Umgebungsvariablen konfiguriert sind. Weitere Informationen finden Sie unter Authentifizierung mit IAM-Benutzerzugangsdaten für die AWS-CLI. -
OCI-Konfiguration: Stellen Sie sicher, dass Ihre
~/.oci/config
mit OCI Cloud Shell oder OCI-CLI mit Ihren OCI-Zugangsdaten korrekt eingerichtet ist. Weitere Informationen finden Sie unter CLI installieren.
Secrets von AWS zu OCI migrieren
-
AWS-Secrets abrufen und anzeigen Um Secrets aus AWS zu migrieren, stellen Sie zunächst sicher, dass Sie über eine Liste der zu übertragenden Secrets verfügen. In diesem Beispiel migrieren wir zwei Secrets:
awssecret4
undawssecret5
.Der folgende Screenshot zeigt die Secrets im AWS Secrets Manager vor der Migration.
-
Erstellen Sie einen Vault und einen Verschlüsselungsschlüssel in OCI. Informationen zum Einrichten eines OCI-Vault und -Schlüssels zum Verschlüsseln von Secrets finden Sie unter Masterverschlüsselungsschlüssel erstellen.
-
Verwenden Sie das Python-Skript, um Secrets zu migrieren. Laden Sie das folgende Python-Skript herunter, und speichern Sie es als
aws_to_oci_secret_migration.py
. Das Skript automatisiert den Prozess, AWS-Secrets abzurufen und in OCI Vault zu speichern.Hinweis: Ersetzen Sie Platzhalter wie
your_aws_secret1
,your_aws_region
,your_oci_vault_id
usw. durch Ihre tatsächlichen Werte. Das angegebene Präfix wird verwendet, um die Secrets im Vault zu erstellen und die Erstellung von Secrets mit dem Skript zu isolieren.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()
-
Nachdem das Skript gespeichert wurde, führen Sie es mit dem folgenden Befehl aus.
python3 aws_to_oci_secret_migration.py
-
Nachdem Sie das Skript erfolgreich ausgeführt haben, können Sie die neu erstellten Secrets im OCI Vault prüfen.
Nächste Schritte
Die Migration von Secrets von AWS zu OCI kann dazu beitragen, Ihren Betrieb zu optimieren, insbesondere wenn Sie OCI für den Rest Ihrer Cloud-Infrastruktur nutzen. Durch die Verwendung der Python-Automatisierung können Sie Geheimnisse effizient übertragen und sicherstellen, dass sie sicher gespeichert sind und den Verschlüsselungsstandards von OCI entsprechen.
Danksagungen
- Autor - Vishak Chittuvalapil (Senior Cloud Engineer)
Weitere Lernressourcen
Sehen Sie sich andere Übungen zu docs.oracle.com/learn an, oder greifen Sie im Oracle Learning YouTube-Channel auf weitere kostenlose Lerninhalte zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.
Die Produktdokumentation finden Sie im Oracle Help Center.
Migrate Secrets from AWS Secrets Manager to Oracle Cloud Infrastructure Secrets in Vault
G17347-02
October 2024