本頁說明如何使用 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 支援 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」。
如果 Security Command Center 僅在專案層級啟用,Sensitive Data Protection 的發現項目就不會顯示在 Security Command Center 中。
在 Security Command Center 中,請確認已啟用「Sensitive Data Protection」整合服務。詳情請參閱「新增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。
在「設定儲存設定的地理位置」中,選取要儲存這項掃描設定的區域。您之後建立的所有掃描設定也會儲存在這個位置。如要瞭解資料落地注意事項,請參閱本頁的「資料落地」一節。
選用:如不希望掃描在建立掃描設定後立即開始,請選取「以暫停模式建立掃描」。
在下列情況中,這個選項會相當實用:
點選「建立」。
建立掃描設定或繼續使用已暫停的設定後,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