構成証明アサーション

証明書アサーションの使用の詳細については、証明書ポリシーを作成するをご覧ください。

次の表に、証明書ポリシーの作成に使用できるアサーションの詳細を示します。ポリシーは、Confidential Space イメージ、ワークロード コンテナ、VM インスタンスによって行われたアサーションを検証できます。

画像アサーション

アサーション タイプ 説明

assertion.dbgstat

連携するサービス:

列挙

Confidential Space イメージがデバッグ バージョンまたは本番環境バージョンであることを確認します。

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

  • enable: デバッグ イメージが使用されていることを確認します。
  • disabled-since-boot: 本番環境イメージが使用されていることを確認します。

次のコードは、Confidential Space イメージのデバッグ バージョンが使用されていることを確認します。

assertion.dbgstat == "enable"

次のコードは、Confidential Space イメージのプロダクション バージョンが使用されていることを確認します。

assertion.dbgstat == "disabled-since-boot"
assertion.submods.confidential_space.support_attributes 文字列の配列

サポート属性を使用して、Confidential VM インスタンスで実行されている本番環境の Confidential Space イメージのセキュリティ バージョンを確認します。Confidential Space のデバッグ イメージにはサポート属性が設定されていません。

有効なサポート属性は次のとおりです。

  • LATEST: これは最新バージョンのイメージであり、サポートされています。LATEST イメージも STABLEUSABLE です。
  • STABLE: このバージョンのイメージはサポートされ、脆弱性のモニタリングが行われます。STABLE イメージも USABLE です。
  • USABLE: この属性のみを持つイメージはサポートされず、脆弱性のモニタリングは行われません。ご自身の責任で操作するようお願いいたします。
  • EXPERIMENTAL: この属性のみを持つ画像は、プレビュー機能を利用します。これはテスト専用です。本番環境では使用しないでください。EXPERIMENTAL 画像に LATESTSTABLEUSABLE の属性が設定されることはありません。

次のコードは、Confidential Space イメージの安定版が使用されていることを確認します。

"STABLE" in assertion.submods.confidential_space.support_attributes
assertion.swname 列挙

証明を行うエンティティで実行されているソフトウェアを検証します。値は常に CONFIDENTIAL_SPACE です。

assertion.swname == "CONFIDENTIAL_SPACE"
assertion.swversion 文字列の配列

Confidential Space イメージのソフトウェア バージョンを検証します。イメージの最新バージョンをターゲットにするには、代わりに assertion.submods.confidential_space.support_attributes を使用することをおすすめします。

int(assertion.swversion[0]) == 230103

コンテナ アサーション

アサーション タイプ 説明

assertion.submods.container.cmd_override

連携するサービス:

  • ワークロード作成者: allow_cmd_override 起動ポリシー。
  • ワークロード オペレーター: tee-cmd メタデータ変数。
文字列の配列

ワークロード イメージで使用されている CMD コマンドとパラメータを確認します。

次のコードは、ワークロード イメージの CMD が上書きされていないことを確認します。

size(assertion.submods.container.cmd_override) == 0

次のコードは、CMD オーバーライドの唯一のコンテンツが program であることを確認します。

assertion.submods.container.cmd_override == ['program']

assertion.submods.container.env

連携するサービス:

JSON オブジェクト

環境変数とそれらの値がコンテナに明示的に渡されていることを確認します。

次のコードは、環境変数 example-env-1value-1 に設定され、example-env-2value-2 に設定されていることを確認します。

assertion.submods.container.env == {"example-env-1": "value-1", "example-env-2": "value-2"}

assertion.submods.container.env_override

連携するサービス:

文字列

ワークロード オペレーターがコンテナ内の環境変数を上書きしたかどうかを確認します。

次のコードは、ワークロード オペレーターが example 環境変数をオーバーライドしていないことを確認します。

!has(assertion.submods.container.env_override.example)

次のコードは、ワークロード オペレータが環境変数を上書きしていないことを確認します。

size(assertion.submods.container.env_override) == 0
assertion.submods.container.image_digest 文字列

ワークロード コンテナのイメージ ダイジェストを検証します。この条件を指定すると、複数の関係者が、データへのアクセスを許可する承認済みワークロードについて合意できます。

assertion.submods.container.image_digest == "sha256:837ccb607e312b170fac7383d7ccfd61fa5072793f19a25e75fbacb56539b86b"
assertion.submods.container.image_id 文字列

ワークロード コンテナのイメージ ID を検証します。

assertion.submods.container.image_id == "sha256:652a44b0e911271ba07cf2915cd700fdfa50abd62a98f87a57fdebc59843d93f"

assertion.submods.container.image_reference

連携するサービス:

文字列

Confidential Space イメージ上で実行されているワークロード コンテナの場所を検証します。

assertion.submods.container.image_reference == "us-docker.pkg.dev/PROJECT_ID/WORKLOAD_CONTAINER:latest"

assertion.submods.container.image_signatures

連携するサービス:

JSON オブジェクト

イメージに特定の署名があるか、公開鍵と署名アルゴリズムで署名されていることを検証します。この条件を指定すると、複数の関係者が、データへのアクセスを許可する承認済みワークロードについて合意できます。

