使用客戶自行管理的加密金鑰

根據預設,Cloud Run 會加密靜態儲存的客戶內容。Cloud Run 會為您處理加密作業,您不必採取其他動作。這個選項稱為「Google 預設加密機制」。

如要控管加密金鑰,您可以在 Cloud KMS 中使用客戶自行管理的加密金鑰 (CMEK),並搭配整合 CMEK 的服務 (包括 Cloud Run)。使用 Cloud KMS 金鑰,即可控管金鑰的保護等級、位置、輪替時間表、使用權限和存取權,以及加密範圍。使用 Cloud KMS 還能查看稽核記錄及控管金鑰生命週期。您可以在 Cloud KMS 中控管及管理用於保護資料的對稱金鑰加密金鑰 (KEK),而非由 Google 擁有及管理。

使用 CMEK 設定資源後,存取 Cloud Run 資源的體驗與使用 Google 預設加密機制類似。如要進一步瞭解加密選項,請參閱「客戶自行管理的加密金鑰 (CMEK)」。

如要瞭解如何使用 CMEK 保護透過 gcloud functions 指令或 Cloud Functions v2 API 建立的函式資料,請參閱「使用 CMEK 保護資料」。

請注意下列事項:

  • 檔案中繼資料 (例如路徑) 不會加密。
  • Cloud Run 服務或 worker 集區的中繼資料 (例如名稱或環境變數) 不會使用提供的金鑰加密,而是使用 Google-owned and Google-managed encryption key。
  • 執行階段時,記憶體和檔案內容不會加密。
  • 如果停用 CMEK,現有 Cloud Run 修訂版本的新執行個體若使用該金鑰,將無法啟動。
  • 如果停用 CMEK,除非使用新的有效金鑰,否則無法部署新的 Cloud Run 修訂版本。

Autokey 不適用於使用 gcloud functions 指令或 Cloud Functions v2 API 建立的函式。

Cloud KMS 配額和 Cloud Run

您可以將 CMEK 設為任一可用防護等級,指定密碼編譯作業的執行方式。在 Cloud Run 中使用 CMEK 時,專案可能會耗用 Cloud KMS 加密要求配額。舉例來說,CMEK 加密存放區每次上傳或下載時,都可能耗用這些配額。

使用 CMEK 金鑰進行加密和解密作業,會以下列方式影響 Cloud KMS 配額:

  • 在 Cloud KMS 中產生的軟體 CMEK 金鑰不會耗用 Cloud KMS 配額。
  • 如果是外部 CMEK 金鑰 (有時稱為 Cloud EKM 金鑰),加密和解密作業會計入金鑰所在專案的 Cloud EKM 配額。

詳情請參閱「Cloud KMS 配額」。

自動調整資源配置行為受 CMEK 影響

使用客戶自行管理的加密金鑰時,Cloud Run 服務的預期自動調度資源可能會受到影響。舉例來說,在金鑰作業期間,與外部金鑰管理系統通訊時發生延遲,可能會導致啟動新執行個體的延遲時間增加。

下表列出使用 CMEK 可能導致的行為變化:

CMEK 相關作業 自動調度資源行為
金鑰已停用/刪除/撤銷 系統不會啟動新的執行個體。
無法連上外部金鑰管理工具 如果可以重試金鑰要求,重試期間不會關閉任何執行個體,也不會啟動新的執行個體。水平擴展的速度可能比預期慢。
如果無法重試金鑰要求,就不會啟動新的執行個體,且執行中的執行個體會在等待期後關閉。
超過 KMS 配額 如果超過這項配額,系統會記錄 RESOURCE_EXHAUSTED 錯誤,且不會啟動新的執行個體。您可以申請更多配額來解決這個問題。

事前準備

允許 Cloud Run 存取金鑰

