Secrets mit Secret Manager konfigurieren

Sie können den Python-Client von Secret Manager mit Vertex AI Pipelines verwenden, um auf Secrets zuzugreifen, die in Secret Manager gespeichert sind.

Secret mit der Google Cloud Console erstellen

  1. Aktivieren Sie die Secret Manager API in der Google Cloud Console.

  2. Rufen Sie in der Cloud Console die Seite Secret Manager auf:

    Zur Seite „Secret Manager“

  3. Klicken Sie auf der Seite Secret Manager auf Secret erstellen.

  4. Geben Sie auf der Seite Secret erstellen unter „Name“ einen Namen für das Secret ein (z. B. „universe-secret“).

  5. Wenn Sie beim Erstellen des ersten Secrets eine Secret-Version hinzufügen möchten, geben Sie im Feld Secret-Wert einen Wert für das Secret ein (z. B. 42).

  6. Region auswählen

  7. Klicken Sie auf Secret erstellen.

Pipeline mit funktionsbasierten Python-Komponenten erstellen und ausführen

Im Folgenden finden Sie eine Beispielkomponente, die das zuvor erstellte Secret ausgibt.

  1. Gewähren Sie dem Dienstkonto, das die Pipeline ausführt, die Berechtigung „Secrete Manager“. Weitere Informationen finden Sie im Abschnitt „Dienstkonto mit detaillierten Berechtigungen konfigurieren“ des Artikels Google Cloud-Projekt für Vertex AI-Pipelines konfigurieren.

  2. Erstellen Sie mit dem Kubeflow Pipelines SDK eine einfache Pipeline mit einer Aufgabe.

     from kfp import compiler
     from kfp import dsl
    
     # A simple component that prints a secret stored in Secret Manager
     # Be sure to specify "google-cloud-secret-manager" as one of packages_to_install
     @dsl.component(
         packages_to_install=['google-cloud-secret-manager']
     )
     def print_secret_op(project_id: str, secret_id: str, version_id: str) -> str:
         from google.cloud import secretmanager
    
         secret_client = secretmanager.SecretManagerServiceClient()
         secret_name = f'projects/{project_id}/secrets/{secret_id}/versions/{version_id}'
         response = secret_client.access_secret_version(request={"name": secret_name})
         payload = response.payload.data.decode("UTF-8")
         answer = "The secret is: {}".format(payload)
         print(answer)
         return answer
    
     # A simple pipeline that contains a single print_secret task
     @dsl.pipeline(
         name='secret-manager-demo-pipeline')
     def secret_manager_demo_pipeline(project_id: str, secret_id: str, version_id: str):
         print_secret_task = print_secret_op(project_id, secret_id, version_id)
    
     # Compile the pipeline
     compiler.Compiler().compile(pipeline_func=secret_manager_demo_pipeline,
                                 package_path='secret_manager_demo_pipeline.yaml')
    
  3. Führen Sie die Pipeline mit dem Vertex AI SDK aus.

     from google.cloud import aiplatform
    
     parameter_values = {
         "project_id": PROJECT_ID,
         "secret_id": SECRET_ID,
         "version_id": VERSION_ID
     }
    
     aiplatform.init(
         project=PROJECT_ID,
         location=REGION,
     )
    
     job = aiplatform.PipelineJob(
         display_name=f'test-secret-manager-pipeline',
         template_path='secret_manager_demo_pipeline.yaml',
         pipeline_root=PIPELINE_ROOT,
         enable_caching=False,
         parameter_values=parameter_values
     )
    
     job.submit(
         service_account=SERVICE_ACCOUNT
     )
    

    Dabei gilt:

    • PROJECT_ID: Das Google Cloud-Projekt, in dem diese Pipeline ausgeführt wird.
    • SECRET_ID: Die in vorherigen Schritten erstellte Secret-ID (z. B. universe-secret).
    • VERSION_ID: Der Versionsname des Secrets.
    • REGION: Die Region, in der diese Pipeline ausgeführt wird.
    • PIPELINE_ROOT: Geben Sie einen Cloud Storage-URI an, auf den das Pipelines-Dienstkonto zugreifen kann. Die Artefakte Ihrer Pipelineausführungen werden im Pipeline-Stammverzeichnis gespeichert.
    • SERVICE_ACCOUNT: Die E-Mail-Adresse des Dienstkontos, das Sie mit der Berechtigung „Secret Manager Accessor“ erstellt haben.

In der Ausgabe der Funktion job.submit() sollten Sie auf den Link klicken können, mit dem Sie die Pipelineausführung in der Google Cloud Console aufrufen können.