ワークロードをデプロイする


ワークロード オペレーターは、Confidential Space ワークロード VM にオプションを渡して、実行前に動作を判断できます。一部のフラグには変更されない必須値がありますが、それでも次の選択を行う必要があります。

最新の本番環境 Confidential Space イメージに基づいて us-west1-b ゾーンに Confidential VM を作成し、WORKLOAD_CONTAINER_NAME という Docker コンテナを実行する例を次に示します。

gcloud compute instances create workload-vm-name \
    --confidential-compute-type=CONFIDENTIAL_COMPUTING_TECHNOLOGY \
    --machine-type=MACHINE_TYPE_NAME \
    --maintenance-policy=MAINTENANCE_POLICY \
    --shielded-secure-boot \
    --image-project=confidential-space-images \
    --image-family=IMAGE_FAMILY \
    --metadata="^~^tee-image-reference=us-docker.pkg.dev/WORKLOAD_AUTHOR_PROJECT_ID/REPOSITORY_NAME/WORKLOAD_CONTAINER_NAME:latest" \
    --service-account=WORKLOAD_SERVICE_ACCOUNT_NAME@WORKLOAD_OPERATOR_PROJECT_ID.iam.gserviceaccount.com \
    --scopes=cloud-platform \
    --zone=us-west1-b

この例で使用されているオプションの詳細は、次の表をご覧ください。

フラグ 説明
--confidential-compute-type

必須。Confidential VM インスタンスの作成時に使用する Confidential Computing テクノロジーを Compute Engine に指示します。

CONFIDENTIAL_COMPUTING_TECHNOLOGY は次のいずれかの値に置き換えます。

Confidential Computing テクノロジーは、選択したイメージ ファミリーと一致している必要があります。

--machine-type 省略可。Confidential VM マシンタイプの名前を指定します。AMD SEV と Intel TDX(プレビュー)をサポートするマシンタイプについては、 サポートされている構成をご覧ください。
--maintenance-policy SEV を使用する N2D マシンタイプの場合は、ライブ マイグレーションのサポートのためにこれを MIGRATE に設定します。他のすべてのマシンタイプでは、 ライブ マイグレーションをサポートしていないため、この値を TERMINATE に設定します。
--shielded-secure-boot 必須。インスタンスに セキュアブートを使用するように Compute Engine に指示します。
--image-project=confidential-space-images 必須。confidential-space-images プロジェクトで Confidential Space イメージを検索するように Compute Engine に指示します。

--image-family

必須。confidential-space-images プロジェクトの一部である最新の Confidential Space イメージを使用するように Compute Engine に指示します。

