Confidential Space は、複数の関係者からのセンシティブ データを操作するための隔離された環境を提供します。これにより、データの所有者は機密性を保持できます。センシティブ データには、個人を特定できる情報(PII)、保護医療情報(PHI)、知的財産権、暗号シークレット、機械学習(ML)モデル、大規模言語モデル(LLM)とのやり取りなどが含まれます。
Confidential Space を使用して、元の所有者と相互に合意したワークロードにのみ表示されるセンシティブ データを操作できます。また、Confidential Space 環境のオペレーターや所有者は処理中のデータにアクセスできないため、エンドユーザーに強力なデータ プライバシーを提供するために使用することもできます。
Confidential Space は、承認されたワークロードにのみシークレットをリリースするために使用できる高信頼実行環境(TEE)です。構成証明プロセスと強化された OS イメージにより、ワークロードとそれによって処理されるデータをオペレーターから保護します。
Confidential Space のユースケースとセキュリティ モデルの詳細については、 Confidential Space のセキュリティの概要をご覧ください。
Confidential Space のコンポーネント
Confidential Space システムには次の 3 つのコア コンポーネントがあります。
ワークロード: 保護されたリソースを処理するコードを含むコンテナ化されたイメージ。これは、 Container-Optimized OS に基づく 強化された OS である Confidential Space イメージ上で実行されます。 これは、ハードウェア分離とリモート構成証明機能を提供する Confidential VM で実行されます。通常、ワークロードは保護されたリソースとは別のプロジェクトに配置されます。
構成証明サービス: OpenID Connect (OIDC)トークンの形式で 構成証明証拠を返すリモート構成証明検証ツール。認証トークンにはワークロードの識別属性が含まれています。 構成証明サービスが実行されるのは、ワークロードが実行されているリージョンと同一です。
保護されたリソース: 認証および認可システムによって保護されているマネージド リソース。リソースが Google Cloudにある場合は、 Cloud Key Management Service(Cloud KMS) 鍵や Cloud Storage バケットなどのマネージド クラウド リソースにできます。リソースが Google Cloud にない場合( オンプレミス環境や別のクラウドなど)は、 任意のリソースにできます。
Confidential Space のロール
Confidential Space システムのコンポーネントは、次の 3 つの異なるロールを持つユーザーによって管理されます。
データ共同編集者: ワークロードによって操作される保護された リソースを所有するユーザーまたは組織。データ共同編集者は、自身のデータにアクセスして、そのデータに対する権限を設定できます。また、ワークロードの出力に応じて、そのデータに基づいて結果にアクセスできます。
データ共同編集者は、互いのデータにアクセスしたり、ワークロード コードを変更したりすることはできません。
データ共同編集者のロールの詳細については、 機密リソースへのアクセス権を作成して付与する をご覧ください。
ワークロード作成者: 機密データにアクセスして 処理するアプリケーションを作成するユーザー。たとえば、Docker を使用してコンテナ化された イメージにアプリケーションを追加し、その イメージを Artifact Registry などのリポジトリにアップロードします。
ワークロード作成者は、データや結果にアクセスできず、アクセスを制御することもできません。
ワークロード作成者のロールの詳細については、 ワークロードを作成してカスタマイズする をご覧ください。
ワークロード オペレーター: ワークロードを実行するユーザー。通常、ワークロード オペレーターには、ワークロードを実行するプロジェクトに対する完全な管理者権限が付与されています。たとえば、プロジェクト内のリソース( Compute Engine インスタンス、ディスク、ネットワーク ルールなど)を管理し、それらを操作する Google Cloud API を使用できます。
ワークロード オペレーターはデータにアクセスできず、アクセスを制御することもできません。ワークロード コードや実行環境に影響を及ぼすことも、変更を加えることもできません。
ワークロード オペレーターのロールの詳細については、ワークロードをデプロイするをご覧ください 。
1 人のユーザーがこれらのロールを 1 つ以上担当できます。最高のセキュリティを実現するため、Confidential Space は、データ共同編集者、ワークロード作成者、ワークロード オペレーターが分離され、当事者同士が相互に信頼されていない信頼モデルをサポートしています。必要な結果を得るには、すべてのロールが相互に連携する必要があります。
Confidential Space のフローの例
Confidential Space は、複数の Google Cloud サービスを使用して、個人 情報を機密に操作できるようにします。一般に、Confidential Space の設定は次のプロセスに似ています。
複数のデータ共同編集者が、多くの場合、異なる組織の独自の 分離された Google Cloud プロジェクトに暗号化された機密データを保存します。互いに、または外部の当事者にデータを公開することなく、そのデータを比較して処理する必要があります。暗号化されたデータは、 Cloud Storage、 BigQuery、または別のサービスに保存できます。
データ共同編集者は、テスト ワークロードが操作する機密でないモックデータを作成します。このデータは、別のファイルにしたり、別の Cloud Storage バケットなどの別の場所に保存したりできます。
データ共同編集者は、 Workload Identity プール(WIP)を作成します。 後で、ワークロード オペレーターの分離されたプロジェクトで実行されているワークロードは、その WIP を使用して共同編集者の機密データにアクセスできます。
ワークロード作成者は、機密データを処理するコードを作成します。データ共同編集者とワークロード オペレーターとは別のプロジェクトで、Docker を使用してコンテナ化されたイメージをビルドし、Artifact Registryにアップロードします。
ワークロード オペレーターは、データ共同編集者の暗号化された機密データが保存されている場所への読み取りアクセス権と、復号されたデータの操作結果を出力する場所(Cloud Storage バケットなど)への書き込みアクセス権を持つ、分離されたプロジェクトにサービス アカウントを作成します。後で、このサービス アカウントは、ワークロードを実行する Confidential VM にアタッチされます。
データ共同編集者は、 プロバイダを Workload Identity プールに追加します。使用する 構成証明サービス、 ログに監査証跡を作成するための属性マッピング 、および 属性条件などの詳細をプロバイダに追加します。 これらの詳細は、Confidential Space イメージ、ワークロード コンテナ、ワークロード VM インスタンスによって行われた アサーションを検証します。ワークロードがこの検証に合格すると、機密データにアクセスして復号化できます。
ワークロード オペレーターのプロジェクトで Confidential VM インスタンスを起動して、機密でないデータでワークロードをテストします。VM は、コンテナ化されたワークロードを読み込む Confidential Space イメージのデバッグ バージョンに基づいています。
VM の構成証明が検証され、ワークロードがデータ共同編集者の条件を満たすと、VM にアタッチされたサービス アカウントは機密データにアクセスして処理し、結果を出力できます。
モニタリングとデバッグが 完了したら、本番環境で使用できるようにワークロードを更新します。データ共同編集者は、必要に応じて Workload Identity プロバイダを更新してロックダウンします。また、最初に機密でないデータで本番環境ワークロードをテストすることもできます。
すべての関係者が本番環境ワークロードに署名すると、機密データの処理を開始できます。
要件
Confidential Space が機能するには、Confidential VM が必要です。Confidential VM インスタンスは、Confidential Computing テクノロジーとして AMD SEV、Intel TDX、または NVIDIA Confidential Computing を使用する必要があります。ハードウェア構成オプションと、Confidential VM インスタンスを作成できるロケーションについては、 サポートされている構成をご覧ください。
次のステップ
Prompt Encryption SDK を使用して、TEE で LLM を提供する。手順については、 Codelab を ご覧ください。