アサーションには次の要素を含めることができます。

  • key_id: 公開鍵の 16 進数フィンガープリント。フィンガープリントを取得するには、次のコマンドを実行します。

    openssl pkey -pubin -in public_key.pem -outform DER | openssl sha256

    ここで、public_key.pem は PEM 形式の公開鍵です。

  • signature: 署名付きコンテナに関連付けられ、 Simple Signing 形式に準拠するペイロードの署名。
  • signature_algorithm: 鍵の署名に使用されるアルゴリズム。次のいずれかになります。

    • RSASSA_PSS_SHA256(SHA-256 ダイジェストを使用する RSASSA-PSS)
    • RSASSA_PKCS1V15_SHA256(SHA-256 ダイジェスト付きの RSASSA-PKCS1 v1_5)
    • ECDSA_P256_SHA256(P-256 曲線上の ECDSA(SHA-256 ダイジェストを使用))
['ECDSA_P256_SHA256:PUBLIC_KEY_FINGERPRINT'].exists(fingerprint, fingerprint in assertion.submods.container.image_signatures.map(sig, sig.signature_algorithm+':'+sig.key_id))

assertion.submods.container.restart_policy

連携するサービス:

列挙

ワークロードが停止したときのコンテナ ランチャーの再起動ポリシーを確認します。

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

  • Never(デフォルト)
  • Always
  • OnFailure
assertion.submods.container.restart_policy == "Never"

VM アサーション

アサーション タイプ 説明

assertion.google_service_accounts

連携するサービス:

文字列の配列

指定されたサービス アカウントが、ワークロードを実行している VM に接続されているか、VM メタデータで tee-impersonate-service-accounts を使用して一覧表示されていることを確認します。

workload-service-account@my-project.iam.gserviceaccount.com in assertion.google_service_accounts
assertion.hwmodel 文字列

基盤となる Confidential Computing テクノロジーを検証します。サポートされているプラットフォームは次のとおりです。

  • GCP_AMD_SEV
  • INTEL_TDX
assertion.hwmodel == "GCP_AMD_SEV"

assertion.submods.confidential_space.monitoring_enabled

連携するサービス:

ブール値

証明を行うエンティティのモニタリング状態を確認します。

assertion.submods.confidential_space.monitoring_enabled.memory == true
assertion.submods.gce.instance_id 文字列

VM インスタンス ID を検証します。

assertion.submods.gce.instance_id == "0000000000000000000"
assertion.submods.gce.instance_name 文字列

VM インスタンスの名前を確認します。

assertion.submods.gce.instance_name == "workload-vm"
assertion.submods.gce.project_id 文字列

指定したプロジェクト ID で VM が Google Cloud プロジェクトを実行していることを確認します。

assertion.submods.gce.project_id == "project-id"
assertion.submods.gce.project_number 文字列

指定したプロジェクト番号で VM が Google Cloud プロジェクトで実行されていることを確認します。

assertion.submods.gce.project_number == "00000000000"

assertion.submods.gce.zone

連携するサービス:

  • ワークロード オペレーター: --zone 値。
文字列

VM が指定されたゾーンで実行されていることを確認します。

assertion.submods.gce.zone == "us-central1-a"

assertion.submods.nvidia_gpu.cc_feature

連携するサービス:

列挙

NVIDIA GPU でサポートされている Confidential Computing 機能を検証します。Confidential Space では単一 GPU パススルー(SPT)モードのみがサポートされているため、値は常に SPT になります。

NVIDIA Confidential Computing のサポートの詳細については、 NVIDIA Trusted Computing Solutions(PDF)をご覧ください。

assertion.submods.nvidia_gpu.cc_feature == "SPT"

assertion.submods.nvidia_gpu.cc_mode

連携するサービス:

列挙

NVIDIA の Confidential Computing ドライバのステータスを確認します。有効な値は次のとおりです。

  • OFF: NVIDIA Confidential Computing 機能はアクティブになっていません。
  • ON: NVIDIA H100 のハードウェア、ファームウェア、ソフトウェアで、Confidential Computing 機能が完全に有効になっています。
  • DEVTOOLS: GPU は、ON モードのワークフローと一致する部分的な機密コンピューティング モードですが、セキュリティ保護が無効になっています。
assertion.submods.nvidia_gpu.cc_mode == "ON"

assertion.submods.nvidia_gpu.gpus

連携するサービス:

オブジェクトの配列

証明された各 NVIDIA GPU のクレームを検証します。Confidential Space は単一の GPU クレームのみをサポートします。

gpus オブジェクトは次のようになります。

{
  "hwmodel": "GCP_NVIDIA_H100",
  "ueid": "490457405999046854973671575630853621547794591064",
  "l4_serial_number": "1216669666319372030078",
  "driver_version": "570.00",
  "vbios_version": "96.00.9F.00.01"
}

次のコードは、最初の GPU ハードウェア モデルが Google Cloudで実行されている NVIDIA H100 であることを確認します。

assertion.submods.nvidia_gpu.gpus[0].hwmodel == "GCP_NVIDIA_H100"

次のコードは、構成証明クレームに GPU 関連のクレームがあることを確認します。

has(assertion.submods.nvidia_gpu.gpus)