如要為 Cloud Run 使用 CMEK,請按照下列步驟操作:

  1. 設定 Artifact Registry 使用 CMEK。

  2. 參考 Artifact Registry 的 Docker 快速入門導覽課程,建立 Docker 存放區並推送映像檔。

  3. 使用現有的 Cloud KMS 對稱金鑰,或建立新的對稱金鑰。

  4. 如要允許 Cloud Run 存取金鑰,請將 Cloud KMS CryptoKey 加密者/解密者角色授予 Cloud Run 服務代理:

    控制台

    1. 前往「加密編譯金鑰」頁面。

    2. 按一下金鑰的金鑰環,開啟金鑰清單頁面。

    3. 選取金鑰,然後在右側的「Permissions」(權限) 分頁中,按一下「Add principal」(新增主體)。

    4. 在「New principals」(新增主體) 欄位中,複製 Cloud Run 服務代理電子郵件地址。後置字串如下:

      service-PROJECT_NUMBER@serverless-robot-prod..

    5. 在「請選擇角色」欄位,選取「Cloud KMS CryptoKey 加密者/解密者」。

    6. 按一下「儲存」。

    gcloud

    使用下列 gcloud kms 指令:

    gcloud kms keys add-iam-policy-binding KEY_NAME \
    --keyring=KEYRING \
    --location=LOCATION \
    --member serviceAccount:service-PROJECT_NUMBER@serverless-robot-prod. \
    --role='roles/cloudkms.cryptoKeyEncrypterDecrypter'

    更改下列內容:

    • KEY_NAME:金鑰名稱。
    • KEYRING:金鑰環的名稱。
    • LOCATION:區域名稱。
    • PROJECT_NUMBER:您要部署 Cloud Run 服務或 worker 集區的專案編號。

    您必須具備管理Google Cloud 專案中 Cloud KMS 資源的權限,才能授予 IAM 角色roles/cloudkms.cryptoKeyEncrypterDecrypter。只有具備擁有者 (roles/owner) 或 Cloud KMS 管理員 (roles/cloudkms.admin) 角色的 IAM 成員,才能授予或撤銷 Cloud KMS 資源的存取權。

為服務設定 CMEK

任何設定變更都會建立新的修訂版本。後續修訂版本也會自動套用這項設定,除非您明確更新設定。

控制台

  1. 前往 Google Cloud 控制台的「Cloud Run」頁面:

    前往 Cloud Run。

  2. 從 Cloud Run 導覽選單中選取「Services」(服務):

    1. 如要設定新服務,請按一下「Deploy container」(部署容器),然後填寫初始服務設定頁面。然後按一下「Containers, Networking, Security」(容器、網路、安全性),展開服務設定頁面。

    2. 如要設定現有服務,請按一下該服務。

  3. 按一下「安全性」分頁標籤。

  4. 在「Encryption」(加密) 下方,選取「Cloud KMS key」(Cloud KMS 金鑰)。

  5. 在「金鑰管理類型」部分,選取「Cloud KMS」。

  6. 從「Select a Cloud KMS key」(選取 Cloud KMS 金鑰) 選單中,選擇下列其中一個選項:

    • 如要使用其他專案的金鑰,請選取「Switch projects」(切換專案)。如果專案的服務帳戶可以存取金鑰,以便執行加密和解密作業,您就可以參照其他專案的金鑰。

    • 選取「Enter key manually」(手動輸入金鑰),然後使用下列格式輸入專案中的 Secret:projects/PROJECT_NAME/locations/LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME。

  7. 按一下「建立」,建立新服務。依序點選「查看差異並重新部署」和「部署變更」,即可更新現有服務。

如要從您有權存取的其他專案複製及貼上資源名稱,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Cryptographic keys」(加密編譯金鑰) 頁面:

    前往「Cryptographic keys」(加密編譯金鑰)

  2. 按一下金鑰環。

  3. 選取所選金鑰環名稱,然後按一下「動作」。

  4. 從選單中選取「Copy resource name」(複製資源名稱),然後貼到上一個步驟的「Key resource name」(金鑰資源名稱) 欄位。

  5. 在「Key revocation action」(金鑰撤銷動作) 選單中,選擇下列其中一個選項:

    • 禁止新增容器執行個體:撤銷 CMEK 金鑰後,不會啟動新的執行個體。

    • 盡快關閉:撤銷 CMEK 金鑰後,不會啟動新的執行個體,現有執行個體也會關閉。

    • 「Custom shutdown delay」(自訂關閉延遲時間):指定服務關閉前的時數。

  6. 按一下「建立」,建立新服務。依序點選「查看差異並重新部署」和「部署變更」,即可更新現有服務。

gcloud

如要為服務設定金鑰,請使用下列任一指令:

gcloud run deploy SERVICE \
--image IMAGE_URL \
--key KEY \
--post-key-revocation-action-type KEY_REVOCATION_ACTION
--encryption-key-shutdown-hours SHUTDOWN_HOURS
gcloud run services update SERVICE --key KEY
--post-key-revocation-action-type KEY_REVOCATION_ACTION
--encryption-key-shutdown-hours SHUTDOWN_HOURS

