構成証明アサーション


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

証明書ポリシーの作成に使用できるアサーションの詳細は、次の表のとおりです。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 文字列配列

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

サポート属性は次の 3 つです。

  • LATEST: これは最新バージョンのイメージであり、サポートされています。LATEST イメージも STABLEUSABLE です。
  • STABLE: このバージョンのイメージはサポートされ、脆弱性のモニタリングが行われます。STABLE イメージも USABLE です。
  • USABLE: この属性のみを持つイメージはサポートされず、脆弱性のモニタリングは行われません。ご自身の責任で操作するようお願いいたします。

次のコードは、安定版の 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

関連する項目:

文字列配列

ワークロード イメージで使用されている 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: 署名付きコンテナに関連付けられ、 シンプルな署名形式に従うペイロードの署名。
  • 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 ダイジェストを使用))
assertion.swname == 'CONFIDENTIAL_SPACE' && ['ECDSA_P256_SHA256:PUBLIC_KEY_FINGERPRINT'].exists(fingerprint, fingerprint in assertion.submods.container.image_signatures.map(sig, sig.signature_algorithm+':'+sig.key_id)) && 'serviceaccount.iam.gserviceaccount.com' in assertion.google_service_accounts"

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 テクノロジーを検証します。サポートされているプラットフォームは次のとおりです。

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 文字列

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

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

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

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

assertion.submods.gce.zone

関連する項目:

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

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

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