建立 EKM 連線

本頁說明如何設定 Cloud External Key Manager (Cloud EKM),透過虛擬私有雲 (VPC) 網路連線至外部金鑰管理 (EKM) 供應商。

您可以在支援透過虛擬私有雲連至 EKM 的 Cloud KMS 位置,透過虛擬私有雲使用外部金鑰。詳情請參閱 Cloud KMS 位置頁面。

術語

  • EKM 連線

    用於設定外部金鑰管理工具連線的 Cloud KMS 資源。在 Google Cloud 控制台中,這項配額的顯示名稱為「透過虛擬私有雲連至 EKM」

  • VPC 專案

    這個專案會保留用於連線至外部金鑰管理工具的 VPC 資源。

  • 重要專案

    在 Cloud KMS 中保留 EKM 連線資源和 Cloud EKM 金鑰的專案。金鑰專案可以與虛擬私有雲專案相同,但這並非必要。

  • 加密貨幣空間

    外部金鑰管理合作夥伴中的資源容器。您的加密空間會透過專屬加密空間路徑識別。加密空間路徑的格式因外部金鑰管理合作夥伴而異,例如 v0/cryptospaces/YOUR_UNIQUE_PATH

事前準備

完成下列步驟後,您就能開始使用 Cloud EKM 金鑰來保護資料。

建立新專案

  1. 在 Google Cloud 控制台中,前往「管理資源」頁面。

    前往「管理資源」頁面

  2. 建立新 Google Cloud 專案或選取現有專案。

  3. Make sure that billing is enabled for your Google Cloud project.

  4. 如要進一步瞭解 Cloud EKM 定價,請參閱這篇文章

啟用 Cloud KMS

  1. 為專案啟用 Cloud Key Management Service API。

    啟用 Cloud Key Management Service API

  2. 記下專案的 Cloud EKM 服務帳戶。在以下範例中,請將 PROJECT_NUMBER 替換為Google Cloud 專案的專案編號。每次使用 Google Cloud 控制台建立 Cloud EKM 金鑰時,也會顯示這項資訊。

    service-PROJECT_NUMBER@gcp-sa-ekms.iam.gserviceaccount.com
    

確認 gcloud CLI 為最新版本

如果您要使用 Google Cloud CLI,請使用下列指令確認其為最新版本:

gcloud CLI

gcloud components update

準備虛擬私有雲網路

設定 VPC 網路時,您有兩種選擇:

根據預設,新專案會包含自動模式網路,其中預先填入防火牆規則。如果虛擬私有雲網路不會用於實際工作環境,預設的自動模式網路是開始使用網路的最佳方式。

如果外部金鑰管理工具在內部部署執行,且您會透過混合連線連線至該工具,則應使用自訂模式網路,因為這可讓您控管子網路 IP 位址範圍。

請按照下列步驟設定 VPC:

  1. 啟用私人 Google 存取權

    外部金鑰管理工具必須驗證每個要求中包含的 OIDC 權杖。為了驗證權杖,它需要從 www.googleapis.com 網域名稱中擷取 OAuth2 公開金鑰。如果外部金鑰管理工具在 Google Cloud 中執行,但無法透過網際網路存取 (例如 VM 沒有外部 IP 或遭防火牆封鎖),請按照設定私人 Google 存取權的操作說明操作。

  2. IP 範圍 35.199.192.0/19 的防火牆設定

    Cloud EKM 的要求會從這個範圍發出。針對外部金鑰管理工具正在接聽的通訊埠,為 TCP 建立輸入和輸出允許的防火牆規則

設定混合式連線

如果外部金鑰管理工具是執行在內部,請使用混合式連線解決方案,將 VPC 連線至內部網路。設定連線後,請按照下列額外步驟操作:

  1. 啟用私人 Google 存取權

    外部金鑰管理工具必須驗證每個要求中所含的 OIDC 權杖。如要驗證權杖,需要從 www.googleapis.com 網域名稱擷取 OAuth2 公開金鑰。如果外部金鑰管理工具是在地端部署並無法透過網際網路存取,請按照設定內部部署主機的私人 Google 存取權中的操作說明進行設定。

  2. IP 範圍 35.199.192.0/19 的防火牆設定

    Cloud EKM 的要求會從這個範圍發出。設定貴機構的內部網路防火牆或類似裝置,允許外部金鑰管理工具正在監聽的通訊埠上的 TCP 流量。

  3. 請確認您的虛擬私有雲網路有返回路徑可連往 IP 範圍 35.199.192.0/19

    您的內部部署網路必須有 35.199.192.0/19 目的地的路徑。如要瞭解如何滿足這項規定,請參閱回傳路徑策略適用於內部端目標

