1. 總覽
本程式碼研究室是建立在「Confidential Space 程式碼研究室」之上。已簽署的容器映像檔支援選項,可使用已認證的公開金鑰驗證容器,而非在 Workload Identity Pool (WIP) 政策中指定映像檔摘要。
Confidential Space 中已簽署容器映像檔支援功能的變更:
提升可用性:隨著簽署容器映像檔功能推出,我們現在可以從工作負載映像檔摘要方法,改為使用容器簽名方法,讓協作者/稽核人員授權映像檔。
- 直接使用圖片摘要時,資源擁有者每次授權新圖片時,都必須使用圖片摘要更新政策。使用圖片簽章時,政策會包含公開金鑰指紋,而對應的私密金鑰則由協作者/審查者擁有,用於簽署已審查的圖片。
- 對於某些安全性模型而言,參照信任的圖片簽署金鑰比更新新圖片摘要值清單更方便。
安全性不會倒退:信任邊界保持不變,因此這個容器簽章方法不會導致安全性倒退,在容器簽章方法中,資源擁有者會在 WIP 政策中指定信任的公開金鑰指紋,然後由認證驗證服務和 WIP 執行授權檢查作業;認證驗證服務會驗證簽章是否與執行中的工作負載相關聯,而 WIP 政策則會檢查服務聲明的公開金鑰是否經過政策授權。
強大的安全性:使用容器映像檔簽章可將一定程度的信任委派給映像檔簽署者。在認證政策中指定信任的簽署者公開金鑰指紋,資源擁有者即可授權該簽署者針對符合政策的容器映像檔做出認證。認證驗證器服務會驗證簽名是否與執行的工作負載相關聯,政策則會檢查建立簽名的公開金鑰是否經過政策授權。因此,圖片簽署功能提供的額外間接層,可確保機密空間的強大安全性。
這兩種方法唯一的差異在於,後者會使用額外的間接層,在該層中工作負載映像檔會使用簽署金鑰授權。信任範圍保持不變,因此不會引入任何新的安全漏洞。
課程內容
在本程式碼研究室中,您將瞭解如何使用容器映像檔簽章,授權存取受保護的資源:
- 如何使用
cosign
為經過稽核的容器映像檔簽署 - 如何將容器映像檔簽章上傳至 OCI 登錄檔,以便進行簽章探索和儲存
- 如何設定執行機密空間所需的雲端資源
- 如何在支援已簽署容器映像檔的機密空間中執行工作負載
本程式碼實驗室說明如何使用機密空間,對在 Google Compute Engine 上執行的受信任金鑰所簽署的容器映像檔進行遠端認證。
軟硬體需求
- 完成 Confidential Space 程式碼研究室
- Google Cloud Platform 專案
- 瀏覽器 (例如 Chrome 或 Firefox)
- 熟悉標準 Linux 文字編輯器,例如 Vim、Emacs 或 Nano
- 具備 Sigstore 共同簽署的基本知識
- Google Compute Engine 的基本知識 ( 程式碼研究室)、機密 VM、容器和遠端存放區
- Cloud KMS 的基本知識 ( 程式碼研究室)
- 服務帳戶、Workload Identity 聯盟和屬性條件的基本知識。
- 具備 Artifact Registry 的基本知識
- 數位簽章的基本知識
在機密空間中涉及已簽署容器映像檔的角色
在本程式碼研究室中,Primus Bank 將擔任稽核人員和資源擁有者,負責執行下列工作:
- 使用範例資料設定必要資源。
- 稽核工作負載程式碼。
- 使用
cosign
為工作負載映像檔簽署。 - 將簽名上傳至存放區。
- 設定 WIP 政策來保護客戶資料。
Secundus Bank 將擔任工作負載作者和操作員,並負責:
- 設定儲存結果所需的資源。
- 編寫工作負載程式碼。
- 發布工作負載映像檔。
- 在機密空間中執行工作負載,並支援已簽署的容器映像檔。
Secundus Bank 會開發並發布工作負載,用於查詢 Primus Bank 擁有的雲端儲存值區中儲存的客戶資料。Primus Bank 會稽核工作負載、簽署容器映像檔,並設定 WIP 政策,允許已核准的工作負載存取資料。執行工作負載的結果會儲存在 Secundus 銀行擁有的雲端儲存空間值區中。
機密聊天室設定涉及的資源
本程式碼研究室參照了多個變數,您應將這些變數設為 GCP 專案的適當值。本程式碼研究室中的指令假設這些變數已設定。(例如,export PRIMUS_INPUT_STORAGE_BUCKET='my-input-bucket'
可用於設定 Primus 銀行的輸入儲存值區名稱)。如果未設定資源名稱的變數,系統會根據 GCP 專案 ID 產生變數。
在 Primus 專案中設定下列項目:
$PRIMUS_INPUT_STORAGE_BUCKET
:儲存客戶資料檔案的值區。$PRIMUS_WORKLOAD_IDENTITY_POOL
:驗證要求的工作負載身分集區 (WIP)。$PRIMUS_WIP_PROVIDER
:Workload Identity Pool 提供者,其中包含授權條件,用於驗證方驗證服務簽署的權杖。$PRIMUS_SERVICEACCOUNT
:$PRIMUS_WORKLOAD_IDENTITY_POOL
用來存取受保護資源的服務帳戶。在這個步驟中,它有權查看儲存在$PRIMUS_INPUT_STORAGE_BUCKET
儲存桶中的客戶資料。$PRIMUS_ENC_KEY
:用來加密$PRIMUS_INPUT_STORAGE_BUCKET
中儲存資料的 KMS 金鑰。
本程式碼研究室新增的資源:
$PRIMUS_COSIGN_REPOSITORY
:Artifact Registry,用於儲存工作負載映像檔簽章。$PRIMUS_SIGNING_KEY
:稽核人員/資料協作者 (例如本例中的 Primus Bank) 用來簽署工作負載映像檔的 KMS 金鑰。
在 Secundus 專案中設定下列項目:
$SECUNDUS_ARTIFACT_REGISTRY
:要推送工作負載 Docker 映像檔的構件登錄檔。$WORKLOAD_IMAGE_NAME
:工作負載 Docker 映像檔的名稱。$WORKLOAD_IMAGE_TAG
:工作負載 Docker 映像檔的代碼。$WORKLOAD_SERVICEACCOUNT
:服務帳戶,具有執行工作負載的機密 VM 存取權。$SECUNDUS_RESULT_BUCKET
:儲存工作負載結果的 bucket。
其他資源:
primus_customer_list.csv
包含客戶資料。我們會將這項資料上傳至$PRIMUS_INPUT_STORAGE_BUCKET
,並建立可查詢這項資料的工作負載。
現有工作流程
在機密空間中執行工作負載時,系統會使用已設定的資源執行下列程序:
- 工作負載會要求 WIP 的
$PRIMUS_SERVICEACCOUNT
一般 Google 存取權杖。這項服務會提供具有工作負載和環境宣告的認證驗證服務權杖。 - 如果驗證聲明服務權杖中的負載量評估聲明與 WIP 中的屬性條件相符,則會傳回
$PRIMUS_SERVICEACCOUNT.
的存取權杖。 - 工作負載會使用與
$PRIMUS_SERVICEACCOUNT
相關聯的服務帳戶存取權杖,存取$PRIMUS_INPUT_STORAGE_BUCKET
值區中的客戶資料。 - 工作負載會對該資料執行作業。
- 工作負載會使用
$WORKLOAD_SERVICEACCOUNT
服務帳戶,將該作業的結果寫入$SECUNDUS_RESULT_STORAGE_BUCKET
值區。
支援已簽署容器的新工作流程
如以下所示,已簽署容器支援功能將整合至現有工作流程。在支援已簽署容器映像檔的機密空間中執行工作負載時,系統會使用已設定的資源執行下列程序:
- Confidential Space 會找出與目前執行中工作負載映像檔相關的任何容器簽章,並將這些簽章傳送給認證驗證工具。認證驗證器會驗證簽名,並在認證宣告中加入任何有效的簽名。
- 工作負載會要求 WIP 的
$PRIMUS_SERVICEACCOUNT
一般 Google 存取權杖。這項服務會提供具有工作負載和環境宣告的 Attestation Verifier 服務權杖。 - 如果認證驗證服務權杖中的容器簽章聲明與 WIP 中的屬性條件相符,則會傳回
$PRIMUS_SERVICEACCOUNT
的存取權杖。 - 工作負載會使用與
$PRIMUS_SERVICEACCOUNT
相關聯的服務帳戶存取權權杖,存取$PRIMUS_INPUT_STORAGE_BUCKET
值區中的客戶資料。 - 工作負載會對該資料執行作業。
- 工作負載會使用
$WORKLOAD_SERVICEACCOUNT
將該作業的結果寫入$SECUNDUS_RESULT_STORAGE_BUCKET
值區。
2. 設定雲端資源
在設定機密空間時,您必須先在 Primus 和 Secundus 銀行的 GCP 專案中建立必要的雲端資源。以下是這個程式碼研究室的新資源:
在 Primus 專案中:
- 在稽核程式碼後,用於簽署 Secundus 工作負載的 KMS 簽署金鑰。
- 用於儲存 Cosign 簽名的構件登錄機制存放區。
Secundus 專案中沒有任何新資源。這些資源設定完成後,您就可以為工作負載建立服務帳戶,並設定必要的角色和權限。接著,您會建立工作負載映像檔,而稽核人員 Primus bank 會為工作負載映像檔簽署。然後,資料協作者 (本程式碼研究室中的 Primus 銀行) 會授權工作負載,而工作負載操作員 (本例中的 Secundus 銀行) 會執行工作負載。
在設定機密空間時,您會在 Primus 和 Secundus GCP 專案中建立必要的雲端資源。
事前準備
- 使用下列指令複製 這個存放區,取得本程式碼研究室所需的指令碼。
git clone https://github.com/GoogleCloudPlatform/confidential-space
- 變更本程式碼研究室的目錄。
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 銀行設定必要的雲端資源。執行下列指令碼,為 Primus 銀行設定資源。在這些步驟中,系統會建立下列資源:
- Cloud Storage 值區 (
$PRIMUS_INPUT_STORAGE_BUCKET
),用於儲存 Primus 銀行的加密客戶資料檔案。 - KMS 中的加密金鑰 (
$PRIMUS_ENC_KEY
) 和密鑰圈 ($PRIMUS_ENC_KEYRING
),用於加密 Primus 銀行的資料檔案。 - Workload Identity 工作負載集區 (
$PRIMUS_WORKLOAD_IDENTITY_POOL
),可根據提供者下所設定的屬性條件驗證要求。 - 服務帳戶 (
$PRIMUS_SERVICEACCOUNT
) 已連結至上述工作負載身分池 ($PRIMUS_WORKLOAD_IDENTITY_POOL
),並具備下列 IAM 存取權: roles/cloudkms.cryptoKeyDecrypter
使用 KMS 金鑰解密資料。objectViewer
讀取 Cloud Storage 值區中的資料。roles/iam.workloadIdentityUser
,用於將此服務帳戶連結至工作負載身分池。
./setup_primus_bank_resources.sh
設定 Secundus 銀行資源
在這個步驟中,您將為 Secundus 銀行設定必要的雲端資源。執行以下指令碼,為 Secundus 銀行設定資源。在這個步驟中,系統會建立下列資源:
- Cloud Storage 值區 (
$SECUNDUS_RESULT_STORAGE_BUCKET
),用於儲存 Secundus 銀行執行工作負載的結果。
./setup_secundus_bank_resources.sh
3. 建立及簽署工作負載
建立工作負載服務帳戶
接下來,您將為工作負載建立服務帳戶,並設定必要的角色和權限。執行以下指令碼,即可在 Secundus 銀行專案中建立工作負載服務帳戶。執行工作負載的 VM 會使用這個服務帳戶。
- 這個工作負載服務帳戶 (
$WORKLOAD_SERVICEACCOUNT
) 將具備下列角色: confidentialcomputing.workloadUser
取得認證權杖logging.logWriter
將記錄檔寫入 Cloud Logging。objectViewer
可讀取$PRIMUS_INPUT_STORAGE_BUCKET
Cloud Storage 值區中的資料。objectAdmin
將工作負載結果寫入$SECUNDUS_RESULT_STORAGE_BUCKET
Cloud Storage 值區。
./create_workload_serviceaccount.sh
建立工作負載
在這個步驟中,您將建立工作負載 Docker 映像檔。本程式碼研究室中使用的負載是簡單的 CLI 導向 Go 應用程式,可計算引數中提供地理位置的客戶 (來自 Primus 銀行客戶資料)。執行下列指令碼,建立工作負載,並執行下列步驟:
- 建立由 Secundus 銀行擁有的 Artifact Registry(
$SECUNDUS_ARTIFACT_REGISTRY
)。 - 請更新工作負載程式碼,加入必要的資源名稱。這裡是本程式碼研究室使用的負載程式碼。
- 建構 Go 二進位檔,並建立 Dockerfile,以便建構工作負載程式的 Docker 映像檔。這裡是本程式碼研究室使用的 Dockerfile。
- 建構 Docker 映像檔,並發布至 Secundus 銀行擁有的 Artifact Registry (
$SECUNDUS_ARTIFACT_REGISTRY
)。 - 將
$WORKLOAD_SERVICEACCOUNT
的讀取權限授予$SECUNDUS_ARTIFACT_REGISTRY
。這項設定是工作負載容器從 Artifact Registry 提取工作負載 Docker 映像檔所需。
./create_workload.sh
簽署工作負載
我們會使用 Cosign 簽署工作負載映像檔。Cosign 預設會將簽署的映像檔與簽署的簽名儲存在相同的存放區中。如要指定不同的簽名存放區,您可以設定 COSIGN_REPOSITORY
環境變數。
以下我們將以 Artifact Registry 為例。您也可以根據偏好選擇其他以 OCI 為基礎的登錄項,例如 Docker Hub、AWS CodeArtifact。
- 建立 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 產生的本機金鑰組進行簽署。
- 使用儲存在其他位置 (例如 KMS) 的金鑰組簽署。
- 如果沒有金鑰組,請在 Cosign 中產生金鑰組。詳情請參閱「使用自行管理的金鑰進行簽署」一文。我們在此指定了兩種方式 (本機和使用 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
[REQUIRED] 會指定要使用的簽署金鑰。如要參照由 KMS 供應商管理的金鑰,請遵循 Sigstore KMS 支援中的特定 URI 格式。如要參照 Cosign 產生的金鑰,請改用 cosign.key。$IMAGE_REFERENCE
[REQUIRED] 會指定要簽署哪個容器映像檔。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 [REQUIRED] 可指定附加至簽名酬載的註解。對於機密空間簽署的容器映像檔,您必須將公開金鑰和簽名演算法附加至簽名酬載。
dev.cosignproject.cosign/sigalg
ONLY 接受三個值:- RSASSA_PSS_SHA256:使用 PSS 填充演算法的 RSASSA 演算法,並搭配 SHA256 摘要。
- RSASSA_PKCS1V15_SHA256:使用 PKCS#1 v1.5 填充和 SHA256 摘要的 RSASSA 演算法。
- ECDSA_P256_SHA256:具有 SHA256 摘要的 P-256 曲線 ECDSA。這也是 Cosign 產生金鑰組的預設簽章演算法。
- 將簽名上傳至 Docker 存放區
共同簽署功能會自動將簽名上傳至指定的 COSIGN_REPOSITORY.
4. 授權及執行工作負載
授權工作負載
在這個步驟中,我們會在工作負載身分集區 ($PRIMUS_WORKLOAD_IDENTITY_POOL
) 下設定工作負載身分提供者。系統會為工作負載身分設定屬性條件,如下所示。其中一個條件是驗證工作負載映像檔簽名的指紋,並與簽署公開金鑰的指紋進行比對。有了這個屬性條件,當 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))"
執行工作負載
在這個步驟中,我們會在機密 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. 清除
這裡提供的程式碼可用於清除我們在本程式碼研究室中建立的資源。在本次清理作業中,系統會刪除下列資源:
- Primus 銀行的輸入儲存值區 (
$PRIMUS_INPUT_STORAGE_BUCKET
)。 - Primus 銀行服務帳戶 (
$PRIMUS_SERVICEACCOUNT
)。 - Primus Bank 的構件登錄檔,用於儲存圖片簽章 (
$PRIMUS_COSIGN_REPOSITORY
)。 - Primus Bank workload identity pool (
$PRIMUS_WORKLOAD_IDENTITY_POOL
)。 - Secundus Bank (
$WORKLOAD_SERVICEACCOUNT
) 的工作負載服務帳戶。 - 工作負載運算執行個體。
- Secundus Bank 的結果儲存值區 (
$SECUNDUS_RESULT_STORAGE_BUCKET
)。 - Secundus Bank (
$SECUNDUS_ARTIFACT_REGISTRY
) 的 Artifact Registry。 - Secundus Bank 的工作負載 VM (
$WORKLOAD_VM
)。
./cleanup.sh
如果您已完成探索,請考慮刪除專案。
- 前往 Cloud Platform Console
- 選取要關閉的專案,然後按一下頂端的「刪除」:這會排定專案的刪除作業
恭喜
恭喜,您已順利完成程式碼研究室!
您已瞭解如何利用已簽署的容器映像檔功能,改善機密空間的可用性。
後續步驟
查看一些類似的程式碼研究室…