Vertex AI Pipelines で Secret Manager の Python クライアントを使用すると、Secret Manager に保存されているシークレットにアクセスできます。
Google Cloud Console を使用してシークレットを作成する
Google Cloud Console で、Secret Manager API を有効にします。
Cloud Console の [Secret Manager] ページに移動します。
Secret Manager ページで、[シークレットを作成] をクリックします。
[シークレットの作成] ページの [名前] に、シークレットの名前を入力します(例: universe-secret)。
最初のシークレットの作成時にシークレット バージョンを追加するには、[シークレットの値] フィールドにシークレットの値を入力します(例:
42
)。リージョンを選択します。
[シークレットを作成] ボタンをクリックします。
Python 関数ベースのコンポーネントを使用してパイプラインを構築し実行する
前に作成したシークレットを出力するコンポーネントの例を以下に示します。
パイプラインを実行するサービス アカウントにシークレット マネージャー権限を付与します。詳細については、Vertex AI Pipelines 用の Google Cloud プロジェクトの構成の「きめ細かい権限を持つサービス アカウントを構成する」セクションをご覧ください。
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')
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 にパイプラインの実行を表示するリンクをクリックできます。