適用於內部目標的回傳路徑策略

  • 如果是使用靜態轉送的 VPN 通道,則必須在您的內部部署網路中手動建立路徑,其目的地為 35.199.192.0/19,而下一個躍點是 Cloud VPN 通道。針對使用政策型轉送的 Cloud VPN 通道,請設定 Cloud VPN 的本機流量選取器和內部部署 VPN 閘道的遠端流量選取器,以納入 35.199.192.0/19

  • 如果 Cloud VPN 通道使用的是動態轉送,或是 Cloud Interconnect,請在管理通道或 VLAN 連結的 Cloud Router 的 BGP 工作階段中,為 35.199.192.0/19設定自訂廣告模式

設定外部金鑰管理工具

按照 EKM 供應商的操作說明設定 EKM。

設定加密貨幣空間

如果您使用 Cloud EKM 做為合作夥伴管理的 EKM 安排,合作夥伴會在佈建程序中為您完成這些步驟。

如果您的 EKM 供應商與 Cloud KMS 的 EKM 金鑰管理服務相容,則必須在 EKM 中執行下列設定步驟:

  • 在 EKM 中為 Cloud KMS 管理的資源建立加密空間。

  • 授予 Cloud KMS 服務帳戶存取加密空間和其中建立的金鑰的權限。

  • 設定金鑰存取依據政策,定義應允許或拒絕哪些存取依據。

每個步驟的具體程序取決於您的 EKM。詳情請參閱 EKM 供應商的說明文件。

建立 Service Directory 服務端點

在 VPC 專案中建立並設定 Service Directory 服務端點,指向外部金鑰管理工具的私人 IP 位址和連接埠。如果您在多個 EKM 副本前面使用負載平衡器,請使用負載平衡器的 IP 位址和通訊埠。確認 Service Directory 服務端點的「network」欄位已填入內容。

授權 Cloud EKM 存取您的虛擬私有雲

針對每個主要專案,您必須授權 Cloud EKM 代表該專案存取虛擬私有雲,即使主要專案和虛擬私有雲專案相同也一樣。授權存取權後,金鑰專案中的金鑰就能使用虛擬私有雲專案中的虛擬私有雲。

  1. 確認專案有 Cloud EKM 服務帳戶。

    gcloud CLI

    gcloud beta services identity create \
      --service=cloudkms.googleapis.com \
      --project=KEY_PROJECT_ID
    
  2. 將 VPC 專案中的 servicedirectory.viewerservicedirectory.pscAuthorizedService 授予 service-KEY_PROJECT_NUMBER@gcp-sa-ekms.iam.gserviceaccount.com。如需取得專案 ID 和編號的相關說明,請參閱建立及管理專案

    gcloud CLI

    gcloud projects add-iam-policy-binding VPC_PROJECT_ID \
      --member=serviceAccount:service-KEY_PROJECT_NUMBER@gcp-sa-ekms.iam.gserviceaccount.com \
      --role=roles/servicedirectory.viewer
    
    gcloud projects add-iam-policy-binding VPC_PROJECT_ID \
      --member=serviceAccount:service-KEY_PROJECT_NUMBER@gcp-sa-ekms.iam.gserviceaccount.com \
      --role=roles/servicedirectory.pscAuthorizedService
    

建立 EKM 連線

如要將外部金鑰管理工具連線至 Cloud EKM,請在金鑰專案中建立 EKM 連線

控制台

  1. 前往 Google Cloud 控制台的「KMS 基礎架構」頁面。

    前往 KMS 基礎架構

  2. 按一下 「建立連線」

  3. 在「連線名稱」中,輸入連線的名稱。

  4. 在「區域」中,選取 EKM 連線的位置。與這個連線相關聯的任何 Cloud KMS 金鑰,都必須與連線位於相同位置。

  5. 在「Service resource ID (self_link)」欄位中,輸入在「Create a Service Directory service endpoint」一節中建立的 Service Directory 服務值。服務目錄服務必須與連線位於相同位置。

  6. 在「主機名稱」欄位中,新增外部金鑰管理工具的主機名稱。

  7. 在「憑證」中,按一下「新增憑證」,為外部金鑰管理工具上傳一或多個 X.509 伺服器憑證。憑證必須採用 DER 格式。

  8. 如要使用 EKM 連線,請針對EKM 管理模式選取「手動」,以便為手動管理的外部金鑰使用 EKM 連線;如果要使用 EKM 連線,請選取「Cloud KMS」,以便為協調的外部金鑰使用 EKM 連線。

  9. 如果您為 EKM 管理模式 選取「Cloud KMS」,請在「Crypto space path」欄位中輸入 EKM 提供的加密空間路徑。

  10. (非必要) 如要將 EKM 連線設為此專案和地點的預設連線,請選取「Set connection as the default」核取方塊。如果目前已將其他 EKM 連線設為此專案和位置的預設連線,此 EKM 連線就會取代現有的預設連線。

  11. 按一下 [建立]。