更改下列內容:

  • SERVICE:服務名稱。
  • IMAGE_URL:容器映像檔的參照,例如 us-docker.pkg.dev/cloudrun/container/hello:latest。如果使用 Artifact Registry,則必須先建立存放區 REPO_NAME。網址格式為 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG。
  • KEY:完整金鑰名稱,格式如下:projects/PROJECT_NAME/locations/LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME。
  • KEY_REVOCATION_ACTION:shut-down 或 prevent-new,視金鑰撤銷偏好設定而定。
  • SHUTDOWN_HOURS:撤銷後,服務關閉前要延遲的小時數。

YAML

  1. 如要建立新服務,請略過這個步驟。如要更新現有服務,請下載其 YAML 設定:

    gcloud run services describe SERVICE --format export > service.yaml
  2. 將下列 CMEK 註解更新為所需的值:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/encryption-key: projects/PROJECT_NAME/locations/LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME
            run.googleapis.com/post-key-revocation-action-type: KEY_REVOCATION_ACTION
            run.googleapis.com/encryption-key-shutdown-hours: SHUTDOWN_HOURS
          name: REVISION

    更改下列內容:

    • SERVICE:Cloud Run 服務的名稱。
    • PROJECT_NAME:金鑰建立所在專案的名稱。
    • LOCATION:金鑰建立位置,必須與 Cloud Run 服務位置相符。
    • KEYRING_NAME:金鑰環的名稱。
    • KEY_NAME:金鑰名稱。
    • KEY_REVOCATION_ACTION:shut-down 或 prevent-new,視金鑰撤銷偏好設定而定。
    • SHUTDOWN_HOURS:撤銷後,服務關閉前要延遲的小時數。
    • REVISION::新的修訂版本名稱,或刪除該名稱 (如有)。如果您提供新的修訂版本名稱,則必須符合下列條件:
      • 開頭為「SERVICE-」
      • 只能使用小寫英文字母、數字和 -
      • 結尾不是 -
      • 不超過 63 個字元
  3. 使用下列指令,將服務替換為新設定:

    gcloud run services replace service.yaml

Terraform

如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。

在 Terraform 設定中,將下列內容新增至 google_cloud_run_v2_service 資源。

resource "google_cloud_run_v2_service" "default" {
  name     = "SERVICE"
  location = "europe-west1"

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
    }
    encryption_key = "projects/PROJECT_NAME/locations/LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME"
  }
}

更改下列內容:

  • SERVICE:Cloud Run 服務的名稱。
  • PROJECT_NAME:金鑰建立所在專案的名稱。
  • LOCATION:金鑰建立位置,必須與 Cloud Run 服務位置相符。
  • KEYRING_NAME:金鑰環的名稱。
  • KEY_NAME:金鑰名稱。

使用 Autokey 服務

如果您尚未啟用 Cloud KMS Autokey,請啟用。

任何設定變更都會建立新的修訂版本。後續修訂版本也會自動套用這項設定,除非您明確更新設定。

控制台

  1. 前往 Google Cloud 控制台的「Cloud Run」頁面:

    前往 Cloud Run。

  2. 從 Cloud Run 導覽選單中選取「Services」(服務):

    1. 如要設定新服務,請按一下「Deploy container」(部署容器),然後填寫初始服務設定頁面。然後按一下「Containers, Networking, Security」(容器、網路、安全性),展開服務設定頁面。

    2. 如要設定現有服務,請按一下該服務。

  3. 按一下「安全性」分頁標籤。

  4. 在「加密」下方,選取「使用 Autokey 的 Cloud KMS」。

  5. 按一下「要求金鑰」。建立資源後,系統會顯示金鑰詳細資料。

  6. 在「Key revocation action」(金鑰撤銷動作) 選單中,選擇下列其中一個選項:

    • 禁止新增容器執行個體:撤銷 CMEK 後,不會啟動新的執行個體。

    • 盡快關閉:不會啟動新的執行個體,現有執行個體會在 CMEK 撤銷後關閉。

    • 「Custom shutdown delay」(自訂關閉延遲時間):指定服務關閉前的時數。

  7. 按一下「建立」,建立新服務。依序點選「查看差異並重新部署」和「部署變更」,即可更新現有服務。

查看服務的安全性設定

如要查看 Cloud Run 服務的安全性設定,請按照下列步驟操作:

控制台

  1. 在 Google Cloud 控制台中,前往 Cloud Run 的「Services」(服務) 頁面:

    前往 Cloud Run。

  2. 按一下服務,開啟「Service details」(服務詳細資料) 頁面。

  3. 按一下「安全性」分頁標籤,查看安全性設定。

