ワークロード オペレーターは、Confidential Space ワークロード VM にオプションを渡して、実行前に動作を判断できます。一部のフラグには変更されない必須値がありますが、それでも次の選択を行う必要があります。
AMD SEV とインテル TDX のどちらの Confidential Computing テクノロジーを使用するか。
渡す必要がある VM メタデータ変数。これには、実行するワークロード コンテナ イメージ、Cloud Logging にロギングするかどうか、設定する環境変数などの詳細が含まれます。
ワークロードを実行するために VM に接続するサービス アカウントと、他のプロジェクトの機密データにアクセスして結果をどこかに書き込むために必要な権限。
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 テクノロジーは、選択したイメージ ファミリーと一致している必要があります。 |
--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 に指示します。 |
|
必須。
機密データを処理する最終ワークロードで本番環境イメージを使用するには、
モニタリングとデバッグにデバッグイメージを使用するには、
使用するイメージ ファミリーは、選択した機密コンピューティング テクノロジーと一致している必要があります。 |
--metadata |
必須。変数を渡すことで、Confidential Space 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 にサービス アカウントを接続する必要があります。サービス アカウントは、次の方法で設定する必要があります。
次のロールを使用します。
roles/confidentialcomputing.workloadUser
は証明書トークンを生成します。roles/artifactregistry.reader
: Artifact Registry に保存されているワークロード コンテナ イメージを取得します。roles/logging.logWriter
:STDOUT
とSTDERR
を Cloud Logging にリダイレクトする場合。
データ コラボレーション パートナーが機密データを保存する場所(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 | 説明と値 |
---|---|---|
関連する項目:
|
文字列 |
必須。これは、ワークロード コンテナの場所を参照します。 例
|
関連する項目:
|
JSON 文字列配列 |
ワークロード コンテナの 例
|
関連する項目:
|
定義された文字列 |
ワークロード コンテナの confidential-space-launcher フィールドで 有効な値は次のとおりです。
シリアル コンソールのログ量が多いと、ワークロードのパフォーマンスに影響する可能性があります。 例
|
|
Integer |
例
|
関連する項目:
|
文字列 |
ワークロード コンテナに環境変数を設定します。ワークロード作成者は、環境変数名を
例
|
関連する項目:
|
文字列 |
ワークロード オペレーターによって権限を借用できるサービス アカウントのリスト。ワークロード オペレーターが、サービス アカウントの権限借用を許可されている必要があります。 複数のサービス アカウントをカンマで区切って指定できます。 例
|
関連する項目:
|
ブール値 |
デフォルトは 例
|
関連する項目:
|
文字列 |
セミコロンで区切ったマウント定義のリスト。マウントの定義は、Key-Value ペアのカンマ区切りのリストで構成され、 例
|
関連する項目:
|
定義された文字列 |
ワークロードが停止したときのコンタナ ランチャーの再起動ポリシー 有効な値は次のとおりです。
この変数は、本番環境の Confidential Space イメージでのみサポートされています。 例
|
関連する項目:
|
文字列 |
Sigstore Cosign によって生成された署名を保存する、カンマ区切りのコンテナ リポジトリのリスト。 例
|
スケーリング
本番環境の Confidential Space ワークロードのスケーリングと高可用性については、マネージド インスタンス グループをご覧ください。