Configurar secretos con Secret Manager

Puedes usar el cliente de Python de Secret Manager con Vertex AI Pipelines para acceder a los secretos almacenados en Secret Manager.

Crear un secreto con la Google Cloud consola

  1. Habilita la API Secret Manager en la Google Cloud consola.

  2. Ve a la página Secret Manager en la consola de Cloud.

    Ve a la página Secret Manager.

  3. En la página Secret Manager, haz clic en Crear secreto.

  4. En la página Crear secreto, en Nombre, escribe un nombre para el secreto (por ejemplo, `universo-secreto`).

  5. Para añadir una versión de secreto al crear el secreto inicial, introduce un valor en el campo Valor del secreto (por ejemplo, 42).

  6. Elige tu región.

  7. Haz clic en el botón Crear secreto.

Crear y ejecutar una canalización con componentes basados en funciones de Python

A continuación, se muestra un componente de ejemplo que imprime el secreto creado anteriormente.

  1. Concede a la cuenta de servicio que ejecuta la canalización el permiso de Secret Manager. Consulta la sección "Configurar una cuenta de servicio con permisos granulares" del artículo Configurar tu proyecto Google Cloud para Vertex AI Pipelines para obtener más información.

  2. Con el SDK de Kubeflow Pipelines, crea una canalización sencilla con una tarea.

     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. Ejecuta la canalización con el SDK de 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
     )
    

    Haz los cambios siguientes:

    • PROJECT_ID: el Google Cloud proyecto en el que se ejecuta esta pipeline.
    • SECRET_ID: el ID del secreto creado en los pasos anteriores (por ejemplo, universe-secret).
    • VERSION_ID: el nombre de la versión del secreto.
    • REGION: la región en la que se ejecuta este flujo de procesamiento.
    • PIPELINE_ROOT: especifica un URI de Cloud Storage al que pueda acceder la cuenta de servicio de tu servicio de canalizaciones. Los artefactos de las ejecuciones de tu canalización se almacenan en la raíz de la canalización.
    • SERVICE_ACCOUNT: La dirección de correo de la cuenta de servicio que has creado con el permiso Lector de recursos de Secret Manager.

En el resultado de la función job.submit(), deberías poder hacer clic en el enlace que te lleva a ver la ejecución de la canalización en la consola Google Cloud .