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

本頁說明如何使用客戶自行管理的加密金鑰 (CMEK) 加密存放區中的內容。

總覽

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

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

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

使用 Cloud KMS Autokey 的 CMEK

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

如要手動設定 CMEK,請參閱建立金鑰及授予權限

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

您可以在建立存放區時指派 CMEK 金鑰。您無法變更現有存放區的加密機制。如果您有使用 CMEK 加密的存放區,就無法變更加密機制,以便使用的 Google 自有且由 Google 管理的 加密金鑰,或指派其他 Cloud KMS 金鑰進行加密。

如要進一步瞭解 CMEK 的一般資訊,包括啟用 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. 前往「Cryptographic keys」(加密編譯金鑰) 頁面。

      開啟 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. 選取「顯示資訊面板」。您應該會在「角色/成員」欄中看到角色。

    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 角色:

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

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

建立金鑰

您必須先啟用 Cloud KMS Autokey,才能使用 Autokey 建立金鑰。

  1. 在 Google Cloud 控制台中開啟「Repositories」頁面。

    開啟「存放區」頁面

  2. 點選 [Create Repository] (建立存放區)

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

  4. 在「Encryption」區段中,選擇「Cloud KMS with Autokey automated management」

  5. 按一下 [建立]。

移除存取權

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

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

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

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

CMEK 組織政策

Artifact Registry 支援機構政策限制,可要求使用 CMEK 保護機制。

政策可限制用於 CMEK 保護的 Cloud KMS CryptoKey。

  • 如果 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 擁有且由 Google 管理的 加密金鑰,自動建立主題 ID 為 gcr 的 Pub/Sub 主題。不過,如果 Pub/Sub API 位於限制 constraints/gcp.restrictNonCmekServicesDeny 政策清單中,Pub/Sub 就不會建立主題。在這種情況下,您必須使用 CMEK 加密功能建立 gcr 主題。詳情請參閱 Pub/Sub 加密主題的操作說明

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

後續步驟