gcloud

  1. 執行下列指令,查看安全性設定:

    gcloud run services describe SERVICE
  2. 在傳回的設定中找出安全性設定。

來源部署作業的其他設定

Cloud Run 原始碼部署作業和函式涉及額外的建構步驟。為確保這個步驟符合 CMEK 規範,請務必執行下列操作:

  1. 建立自己的 CMEK 加密 Cloud Storage bucket。詳情請參閱 Cloud Storage 的 CMEK 說明文件。

  2. 將原始碼上傳至 CMEK 加密儲存空間 bucket,做為壓縮封存檔。

  3. 建立自己的 CMEK 加密 Artifact Registry 存放區。詳情請參閱 Artifact Registry 的 CMEK 說明文件。這個存放區會儲存建構程序產生的構件。

  4. 部署函式,並使用 --source 和 --image 旗標傳遞建構資源。

    gcloud run deploy FUNCTION \
        --key KEY \
        --source CUSTOM_BUCKET_WITH_SOURCE_CODE \
        --image CUSTOM_AR_REPOSITORY \
        --function FUNCTION_ENTRYPOINT \
        --base-image BASE_IMAGE \
        --region REGION

更改下列內容:

  • FUNCTION:要部署的函式名稱。您可以完全省略這個參數,但系統會提示您輸入名稱。

  • KEY:完整金鑰名稱,格式如下:projects/PROJECT_NAME/locations/LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME。

  • CUSTOM_BUCKET_WITH_SOURCE_CODE:儲存原始碼的 Cloud Storage 位置 URI。請使用下列格式:gs://BUCKET_NAME/PATH_TO_SOURCE。

  • CUSTOM_AR_REPOSITORY:Artifact Registry 存放區的 URI,格式為 REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME。

  • FUNCTION_ENTRYPOINT:原始碼中函式的進入點。這是 Cloud Run 在函式運作時執行的程式碼。此旗標的值必須是原始碼中既有的函式名稱或完整類別名稱。

  • BASE_IMAGE:函式的基礎映像檔環境。如要進一步瞭解基礎映像檔和各映像檔包含的套件,請參閱「執行階段基礎映像檔」。

  • REGION:要部署函式的 Google Cloud區域。例如:europe-west1。

此外,如果您使用 Eventarc 觸發函式,請熟悉 Eventarc 的 CMEK 設定。具體來說,在這種情況下,必須加密與所用事件類型對應的管道,才能完全符合規定。

測試服務的 CMEK 撤銷功能

如要確認 CMEK 保護機制是否正常運作,可以停用您用來為服務啟用 CMEK 的金鑰,然後嘗試叫用服務:

  1. 執行下列指令,確認可以存取服務:

    curl SERVICE_URL

    將 SERVICE_URL 替換為服務網址。部署完成後,您可以在控制台 UI 中找到這個網址:容器網址會顯示在「URL:」(網址:) 文字旁。

  2. 停用金鑰版本。

  3. 等待您指定的SHUTDOWN_HOURS。如果您未指定關閉時數,請重新啟用金鑰,並編輯或重新部署服務,將值設為至少一小時。如果您部署了原始碼,請嘗試查看原始碼。嘗試應會失敗。

  4. 等待您設定的 SHUTDOWN_HOURS 時間長度後,請重新執行下列指令,確認服務已無法存取:

     curl SERVICE_URL
     

  5. 確認金鑰版本已停用後,請啟用金鑰。

為 worker 集區設定 CMEK

任何設定變更都會建立新的修訂版本。後續修訂版本也會自動套用這項設定,除非您明確更新設定。

控制台

  1. 前往 Google Cloud 控制台的「Cloud Run」頁面:

    前往 Cloud Run。

  2. 從 Cloud Run 導覽選單中選取「Worker pools」(工作站集區):

    1. 如要設定現有 worker 集區,請按一下該集區,然後點選「Edit and deploy new revision」(編輯並部署新的修訂版本)。

    2. 如要設定新的 worker 集區,請按一下「Deploy container」(部署容器),然後填寫初始 worker 集區頁面。然後按一下「Containers, Networking, Security」(容器、網路、安全性),展開工作站集區設定頁面。

  3. 按一下「安全性」分頁標籤。

  4. 在「Encryption」(加密) 下方,選取「Cloud KMS key」(Cloud KMS 金鑰)。

  5. 在「金鑰類型」部分,選取「Cloud KMS」。

  6. 從「Select a Cloud KMS key」(選取 Cloud KMS 金鑰) 選單中,選擇下列其中一個選項:

    • 如要使用其他專案的金鑰,請選取「Switch project」(切換專案)。如果專案的服務帳戶可以存取金鑰,以便執行加密和解密作業,您就可以參照其他專案的金鑰。

    • 選取「Enter key manually」(手動輸入金鑰),然後使用下列格式輸入專案中的 Secret:projects/PROJECT_NAME/locations/LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME。

