Configura Secrets con Secret Manager

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

Crea un secreto mediante la consola de Google Cloud

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

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

    Ir a la página Secret Manager

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

  4. En la página Crear secreto, en Nombre, ingresa un nombre para el secreto (por ejemplo, “universe-secret”).

  5. Si quieres agregar una versión del secreto cuando creas el secreto inicial, ingresa un valor para el secreto (por ejemplo, 42) en el campo Valor del secreto.

  6. Selecciona tu región.

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

Compila y ejecuta una canalización con componentes basados en funciones de Python

El siguiente es un componente de muestra que imprime el secreto creado anteriormente.

  1. Otorga a la cuenta de servicio que ejecuta la canalización el permiso de administrador de secretos. Si deseas obtener más información, consulta la sección “Configura una cuenta de servicio con permisos detallados” de Configura el proyecto de Google Cloud para Vertex AI Pipelines.

  2. Con el SDK de Kubeflow Pipelines, compila una canalización simple 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
     )
    

    Reemplaza lo siguiente:

    • PROJECT_ID: El proyecto de Google Cloud en el que se ejecuta esta canalización.
    • SECRET_ID: El ID del secreto creado en los pasos anteriores (por ejemplo, universe-secret).
    • VERSION_ID: Es el nombre de la versión del secreto.
    • REGION: Es la región en la que se ejecuta esta canalización.
    • PIPELINE_ROOT: Especifica un URI de Cloud Storage al que pueda acceder la cuenta de servicio de tus canalizaciones. Los artefactos de las ejecuciones de tus canalizaciones se almacenan en la raíz de la canalización.
    • SERVICE_ACCOUNT: La dirección de correo electrónico de la cuenta de servicio que creaste con el permiso de descriptor de acceso de Secret Manager.

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