本頁說明如何使用 Sensitive Data Protection 的探索服務,判斷 Cloud Run 環境變數中是否含有密鑰。Sensitive Data Protection 會將所有發現項目回報至 Security Command Center,視為安全漏洞。
關於 Security Command Center
Security Command Center 是 Google Cloud的集中式安全漏洞與威脅回報服務,Security Command Center 可找出設定錯誤、安全漏洞、觀察結果和威脅,進而協助您強化安全防護機制。並提供調查和修正結果的建議。
為什麼要掃描環境變數中的密鑰
將密碼等密鑰儲存在環境變數中並不安全,因為環境變數不會經過加密。系統 (例如記錄) 可以收集並公開這些值。建議您使用 Secret Manager 儲存密鑰。如需更多資訊,請參閱 Cloud Run 和 Cloud Run functions 說明文件,瞭解如何設定密鑰。
運作方式
如要執行密碼探索作業,請在機構或專案層級建立探索掃描設定。在所選範圍內,Sensitive Data Protection 會定期掃描 Cloud Run,找出建構和執行階段環境變數中的密碼。
如果環境變數中含有密碼,Sensitive Data Protection 會將 Secrets in environment variables 安全漏洞發現項目傳送至 Security Command Center。系統不會產生資料剖析檔。所有發現項目都只能透過 Security Command Center 查看。
Sensitive Data Protection 最多會為每個資源產生一項發現。舉例來說,如果系統在同一個 Cloud Run 函式的兩個環境變數中發現密碼,Security Command Center 只會產生一項發現項目。
在 Security Command Center 中,您可以透過下列方式查看Secrets in environment variables發現項目:

