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 di Secret Manager, fai clic su Crea secret.

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

  5. Per aggiungere una versione del secret durante la creazione del secret iniziale, inserisci un valore per il secret nel campo Valore 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 il secret creato in precedenza.

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

  2. Usa l'SDK Kubeflow Pipelines per creare una semplice pipeline 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. Eseguire 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 in cui viene eseguita questa pipeline.
    • 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 la pipeline.
    • PIPELINE_ROOT: specifica un URI Cloud Storage a cui può accedere l'account di servizio delle pipeline. Gli artefatti delle esecuzioni delle pipeline vengono archiviati nella radice della pipeline.
    • SERVICE_ACCOUNT: l'indirizzo email dell'account di servizio che hai creato con l'autorizzazione della funzione di accesso di Secret Manager.

Nell'output della funzione job.submit(), dovresti poter fare clic sul link per visualizzare l'esecuzione della pipeline nella console Google Cloud.