機密データを処理する最終ワークロードで本番環境イメージを使用するには、IMAGE_FAMILY を次のいずれかの値に置き換えます。

  • confidential-space - AMD SEV の場合
  • confidential-space-preview-tdx - Intel TDX の場合(プレビュー

モニタリングとデバッグにデバッグイメージを使用するには、IMAGE_FAMILY を次のいずれかの値に置き換えます。

  • confidential-space-debug - AMD SEV の場合
  • confidential-space-debug-preview-tdx - Intel TDX(プレビュー)の場合

使用するイメージ ファミリーは、選択した機密コンピューティング テクノロジーと一致している必要があります。

--metadata

必須。変数を渡すことで、Confidential Space VM の動作を変更します。tee-image-reference キーと値は必須であり、指定された Confidential Space イメージ上で指定された Docker コンテナを実行するように VM インスタンスに指示します。

使用可能な Key-Value ペアについては、メタデータ変数をご覧ください。

--service-account 省略可。ワークロードを実行する VM インスタンスに接続され、他のプロジェクトの Workload Identity プールに接続されているサービス アカウントの権限を借用するサービス アカウント。指定しない場合、デフォルトの Compute Engine サービス アカウントが使用されます。
--scopes=cloud-platform 必須。 アクセス スコープを設定します。cloud-platform スコープは、 ほとんどの Google Cloud サービスの OAuth スコープであり、VM が証明書検証サービスと通信できるようにします。
--zone

必須。VM インスタンスが実行されるゾーン。Confidential Space には、特定のロケーションで使用可能な次のサービスが必要です。

接続されたサービス アカウント

ワークロードを実行するには、ワークロードの Confidential VM にサービス アカウントを接続する必要があります。サービス アカウントは、次の方法で設定する必要があります。

  • 次のロールを使用します。

  • データ コラボレーション パートナーが機密データを保存する場所(Cloud Storage バケットや BigQuery テーブルなど)に対する読み取りアクセス権。

  • ワークロードがデータを出力する場所(Cloud Storage バケットなど)への書き込みアクセス権。データ コラボレーション パートナーには、この場所への読み取りアクセス権が必要です。

また、データ コラボレーション パートナーとワークロード オペレーターは、次のものを設定する必要があります。

  • データ コラボレーション パートナーは、属性条件としてサービス アカウントを Workload Identity プール プロバイダに追加する必要があります。

    'WORKLOAD_SERVICE_ACCOUNT_NAME@DATA_COLLABORATOR_PROJECT_ID.iam.gserviceaccount.com' in assertion.google_service_accounts
    
  • ワークロード オペレーターは、サービス アカウントの権限借用に roles/iam.serviceAccountUser ロールが必要です。これにより、ワークロード VM に接続してワークロードを実行できます。

メタデータ変数

VM を作成するときに --metadata オプションに変数を渡すことで、Confidential Space ワークロード VM の動作を変更できます。

複数の変数を渡すには、まず --metadata 値の前に ^~^ を追加して区切り文字を設定します。変数値で , が使用されるため、区切り文字は ~ に設定されます。

次に例を示します。

metadata="^~^tee-restart-policy=Always~tee-image-reference=us-docker.pkg.dev/WORKLOAD_AUTHOR_PROJECT_ID/REPOSITORY_NAME/WORKLOAD_CONTAINER_NAME:latest"

次の表に、ワークロード VM に設定できるメタデータ変数を示します。

メタデータキー Type 説明と値

tee-image-reference

関連する項目:

文字列

必須。これは、ワークロード コンテナの場所を参照します。

tee-image-reference=us-docker.pkg.dev/WORKLOAD_AUTHOR_PROJECT_ID/REPOSITORY_NAME/WORKLOAD_CONTAINER_NAME:latest

tee-cmd

関連する項目:

JSON 文字列配列

ワークロード コンテナの Dockerfile で指定された CMD 命令をオーバーライドします。

tee-cmd="[\"params1\", \"params2\"]"

tee-container-log-redirect

関連する項目:

定義された文字列

ワークロード コンテナの confidential-space-launcher フィールドで STDOUTSTDERR を Cloud Logging またはシリアル コンソールに出力します。

有効な値は次のとおりです。

  • false: (デフォルト)ロギングは行われません。
  • true: シリアル コンソールと Cloud Logging に出力します。
  • cloud_logging: Cloud Logging にのみ出力します。
  • serial: シリアル コンソールにのみ出力します。

シリアル コンソールのログ量が多いと、ワークロードのパフォーマンスに影響する可能性があります。

tee-container-log-redirect=true

tee-dev-shm-size-kb

Integer

/dev/shm 共有メモリ マウントのサイズ(KB 単位)を設定します。

tee-dev-shm-size-kb=65536

tee-env-ENVIRONMENT_VARIABLE_NAME

関連する項目:

文字列

ワークロード コンテナに環境変数を設定します。ワークロード作成者は、環境変数名を allow_env_override 起動ポリシーに追加する必要があります。そうしないと、環境変数は設定されません。

tee-env-example-env-1='value-1'~tee-env-example-env-2='value-2'

tee-impersonate-service-accounts

関連する項目:

文字列

ワークロード オペレーターによって権限を借用できるサービス アカウントのリスト。ワークロード オペレーターが、サービス アカウントの権限借用を許可されている必要があります。

複数のサービス アカウントをカンマで区切って指定できます。

tee-impersonate-service-accounts=SERVICE_ACCOUNT_NAME_1@WORKLOAD_OPERATOR_PROJECT_ID.iam.gserviceaccount.com,SERVICE_ACCOUNT_NAME_2@WORKLOAD_OPERATOR_PROJECT_ID.iam.gserviceaccount.com

tee-monitoring-memory-enable

関連する項目:

ブール値

デフォルトは false です。true に設定すると、メモリ使用量のモニタリングが有効になります。Confidential VM によって収集された指標は guest/memory/bytes_used 型であり、Cloud Logging または Metrics Explorer で表示できます。

tee-monitoring-memory-enable=true

tee-mount

関連する項目:

文字列

セミコロンで区切ったマウント定義のリスト。マウントの定義は、Key-Value ペアのカンマ区切りのリストで構成され、typesourcedestination が必要です。destination は絶対パスにする必要があります。type/sourcetmpfs にする必要があります。

type=tmpfs,source=tmpfs,destination=/tmp/tmpfs,size=12345;type=tmpfs,source=tmpfs,destination=/run/workload

tee-restart-policy

関連する項目:

定義された文字列

ワークロードが停止したときのコンタナ ランチャーの再起動ポリシー

有効な値は次のとおりです。

  • Never(デフォルト)
  • Always
  • OnFailure

この変数は、本番環境の Confidential Space イメージでのみサポートされています。

tee-restart-policy=OnFailure

tee-signed-image-repos

関連する項目:

文字列

Sigstore Cosign によって生成された署名を保存する、カンマ区切りのコンテナ リポジトリのリスト。

tee-signed-image-repos=us-docker.pkg.dev/projectA/repo/example,us-docker.pkg.dev/projectB/repo/example,us-docker.pkg.dev/projectC/repo/example

スケーリング

本番環境の Confidential Space ワークロードのスケーリングと高可用性については、マネージド インスタンス グループをご覧ください。