Secret Manager でシークレットを構成する

Vertex AI Pipelines で Secret Manager の Python クライアントを使用すると、Secret Manager に保存されているシークレットにアクセスできます。

Google Cloud Console を使用してシークレットを作成する

  1. Google Cloud Console で、Secret Manager API を有効にします

  2. Cloud Console の [Secret Manager] ページに移動します。

    [Secret Manager] ページに移動

  3. Secret Manager ページで、[シークレットを作成] をクリックします。

  4. [シークレットの作成] ページの [名前] に、シークレットの名前を入力します(例: universe-secret)。

  5. 最初のシークレットの作成時にシークレット バージョンを追加するには、[シークレットの値] フィールドにシークレットの値を入力します(例: 42)。

  6. リージョンを選択します。

  7. [シークレットを作成] ボタンをクリックします。

Python 関数ベースのコンポーネントを使用してパイプラインを構築し実行する

前に作成したシークレットを出力するコンポーネントの例を以下に示します。

  1. パイプラインを実行するサービス アカウントにシークレット マネージャー権限を付与します。詳細については、Vertex AI Pipelines 用の Google Cloud プロジェクトの構成の「きめ細かい権限を持つサービス アカウントを構成する」セクションをご覧ください。

  2. Kubeflow Pipelines SDK を使用すると、タスクが 1 つのシンプルなパイプラインを構築できます。

     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. Vertex AI SDK を使用してパイプラインを実行します。

     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
     )
    

    次のように置き換えます。

    • PROJECT_ID: このパイプラインが実行される Google Cloud プロジェクト。
    • SECRET_ID: 前の手順で作成したシークレットの ID(例: universe-secret)。
    • VERSION_ID: シークレットのバージョン名。
    • REGION: このパイプラインが実行されるリージョン。
    • PIPELINE_ROOT: パイプライン サービス アカウントがアクセスできる Cloud Storage URI を指定する。パイプライン実行のアーティファクトはパイプライン ルート内に保存されます。
    • SERVICE_ACCOUNT: Secret Manager のアクセサー権限を付与して作成したサービス アカウントのメールアドレス。

job.submit() 関数の出力で、Google Cloud Console にパイプラインの実行を表示するリンクをクリックできます。