gcloud

如要在指令列上使用 Cloud KMS,請先安裝或升級至最新版 Google Cloud CLI

如要為手動管理的外部金鑰建立 EKM 連線,請執行下列指令:

gcloud beta kms ekm-connections create EKM_CONNECTION \
    --location LOCATION \
    --service-directory-service SERVICE_DIRECTORY_SERVICE \
    --hostname HOSTNAME \
    --server-certificates-files SERVER_CERTIFICATE_FILES \
    --key-management-mode manual

更改下列內容:

  • EKM_CONNECTION:EKM 連線的名稱。
  • LOCATION:您要建立 EKM 連線的 Cloud KMS 位置。與此連線相關聯的任何 Cloud KMS 金鑰,都必須與連線位於相同位置。
  • SERVICE_DIRECTORY_SERVICE:連線的 Service Directory 服務資源 ID。
  • HOSTNAME:外部金鑰管理工具的主機名稱。
  • SERVER_CERTIFICATE_FILES:以半形逗號分隔的檔案清單,其中包含外部金鑰管理工具的 X.509 伺服器憑證。憑證必須採用 DER 格式。

如要為協調的外部金鑰建立 EKM 連線,請執行下列指令:

gcloud beta kms ekm-connections create EKM_CONNECTION \
    --location LOCATION \
    --service-directory-service SERVICE_DIRECTORY_SERVICE \
    --hostname HOSTNAME \
    --server-certificates-files SERVER_CERTIFICATE_FILES \
    --key-management-mode cloud-kms \
    --crypto-space-path CRYPTO_SPACE_PATH

更改下列內容:

  • EKM_CONNECTION:EKM 連線的名稱。
  • LOCATION:您要建立 EKM 連線的 Cloud KMS 位置。與此連線相關聯的任何 Cloud KMS 金鑰,都必須與連線位於相同位置。
  • SERVICE_DIRECTORY_SERVICE:連線的 Service Directory 服務資源 ID。
  • HOSTNAME:外部金鑰管理工具的主機名稱。
  • SERVER_CERTIFICATE_FILES:以半形逗號分隔的檔案清單,其中包含外部金鑰管理工具的 X.509 伺服器憑證。憑證必須採用 DER 格式。
  • CRYPTO_SPACE_PATH:EKM 供應商提供的加密空間路徑。

如需所有旗標和可能值的相關資訊,請搭配 --help 旗標執行指令。

API

這些範例會使用 curl 做為 HTTP 用戶端,以示範如何使用 API。如要進一步瞭解存取控制,請參閱「存取 Cloud KMS API」。

如要為協調的外部金鑰建立 EKM 連線,請執行下列指令:

curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ekmConnections" \
    --request "POST" \
    --header "authorization: Bearer TOKEN" \
    --header "content-type: application/json" \
    --header "x-goog-user-project: PROJECT_ID" \
    --data '{
      "name": "EKM_CONNECTION",
      "serviceResolvers": [
        {
          "serviceDirectoryService": "SERVICE_DIRECTORY_SERVICE",
          "hostname": "HOSTNAME",
          "serverCertificates": [
            {
              SERVER_CERTIFICATES
            }
          ]
        }
      ]
      "keyManagementMode": "CLOUD_KMS",
      "cryptoSpacePath": "CRYPTO_SPACE_PATH"
    }'

更改下列內容:

  • PROJECT_ID:您要建立 EKM 連線的專案 ID。
  • LOCATION:您要建立 EKM 連線的 Cloud KMS。
  • EKM_CONNECTION:EKM 連線的名稱。
  • SERVER_CERTIFICATES:最多 10 個 Certificate 物件清單,這些物件代表分葉伺服器憑證。
  • HOSTNAME:外部金鑰管理工具的主機名稱。
  • CRYPTO_SPACE_PATH:EKM 供應商提供的加密空間路徑。

如要為手動管理的外部金鑰建立 EKM 連線,請執行下列指令:

curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ekmConnections" \
    --request "POST" \
    --header "authorization: Bearer TOKEN" \
    --header "content-type: application/json" \
    --header "x-goog-user-project: PROJECT_ID" \
    --data '{
      "name": "EKM_CONNECTION",
      "serviceResolvers": [
        {
          "serviceDirectoryService": "SERVICE_DIRECTORY_SERVICE",
          "hostname": "HOSTNAME",
          "serverCertificates": [
            {
              SERVER_CERTIFICATES
            }
          ]
        }
      ]
    }'

更改下列內容:

  • PROJECT_ID:您要建立 EKM 連線的專案 ID。
  • LOCATION:您要建立 EKM 連線的 Cloud KMS。
  • EKM_CONNECTION:EKM 連線的名稱。
  • SERVER_CERTIFICATES:最多 10 個代表分葉伺服器憑證的 Certificate 物件清單。
  • HOSTNAME:外部金鑰管理員的主機名稱。

詳情請參閱 EkmConnection.create API 說明文件

憑證狀態

上傳 EKM 連線的憑證後,您可以前往 KMS 基礎架構頁面,查看 EKM 連線的整體憑證狀態,以及每個憑證的狀態。

EKM 連線的整體狀態會顯示在每個連線的「憑證狀態」欄中。如果 EKM 連線的狀態不是「Active」,建議您更新 EKM 連線的憑證。

EKM 連線和個別憑證都可能顯示下列狀態:

  • 有效:憑證有效且未接近到期日。
  • 30 天內到期:憑證有效,但到期日為未來 30 天內。
  • 已過期:憑證已過期且失效。建議您更新所有已過期的憑證。
  • 尚未生效:憑證尚未啟用。如果憑證的開始日期是未來的時間,就可能發生這種情況。

如果憑證已失效,請在Google Cloud 控制台中更新 EKM 連線。

控制台

  1. 前往 Google Cloud 控制台的「KMS 基礎架構」頁面。

    前往 KMS 基礎架構

  2. 按一下透過虛擬私有雲連線的 EKM 名稱,並點選需要更新的憑證。

  3. 按一下「編輯連線」

  4. 按一下「Add certificate」,為外部金鑰管理工具上傳一或多個 X.509 伺服器憑證。憑證必須採用 DER 格式。

  5. 移除已過期的憑證。將滑鼠游標懸停在已過期的憑證上,然後選取右側的「刪除」圖示。

  6. 按一下「更新連線」,透過虛擬私有雲連線更新 EKM。

將 EKM 連線設為預設

您可以將 EKM 連線設為特定專案和地點的預設連線。為專案和位置設定預設 EKM 連線後,除非選取其他 EKM 連線,否則在該位置的鑰圈中建立的全新 Cloud EKM 透過 VPC 金鑰,會使用指定的 EKM 連線。

如要將 EKM 連線設為專案和位置的預設值,請完成下列步驟:

控制台

  1. 前往 Google Cloud 控制台的「KMS 基礎架構」頁面。

    前往 KMS 基礎架構

  2. 按一下要設為預設的 EKM 連線。

  3. 按一下「編輯連線」

  4. 在「預設連線」下方,選取「設為 LOCATION 的預設連線」核取方塊。

  5. 按一下「更新連線」

gcloud CLI

gcloud kms ekm-config update
  --location=LOCATION
  --default-ekm-connection=projects/PROJECT_ID/locations/LOCATION/ekmConnections/DEFAULT_EKM_CONNECTION

更改下列內容:

  • LOCATION:您要為其設定預設 EKM 連線的 Cloud KMS。
  • PROJECT_ID:您要設定預設 EKM 連線的專案名稱。
  • DEFAULT_EKM_CONNECTION:您要將哪個 EKM 連線設為這個位置的預設值。EKM 連線的位置必須與 LOCATION 中指定的位置相符。

API

如要為位置設定預設 EKM 連線,請使用 EkmConfig.patch 方法:

curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ekmConfig" \
    --request "PATCH" \
    --header "authorization: Bearer TOKEN" \
    --header "content-type: application/json" \
    --data '{"defaultEkmConnection": "projects/PROJECT_ID/locations/LOCATION/ekmConnections/DEFAULT_EKM_CONNECTION"}'

更改下列內容:

  • PROJECT_ID:您要為其設定預設 EKM 連線的專案 ID。
  • LOCATION:您要為其設定預設 EKM 連線的 Cloud KMS。
  • DEFAULT_EKM_CONNECTION:您要將哪個 EKM 連線設為這個位置的預設值。EKM 連線的位置必須與 LOCATION 中指定的位置相符。

如果已將其他 EKM 連線設為這個位置的預設連線,則系統會將所選 EKM 連線取代為預設連線。特定專案和位置只能有一個 EKM 連線做為預設。

後續步驟