根據預設,Eventarc 會加密靜態儲存的客戶內容。Eventarc 會為您處理加密作業,您不必採取任何其他動作。這項做法稱為「Google 預設加密」。
如要控管加密金鑰,您可以在 Cloud KMS 中使用客戶自行管理的加密金鑰 (CMEK),搭配 Eventarc 等整合 CMEK 的服務。使用 Cloud KMS 金鑰可讓您控管保護等級、位置、輪換時間表、使用權限和存取權,以及加密範圍。使用 Cloud KMS 也能查看稽核記錄,以及控管金鑰生命週期。您可以在 Cloud KMS 中控制及管理這些金鑰,而不是由 Google 擁有及管理用來保護您資料的對稱金鑰加密金鑰 (KEK)。
使用 CMEK 設定資源後,存取 Eventarc 資源的體驗與使用 Google 預設加密機制類似。如要進一步瞭解加密選項,請參閱客戶管理的加密金鑰 (CMEK)。
客戶代管的加密金鑰會以軟體金鑰的形式儲存在 Cloud HSM 叢集中,或透過 Cloud External Key Manager 儲存在外部。
受 CMEK 保護的項目
您可以設定 CMEK,加密透過下列 Eventarc 進階資源傳送的事件訊息:
MessageBus
- Eventarc Advanced 匯流排Pipeline
- Eventarc Advanced 管道GoogleApiSource
:Eventarc Advanced 資源,代表特定匯流排的 Google API 事件訂閱項目
詳情請參閱 Eventarc Advanced 總覽。
為資源啟用 CMEK 後,系統會使用只有您能存取的加密金鑰,保護該區域中與資源相關聯的資料。
Cloud KMS 和 Eventarc 都是地區化服務。Cloud KMS 金鑰和受保護的 Eventarc Advanced 資源必須位於相同區域。
事前準備
如要在 Eventarc 中使用這項功能,請先完成下列動作:
主控台
-
Enable the Cloud KMS and Eventarc APIs.
- 建立金鑰環。
- 為指定金鑰環建立金鑰。
gcloud
- 更新
gcloud
元件。gcloud components update
- 針對要用來儲存加密金鑰的專案,啟用 Cloud KMS 和 Eventarc API。
gcloud services enable cloudkms.googleapis.com eventarc.googleapis.com
- 建立金鑰環。
- 為指定金鑰環建立金鑰。
如要瞭解所有旗標和可能的值,請使用 --help
旗標執行指令。
授予 Eventarc 服務帳戶金鑰存取權
如要授予 Eventarc 服務帳戶 Cloud KMS 金鑰的存取權,請將服務帳戶新增為金鑰的主體,並授予服務帳戶 Cloud KMS CryptoKey Encrypter/Decrypter 角色:
主控台
使用 Google Cloud 控制台為匯流排或管道啟用 CMEK 時,系統會提示您將 Cloud KMS CryptoKey Encrypter/Decrypter 角色授予服務帳戶。如需更多資訊,請參閱本文中的「為匯流排啟用 CMEK」或「為管道啟用 CMEK」。
gcloud
gcloud kms keys add-iam-policy-binding KEY_NAME \ --keyring KEY_RING \ --location REGION \ --member serviceAccount:SERVICE_AGENT_EMAIL \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
更改下列內容:
KEY_NAME
:金鑰名稱,例如my-key
KEY_RING
:金鑰環的名稱,例如my-keyring
REGION
:金鑰位置,例如us-central1
SERVICE_AGENT_EMAIL
:具有eventarc.serviceAgent
角色的服務帳戶電子郵件地址例如:
service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com
。詳情請參閱服務代理程式。
為匯流排啟用 CMEK
為 Eventarc Advanced 匯流排啟用 CMEK 後,透過匯流排傳送的所有訊息都會以該 CMEK 金鑰完整加密。
主控台
在 Google Cloud 控制台中,依序前往「Eventarc」>「Bus」(匯流排) 頁面。
您可以建立巴士,或點選巴士名稱來更新巴士。
在「匯流排詳細資料」頁面中,按一下「編輯」。
在「編輯匯流排」頁面中,選取「加密」的「Cloud KMS 金鑰」。
在「金鑰類型」清單中,選取金鑰管理方法。
您可以手動管理金鑰,也可以使用 Autokey 視需要產生金鑰環和金鑰。如果「Autokey」選項停用,表示尚未與目前的資源類型整合。
在「選取 Cloud KMS 金鑰」清單中,選取金鑰。
選用:如要手動輸入金鑰的資源名稱,請在「選取 Cloud KMS 金鑰」清單中,按一下「手動輸入金鑰」,然後以指定格式輸入金鑰名稱。
如果系統提示,請將
cloudkms.cryptoKeyEncrypterDecrypter
角色授予 Eventarc 服務代理。按一下 [儲存]。
gcloud
使用 gcloud beta eventarc message-buses update
指令為匯流排啟用 CMEK:
gcloud beta eventarc message-buses update BUS_NAME \ --location=REGION \ --crypto-key=KEY
更改下列內容:
BUS_NAME
:公車的 ID 或完整識別碼REGION
:支援的 Eventarc Advanced 位置KEY
:Cloud KMS 金鑰的完整名稱,格式為projects/PROJECT_NAME/locations/REGION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
金鑰的
REGION
必須與要保護的匯流排位置相符。
確認 Cloud KMS 使用情形
確認匯流排現在符合 CMEK 規定。
主控台
在 Google Cloud 控制台中,依序前往「Eventarc」>「Bus」(匯流排) 頁面。
按一下您使用 CMEK 保護的匯流排名稱。
在「匯流排詳細資料」頁面中,「加密」狀態會指出使用的客戶代管加密金鑰。您可以點選金鑰,前往 Security Command Center 查看。
否則,狀態訊息為
Event messages encrypted using Google-managed encryption keys
。
gcloud
使用 gcloud beta eventarc message-buses describe
指令描述匯流排:
gcloud beta eventarc message-buses describe BUS_NAME \ --location=REGION
畫面會顯示如下的輸出內容:
cryptoKeyName: projects/PROJECT_ID/locations/REGION/keyRings/RING_NAME/cryptoKeys/KEY_NAME name: projects/PROJECT_ID/locations/REGION/messageBuses/BUS_NAME updateTime: '2022-06-28T17:24:56.365866104Z'
cryptokeyName
值會顯示用於匯流排的 Cloud KMS 金鑰。
停用匯流排的 CMEK
您可以停用與匯流排相關聯的 CMEK 保護。透過匯流排傳送的事件仍受 Google-owned and Google-managed encryption keys 保護。
主控台
在 Google Cloud 控制台中,依序前往「Eventarc」>「Bus」(匯流排) 頁面。
按一下匯流排名稱。
在「匯流排詳細資料」頁面中,按一下「編輯」。
在「Edit bus」(編輯匯流排) 頁面,選取「Encryption」(加密) 的「Google-managed encryption key」(Google 代管的加密金鑰)。
按一下 [儲存]。
gcloud
使用 gcloud beta eventarc message-buses update
指令停用匯流排的 CMEK:
gcloud beta eventarc message-buses update BUS_NAME \ --location=REGION \ --clear-crypto-key
為管道啟用 CMEK
為 Eventarc Advanced 管道啟用 CMEK 後,管道傳送的所有訊息都會以該 CMEK 金鑰完整加密。
主控台
在 Google Cloud 控制台中,依序前往「Eventarc」>「Pipelines」(管道) 頁面。
您可以建立管道,或是點按管道名稱來更新管道。
在「Pipeline details」(管道詳細資料) 頁面中,按一下
「Edit」(編輯)。在「Edit pipeline」(編輯管道) 頁面中,選取「Encryption」(加密) 的「Cloud KMS key」(Cloud KMS 金鑰)。
在「金鑰類型」清單中,選取金鑰管理方法。
您可以手動管理金鑰,也可以使用 Autokey 視需要產生金鑰環和金鑰。如果 Autokey 選項停用,表示尚未與目前的資源類型整合。
在「選取 Cloud KMS 金鑰」清單中,選取金鑰。
選用:如要手動輸入金鑰的資源名稱,請在「選取 Cloud KMS 金鑰」清單中,按一下「手動輸入金鑰」,然後以指定格式輸入金鑰名稱。
如果系統提示,請將
cloudkms.cryptoKeyEncrypterDecrypter
角色授予 Eventarc 服務代理。按一下 [儲存]。
gcloud
使用 gcloud beta eventarc pipelines update
指令為管道啟用 CMEK:
gcloud beta eventarc pipelines update PIPELINE_NAME \ --location=REGION \ --crypto-key=KEY
更改下列內容:
PIPELINE_NAME
:管道的 ID 或完整 IDREGION
:支援的 Eventarc Advanced 位置KEY
:Cloud KMS 金鑰的完整名稱,格式為projects/PROJECT_NAME/locations/REGION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
金鑰的
REGION
必須與要保護的管道位置相符。
確認 Cloud KMS 使用情形
確認管道現在符合 CMEK 規定。
主控台
在 Google Cloud 控制台中,依序前往「Eventarc」>「Pipelines」(管道) 頁面。
按一下您使用 CMEK 保護的管道名稱。
在「管道詳細資料」頁面中,「加密」狀態會指出使用的客戶代管加密金鑰。您可以點選金鑰,前往 Security Command Center 查看。
否則,狀態訊息為
Event messages encrypted using Google-managed encryption keys
。
gcloud
使用 gcloud beta eventarc pipelines describe
指令驗證管道的 CMEK:
gcloud beta eventarc pipelines describe PIPELINE_NAME \ --location=REGION
畫面會顯示如下的輸出內容:
createTime: '2022-06-28T18:05:52.403999904Z' cryptoKeyName: projects/PROJECT_ID/locations/REGION/keyRings/RING_NAME/cryptoKeys/KEY_NAME destinations: ... name: projects/PROJECT_ID/locations/REGION/pipelines/PIPELINE_NAME uid: 5ea277f9-b4b7-4e7f-a8e0-6ca9d7204fa3 updateTime: '2022-06-28T18:09:18.650727516Z'
cryptokeyName
值會顯示管道使用的 Cloud KMS 金鑰。
停用管道的 CMEK
您可以停用與管道相關聯的 CMEK 保護機制。透過管道傳送的事件仍受 Google-owned and Google-managed encryption keys 保護。
主控台
在 Google Cloud 控制台中,依序前往「Eventarc」>「Pipelines」(管道) 頁面。
按一下管道名稱。
在「Pipeline details」(管道詳細資料) 頁面中,按一下
「Edit」(編輯)。在「Edit pipeline」(編輯管道) 頁面,選取「Encryption」(加密) 的「Google-managed encryption key」(Google 代管的加密金鑰)。
按一下 [儲存]。
gcloud
使用 gcloud beta eventarc pipelines update
指令,為管道停用 CMEK:
gcloud beta eventarc pipelines update PIPELINE_NAME \ --location=REGION \ --clear-crypto-key
為 Google API 來源啟用 CMEK
為 GoogleApiSource
資源啟用 CMEK 後,系統會使用 CMEK 金鑰,為該資源收集的所有訊息進行完整加密。
主控台
在 Google Cloud 控制台中,依序前往「Eventarc」>「Bus」(匯流排) 頁面。
您可以建立巴士,或點選巴士名稱來更新巴士。
在「匯流排詳細資料」頁面中,按一下「編輯」。
如要新增訊息來源,請按一下
「新增來源」。如果訊息來源已存在,您必須先刪除,然後新增訊息來源。
在「新增訊息來源」窗格中,針對 Google API 訊息提供者,接受預設值
google-api-source
。在「Encryption」(加密) 中,選取「Cloud KMS key」(Cloud KMS 金鑰),然後執行下列操作:
在「金鑰類型」清單中,選取金鑰管理方法。
您可以手動管理金鑰,也可以使用 Autokey 視需要產生金鑰環和金鑰。如果 Autokey 選項停用,表示尚未與目前的資源類型整合。
在「選取 Cloud KMS 金鑰」中,選取金鑰。
您必須先選取區域,才能查看客戶自行管理的金鑰。
選用:如要手動輸入金鑰的資源名稱,請在「選取 Cloud KMS 金鑰」清單中按一下「手動輸入金鑰」,然後以指定格式輸入金鑰名稱。
如果系統提示,請將
cloudkms.cryptoKeyEncrypterDecrypter
角色授予 Eventarc 服務代理。
點選「建立」。
啟用這項功能後,系統會自動收集直接來自 Google 來源的事件,且所有事件訊息都會以 CMEK 金鑰完整加密。
只有與
GoogleApiSource
位於相同 Google Cloud 專案的資源事件會發布。詳情請參閱「從 Google 來源發布事件」。按一下 [儲存]。
gcloud
使用 gcloud beta eventarc google-api-sources update
指令,為 GoogleApiSource
資源啟用 CMEK:
gcloud beta eventarc google-api-sources update GOOGLE_API_SOURCE_NAME \ --location=REGION \ --crypto-key=KEY
更改下列內容:
GOOGLE_API_SOURCE_NAME
:GoogleApiSource
資源的 ID 或完整 IDREGION
:支援的 Eventarc Advanced 位置KEY
:Cloud KMS 金鑰的完整名稱,格式為projects/PROJECT_NAME/locations/REGION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
金鑰的
REGION
必須與要保護的資源位置相符。
確認 Cloud KMS 使用情形
確認資源現在符合 CMEK 規定。
主控台
在 Google Cloud 控制台中,依序前往「Eventarc」>「Bus」(匯流排) 頁面。
按一下訊息來源已使用 Cloud KMS 金鑰保護的匯流排名稱。
在「匯流排詳細資料」頁面中,按一下「編輯」。
系統會列出加密訊息來源的金鑰。您可以點選金鑰,前往 Security Command Center 查看。
否則,「加密」狀態訊息為
Event messages encrypted using Google-managed encryption keys
。
gcloud
使用 gcloud beta eventarc google-api-sources describe
指令,驗證 GoogleApiSource
資源的 CMEK:
gcloud beta eventarc google-api-sources describe GOOGLE_API_SOURCE_NAME \ --location=REGION
畫面會顯示如下的輸出內容:
createTime: '2022-06-28T18:05:52.403999904Z' cryptoKeyName: projects/PROJECT_ID/locations/REGION/keyRings/RING_NAME/cryptoKeys/KEY_NAME destination: projects/PROJECT_ID/locations/REGION/messageBuses/BUS_NAME name: projects/PROJECT_ID/locations/REGION/googleApiSources/GOOGLE_API_SOURCE_NAME uid: 5ea277f9-b4b7-4e7f-a8e0-6ca9d7204fa3 updateTime: '2022-06-28T18:09:18.650727516Z'
cryptokeyName
值會顯示管道使用的 Cloud KMS 金鑰。
停用 Google API 來源的 CMEK
您可以停用與 Google API 來源相關聯的 CMEK 保護機制。透過 GoogleApiSource
資源收集的事件仍受 Google-owned and Google-managed encryption keys 保護。
主控台
在 Google Cloud 控制台中,依序前往「Eventarc」>「Bus」(匯流排) 頁面。
按一下訊息來源已使用 CMEK 保護的匯流排名稱。
在「匯流排詳細資料」頁面中,按一下「編輯」。
如要刪除以 Cloud KMS 金鑰加密的訊息來源,請按一下
「刪除資源」。如有需要,請重新新增訊息來源。
gcloud
使用 gcloud beta eventarc google-api-sources update
指令,為 GoogleApiSource
資源停用 CMEK:
gcloud beta eventarc google-api-sources update GOOGLE_API_SOURCE_NAME \ --location=REGION \ --clear-crypto-key
套用 CMEK 機構政策
Eventarc 整合了兩項組織政策限制,可協助確保整個機構使用 CMEK:
constraints/gcp.restrictNonCmekServices
用於要求 CMEK 保護措施。constraints/gcp.restrictCmekCryptoKeyProjects
用於限制用於 CMEK 保護措施的 Cloud KMS 金鑰。
這項整合功能可讓您為機構中的 Eventarc 資源指定下列加密法規遵循需求:
套用機構政策的注意事項
套用任何 CMEK 組織政策前,請先瞭解下列事項。
為傳播延遲做好準備
設定或更新機構政策後,新政策最多可能需要 15 分鐘才會生效。
考量現有資源
現有資源不受新建立的機構政策影響。 舉例來說,機構政策不會追溯套用至現有管道。您仍可存取這些資源,且如果適用,系統仍會使用現有金鑰加密。
確認設定機構政策的必要權限
為測試目的設定或更新機構政策的權限可能難以取得。您必須獲授予機構政策管理員角色,這個角色只能在機構層級授予 (而非專案或資料夾層級)。
雖然必須在機構層級授予角色,但仍可指定僅適用於特定專案或資料夾的政策。
要求新 Eventarc 資源使用 CMEK
您可以使用 constraints/gcp.restrictNonCmekServices
限制,要求使用 CMEK 保護機構中的新 Eventarc 資源。
如果設定這項機構政策,所有未指定 Cloud KMS 金鑰的資源建立要求都會失敗。
設定這項政策後,只會套用至專案中的新資源。如果現有資源未套用 Cloud KMS 金鑰,這些資源仍會存在,且可正常存取。
主控台
前往 Google Cloud 控制台的「Organization policies」(組織政策) 頁面。
使用「篩選器」搜尋下列限制:
constraints/gcp.restrictNonCmekServices
在「名稱」欄中,按一下「限制哪些服務可以在沒有 CMEK 的情況下建立資源」。
按一下「管理政策」圖示
。在「編輯政策」頁面的「政策來源」下方,選取「覆寫父項政策」。
在「規則」下方,按一下「新增規則」。
在「政策值」清單中,選取「自訂」。
在「政策類型」清單中,選取「拒絕」。
在「自訂值」欄位中輸入下列內容:
is:eventarc.googleapis.com
依序按一下「完成」和「設定政策」。
gcloud
建立暫存檔案
/tmp/policy.yaml
來儲存政策:name: projects/PROJECT_ID/policies/gcp.restrictNonCmekServices spec: rules: - values: deniedValues: - is:eventarc.googleapis.com
將
PROJECT_ID
替換為要套用這項限制的專案 ID。請執行
org-policies set-policy
指令。gcloud org-policies set-policy /tmp/policy.yaml
如要確認政策是否已成功套用,請嘗試在專案中建立 Eventarc 進階管道。除非指定 Cloud KMS 金鑰,否則程序會失敗。
限制 Eventarc 專案的 Cloud KMS 金鑰
您可以使用 constraints/gcp.restrictCmekCryptoKeyProjects
限制,禁止在 Eventarc 專案中使用特定 Cloud KMS 金鑰保護資源。
舉例來說,您可以指定類似下列的規則:「對於 projects/my-company-data-project
中適用的 Eventarc 資源,這個專案中使用的 Cloud KMS 金鑰必須來自 projects/my-company-central-keys
或 projects/team-specific-keys
。」
主控台
前往 Google Cloud 控制台的「Organization policies」(組織政策) 頁面。
使用「篩選器」搜尋下列限制:
constraints/gcp.restrictCmekCryptoKeyProjects
在「名稱」欄中,按一下「限制哪些專案可提供 CMEK 的 KMS CryptoKey」。
按一下「管理政策」圖示
。在「編輯政策」頁面的「政策來源」下方,選取「覆寫父項政策」。
在「規則」下方,按一下「新增規則」。
在「政策值」清單中,選取「自訂」。
在「政策類型」清單中,選取「允許」。
在「自訂值」欄位中輸入下列內容:
under:projects/KMS_PROJECT_ID
將
KMS_PROJECT_ID
替換為您要使用的 Cloud KMS 金鑰所在專案的 ID。例如
under:projects/my-kms-project
。依序按一下「完成」和「設定政策」。
gcloud
建立暫存檔案
/tmp/policy.yaml
來儲存政策:name: projects/PROJECT_ID/policies/gcp.restrictCmekCryptoKeyProjects spec: rules: - values: allowedValues: - under:projects/KMS_PROJECT_ID
取代下列項目
PROJECT_ID
:您要套用這項限制的專案 ID。KMS_PROJECT_ID
:您要使用的 Cloud KMS 金鑰所在專案的 ID。
請執行
org-policies set-policy
指令。gcloud org-policies set-policy /tmp/policy.yaml
如要確認政策是否已順利套用,您可以嘗試使用其他專案的 Cloud KMS 金鑰,建立 Eventarc 進階管道。程序會失敗。
停用及啟用 Cloud KMS 金鑰
金鑰版本會儲存加密編譯金鑰內容,用於加密、解密、簽署及驗證資料。您可以停用這個金鑰版本,這樣就無法存取以該金鑰加密的資料。
如果 Eventarc 無法存取 Cloud KMS 金鑰,事件路由作業就會失敗並顯示 FAILED_PRECONDITION
錯誤,事件傳送作業也會停止。您可以啟用「已停用」狀態的金鑰,以便再次存取加密資料。
停用 Cloud KMS 金鑰
如要防止 Eventarc 使用金鑰加密或解密事件資料,請執行下列任一操作:
- 建議您停用為匯流排或管道設定的金鑰版本。這項變更只會影響與特定金鑰相關聯的 Eventarc Advanced 匯流排或管道。
- 選用:從 Eventarc 服務帳戶撤銷
cloudkms.cryptoKeyEncrypterDecrypter
角色。這會影響專案中所有支援使用 CMEK 加密事件的 Eventarc 資源。
雖然這兩項作業都無法保證立即撤銷存取權,但 Identity and Access Management (IAM) 變更通常會更快傳播。詳情請參閱「Cloud KMS 資源一致性」和「存取權變更傳播」。
重新啟用 Cloud KMS 金鑰
如要恢復事件傳送和路由,請還原 Cloud KMS 的存取權。
稽核記錄和疑難排解
當金鑰啟用、停用,或由 Eventarc 進階版資源用於加密及解密訊息時,Cloud KMS 會產生稽核記錄。詳情請參閱 Cloud KMS 稽核記錄資訊。
如要解決使用 Cloud KMS 和 Eventarc 時可能遇到的問題,請參閱「排解問題」。
如要解決透過 Cloud External Key Manager (Cloud EKM) 使用外部代管金鑰時可能發生的問題,請參閱 Cloud EKM 錯誤參考資料。
定價
除了金鑰作業費用外,匯流排整合功能不會產生額外的費用。金鑰作業費用會計入您的 Google Cloud 專案中。管道使用 CMEK 時,存取 Cloud KMS 服務會產生費用,費用依據 Pub/Sub 定價計算。
如要進一步瞭解最新定價資訊,請參閱 Cloud KMS 定價。