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

您可以使用客戶自行管理的加密金鑰 (CMEK),透過 Cloud Key Management Service 管理的金鑰加密存放區內容。這個加密程序可協助您直接控管金鑰輪替和生命週期政策,同時符合法規遵循要求。

總覽

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

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

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

搭配 Cloud KMS Autokey 使用 CMEK

您可以手動建立 CMEK 來保護 Artifact Registry 資源,也可以使用 Cloud KMS Autokey。Autokey 會根據需求產生金鑰環和金鑰,以支援在 Artifact Registry 中建立資源。如果服務代理程式尚未使用金鑰執行加密和解密作業,系統會建立這類代理程式,並授予必要的 Identity and Access Management (IAM) 角色。詳情請參閱「自動金鑰總覽」。

如要手動設定 CMEK,請參閱「建立金鑰並授予權限」一文

如要使用 Autokey 設定 CMEK,請參閱本頁的「使用 Autokey 建立金鑰」。

建立存放區時,您會指派 CMEK 金鑰。您無法變更現有存放區的加密機制。如果存放區已使用 CMEK 加密,您就無法變更加密機制,改用的 Google 自有和 Google 代管 加密金鑰,也無法指派其他 Cloud KMS 金鑰進行加密。

如要進一步瞭解 CMEK,包括何時及為何啟用這項功能,請參閱 CMEK 總覽。

建立金鑰並授予權限

下列操作說明將介紹如何為存放區建立金鑰,並授予使用該金鑰加密及解密存放區資料的權限。您可以直接在 Cloud KMS 中建立金鑰,也可以使用透過 Cloud External Key Manager 提供的外部代管金鑰。

  1. 在要管理金鑰的 Google Cloud 專案中:

    1. 啟用 Cloud KMS API。

    2. 使用下列任一選項建立金鑰環和金鑰:

      Cloud KMS 金鑰位置必須與您要加密的存放區存放區位置相符。

  2. 如果您尚未在 Artifact Registry 專案中建立存放區,Artifact Registry 服務帳戶就不會存在。如要建立服務帳戶,請執行下列指令:

    gcloud beta services identity create --service=artifactregistry.googleapis.com --project=PROJECT
    

    將 PROJECT 替換為執行 Artifact Registry 的專案 ID。

  3. 將 CryptoKey Encrypter/Decrypter IAM 角色 (roles/cloudkms.cryptoKeyEncrypterDecrypter) 授予 Artifact Registry 服務帳戶。在您建立的金鑰上授予這項權限。

    控制台

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

      開啟 Cloud KMS 頁面

    2. 選取您建立的金鑰。

    3. 授予 Artifact Registry 服務帳戶存取權:

      1. 如果資訊面板已隱藏,請按一下「顯示資訊面板」。
      2. 按一下「授予存取權」。
      3. 在「新增主體」欄位中,新增 Artifact Registry 服務帳戶。服務帳戶為 service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com,其中 PROJECT-NUMBER 是 Artifact Registry 執行的 Google Cloud 專案專案編號。
      4. 在「選取角色」中,選取「Cloud KMS」 >「Cloud KMS CryptoKey 加密者/解密者」。
      5. 按一下 [儲存]。
    4. 重複上一個步驟,將存取權授予要建立存放區的帳戶。

    5. 返回「金鑰管理」頁面,然後再次選取金鑰。

    6. 如果資訊面板已隱藏,請按一下「顯示資訊面板」。「Role/Principal」(角色/主體) 專區應會顯示角色。

    gcloud

    1. 執行下列指令,授予 Artifact Registry 服務帳戶存取權:

      gcloud kms keys add-iam-policy-binding [--project=PROJECT] \
             KEY --location LOCATION --keyring=KEYRING \
             --member serviceAccount:service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com \
             --role roles/cloudkms.cryptoKeyEncrypterDecrypter
      

      地點

      • PROJECT 是包含金鑰的專案 ID。
      • KEY 是金鑰名稱。
      • LOCATION 是金鑰位置。金鑰位置必須與您要加密的存放區存放區位置相符。
      • KEYRING 是金鑰環名稱。
      • PROJECT-NUMBER 是執行 Artifact Registry 的 Google Cloud 專案專案編號。
    2. 重複上一個步驟,將存取權授予要建立存放區的帳戶。

    如要進一步瞭解這項指令,請參閱 gcloud kms keys add-iam-policy-binding 說明文件。

接著建立存放區,並指定用於加密的金鑰。

使用 Autokey 建立金鑰

Autokey 會在存放區所在位置建立新金鑰。

必要的角色

如要取得使用 Autokey 建立受保護存放區所需的權限,請要求管理員授予您資料夾或專案的下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

您或許也能透過自訂角色或其他預先定義的角色,取得必要權限。

建立金鑰

使用 Autokey 建立金鑰前,請先啟用 Cloud KMS Autokey。

  1. 在 Google Cloud 控制台中開啟「Repositories」(存放區) 頁面。

    開啟「存放區」頁面

  2. 點選「Create Repository」。

  3. 填寫標準、遠端或虛擬存放區的必填和選填欄位。

  4. 在「Encryption」(加密) 部分中,選擇「Cloud KMS with Autokey automated management」(Cloud KMS Autokey 自動管理)。

  5. 點選「建立」。

移除存取權

您可以透過下列幾種方式移除 CMEK 加密存放區的存取權:

建議您先撤銷 Artifact Registry 服務帳戶的權限,再停用或刪除金鑰。權限變更會在幾秒內生效,因此您可以觀察停用或銷毀金鑰的影響。

停用或刪除存放區的加密金鑰後,您將無法查看或擷取構件資料。存放區中儲存的所有構件資料都會無法存取,包括建構的構件、任意二進位資料 (Blob) 和資訊清單,例如 Docker 資訊清單或 npm packument 檔案。具備 Artifact Registry 讀取者角色 (roles/artifactregistry.reader) 或檢視者角色 (roles/artifactregistry.viewer) 的使用者,仍可查看構件中繼資料,例如構件名稱、版本或標記。

具備 Artifact Registry 管理員角色 (roles/artifactregistry.admin) 或擁有者角色 (roles/owner) 的使用者可以刪除存放區。

CMEK 組織政策

Artifact Registry 支援組織政策限制,可要求採用 CMEK 保護措施。

政策可以限制哪些 Cloud KMS CryptoKey 可用於 CMEK 保護措施。

  • 如果 Artifact Registry API 位於限制 constraints/gcp.restrictNonCmekServices 的政策服務清單 Deny 中,Artifact Registry 會拒絕建立未受 CMEK 保護的新存放區。

  • 設定 constraints/gcp.restrictCmekCryptoKeyProjects 後,Artifact Registry 會建立受 CMEK 保護的存放區,並以允許的專案、資料夾或機構中的 CryptoKey 保護這些存放區。

Pub/Sub 支援相同的限制。在 Google Cloud 專案中啟用 Artifact Registry API 時,Artifact Registry 會嘗試使用 的 Google 擁有及管理 加密金鑰,自動建立主題 ID 為 gcr 的 Pub/Sub 主題。不過,如果 Pub/Sub API 位於限制 constraints/gcp.restrictNonCmekServices 的 Deny 政策清單中,Pub/Sub 就不會建立主題。在這種情況下,您必須使用 CMEK 加密機制建立 gcr 主題。詳情請參閱「Pub/Sub 主題加密操作說明」。

如要進一步瞭解如何設定機構政策,請參閱「CMEK 機構政策」。

後續步驟