以下 JSON 顯示 Secrets in environment variables 發現結果的範例。這個範例只會顯示與這項功能相關的欄位,不會提供完整的欄位清單。
環境變數中的密鑰
{ "finding": { "canonicalName": "projects/PROJECT_NUMBER/sources/SOURCE_ID/findings/FINDING_ID", "category": "SECRETS_IN_ENVIRONMENT_VARIABLES", "compliances": [ { "standard": "cis", "version": "1.3", "ids": [ "1.18" ] } ], "createTime": "DATE_TIME", "description": "The affected resource is storing credentials or other secret information in its environment variables. This is a security vulnerability because environment variables are stored unencrypted, and accessible to all users who have access to the code.", "eventTime": "DATE_TIME", "findingClass": "VULNERABILITY", "findingProviderId": "organizations/ORGANIZATION_ID/firstPartyFindingProviders/dlp", "mute": "MUTE_STATUS", "name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID", "parent": "organizations/ORGANIZATION_ID/sources/SOURCE_ID", "parentDisplayName": "Sensitive Data Protection", "resourceName": "//cloudfunctions.googleapis.com/projects/PROJECT_ID/locations/REGION/functions/FUNCTION_ID", }, "resource": { "name": "//cloudfunctions.googleapis.com/projects/PROJECT_ID/locations/REGION/functions/FUNCTION_ID", "display_name": "projects/PROJECT_ID/locations/REGION/functions/FUNCTION_ID", "type": "google.cloudfunctions.CloudFunction", "project_name": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER", "project_display_name": "PROJECT_DISPLAY_NAME", "parent_name": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER", "parent_display_name": "PARENT_DISPLAY_NAME" } }
找出生成延遲
視貴機構規模而定,啟用機密資料探索功能後,Security Command Center 可能會在幾分鐘內開始顯示 Sensitive Data Protection 發現項目。如果貴機構規模較大,或有影響發現項目生成的特定設定,Security Command Center 最多可能需要 12 小時,才會顯示初始發現項目。
隨後,Sensitive Data Protection 會在探索服務掃描資源後幾分鐘內,在 Security Command Center 中產生發現項目。
回報的密碼類型
密鑰的例子包括密碼、驗證權杖和憑證。 Google Cloud 如需 Sensitive Data Protection 在這項功能中掃描的完整密碼類型清單,請參閱「憑證和密碼」。
支援的資源
如要探索密碼,Sensitive Data Protection 支援 Cloud Run 函式 (包括第 1 代 Cloud Functions) 和 Cloud Run 服務修訂版本。
定價
這項功能不會產生機密資料保護費用。視服務級別而定,可能會產生 Security Command Center 費用。Sensitive Data Protection 適用於 Security Command Center 的所有服務級別。
資料落地
首次建立掃描設定時,請指定要讓 Sensitive Data Protection 儲存設定的位置。您後續建立的所有掃描設定都會儲存在該區域。Sensitive Data Protection 會將 Cloud Run 中繼資料匯出至儲存掃描設定的區域,但不會匯出函式或服務修訂版本本身。
如果 Sensitive Data Protection 在環境變數中偵測到密碼,系統會將發現項目傳送至 Security Command Center,並按照該服務的資料處理程序處理。
必要的 IAM 角色
如要執行密鑰探索作業,您需要具備資料剖析所需的 Identity and Access Management 角色:
如要在機構層級執行密碼探索作業,請參閱「在機構層級使用資料剖析檔時所需的角色」。
如要在專案層級執行密碼探索作業,請參閱在專案層級使用資料剖析檔時所需的角色。
此外,您也需要適當的角色,才能使用 Security Command Center 發現項目。詳情請參閱 Security Command Center 說明文件中的「機構層級啟用作業的身分與存取權管理」。
事前準備
查看貴機構的 Security Command Center 啟用層級。如要將資料剖析檔傳送至 Security Command Center,您必須在任何服務層級啟用 Security Command Center。詳情請參閱「組織層級啟用總覽」。
如果只在專案層級啟用 Security Command Center,Sensitive Data Protection 的發現項目就不會顯示在 Security Command Center 中。
在 Security Command Center 中,請確認機密資料保護已啟用為整合服務。詳情請參閱「新增Google Cloud 整合式服務」。
在機構層級設定密鑰探索功能
如要在整個機構中啟用密碼探索功能,請按照下列步驟操作。如要瞭解專案層級的探索作業,請參閱在專案層級設定密碼探索作業。
如果您沒有組織管理員 (roles/resourcemanager.organizationAdmin) 或安全管理員 (roles/iam.securityAdmin) 角色,還是可以建立掃描設定。不過,建立掃描設定後,具有上述任一角色的使用者必須授予探索存取權給服務代理人。
前往「建立掃描設定」頁面。
前往貴機構。在工具列上按一下專案選取器,然後選取機構。
完成這個頁面上的每個步驟後,按一下「繼續」。
在「選取探索類型」中,選取「密碼/憑證安全漏洞」。
在「選取範圍」部分,選取是否要掃描整個機構。
如要管理服務代理容器和帳單,請指定要當做服務代理容器的專案。您可以讓 Sensitive Data Protection 自動建立新專案,也可以選擇現有專案。
如果沒有專案可做為服務代理容器,請選取「建立新的專案做為服務代理容器」。Sensitive Data Protection 會建立名為「DLP Service Agent Container」的新專案。這個專案中的服務代理程式會用於向 Sensitive Data Protection 和其他 API 進行驗證。系統會提示您選取帳戶,以支付與這個專案相關的所有計費作業,包括與探索無關的作業。
如果沒有建立專案的必要權限,「以服務代理容器建立新專案」選項會停用。在這種情況下,您必須選取現有專案,或是請Google Cloud 管理員授予您專案建立者 (
roles/resourcemanager.projectCreator) 角色。如要重複使用現有的服務代理容器,請選取「選取現有的服務代理容器」。然後按一下「瀏覽」,選取服務代理容器的專案 ID。
在「設定儲存設定的位置」部分,選取要儲存這項掃描設定的區域。您之後建立的所有掃描設定也會儲存在這個位置。如要瞭解資料落地注意事項,請參閱本頁的「資料落地」一節。
選用:如不希望掃描作業在建立掃描設定後立即開始,請選取「以暫停模式建立掃描」。
在下列情況中,這個選項會相當實用:
- 管理員仍須 Google Cloud 授予服務代理探索存取權。
- 您想建立多項掃描設定,並希望部分設定覆寫其他設定。
點選「建立」。
建立掃描設定或繼續使用已暫停的設定後,Sensitive Data Protection 很快就會開始掃描 Cloud Run 環境變數。如要瞭解發現項目需要多久才會顯示在 Security Command Center 中,請參閱本頁面的「發現項目產生延遲時間」。
如果您不具備機構管理員 (roles/resourcemanager.organizationAdmin) 或安全管理員 (roles/iam.securityAdmin) 角色,則必須由具備這兩個角色之一的使用者,在探索作業開始前授予服務代理人探索存取權。
在專案層級設定密碼探索功能
如要為單一專案啟用密碼探索功能,請按照下列步驟操作。如要瞭解機構層級的探索作業,請參閱「在機構層級設定密碼探索作業」。
前往「建立掃描設定」頁面。
前往專案。在工具列上按一下專案選取器,然後選取專案。
完成這個頁面上的每個步驟後,按一下「繼續」。
在「選取探索類型」中,選取「密碼/憑證安全漏洞」。
在「Select scope」(選取範圍) 部分,確認已選取「Scan entire project」(掃描整個專案)。如果未選取,請確認您位於專案檢視畫面。
在「設定儲存設定的位置」部分,選取要儲存這項掃描設定的區域。您之後建立的所有掃描設定也會儲存在這個位置。如要瞭解資料落地注意事項,請參閱本頁的「資料落地」一節。
點選「建立」。
建立掃描設定或繼續執行已暫停的設定後,Sensitive Data Protection 很快就會開始掃描 Cloud Run 環境變數。如要瞭解發現項目需要多久才會顯示在 Security Command Center 中,請參閱本頁面的「發現項目產生延遲時間」。
查詢 Secrets in environment variables 個發現項目
以下是查詢範例,可用於在 Security Command Center 中尋找 Secrets in
environment variables 發現項目。您可以在「Query editor」(查詢編輯器) 欄位中輸入這些查詢。如要進一步瞭解查詢編輯器,請參閱「在 Security Command Center 資訊主頁中編輯發現項目查詢」。
列出所有 Secrets in environment variables 發現項目
state="ACTIVE"
AND NOT mute="MUTED"
AND category="SECRETS_IN_ENVIRONMENT_VARIABLES"
列出特定專案的所有 Secrets in environment variables 發現項目
state="ACTIVE"
AND NOT mute="MUTED"
AND category="SECRETS_IN_ENVIRONMENT_VARIABLES"
AND resource.project_name="//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER"
更改下列內容:
- PROJECT_NUMBER:您要查詢的專案數值 ID