Configurazione dei secret con Secret Manager

Puoi utilizzare il client Python di Secret Manager con Vertex AI Pipelines per accedere ai secret archiviati in Secret Manager.

Crea un secret utilizzando la console Google Cloud

  1. Abilita l'API Secret Manager nella console Google Cloud.

  2. Vai alla pagina Secret Manager nella console Cloud.

    Vai alla pagina di Secret Manager

  3. Nella pagina Secret Manager, fai clic su Create Secret (Crea secret).

  4. Nella pagina Crea secret, in Nome, inserisci un nome per il secret (ad esempio "universo-secret").

  5. Per aggiungere una versione del secret durante la creazione del secret iniziale, nella sezione Nel campo Valore secret, inserisci un valore per il secret (ad esempio 42).

  6. Scegli la tua regione.

  7. Fai clic sul pulsante Crea secret.

Crea ed esegui una pipeline con componenti basati su funzioni Python

Di seguito è riportato un componente di esempio che stampa l'elemento creato in precedenza il secret.

  1. Concedi all'account di servizio che esegue la pipeline l'autorizzazione di gestore dei segreti. Per ulteriori informazioni, consulta la sezione "Configurare un account di servizio con autorizzazioni granulari" di Configurare il progetto Google Cloud per le pipeline Vertex AI.

  2. Utilizzando l'SDK Kubeflow Pipelines, puoi creare una pipeline semplice con una singola attività.

     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. Esegui la pipeline utilizzando l'SDK Vertex AI.

     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
     )
    

    Sostituisci quanto segue:

    • PROJECT_ID: il progetto Google Cloud che della pipeline in cui viene eseguita.
    • SECRET_ID: l'ID secret creato nei passaggi precedenti (ad esempio universe-secret).
    • VERSION_ID: il nome della versione del secret.
    • REGION: la regione in cui viene eseguita questa pipeline.
    • PIPELINE_ROOT: specifica un URI Cloud Storage a cui può accedere il tuo service account delle pipeline. Gli artefatti delle esecuzioni della pipeline vengono archiviati nella directory principale della pipeline.
    • SERVICE_ACCOUNT: l'indirizzo email dell'account di servizio creato con l'autorizzazione Accesso ai segreti di Secret Manager.

Nell'output della funzione job.submit() dovresti essere in grado di fare clic sul che ti consente di visualizzare l'esecuzione della pipeline nella console Google Cloud.