本頁說明如何設定 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 金鑰來保護資料。
建立新專案
在 Google Cloud 控制台中,前往「管理資源」頁面。
建立新 Google Cloud 專案或選取現有專案。
-
Make sure that billing is enabled for your Google Cloud project.
如要進一步瞭解 Cloud EKM 定價,請參閱這篇文章。
啟用 Cloud KMS
為專案啟用 Cloud Key Management Service API。
記下專案的 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:
啟用私人 Google 存取權
外部金鑰管理工具必須驗證每個要求中包含的 OIDC 權杖。為了驗證權杖,它需要從
www.googleapis.com
網域名稱中擷取 OAuth2 公開金鑰。如果外部金鑰管理工具在 Google Cloud 中執行,但無法透過網際網路存取 (例如 VM 沒有外部 IP 或遭防火牆封鎖),請按照設定私人 Google 存取權的操作說明操作。IP 範圍
35.199.192.0/19
的防火牆設定Cloud EKM 的要求會從這個範圍發出。針對外部金鑰管理工具正在接聽的通訊埠,為 TCP 建立輸入和輸出允許的防火牆規則。
設定混合式連線
如果外部金鑰管理工具是執行在內部,請使用混合式連線解決方案,將 VPC 連線至內部網路。設定連線後,請按照下列額外步驟操作:
啟用私人 Google 存取權
外部金鑰管理工具必須驗證每個要求中所含的 OIDC 權杖。如要驗證權杖,需要從
www.googleapis.com
網域名稱擷取 OAuth2 公開金鑰。如果外部金鑰管理工具是在地端部署並無法透過網際網路存取,請按照設定內部部署主機的私人 Google 存取權中的操作說明進行設定。IP 範圍
35.199.192.0/19
的防火牆設定Cloud EKM 的要求會從這個範圍發出。設定貴機構的內部網路防火牆或類似裝置,允許外部金鑰管理工具正在監聽的通訊埠上的 TCP 流量。
請確認您的虛擬私有雲網路有返回路徑可連往 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 代表該專案存取虛擬私有雲,即使主要專案和虛擬私有雲專案相同也一樣。授權存取權後,金鑰專案中的金鑰就能使用虛擬私有雲專案中的虛擬私有雲。
確認專案有 Cloud EKM 服務帳戶。
gcloud CLI
gcloud beta services identity create \ --service=cloudkms.googleapis.com \ --project=KEY_PROJECT_ID
將 VPC 專案中的
servicedirectory.viewer
和servicedirectory.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 連線。
控制台
前往 Google Cloud 控制台的「KMS 基礎架構」頁面。
按一下
「建立連線」。在「連線名稱」中,輸入連線的名稱。
在「區域」中,選取 EKM 連線的位置。與這個連線相關聯的任何 Cloud KMS 金鑰,都必須與連線位於相同位置。
在「Service resource ID (self_link)」欄位中,輸入在「Create a Service Directory service endpoint」一節中建立的 Service Directory 服務值。服務目錄服務必須與連線位於相同位置。
在「主機名稱」欄位中,新增外部金鑰管理工具的主機名稱。
在「憑證」中,按一下「新增憑證」,為外部金鑰管理工具上傳一或多個 X.509 伺服器憑證。憑證必須採用 DER 格式。
如要使用 EKM 連線,請針對EKM 管理模式選取「手動」,以便為手動管理的外部金鑰使用 EKM 連線;如果要使用 EKM 連線,請選取「Cloud KMS」,以便為協調的外部金鑰使用 EKM 連線。
如果您為 EKM 管理模式 選取「Cloud KMS」,請在「Crypto space path」欄位中輸入 EKM 提供的加密空間路徑。
(非必要) 如要將 EKM 連線設為此專案和地點的預設連線,請選取「Set connection as the default」核取方塊。如果目前已將其他 EKM 連線設為此專案和位置的預設連線,此 EKM 連線就會取代現有的預設連線。
按一下 [建立]。
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
:外部金鑰管理員的主機名稱。
憑證狀態
上傳 EKM 連線的憑證後,您可以前往 KMS 基礎架構頁面,查看 EKM 連線的整體憑證狀態,以及每個憑證的狀態。
EKM 連線的整體狀態會顯示在每個連線的「憑證狀態」欄中。如果 EKM 連線的狀態不是「Active」,建議您更新 EKM 連線的憑證。
EKM 連線和個別憑證都可能顯示下列狀態:
- 有效:憑證有效且未接近到期日。
- 30 天內到期:憑證有效,但到期日為未來 30 天內。
- 已過期:憑證已過期且失效。建議您更新所有已過期的憑證。
- 尚未生效:憑證尚未啟用。如果憑證的開始日期是未來的時間,就可能發生這種情況。
如果憑證已失效,請在Google Cloud 控制台中更新 EKM 連線。
控制台
前往 Google Cloud 控制台的「KMS 基礎架構」頁面。
按一下透過虛擬私有雲連線的 EKM 名稱,並點選需要更新的憑證。
按一下「編輯連線」。
按一下「Add certificate」,為外部金鑰管理工具上傳一或多個 X.509 伺服器憑證。憑證必須採用 DER 格式。
移除已過期的憑證。將滑鼠游標懸停在已過期的憑證上,然後選取右側的「刪除」圖示。
按一下「更新連線」,透過虛擬私有雲連線更新 EKM。
將 EKM 連線設為預設
您可以將 EKM 連線設為特定專案和地點的預設連線。為專案和位置設定預設 EKM 連線後,除非選取其他 EKM 連線,否則在該位置的鑰圈中建立的全新 Cloud EKM 透過 VPC 金鑰,會使用指定的 EKM 連線。
如要將 EKM 連線設為專案和位置的預設值,請完成下列步驟:
控制台
前往 Google Cloud 控制台的「KMS 基礎架構」頁面。
按一下要設為預設的 EKM 連線。
按一下「編輯連線」。
在「預設連線」下方,選取「設為 LOCATION 的預設連線」核取方塊。
按一下「更新連線」。
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 連線做為預設。