1. 概要
この Codelab は、Confidential Space Codelab を基にしています。署名付きコンテナ イメージのサポート。Workload Identity プール(WIP)ポリシーでイメージ ダイジェストを指定する代わりに、証明書付き公開鍵を使用してコンテナを認証するオプションが提供されます。
Confidential Space での署名付きコンテナ イメージのサポートに関する変更点:
ユーザビリティの向上: 署名付きコンテナ イメージ機能の導入により、イメージを承認するコラボレーター/監査担当者に対して、ワークロード イメージ ダイジェスト アプローチからコンテナ署名アプローチに移行できるようになりました。
- イメージ ダイジェストを直接使用する場合、リソース オーナーは新しいイメージを承認するたびに、イメージ ダイジェストでポリシーを更新する必要があります。イメージ署名を使用すると、ポリシーには公開鍵のフィンガープリントが含まれます。対応する秘密鍵はコラボレーター/監査者が所有し、監査対象のイメージの署名に使用されます。
- 一部のセキュリティ モデルでは、新しいイメージ ダイジェスト値のリストを更新するよりも、信頼できるイメージ署名鍵を参照する方が便利です。
セキュリティの回帰なし: このコンテナ署名アプローチでは、信頼境界が同じであるため、以前のイメージ ダイジェスト アプローチよりもセキュリティの回帰が発生することはありません。コンテナ署名アプローチでは、リソース オーナーは WIP ポリシーで信頼できる公開鍵のフィンガープリントを指定して検証鍵を承認し、承認チェックは Attestation Verifier Service と WIP によって実行されます。Attestation Verifier Service は、署名が実行中のワークロードに関連付けられていることを検証し、WIP ポリシーは、サービスによってアサートされた公開鍵がポリシーによって承認されていることをチェックします。
強力なセキュリティ: コンテナ イメージの署名を使用すると、イメージ署名者に一定の信頼を委任できます。証明書ポリシーで信頼できる署名者の公開鍵フィンガープリントを指定することで、リソース オーナーは、どのコンテナ イメージがポリシーを満たしているかについて署名者が推奨事項を作成することを承認します。Attestation Verifier Service は、署名が実行中のワークロードに関連付けられていることを検証します。ポリシーは、署名を作成した公開鍵がポリシーによって承認されていることを確認します。これにより、イメージ署名が提供する間接参照のレイヤが追加され、Confidential Space の強力なセキュリティ保証が維持されます。
これらのアプローチの唯一の違いは、後者のアプローチでは、ワークロード イメージが署名鍵で承認される間接参照の追加レイヤが使用されることです。信頼境界は変わらないため、これにより新たなセキュリティの脆弱性が生じることはありません。
学習内容
この Codelab では、コンテナ イメージの署名を使用して保護されたリソースへのアクセスを承認する方法について説明します。
cosignを使用して監査済みのコンテナ イメージに署名する方法- 署名の検出と保存のためにコンテナ イメージの署名を OCI レジストリにアップロードする方法
- Confidential Space の実行に必要なクラウド リソースを構成する方法
- 署名付きコンテナ イメージのサポートを使用して Confidential Space でワークロードを実行する方法
この Codelab では、Confidential Space を使用して、Google Compute Engine で実行されている信頼できる鍵で署名されたコンテナ イメージをリモートで証明する方法について説明します。
必要なもの
- Confidential Space Codelab を完了する
- Google Cloud Platform プロジェクト
- Chrome や Firefox などのブラウザ
- Linux の標準的なテキスト エディタ(Vim、Emacs、nano など)の使用経験
- Sigstore cosign に関する基本的な知識
- Google Compute Engine(codelab)、Confidential VM、コンテナ、リモート リポジトリに関する基本的な知識
- Cloud KMS の基本的な知識(codelab)
- サービス アカウント、Workload Identity 連携、属性条件に関する基本的な知識。
- Artifact Registry の基本的な知識
- デジタル署名の基本的な知識
署名付きコンテナ イメージを使用する Confidential Space に関連するロール
この Codelab では、Primus Bank が監査担当者とリソース オーナーになり、次のことを行います。
- サンプルデータを使用して必要なリソースを設定します。
- ワークロード コードの監査。
cosignを使用してワークロード イメージに署名します。- 署名をリポジトリにアップロードする。
- 顧客データを保護するための WIP ポリシーの構成。
Secundus Bank はワークロードの作成者とオペレーターであり、次の責任を負います。
- 結果を保存するために必要なリソースを設定します。
- ワークロード コードの作成。
- ワークロード イメージを公開する。
- 署名付きコンテナ イメージのサポートを使用して Confidential Space でワークロードを実行する。
Secundus Bank は、Primus Bank が所有するクラウド ストレージ バケットに保存されている顧客データをクエリするワークロードを開発して公開します。Primus Bank は、ワークロードを監査し、コンテナ イメージに署名し、承認されたワークロードがデータにアクセスできるように WIP ポリシーを構成します。このワークロード実行の結果は、Secundus 銀行が所有する Cloud Storage バケットに保存されます。
Confidential Space の設定に関与するリソース
この Codelab では、GCP プロジェクトに適した値に設定する必要がある変数をいくつか参照しています。この Codelab のコマンドは、これらの変数が設定されていることを前提としています。(たとえば、export PRIMUS_INPUT_STORAGE_BUCKET='my-input-bucket' を使用して、Primus 銀行の入力ストレージ バケットの名前を設定できます)。resource-names の変数が設定されていない場合は、GCP プロジェクト ID に基づいて生成されます。
Primus プロジェクトで以下を構成します。
$PRIMUS_INPUT_STORAGE_BUCKET: 顧客データファイルを格納するバケット。$PRIMUS_WORKLOAD_IDENTITY_POOL: クレームを検証する Workload Identity プール(WIP)。$PRIMUS_WIP_PROVIDER: 構成証明検証サービスによって署名されたトークンに使用する認可条件を含む Workload Identity プール プロバイダ。$PRIMUS_SERVICEACCOUNT:$PRIMUS_WORKLOAD_IDENTITY_POOLが保護されたリソースへのアクセスに使用するサービス アカウント。このステップでは、$PRIMUS_INPUT_STORAGE_BUCKETバケットに保存されている顧客データを表示する権限があります。$PRIMUS_ENC_KEY:$PRIMUS_INPUT_STORAGE_BUCKETに保存されているデータの暗号化に使用される KMS 鍵。
この Codelab で新しく使用するリソース:
$PRIMUS_COSIGN_REPOSITORY: ワークロード イメージの署名を保存する Artifact Registry。$PRIMUS_SIGNING_KEY: 監査担当者/データ共同編集者(この場合は primus bank など)がワークロード イメージの署名に使用する KMS 鍵。
Secundus プロジェクトで次の項目を構成します。
$SECUNDUS_ARTIFACT_REGISTRY: ワークロード Docker イメージが push される Artifact Registry。$WORKLOAD_IMAGE_NAME: ワークロード Docker イメージの名前。$WORKLOAD_IMAGE_TAG: ワークロード Docker イメージのタグ。$WORKLOAD_SERVICEACCOUNT: ワークロードを実行する Confidential VM にアクセスする権限を持つサービス アカウント。$SECUNDUS_RESULT_BUCKET: ワークロードの結果を保存するバケット。
その他のリソース:
primus_customer_list.csvには顧客データが含まれます。このデータを$PRIMUS_INPUT_STORAGE_BUCKETにアップロードし、このデータをクエリするワークロードを作成します。
既存のワークフロー
Confidential Space でワークロードを実行すると、構成されたリソースを使用して次のプロセスが行われます。
- ワークロードが WIP から
$PRIMUS_SERVICEACCOUNTの汎用 Google アクセス トークンをリクエストします。ワークロードと環境のクレームを含む証明書検証サービス トークンを提供します。 - 構成証明検証ツール サービス トークンのワークロード測定値のクレームが WIP の属性条件と一致する場合、
$PRIMUS_SERVICEACCOUNT.のアクセス トークンが返されます。 - ワークロードは、
$PRIMUS_SERVICEACCOUNTに関連付けられたサービス アカウント アクセス トークンを使用して、$PRIMUS_INPUT_STORAGE_BUCKETバケット内の顧客データにアクセスします。 - ワークロードはそのデータに対してオペレーションを実行します。
- ワークロードは
$WORKLOAD_SERVICEACCOUNTサービス アカウントを使用して、そのオペレーションの結果を$SECUNDUS_RESULT_STORAGE_BUCKETバケットに書き込みます。
署名付きコンテナをサポートする新しいワークフロー
署名付きコンテナのサポートは、以下に示すように既存のワークフローに統合されます。署名付きコンテナ イメージのサポートを使用して Confidential Space でワークロードを実行すると、構成されたリソースを使用して次のプロセスが実行されます。
- Confidential Space は、現在実行中のワークロード イメージに関連するコンテナ署名を検出し、証明書検証ツールに送信します。証明書検証ツールは署名を検証し、有効な署名を証明書クレームに含めます。
- ワークロードが WIP から
$PRIMUS_SERVICEACCOUNTの汎用 Google アクセス トークンをリクエストします。ワークロードと環境のクレームを含む証明書検証サービス トークンを提供します。 - 構成証明検証ツール サービスのトークン内のコンテナ署名クレームが WIP の属性条件と一致する場合、
$PRIMUS_SERVICEACCOUNTのアクセス トークンを返します。 - ワークロードは、
$PRIMUS_SERVICEACCOUNTに関連付けられたサービス アカウント アクセス トークンを使用して、$PRIMUS_INPUT_STORAGE_BUCKETバケット内の顧客データにアクセスします。 - ワークロードはそのデータに対してオペレーションを実行します。
- ワークロードは
$WORKLOAD_SERVICEACCOUNTを使用して、そのオペレーションの結果を$SECUNDUS_RESULT_STORAGE_BUCKETバケットに書き込みます。
2. Cloud リソースを設定する
Confidential Space の設定の一環として、まず Primus 銀行と Secundus 銀行の GCP プロジェクトで必要なクラウド リソースを作成します。この Codelab で新しく追加されたリソースは次のとおりです。
Primus プロジェクトの場合:
- コードの監査後に Secundus ワークロードの署名に使用される KMS 署名鍵。
- Cosign 署名を保存する Artifact Registry リポジトリ。
Secundus プロジェクトには新しいリソースはありません。これらのリソースを設定したら、必要なロールと権限を持つワークロードのサービス アカウントを作成します。次に、ワークロード イメージを作成し、監査役である Primus Bank がワークロード イメージに署名します。ワークロードはデータ コラボレーター(この Codelab では Primus Bank)によって承認され、ワークロード オペレーター(この場合は Secundus Bank)がワークロードを実行します。
Confidential Space の設定の一環として、Primus と Secundus の GCP プロジェクトに必要なクラウド リソースを作成します。
始める前に
- 次のコマンドを使用して このリポジトリのクローンを作成し、この Codelab の一部として使用される必要なスクリプトを取得します。
git clone https://github.com/GoogleCloudPlatform/confidential-space
- この Codelab のディレクトリを変更します。
cd confidential-space/codelabs/signed_container_codelab/scripts
- 以下に示すように、必要なプロジェクトが設定されていることを確認します。
export PRIMUS_PROJECT_ID=<GCP project id of primus bank>
export SECUNDUS_PROJECT_ID=<GCP project id of secundus bank>
- このコマンドを使用して、上記のリソース名の変数を設定します。これらの変数(
export PRIMUS_INPUT_STORAGE_BUCKET='my-input-bucket'など)を使用して、リソース名をオーバーライドできます。 - 次のスクリプトを実行して、残りの変数名をリソース名のプロジェクト ID に基づく値に設定します。
source config_env.sh
- こちらの手順に沿って cosign をインストールします。
Primus 銀行のリソースを設定する
このステップでは、Primus Bank に必要なクラウド リソースを設定します。次のスクリプトを実行して、Primus Bank のリソースを設定します。これらの手順の一環として、次のリソースが作成されます。
- Primus 銀行の暗号化された顧客データファイルを保存する Cloud Storage バケット(
$PRIMUS_INPUT_STORAGE_BUCKET)。 - KMS の暗号鍵(
$PRIMUS_ENC_KEY)とキーリング($PRIMUS_ENC_KEYRING)を使用して、Primus 銀行のデータファイルを暗号化します。 - Workload Identity プール(
$PRIMUS_WORKLOAD_IDENTITY_POOL)。プロバイダで構成された属性条件に基づいてクレームを検証します。 - 次の IAM アクセス権を持つ、上記の Workload Identity プール(
$PRIMUS_WORKLOAD_IDENTITY_POOL)に接続されたサービス アカウント($PRIMUS_SERVICEACCOUNT): roles/cloudkms.cryptoKeyDecrypter: KMS 鍵を使用してデータを復号します。objectViewer: クラウド ストレージ バケットからデータを読み取ります。- このサービス アカウントを Workload Identity プールに接続するための
roles/iam.workloadIdentityUser。
./setup_primus_bank_resources.sh
Secundus 銀行リソースを設定する
このステップでは、Secundus 銀行に必要なクラウド リソースを設定します。次のスクリプトを実行して、Secundus 銀行のリソースを設定します。この手順の一環として、次のリソースが作成されます。
- Secundus 銀行によるワークロード実行の結果を保存する Cloud Storage バケット(
$SECUNDUS_RESULT_STORAGE_BUCKET)。
./setup_secundus_bank_resources.sh
3. ワークロードを作成して署名する
ワークロード サービス アカウントを作成する
次に、必要なロールと権限を持つワークロードのサービス アカウントを作成します。次のスクリプトを実行して、Secundus 銀行プロジェクトにワークロード サービス アカウントを作成します。このサービス アカウントは、ワークロードを実行する VM によって使用されます。
- このワークロード サービス アカウント(
$WORKLOAD_SERVICEACCOUNT)には次のロールが付与されます。 confidentialcomputing.workloadUserで証明書トークンを取得する- Cloud Logging にログを書き込むための
logging.logWriter。 $PRIMUS_INPUT_STORAGE_BUCKETCloud Storage バケットからデータを読み取るためのobjectViewer。objectAdmin: ワークロードの結果を$SECUNDUS_RESULT_STORAGE_BUCKETCloud Storage バケットに書き込みます。
./create_workload_serviceaccount.sh
ワークロードを作成する
このステップでは、ワークロード Docker イメージを作成します。この Codelab で使用するワークロードは、シンプルな CLI ベースの Go アプリです。このアプリは、引数で指定された地理的位置にいる顧客(Primus 銀行の顧客データから)をカウントします。次の スクリプトを実行して、次の手順が実行されるワークロードを作成します。
- Secundus 銀行が所有する Artifact Registry(
$SECUNDUS_ARTIFACT_REGISTRY)を作成します。 - 必要なリソース名でワークロード コードを更新します。この Codelab で使用するワークロード コードはこちらです。
- Go バイナリをビルドし、ワークロード コードの Docker イメージをビルドするための Dockerfile を作成します。この Codelab で使用する Dockerfile はこちらです。
- Secundus 銀行が所有する Artifact Registry(
$SECUNDUS_ARTIFACT_REGISTRY)に Docker イメージをビルドして公開します。 $SECUNDUS_ARTIFACT_REGISTRYに対する$WORKLOAD_SERVICEACCOUNTの読み取り権限を付与します。これは、ワークロード コンテナが Artifact Registry からワークロード Docker イメージを pull するために必要です。
./create_workload.sh
ワークロードに署名する
ここでは、Cosign を使用してワークロード イメージに署名します。Cosign はデフォルトで、署名するイメージと同じリポジトリに署名を保存します。署名に別のリポジトリを指定するには、COSIGN_REPOSITORY 環境変数を設定します。
ここでは、例として Artifact Registry を使用します。必要に応じて、Docker Hub や AWS CodeArtifact などの他の OCI ベースのレジストリを選択することもできます。
- Artifact Registry Docker リポジトリを作成します。
gcloud config set project $PRIMUS_PROJECT_ID
gcloud artifacts repositories create $PRIMUS_COSIGN_REPOSITORY \
--repository-format=docker --location=${PRIMUS_PROJECT_REPOSITORY_REGION}
- ワークロード イメージの署名用に、KMS にキーリングと鍵を作成します。
gcloud config set project $PRIMUS_PROJECT_ID
gcloud kms keyrings create $PRIMUS_SIGNING_KEYRING \
--location=${PRIMUS_PROJECT_LOCATION}
gcloud kms keys create $PRIMUS_SIGNING_KEY \
--keyring=$PRIMUS_SIGNING_KEYRING \
--purpose=asymmetric-signing \
--default-algorithm=ec-sign-p256-sha256 \
--location=${PRIMUS_PROJECT_LOCATION}
- Artifact Registry の場合は、
$LOCATION/$PROJECT/$REPOSITORY/$IMAGE_NAMEなどの完全なイメージ名が想定されます。署名ストレージ用のリポジトリに任意のコンテナ イメージをアップロードできます。
export COSIGN_REPOSITORY=us-docker.pkg.dev/${PRIMUS_PROJECT_ID}/${PRIMUS_COSIGN_REPOSITORY}/demo
$PRIMUS_COSIGN_REPOSITORYリポジトリに対する閲覧者ロールを$WORKLOAD_SERVICEACCOUNTサービス アカウントに付与します。これにより、Confidential Space は$PRIMUS_COSIGN_REPOSITORYにアップロードされたコンテナ イメージの署名を検出できます。
gcloud artifacts repositories add-iam-policy-binding ${PRIMUS_COSIGN_REPOSITORY} \
--project=${PRIMUS_PROJECT_ID} --role='roles/viewer' --location=us \
--member="serviceAccount:${WORKLOAD_SERVICEACCOUNT}@${SECUNDUS_PROJECT_ID}.iam.gserviceaccount.com"
Cosign は、複数の署名機能を備えた強力なツールです。このユースケースでは、Cosign が鍵ペアで署名するだけで済みます。この署名付きコンテナ イメージ機能では、Cosign のキーレス署名はサポートされていません。
鍵ペアで署名する場合、次の 2 つのオプションがあります。
- Cosign で生成されたローカル鍵ペアで署名します。
- 別の場所に保存されている鍵ペア(KMS など)で署名します。
- 鍵のペアをまだ生成していない場合は、Cosign で鍵のペアを生成します。詳細については、セルフマネージド鍵を使用した署名をご覧ください。ここでは、鍵ペアを生成してワークロードに署名する 2 つの方法(ローカルと KMS プロバイダの使用)を指定しました。これらのいずれかの方法でワークロード コンテナに署名してください。
// Set Application Default Credentials.
gcloud auth application-default login
// Generate keys using a KMS provider.
cosign generate-key-pair --kms <provider>://<key>
// Generate keys using Cosign.
cosign generate-key-pair
上記で、<provider>://<key> を gcpkms://projects/$PRIMUS_PROJECT_ID/locations/global/keyRings/$PRIMUS_SIGNING_KEYRING/cryptoKeys/$PRIMUS_SIGNING_KEY/cryptoKeyVersions/$PRIMUS_SIGNING_KEYVERSION に置き換えます。
- <provider> : 使用している KMS ソリューションを指します。
- <key> : KMS の鍵パスを参照します。
- 検証用の公開鍵を取得します。
// For KMS providers.
cosign public-key --key <some provider>://<some key> > pub.pem
// For local key pair signing.
cosign public-key --key cosign.key > pub.pem
- Cosign を使用してワークロードに署名します。公開鍵に対してパディングなしの Base64 エンコードを行う
PUB=$(cat pub.pem | openssl base64)
// Remove spaces and trailing "=" signs.
PUB=$(echo $PUB | tr -d '[:space:]' | sed 's/[=]*$//')
- エクスポートされた公開鍵と署名アルゴリズムを添付して、Cosign を使用してワークロードに署名します。
IMAGE_REFERENCE=us-docker.pkg.dev/$SECUNDUS_PROJECT_ID/$SECUNDUS_ARTIFACT_REPOSITORY/$WORKLOAD_IMAGE_NAME:$WORKLOAD_IMAGE_TAG
// Sign with KMS support.
cosign sign --key <some provider>://<some key> $IMAGE_REFERENCE \
-a dev.cosignproject.cosign/sigalg=ECDSA_P256_SHA256 \
-a dev.cosignproject.cosign/pub=$PUB
// Sign with a local key pair.
cosign sign --key cosign.key $IMAGE_REFERENCE \
-a dev.cosignproject.cosign/sigalg=ECDSA_P256_SHA256 \
-a dev.cosignproject.cosign/pub=$PUB
--key[必須] は、使用する署名鍵を指定します。KMS プロバイダによって管理される鍵を参照する場合は、Sigstore KMS のサポートの特定の URI 形式に従ってください。Cosign で生成された鍵を参照する場合は、cosign.key を使用します。$IMAGE_REFERENCE[必須] は、署名するコンテナ イメージを指定します。IMAGE_REFERENCEの形式は、タグまたはイメージ ダイジェストで識別できます。例:us-docker.pkg.dev/$SECUNDUS_PROJECT_ID/secundus-workloads/workload-container:latest or us-docker.pkg.dev/$SECUNDUS_PROJECT_ID/secundus-workloads/workload-container[IMAGE-digest]- -a [必須] は、署名ペイロードに付加されるアノテーションを指定します。Confidential Space の署名付きコンテナ イメージの場合、署名ペイロードに公開鍵と署名アルゴリズムを付加する必要があります。
dev.cosignproject.cosign/sigalgは次の 3 つの値のみを受け入れます。- RSASSA_PSS_SHA256: SHA256 ダイジェストを使用した PSS パディングの RSASSA アルゴリズム。
- RSASSA_PKCS1V15_SHA256: SHA256 ダイジェストを使用した PKCS#1 v1.5 パディングの RSASSA アルゴリズム。
- ECDSA_P256_SHA256: P-256 曲線上の ECDSA(SHA256 ダイジェストを使用)。これは、Cosign で生成された鍵ペアのデフォルトの署名アルゴリズムでもあります。
- 署名を Docker リポジトリにアップロードする
Cosign sign は、指定された COSIGN_REPOSITORY. に署名を自動的にアップロードします。
4. ワークロードを承認して実行する
ワークロードを承認する
このステップでは、Workload Identity プール($PRIMUS_WORKLOAD_IDENTITY_POOL)に Workload Identity プロバイダを設定します。以下に示すように、Workload Identity に属性条件が構成されています。条件の 1 つは、ワークロード イメージの署名のフィンガープリントを署名公開鍵のフィンガープリントと照合して検証することです。この属性条件を使用すると、Secundus Bank が新しいワークロード イメージをリリースしたときに、Primus Bank はワークロード コードを監査し、イメージ ダイジェストで WIP ポリシーを更新することなく、新しいワークロード イメージに署名します。
gcloud config set project $PRIMUS_PROJECT_ID
PUBLIC_KEY_FINGERPRINT=$(openssl pkey -pubin -in pub.pem -outform DER | openssl sha256 | cut -d' ' -f2)
gcloud iam workload-identity-pools providers create-oidc ${PRIMUS_WIP_PROVIDER} \
--location="global" \
--workload-identity-pool="${PRIMUS_WORKLOAD_IDENTITY_POOL}" \
--issuer-uri="https://confidentialcomputing.googleapis.com/" \
--allowed-audiences="https://sts.googleapis.com" \
--attribute-mapping="google.subject='assertion.sub'" \
--attribute-condition="assertion.swname == 'CONFIDENTIAL_SPACE' &&
'STABLE' in assertion.submods.confidential_space.support_attributes
&& '${WORKLOAD_SERVICEACCOUNT}@${SECUNDUS_PROJECT_ID}.iam.gserviceaccount.com' in
assertion.google_service_accounts
&& ['ECDSA_P256_SHA256:${PUBLIC_KEY_FINGERPRINT}']
.exists(fingerprint, fingerprint in assertion.submods.container.image_signatures.map(sig,sig.signature_algorithm+':'+sig.key_id))"
ワークロードを実行
このステップでは、Confidential VM でワークロードを実行します。必要な TEE 引数は、メタデータ フラグを使用して渡されます。ワークロード コンテナの引数は、フラグの「tee-cmd」部分を使用して渡されます。ワークロードは、結果を $SECUNDUS_RESULT_STORAGE_BUCKET に公開するようにコーディングされています。
gcloud compute instances create ${WORKLOAD_VM} \
--confidential-compute-type=SEV \
--shielded-secure-boot \
--maintenance-policy=MIGRATE \
--scopes=cloud-platform \
--zone=${SECUNDUS_PROJECT_ZONE} \
--project=${SECUNDUS_PROJECT_ID} \
--image-project=confidential-space-images \
--image-family=confidential-space \
--service-account=${WORKLOAD_SERVICEACCOUNT}@${SECUNDUS_PROJECT_ID}.iam.gserviceaccount.com \
--metadata "^~^tee-image-reference=us-docker.pkg.dev/${SECUNDUS_PROJECT_ID}/${SECUNDUS_ARTIFACT_REPOSITORY}/${WORKLOAD_IMAGE_NAME}:${WORKLOAD_IMAGE_TAG}~tee-restart-policy=Never~tee-cmd="[\"count-location\",\"Seattle\",\"gs://${SECUNDUS_RESULT_STORAGE_BUCKET}/seattle-result\"]"~tee-signed-image-repos=us-docker.pkg.dev/${PRIMUS_PROJECT_ID}/${PRIMUS_COSIGN_REPOSITORY}/demo"
結果を表示
Secundus プロジェクトで、ワークロードの結果を表示します。
gcloud config set project $SECUNDUS_PROJECT_ID
gsutil cat gs://$SECUNDUS_RESULT_STORAGE_BUCKET/seattle-result
結果は 3 になります。これは、primus_customer_list.csv ファイルに記載されているシアトル出身者の人数です。
5. クリーンアップ
この Codelab の一部として作成したリソースをクリーンアップするために使用できるスクリプトは、こちらです。このクリーンアップの一環として、次のリソースが削除されます。
- Primus Bank の入力ストレージ バケット(
$PRIMUS_INPUT_STORAGE_BUCKET)。 - Primus 銀行サービス アカウント(
$PRIMUS_SERVICEACCOUNT)。 - イメージ署名(
$PRIMUS_COSIGN_REPOSITORY)を保持する Primus Bank アーティファクト レジストリ。 - Primus Bank ワークロード ID プール(
$PRIMUS_WORKLOAD_IDENTITY_POOL)。 - Secundus Bank のワークロード サービス アカウント(
$WORKLOAD_SERVICEACCOUNT)。 - ワークロード コンピューティング インスタンス。
- Secundus Bank の結果ストレージ バケット(
$SECUNDUS_RESULT_STORAGE_BUCKET)。 - Secundus Bank のアーティファクト レジストリ(
$SECUNDUS_ARTIFACT_REGISTRY)。 - Secundus Bank のワークロード VM(
$WORKLOAD_VM)。
./cleanup.sh
確認が終わったら、プロジェクトの削除をご検討ください。
- Cloud Platform Console に移動します。
- シャットダウンするプロジェクトを選択し、上部の [削除] をクリックします。これにより、プロジェクトの削除がスケジュールされます。
完了
これで、この Codelab は終了です。
署名付きコンテナ イメージ機能を利用して Confidential Space のユーザビリティを向上させる方法について学習しました。
次のステップ
以下の類似の Codelab をご覧ください。
- Confidential Space を使用して使用中の共有データを保護する
- マルチパーティ コンピューティングと Confidential Space を使用してデジタル アセットをトランザクションする方法
- Confidential Space を使用して機密データを分析する