Configure Secrets com o Secret Manager

Pode usar o cliente Python do Secret Manager com os pipelines da Vertex AI para aceder a segredos armazenados no Secret Manager.

Crie um segredo através da consola Google Cloud

  1. Ative a API Secret Manager na Google Cloud consola.

  2. Aceda à página Secret Manager na Cloud Console.

    Aceda à página Secret Manager

  3. Na página Secret Manager, clique em Create Secret.

  4. Na página Criar segredo, em Nome, introduza um nome para o segredo (por exemplo, `universe-secret`).

  5. Para adicionar uma versão do Secret quando criar o Secret inicial, no campo Valor do Secret, introduza um valor para o Secret (por exemplo, 42).

  6. Escolha a sua região.

  7. Clique no botão Criar segredo.

Crie e execute um pipeline com componentes baseados em funções Python

Segue-se um componente de exemplo que imprime o segredo criado anteriormente.

  1. Conceda à conta de serviço que executa o pipeline a autorização do Secret Manager. Consulte a secção "Configure uma conta de serviço com autorizações detalhadas" de Configure o seu Google Cloud projeto para os Vertex AI Pipelines para mais informações.

  2. Usando o SDK Kubeflow Pipelines, crie um pipeline simples com uma tarefa.

     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. Execute o pipeline com o SDK do 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
     )
    

    Substitua o seguinte:

    • PROJECT_ID: o projeto Google Cloud no qual esta pipeline é executada.
    • SECRET_ID: O ID secreto criado nos passos anteriores (por exemplo, universe-secret).
    • VERSION_ID: o nome da versão do segredo.
    • REGION: a região em que este pipeline é executado.
    • PIPELINE_ROOT: especifique um URI do Cloud Storage ao qual a conta de serviço dos pipelines pode aceder. Os artefactos das execuções do pipeline são armazenados na raiz do pipeline.
    • SERVICE_ACCOUNT: o endereço de email da conta de serviço que criou com a autorização Secret Manager Accessor.

No resultado da função job.submit(), deve poder clicar no link que lhe permite ver a execução do pipeline na consola Google Cloud .