如要從您有權存取的其他專案複製及貼上資源名稱,請按照下列步驟操作:

  1. 前往「加密編譯金鑰」頁面。
  2. 按一下金鑰環。
  3. 選取所選金鑰環名稱,然後按一下「動作」。
  4. 從選單中選取「Copy resource name」(複製資源名稱),然後貼到上一個步驟的「Key resource name」(金鑰資源名稱) 欄位。

  5. 在「Key revocation action」(金鑰撤銷動作) 選單中,選擇下列其中一個選項:

    • 禁止新增容器執行個體:撤銷 CMEK 金鑰後,不會啟動新的執行個體。

    • 盡快關閉:撤銷 CMEK 金鑰後,不會啟動新的執行個體,現有執行個體也會關閉。

    • 「Custom shutdown delay」(自訂關閉延遲時間):指定服務關閉前的時數。

  6. 按一下 [Create] (建立) 或 [Deploy] (部署)。

gcloud

如要設定 worker 集區的金鑰,請使用下列任一指令:

gcloud run worker-pools deploy WORKER_POOL \
--image IMAGE_URL \
--key KEY \
--post-key-revocation-action-type KEY_REVOCATION_ACTION
--encryption-key-shutdown-hours SHUTDOWN_HOURS
gcloud run worker-pools update WORKER_POOL --key KEY
--post-key-revocation-action-type KEY_REVOCATION_ACTION
--encryption-key-shutdown-hours SHUTDOWN_HOURS

更改下列內容:

  • WORKER_POOL:worker 集區的名稱。
  • IMAGE_URL:容器映像檔的網址。
  • KEY:完整金鑰名稱,格式如下:projects/PROJECT_NAME/locations/LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME。
  • KEY_REVOCATION_ACTION:shut-down 或 prevent-new。
  • SHUTDOWN_HOURS:撤銷後,worker 集區關閉前的延遲時數。

YAML

  1. 如果您要建立新的 worker 集區,請略過這個步驟。如要更新現有 worker 集區,請下載其 YAML 設定:

    gcloud run worker-pools describe WORKER_POOL --format export > worker-pool.yaml
  2. 更新 WorkerPool 設定中的下列 CMEK 註解:

    apiVersion: run.googleapis.com/v1
    kind: WorkerPool
    metadata:
      name: WORKER_POOL
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/encryption-key: projects/PROJECT_NAME/locations/LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME
            run.googleapis.com/post-key-revocation-action-type: KEY_REVOCATION_ACTION
            run.googleapis.com/encryption-key-shutdown-hours: SHUTDOWN_HOURS

    更改下列內容:

    • WORKER_POOL:worker 集區的名稱。
    • PROJECT_NAME:金鑰建立所在專案的名稱。
    • LOCATION:金鑰建立位置,必須與 Cloud Run worker 集區位置相符。
    • KEYRING_NAME:金鑰環的名稱。
    • KEY_NAME:金鑰名稱。
    • KEY_REVOCATION_ACTION:shut-down 或 prevent-new,視金鑰撤銷偏好設定而定。
    • SHUTDOWN_HOURS:撤銷後,worker 集區關閉前的延遲時數。
  3. 使用下列指令,以新設定取代 worker 集區:

    gcloud run worker-pools replace worker-pool.yaml

對 worker 集區使用 Autokey

如果您尚未啟用 Cloud KMS Autokey,請啟用。

任何設定變更都會建立新的修訂版本。後續修訂版本也會自動套用這項設定,除非您明確更新設定。

