このページでは、Confidential GKE Node で実行される Google Kubernetes Engine(GKE)Standard ワークロードで仮想トラステッド プラットフォーム モジュール(vTPM)を使用する方法について説明します。vTPM は、リモート認証、シークレット シーリング、乱数の生成などの他のセキュリティ機能とともに、プラットフォームの完全性を提供します。このページでは、デバイス プラグインをインストールして、vTPM を GKE アプリケーションに公開する方法について説明します。
このページは、GKE アプリケーションの vTPM のセキュリティ機能にリモートからアクセスするセキュリティ エンジニアを対象としています。
このページを読む前に、次の機能についてよく理解しておいてください。
始める前に
始める前に、次の作業が完了していることを確認してください。
- Google Kubernetes Engine API を有効にする。 Google Kubernetes Engine API の有効化
- このタスクに Google Cloud CLI を使用する場合は、gcloud CLI をインストールして初期化する。すでに gcloud CLI をインストールしている場合は、
gcloud components update
を実行して最新のバージョンを取得する。
制限事項
Confidential Computing テクノロジーとして AMD SEV を使用する Confidential GKE Node でのみ、vTPM を GKE アプリケーションに表示できます。Intel TDX と AMD SEV-SNP はサポートされていません。
対象
Confidential GKE Node は、次の条件で使用できます。
N2D インスタンスまたは C2D インスタンスを使用できるゾーンとリージョン。
containerd を含む Container-Optimized OS を使用するノードイメージ(
cos_containerd
)。
Confidential GKE Node クラスタを作成する
gcloud CLI または Trusted Cloud コンソールを使用して、Confidential GKE Node が有効になっている新しいクラスタを作成できます。クラスタレベルで Confidential GKE Node を有効にすると、クラスタ内のすべてのノードが Confidential VMs になります。
gcloud
AMD SEV を Confidential Computing テクノロジーとして使用する新しいクラスタを作成します。
gcloud container clusters create CLUSTER_NAME \
--machine-type=MACHINE_TYPE \
--confidential-node-type=SEV
次のように置き換えます。
- CLUSTER_NAME: 新しいクラスタの名前。
- MACHINE_TYPE: クラスタのデフォルト ノードプールのマシンタイプ。N2D マシンタイプまたは C2D マシンタイプである必要があります。
コンソール
- Trusted Cloud コンソールで、[Kubernetes クラスタを作成する] ページに移動します。
- ナビゲーション メニューの [クラスタ] で [セキュリティ] をクリックします。
- [Confidential GKE Node を有効にする] を選択します。
- 確認ダイアログで [変更を適用] をクリックします。
- [タイプ] メニューで [AMD SEV] を選択します。
- クラスタの他のセクションを構成するには、リージョン クラスタの作成の手順に沿って操作します。
- [作成] をクリックします。
Confidential GKE Node を使用してクラスタを作成すると、このクラスタ内で作成されたノードプールは機密ノードしか使用できません。Confidential GKE Node が有効になっているクラスタには、通常のノードプールを作成できません。また、クラスタレベルで Confidential GKE Node を有効にすると、個々のノードプールで Confidential GKE Node を無効にできません。
Confidential GKE Node ワークロードで vTPM を実行する
Confidential GKE Node ワークロードで vTPM を実行するために、Google は Confidential GKE Node クラスタに適用する DaemonSet を提供しています。次のコマンドを実行して DaemonSet をデプロイします。
kubectl create -f https://raw.githubusercontent.com/google/cc-device-plugin/main/manifests/cc-device-plugin.yaml
vTPM を認識するように Pod を構成する
リソース上限を使用して、Pod が vTPM を認識するように構成します。次の Key-Value ペアを使用して、Pod 仕様でリソース制限を 1 に指定します。
- キー:
google.com/cc
- 値: 1
vTPM を使用する Pod 仕様の例:
apiVersion: v1
kind: Pod
metadata:
name: my-vtpm-pod
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 8080
name: http
resources:
limits:
google.com/cc: 1