Secret Manager für Ihre Umgebung konfigurieren

Cloud Composer 1 Cloud Composer 2

Auf dieser Seite wird gezeigt, wie Sie mit Secret Manager Airflow-Verbindungen und -Secrets sicher speichern.

Secret Manager für Ihre Umgebung konfigurieren

In diesem Abschnitt wird erläutert, wie Sie Secret Manager so konfigurieren, dass Sie Secrets mit Ihrer Cloud Composer-Umgebung verwenden können.

Aktivieren Sie die Secret Manager API:

Console

Secret Manager API aktivieren.

Aktivieren Sie die API

gcloud

Die Secret Manager API aktivieren.

gcloud services enable secretmanager.googleapis.com

Zugriffssteuerung konfigurieren

Sie müssen die Zugriffssteuerung konfigurieren, damit Airflow auf Secrets zugreifen kann, die in Secret Manager gespeichert sind.

Dazu muss das Dienstkonto, das auf Secrets zugreift, eine Rolle mit der Berechtigung secretmanager.versions.access haben. Die Rolle Secret Manager Secret Accessor beinhaltet beispielsweise diese Berechtigung.

Sie können diese Rolle auf Secret-, Projekt-, Ordner- oder Organisationsebene zuweisen.

Verwenden Sie eine der folgenden Optionen:

Secret Manager-Back-End aktivieren und konfigurieren

  1. Überschreiben Sie die folgende Airflow-Konfigurationsoption:

    Bereich Schlüssel Wert
    secrets backend airflow.providers.google.cloud.secrets.secret_manager.CloudSecretManagerBackend
  2. Fügen Sie optionale Einstellungen hinzu, indem Sie die folgende Airflow-Konfigurationsoption überschreiben:

    Bereich Schlüssel Wert
    secrets backend_kwargs Weitere Informationen finden Sie in der folgenden Beschreibung.

    Der Wert backend_kwargs ist die JSON-Darstellung des Objekts backend_kwargs mit folgenden Feldern:

    • connections_prefix: Gibt das Präfix des zu lesenden Secret-Namens an, um Verbindungen abzurufen. Standardwert ist airflow-connections.
    • variables_prefix: Gibt das Präfix des zu lesenden Secret-Namens an, um Variablen abzurufen. Standardwert ist airflow-variables.
    • gcp_key_path: Pfad zur JSON-Datei mit den Google Cloud-Anmeldedaten. Wenn nicht angegeben, wird das Standarddienstkonto verwendet.
    • gcp_keyfile_dict: Das JSON-Wörterbuch der Google Cloud-Anmeldedaten. Dieses Feature schließt sich mit gcp_key_path gegenseitig aus.
    • sep: Trennzeichen, das zum Verketten von connections_prefix und conn_id verwendet wird. Standard: -.
    • project_id: Die Google Cloud-Projekt-ID, unter der Secrets gespeichert werden.

    Der Wert von backend_kwargs kann beispielsweise so aussehen: {"project_id": "<project id>", "connections_prefix":"example-connections", "variables_prefix":"example-variables", "sep":"-"}

Verbindungen und Variablen in Secret Manager hinzufügen

Erstellen Sie Secrets gemäß der Anleitung unter Secrets und Versionen erstellen.

Variablen

  • Muss das [variable_prefix][sep][variable_name]-Format haben.
  • Der Standardwert für [variable_prefix] ist airflow-variables.
  • Das Standardtrennzeichen [sep] ist -

Beispiel: Wenn der Variablenname example-var lautet, lautet der Secret-Name airflow-variables-example-var.

Verbindungsnamen

  • Muss das [connection_prefix][sep][connection_name]-Format haben.
  • Der Standardwert für [connection_prefix] ist airflow-connections.
  • Das Standardtrennzeichen [sep] ist -

Wenn der Verbindungsname beispielsweise exampleConnection lautet, lautet der Secret-Name airflow-connections-exampleConnection.

Verbindungswerte

  • Sie müssen die URI-Darstellung verwenden. Beispiel: mysql://login:password@examplehost:9000

  • Der URI muss URL-codiert sein (prozentual codiert). Beispielsweise muss ein Passwort, das ein Leerzeichensymbol enthält, so URL-codiert sein: mysql://login:secret%20password@examplehost:9000.

Airflow bietet eine einfache Methode zum Generieren von Verbindungs-URIs. Ein Beispiel für die Codierung einer komplexen URL mit JSON-Extras finden Sie in der Airflow-Dokumentation.

Secret Manager mit Cloud Composer verwenden

Beim Abrufen von Variablen und Verbindungen prüft Cloud Composer zuerst Secret Manager. Wenn die angeforderte Variable oder Verbindung nicht gefunden wird, prüft Cloud Composer die Umgebungsvariablen und die Airflow-Datenbank.

Variablen mit VMAP-Vorlagen lesen

Sie können Secret Manager verwenden, um Variablen mit Vorlagenvorlagen (Vorlagenvorlagen) zum Zeitpunkt der Ausführung zu lesen.

Für die Variable airflow-variables-secret_filename:

file_name = 'var.value.secret_filename'

Variablen mit benutzerdefinierten Operatoren und Callbacks lesen

Sie können Secret Manager auch verwenden, um Variablen in benutzerdefinierten Operatoren oder Rückrufmethoden von Operatoren zu lesen. Das Lesen von Variablen in DAGs kann sich negativ auf die Leistung auswirken. Verwenden Sie daher Jinja-Vorlagen, wenn Sie Variablen in Ihren DAGs verwenden möchten.

Z. B. für die Variable airflow-variables-secret_filename:

from airflow.models.variable import Variable
file_name = Variable.get('secret_filename')

Verbindungen lesen

Wenn Sie keinen benutzerdefinierten Operator schreiben, sollten Sie selten direkt auf Verbindungen zugreifen müssen. Die meisten Hooks erhalten den Verbindungsnamen als Instanziierungsparameter und sollten Verbindungen vom Secret-Back-End automatisch abrufen, wenn Aufgaben ausgeführt werden.

Das direkte Lesen von Verbindungen kann beim Schreiben eines eigenen Hooks hilfreich sein.

Zum Beispiel für die airflow-connections-exampleConnection-Verbindung:

from airflow.hooks.base_hook import BaseHook
exampleConnection = BaseHook.get_connection('exampleConnection')

BaseHook.get_connection gibt ein Connection-Objekt zurück. Die URI-Stringdarstellung einer Verbindung kann so abgerufen werden:

exampleConnectionUri = BaseHook.get_connection('exampleConnection').get_uri()

Weitere Informationen