控制台

  1. 前往 Google Cloud 控制台的「Cloud Run」頁面:

    前往 Cloud Run。

  2. 從 Cloud Run 導覽選單中選取「Worker pools」(工作站集區):

    1. 如要設定現有 worker 集區,請按一下該集區,然後點選「Edit and deploy new revision」(編輯並部署新的修訂版本)。

    2. 如要設定新的 worker 集區,請按一下「Deploy container」(部署容器),然後填寫初始 worker 集區頁面。然後按一下「Containers, Networking, Security」(容器、網路、安全性),展開工作站集區設定頁面。

  3. 按一下 [Security] (安全性) 分頁標籤。

  4. 在「Encryption」(加密) 部分:

  5. 在「金鑰類型」選單中,選取「使用 Autokey 的 Cloud KMS」。

  6. 按一下「要求金鑰」。

  7. 點選「建立」。建立資源後,系統會顯示金鑰詳細資料。

  8. 在「Key revocation action」(金鑰撤銷動作) 選單中,選擇下列其中一個選項:

    • 禁止新增容器執行個體:撤銷 CMEK 後,不會啟動新的執行個體。

    • 盡快關閉:不會啟動新的執行個體,現有執行個體會在 CMEK 撤銷後關閉。

    • 「Custom shutdown delay」(自訂關閉延遲時間):指定服務關閉前的時數。

查看 worker 集區的安全性設定

如要查看 Cloud Run worker 集區的安全性設定,請按照下列步驟操作:

控制台

  1. 前往 Google Cloud 控制台的「Cloud Run worker pools」(Cloud Run 工作站集區) 頁面:

    前往 Cloud Run worker 集區

  2. 按一下工作站集區,開啟「Worker pools details」(工作站集區詳細資料) 頁面。

  3. 點選「修訂版本」分頁標籤。

  4. 在設定詳細資料中找出安全性設定。

gcloud

  1. 使用下列指令:

    gcloud run worker-pools describe WORKER_POOL
  2. 在傳回的設定中找出安全性設定。

瞭解稽核記錄和錯誤訊息

如果您負責監控稽核記錄,其中一項工作可能是驗證 Cloud Run 服務或 worker 集區中的 CMEK 作業。在這種情況下,您需要瞭解相關的稽核記錄。

如果您負責處理及修正 Cloud Run 服務或 worker 集區的執行階段錯誤,可能需要排解 Cloud Run 資源運作期間記錄的 CMEK 相關錯誤。

下列各節提供上述工作所需的資訊。

稽核記錄

KMS 稽核記錄會為使用金鑰執行的每項作業提供稽核追蹤記錄。對於已啟用 CMEK 的 Cloud Run 資源,Cloud Run 會新增 Cloud Run 專屬的呼叫端背景資訊,詳細說明系統存取客戶金鑰的原因。下表列出您可能會在稽核記錄中看到的背景資訊:

金鑰存取原因 說明
Decrypting CMEK-encrypted layer during container clone start. 每當啟動新的執行個體時,系統就會記錄這項資訊。
Encrypting a newly created data-encryption-key w/ the customer-managed-encryption-key. 在部署已啟用 CMEK 的服務或 worker 集區時記錄,其中資料加密金鑰會由 CMEK 包裝。
Decrypting an existing encrypted data-encryption-key, under the same customer-managed-encryption-key, to be used to encrypt container contents. 新的執行個體啟動時,系統會記錄這項作業,因為需要解密映像檔。
Performing an encrypt operation on dummy data to check the customer-managed-encryption-key status and access. 每當系統定期驗證金鑰時,就會記錄這項資訊。
Performing a decrypt operation on dummy data to check the customer-managed-encryption-key status and access. 每當系統定期驗證金鑰時,就會記錄這項資訊。

如要進一步瞭解稽核記錄格式和內容,請參閱「KMS 稽核記錄」頁面。

錯誤訊息

請注意,外部金鑰管理工具提供的錯誤訊息會直接傳遞至服務的 Cloud Run 記錄。

下表列出您可能會看到的 CMEK 相關錯誤訊息,以及說明和可能的解決方法。

訊息 說明
User's service account does not have CMEK decrypter permission. Service account: %s 解決方法:允許 Cloud Run 資源存取金鑰
User's KMS operation quota has been exceeded. CMEK key: %s 啟用 CMEK 的資源已超過 KMS 配額。解決方法:要求提高 KMS 配額
User's CMEK key has been disabled. CMEK key: %s CMEK 已撤銷。解決方法:變更資源的 CMEK 並重新部署。
User's CMEK key has been destroyed. CMEK key: %s CMEK 已刪除。解決方法:變更資源的 CMEK 並重新部署。
User's CMEK key has been scheduled for deletion. CMEK Key: %s CMEK 已排定刪除。解決方法:變更資源的 CMEK 並重新部署。

後續步驟