Configurer les secrets avec Secret Manager

Vous pouvez utiliser le client Python de Secret Manager avec Vertex AI Pipelines pour accéder aux secrets stockés sur Secret Manager.

Créer un secret à l'aide de Google Cloud Console

  1. Activez l'API Secret Manager dans Google Cloud Console.

  2. Accédez à la page Secret Manager dans Cloud Console.

    Accéder à la page Secret Manager

  3. Sur la page de Secret Manager, cliquez sur Créer un secret.

  4. Sur la page Créer un secret, sous "Nom", saisissez un nom pour le secret (par exemple, "universe-secret").

  5. Pour ajouter une version de secret au moment de sa création, saisissez une valeur dans le champ Valeur du secret (par exemple, 42).

  6. Sélectionnez votre région.

  7. Cliquez sur le bouton Créer un secret.

Créer et exécuter un pipeline avec des composants basés sur des fonctions Python

Voici un exemple de composant qui affiche le secret précédemment créé.

  1. Attribuez au compte de service qui exécute le pipeline l'autorisation d'accéder aux secrets de Secret Manager. Pour en savoir plus, consultez la section "Configurer un compte de service avec des autorisations précises" de la page Configurer votre projet Google Cloud pour Vertex AI Pipelines.

  2. À l'aide du SDK Kubeflow Pipelines, créez un pipeline simple en une seule tâche.

     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. Exécutez le pipeline à l'aide du 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
     )
    

    Remplacez les éléments suivants :

    • PROJECT_ID : projet Google Cloud dans lequel ce pipeline s'exécute.
    • SECRET_ID : ID du secret créé lors des étapes précédentes (par exemple, universe-secret).
    • VERSION_ID : nom de la version du secret.
    • REGION: région dans laquelle ce pipeline s'exécute.
    • PIPELINE_ROOT : spécifiez un URI Cloud Storage auquel votre compte de service de pipelines peut accéder. Les artefacts des exécutions de votre pipeline sont stockés dans la racine du pipeline.
    • SERVICE_ACCOUNT : adresse e-mail du compte de service que vous avez créé avec l'autorisation "Accesseur de secrets Secret Manager".

Dans les résultats de la fonction job.submit(), vous devriez pouvoir cliquer sur le lien qui vous permet d'afficher l'exécution du pipeline dans Google Cloud Console.