データ コラボレーション パートナーは、ワークロードが機密データにアクセスできるように、次のリソースを設定する必要があります。
暗号化されたデータ自体。 Google Cloudに保存されます。
そのデータを復号できるサービス アカウント。
Workload Identity プールを使用した構成証明の検証(WIP)。ワークロードが WIP によって承認されると、データ コラボレーターのプロジェクトのサービス アカウントの権限を借用して機密データを取得できます。
また、データ コラボレーション パートナーは、Confidential Space ワークロードの結果を保存する場所と、表示されるデータが一意か共有かを指定する必要があります。たとえば、同じ結果を、各データ コラボレーターに属する複数の Cloud Storage バケットに出力できます。
データを保存する
機密データをホストするために、データを保存する任意の Google Cloud サービスを使用できます。たとえば、次のいずれかのサービスを使用できます。
このデータは、組み込み機能を使用するか、Cloud Key Management Service(Cloud KMS)などの機能を使用して、保存時に暗号化する必要があります。
機密データを復号するサービス アカウントを作成する
サービス アカウントを使用して、機密データを Confidential Space ワークロードで使用できるようにし、そのデータへの人間のアクセスを制限します。
たとえば、Cloud Storage 内の機密ファイルを Cloud KMS で暗号化し、そのデータと復号鍵にアクセスする権限を持つサービス アカウントを作成します。
次に、そのサービス アカウントを WIP に接続します。別のプロジェクトに基づく承認済みの Confidential Space ワークロードは、その WIP を使用して、データを復号するサービス アカウントの権限を借用し、復号されたデータを取得して処理できます。
サービス アカウントは機密データの復号と処理の両方に使用されるため、機密データの可視性はオーナーに制限されます。ワークロードは Confidential VM で動作するため、ハードウェアベースのメモリ暗号化により、使用中のデータの機密性が確保されます。また、本番環境の Confidential Space イメージを使用するワークロード VM では SSH が無効になっているため、VM の実行中に誰も VM にアクセスできません。
例については、最初の Confidential Space 環境を作成するをご覧ください。
構成証明の検証用の WIP とプロバイダを作成する
信頼できないワークロード オペレーターからデータを保護するため、Confidential Space はワークロード イメージまたはその TEE の変更を検出する証明書プロセスを実装します。このプロセスは、Shielded VM のメジャード ブートと拡張ランタイム測定に基づいており、仮想トラステッド プラットフォーム モジュール(vTPM)デバイスの保護された、拡張のみレジスタでブート シーケンスの測定値をキャプチャします。
Confidential Space 証明書サービスは、WIP で検証できる形式の vTPM 証明書を含む OpenID Connect(OIDC)トークンを生成します。WIP は、プロバイダに属性条件として追加されたポリシーと照合します。これらのトークンは Google によって署名され、1 時間持続し、自動的に更新されます。
WIP がワークロードを承認すると、ワークロードはプロジェクト内のサービス アカウントの権限を借用して、機密データを復号して取得できます。
WIP とプロバイダを設定するには、次の手順を完了します。
復号サービス アカウントを
iam.workloadIdentityUser
ロールで WIP に接続します。次の詳細を使用して OIDC プロバイダを作成します。
発行者 URI が
https://confidentialcomputing.googleapis.com/
の場合。許可するオーディエンス
https://sts.googleapis.com
。値が
assertion.sub
のgoogle.subject
のプロバイダ属性マッピング。ワークロードの構成証明の検証に使用される属性条件。使用可能なオプションについては、構成証明ポリシーを作成するをご覧ください。
構成証明ポリシーを作成する
WIP の作成の一環として、属性条件を追加します。これは、ワークロードがデータにアクセスするために満たす必要がある条件です。Confidential Space の場合、これらの属性条件が構成証明ポリシーを形成します。
ポリシーは Common Expression Language(CEL)で記述され、&&
演算子で連結できる一連の記述で構成されます。
gcloud CLI を使用して Workload Identity プールにプロバイダを追加する例を次に示します。ポリシーを定義する attribute-condition
オプションも指定しています。
gcloud iam workload-identity-pools providers create-oidc attestation-verifier \
--location=global \
--workload-identity-pool=user-pool-name \
--issuer-uri="https://confidentialcomputing.googleapis.com/" \
--allowed-audiences="https://sts.googleapis.com" \
--attribute-mapping="google.subject=assertion.sub" \
--attribute-condition="assertion.submods.container.image_digest =='sha256:837ccb607e312b170fac7383d7ccfd61fa5072793f19a25e75fbacb56539b86b' \
&& 'service-account@my-project.iam.gserviceaccount.com' in assertion.google_service_accounts \
&& assertion.swname == 'CONFIDENTIAL_SPACE' \
&& 'STABLE' in assertion.submods.confidential_space.support_attributes"
この例では、Workload Identity プールに接続されているサービス アカウントの権限を借用しようとする外部 ID は、次の詳細を証明し、一致させる必要があります。
ワークロード コンテナのイメージ ダイジェスト
ワークロード VM に接続されているサービス アカウントのアドレス
この
CONFIDENTIAL_SPACE
は、VM 上で実行されるソフトウェアであり、すべてのセキュリティ保証が組み込まれています。本番環境の Confidential Space イメージのサポート属性
構成証明アサーション
証明書ポリシーの作成に使用できるアサーションの詳細は、次の表のとおりです。Confidential Space イメージ、ワークロード コンテナ、VM によって行われたアサーションを検証できます。
画像アサーション
アサーション | タイプ | 説明 |
---|---|---|
関連する項目:
|
定義された文字列 |
Confidential Space イメージがデバッグ バージョンまたは本番環境バージョンであることを確認します。 有効な値は次のとおりです。
例次のコードは、Confidential Space イメージのデバッグ バージョンが使用されていることを確認します。
次のコードは、本番環境バージョンの Confidential Space イメージが使用されていることを確認します。
|
assertion.submods.confidential_space.support_attributes |
文字列配列 |
TEE のセキュリティ バージョンが本番環境の Confidential Space イメージであることを確認します。Confidential Space のデバッグ イメージにはサポート属性が設定されていません。 サポート属性は次の 3 つです。
例次のコードは、安定版の Confidential Space イメージが使用されていることを確認します。
|
assertion.swname |
定義された文字列 |
証明を行うエンティティで実行されているソフトウェアを確認します。値は常に 例
|
assertion.swversion |
文字列配列 |
Confidential Space イメージのソフトウェア バージョンを確認します。代わりに 例
|
コンテナの断言
アサーション | タイプ | 説明 |
---|---|---|
関連する項目:
|
文字列配列 |
ワークロード イメージで使用されている CMD コマンドとパラメータを確認します。 例次のコードは、ワークロード イメージの CMD がオーバーライドされていないことを確認します。
次のコードは、CMD オーバーライドの唯一のコンテンツが
|
関連する項目:
|
JSON オブジェクト |
環境変数とそれらの値がコンテナに明示的に渡されていることを確認します。 例次のコードは、環境変数
|
関連する項目:
|
文字列 |
ワークロード オペレーターがコンテナ内の環境変数を上書きしたかどうかを確認します。 例次のコードは、ワークロード オペレーターが
次のコードは、ワークロード オペレーターが環境変数を上書きしていないことを確認します。
|
assertion.submods.container.image_digest |
文字列 |
ワークロード コンテナのイメージ ダイジェストを検証します。この条件を指定すると、複数の関係者がデータにアクセスできる承認済みワークロードについて合意できます。 例
|
assertion.submods.container.image_id |
文字列 |
ワークロード コンテナのイメージ ID を確認します。 例
|
関連する項目:
|
文字列 |
Confidential Space イメージの上に実行されているワークロード コンテナの場所を確認します。 例
|
関連する項目:
|
JSON オブジェクト |
イメージに特定の署名が付加されているか、公開鍵と署名アルゴリズムによって署名されていることを検証します。この条件を指定すると、複数の関係者が、データにアクセスできる承認済みワークロードについて合意できます。 アサーションには次の要素を含めることができます。
例
|
関連する項目:
|
定義された文字列 |
ワークロードが停止した場合のコンテナ ランチャーの再起動ポリシーを確認します。 有効な値は次のとおりです。
例
|
VM アサーション
アサーション | タイプ | 説明 |
---|---|---|
関連する項目:
|
文字列配列 |
指定したサービス アカウントが、ワークロードを実行している VM に接続されているか、VM メタデータで 例
|
assertion.hwmodel |
文字列 |
基盤となる Confidential Computing テクノロジーを検証します。サポートされているプラットフォームは次のとおりです。
例
|
関連する項目:
|
ブール値 |
構成証明を行うエンティティのモニタリング状態を確認します。 例
|
assertion.submods.gce.instance_id |
文字列 |
VM インスタンス ID を確認します。 例
|
assertion.submods.gce.instance_name |
文字列 |
VM インスタンスの名前を確認します。 例
|
assertion.submods.gce.project_id |
文字列 |
VM が指定したプロジェクト ID で Google Cloud プロジェクトを実行していることを確認します。 例
|
assertion.submods.gce.project_number |
文字列 |
指定したプロジェクト番号の Google Cloud プロジェクトで VM が実行されていることを確認します。 例
|
関連する項目:
|
文字列 |
VM が指定されたゾーンで実行されていることを確認します。 例
|