Configurar secrets com o Secret Manager

Use o cliente Python do Secret Manager com o Vertex AI Pipelines para acessar secrets armazenados no Secret Manager.

Criar um secret usando o Console do Google Cloud

  1. Ative a API Secret Manager no Console do Google Cloud.

  2. Acesse a página Secret Manager no Console do Cloud:

    Acessar a página "Gerenciador de secrets"

  3. Na página Gerenciador de secrets, clique em Criar secret.

  4. Na página Criar secret, em "Nome", digite um nome para o secret, por exemplo, "universe-secret".

  5. Para adicionar uma versão do secret ao criar o secret inicial, no campo Valor do secret, insira um valor para o secret (por exemplo, 42).

  6. Escolha sua região.

  7. Clique no botão Criar secret.

Criar e executar um pipeline com componentes baseados em funções do Python

Veja a seguir um componente de amostra que imprime a chave secreta criada anteriormente.

  1. Conceda à conta de serviço que executa o pipeline com permissão de administrador de secret. Consulte a seção "Configurar uma conta de serviço com permissões granulares" em Configurar seu projeto do Google Cloud para o Vertex AI Pipelines para mais informações.

  2. Use o SDK do Kubeflow Pipelines para criar 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 usando o SDK da 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:

    • PROJECT_ID: o projeto do Google Cloud em que este pipeline é executado.
    • SECRET_ID: o ID do secret criado nas etapas anteriores, por exemplo, universe-secret.
    • VERSION_ID: o nome da versão do secret.
    • REGION: a região em que este pipeline é executado.
    • PIPELINE_ROOT: especifique um URI do Cloud Storage que sua conta de serviço de pipelines possa acessar. Os artefatos das execuções de pipeline são armazenados na raiz do pipeline.
    • SERVICE_ACCOUNT: o endereço de e-mail da conta de serviço que você criou com a permissão de acessador do Secret Manager.

Nas saídas da função job.submit(), clique no link para ver a execução do pipeline no Console do Google Cloud.