本頁說明如何啟用 Security Command Center API 通知。
通知會在幾分鐘內將發現項目和發現項目更新傳送至 Pub/Sub 主題。Security Command Center API 通知包含 Security Command Center 在Google Cloud 控制台中顯示的所有發現項目資訊。
您可以將 Pub/Sub 中的 Security Command Center 通知,直接連結至 Cloud Run 函式動作。如需有助於回應、擴充和補救的函式範例,請參閱 Cloud Run 函式程式碼的 Security Command Center 開放原始碼存放區。這個存放區包含的解決方案可協助您對安全性發現事項採取自動化動作。
或者,您也可以將發現項目匯出至 BigQuery,或在 Google Cloud 控制台中設定 Pub/Sub 的持續匯出作業。
事前準備
-
如要取得設定及配置 Security Command Center API 通知所需的權限,請管理員授予您下列 IAM 角色:
-
安全中心管理員 (
roles/securitycenter.admin
) 在啟用 Security Command Center 的機構或專案中 -
專案 IAM 管理員 (
roles/resourcemanager.projectIamAdmin
) 在您要建立 Pub/Sub 主題的專案中
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
-
安全中心管理員 (
-
Enable the Security Command Center API:
gcloud services enable securitycenter.googleapis.com
資料落地和通知
如果 Security Command Center 已啟用資料落地,定義持續匯出至 Pub/Sub 的設定 (notificationConfig
資源) 會受到資料落地控管,並儲存在Security Command Center 位置。
如要將 Security Command Center 位置中的發現項目匯出至 Pub/Sub,您必須在與發現項目相同的 Security Command Center 位置中,設定持續匯出功能。
由於持續匯出功能使用的篩選器可能包含受居住地控管的資料,因此請務必先指定正確位置,再建立篩選器。Security Command Center 不會限制您建立匯出作業的位置。
持續匯出作業只會儲存在建立時使用的位置,無法在其他位置查看或編輯。
建立連續匯出作業後,就無法變更位置。如要變更位置,請刪除持續匯出作業,然後在新位置重新建立。
如要瞭解啟用資料落地功能後如何使用 Security Command Center,請參閱「Security Command Center 區域端點」。
設定 Pub/Sub 主題
在這項工作中,您會建立並訂閱要傳送通知的 Pub/Sub 主題。
步驟 1:設定 Pub/Sub
如要設定及訂閱 Pub/Sub 主題,請按照下列步驟操作:
前往 Google Cloud 控制台。
選取您啟用 Security Command Center API 的專案。
按一下「啟用 Cloud Shell」。
選用:如要建立新的 Pub/Sub 主題,請執行下列指令:
gcloud pubsub topics create TOPIC_ID
將
TOPIC_ID
替換為主題名稱。為主題建立訂閱:
gcloud pubsub subscriptions create SUBSCRIPTION_ID --topic=TOPIC_ID
更改下列內容:
SUBSCRIPTION_ID
:訂閱 IDTOPIC_ID
:主題 ID
如要進一步瞭解如何設定 Pub/Sub,請參閱「管理主題和訂閱項目」。
步驟 2:授予 Pub/Sub 主題的角色
如要建立 NotificationConfig
,您必須在已建立訂閱項目的 Pub/Sub 主題上,擁有 Pub/Sub 管理員角色 (roles/pubsub.admin
)。
如要授予這個角色,請按照下列步驟操作:
前往 Google Cloud 控制台。
選取您已啟用 Security Command Center API 的專案。
按一下「啟用 Cloud Shell」。
在 Pub/Sub 主題上,將必要角色授予您的 Google 帳戶:
gcloud pubsub topics add-iam-policy-binding \ projects/PUBSUB_PROJECT/topics/TOPIC_ID \ --member="user:GOOGLE_ACCOUNT" \ --role="roles/pubsub.admin"
更改下列內容:
PUBSUB_PROJECT
:包含 Pub/Sub 主題的 Google Cloud 專案TOPIC_ID
:主題 IDGOOGLE_ACCOUNT
:您的 Google 帳戶電子郵件地址
建立 NotificationConfig
建立 NotificationConfig
前,請注意每個機構可擁有的 NotificationConfig
檔案數量有限。詳情請參閱配額與限制。
NotificationConfig
包含 filter
欄位,可將通知限制為實用事件。這個欄位接受 Security Command Center API findings.list
方法中提供的所有篩選器。
建立 NotificationConfig
時,您會從 Google Cloud 資源階層指定 NotificationConfig
的父項,可以是機構、資料夾或專案。如要日後擷取、更新或刪除 NotificationConfig
,請在參照時一併提供父項機構、資料夾或專案的數值 ID。
在 Google Cloud 控制台中,部分NotificationConfig
資源可能會顯示「舊版」標籤,表示這些資源是使用 v1 Security Command Center API 建立。您可以使用 Google Cloud 控制台、gcloud CLI、v1 版 Security Command Center API,或 Security Command Center 的 v1 版用戶端程式庫,管理這些 NotificationConfig
資源。
如要使用 gcloud CLI 管理這些 NotificationConfig
資源,執行 gcloud CLI 指令時不得指定位置。
如要使用所選語言或平台建立 NotificationConfig
,請按照下列步驟操作:
gcloud
gcloud scc notifications create NOTIFICATION_NAME \ --PARENT=PARENT_ID \ --location=LOCATION \ --description="NOTIFICATION_DESCRIPTION" \ --pubsub-topic=PUBSUB_TOPIC \ --filter="FILTER"
更改下列內容:
NOTIFICATION_NAME
:通知名稱。 長度必須介於 1 至 128 個字元之間,而且只能使用英數字元、底線或連字號。PARENT
:通知適用的資源階層範圍,即organization
、folder
或project
。PARENT_ID
:父項機構、資料夾或專案的 ID,格式為organizations/123
、folders/456
或projects/789
。LOCATION
: 要儲存資料的Security Command Center 位置。如果已啟用資料落地功能,請使用eu
、ksa
或us
;否則請使用global
值。NOTIFICATION_DESCRIPTION
:通知說明,最多 1,024 個字元。PUBSUB_TOPIC
:將接收通知的 Pub/Sub 主題。格式為projects/PROJECT_ID/topics/TOPIC
。FILTER
:您定義的運算式,用於選取要傳送至 Pub/Sub 的調查結果。例如:state=\"ACTIVE\"
。
Terraform
為機構建立 NotificationConfig
:
為資料夾建立 NotificationConfig
:
為專案建立 NotificationConfig
:
Go
Java
Node.js
Python
通知現在會發布至您指定的 Pub/Sub 主題。
系統會以 service-org-ORGANIZATION_ID@gcp-sa-scc-notification.iam.gserviceaccount.com
形式為您建立服務帳戶,以便發布通知。您首次建立 NotificationConfig
時,系統會建立這個服務帳戶,並在建立通知設定時,自動授予 PUBSUB_TOPIC 的 IAM 政策 securitycenter.notificationServiceAgent
角色。通知功能需要這個服務帳戶角色才能運作。
在 VPC Service Controls 中授予範圍存取權
如果您使用 VPC Service Controls,且 Pub/Sub 主題屬於服務範圍內的專案,您必須授予專案存取權,才能建立通知。
如要授予專案存取權,請為用於建立通知的主體和專案建立輸入和輸出規則。這些規則可讓您存取受保護的資源,並讓 Pub/Sub 驗證使用者是否具備 Pub/Sub 主題的 setIamPolicy
權限。
建立 NotificationConfig 前
完成「建立 NotificationConfig」一文中的步驟前,請先完成下列步驟。
控制台
-
在 Google Cloud 控制台中,前往「VPC Service Controls」頁面。
- 選取您的機構或專案。
- 如果您選取機構,請按一下「選取存取權政策」,然後選取要更新的周邊相關存取權政策。
-
按一下要更新的周邊裝置名稱。
如要找出需要修改的服務安全防護範圍,請檢查記錄檔中顯示
RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER
違規事項的項目。在這些項目中,檢查servicePerimeterName
欄位:accessPolicies/ACCESS_POLICY_ID/servicePerimeters/SERVICE_PERIMETER_NAME
- 按一下「編輯範圍」 。
- 按一下「輸出政策」。
- 按一下「新增 egress 規則」。
-
在「FROM」部分,設定下列詳細資料:
- 在「身分」部分,選取「特定身分和群組」。
- 按一下「新增身分」
-
輸入用於呼叫 Security Command Center API 的主體電子郵件地址。
- 選取主體或按下 ENTER 鍵,然後按一下「新增身分」。
-
在「TO」(收件者) 部分,設定下列詳細資料:
- 在「Project」(專案) 部分,選取「All projects」(所有專案)。
- 在「作業或 IAM 角色」部分,選取「選取作業」。
-
按一下「新增作業」,然後新增下列作業:
- 新增 pubsub.googleapis.com 服務。
- 按一下「所有方法」。
- 按一下「新增所有方法」。
- 新增 pubsub.googleapis.com 服務。
- 按一下「輸入政策」。
- 按一下「新增 Ingress 規則」。
-
在「FROM」部分,設定下列詳細資料:
- 在「身分」部分,選取「特定身分和群組」。
- 按一下「新增身分」
-
輸入用於呼叫 Security Command Center API 的主體電子郵件地址。
- 選取主體或按下 ENTER 鍵,然後按一下「新增身分」。
- 在「來源」部分,選取「所有來源」。
-
在「TO」(收件者) 部分,設定下列詳細資料:
- 在「Project」(專案) 部分,選取「Select projects」(選取專案)。
- 按一下「新增專案」,然後新增包含 Pub/Sub 主題的專案。
- 在「作業或 IAM 角色」部分,選取「選取作業」。
-
按一下「新增作業」,然後新增下列作業:
- 新增 pubsub.googleapis.com 服務。
- 按一下「所有方法」。
- 按一下「新增所有方法」。
- 新增 pubsub.googleapis.com 服務。
- 按一下 [儲存]。
gcloud
-
如果尚未設定配額專案,請設定配額專案。選擇已啟用 Access Context Manager API 的專案。
gcloud config set billing/quota_project QUOTA_PROJECT_ID
將
QUOTA_PROJECT_ID
替換為您要用於帳單和配額的專案 ID。 -
建立名為
egress-rule.yaml
的檔案,並在當中加入下列內容:- egressFrom: identities: - PRINCIPAL_ADDRESS egressTo: operations: - serviceName: pubsub.googleapis.com methodSelectors: - method: '*' resources: - '*'
將
PRINCIPAL_ADDRESS
替換為用於呼叫 Security Command Center API 的主體地址。 -
建立名為
ingress-rule.yaml
的檔案,並在當中加入下列內容:- ingressFrom: identities: - PRINCIPAL_ADDRESS sources: - accessLevel: '*' ingressTo: operations: - serviceName: pubsub.googleapis.com methodSelectors: - method: '*' resources: - '*'
將
PRINCIPAL_ADDRESS
替換為用於呼叫 Security Command Center API 的主體地址。 -
將 Egress 規則新增至範圍:
gcloud access-context-manager perimeters update PERIMETER_NAME \ --set-egress-policies=egress-rule.yaml
更改下列內容:
-
PERIMETER_NAME
:perimeter 的名稱。例如:accessPolicies/1234567890/servicePerimeters/example_perimeter
。如要找出需要修改的服務安全防護範圍,請檢查記錄檔中顯示
RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER
違規事項的項目。在這些項目中,檢查servicePerimeterName
欄位:accessPolicies/ACCESS_POLICY_ID/servicePerimeters/SERVICE_PERIMETER_NAME
-
-
將 Ingress 規則新增至範圍:
gcloud access-context-manager perimeters update PERIMETER_NAME \ --set-ingress-policies=ingress-rule.yaml
更改下列內容:
-
PERIMETER_NAME
:perimeter 的名稱。例如:accessPolicies/1234567890/servicePerimeters/example_perimeter
。如要找出需要修改的服務安全防護範圍,請檢查記錄檔中顯示
RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER
違規事項的項目。在這些項目中,檢查servicePerimeterName
欄位:accessPolicies/ACCESS_POLICY_ID/servicePerimeters/SERVICE_PERIMETER_NAME
-
詳情請參閱「輸入和輸出規則」。
為 NotificationConfig 建立 Ingress 規則
如要為 NotificationConfig
建立 Ingress 規則,請按照「建立 NotificationConfig」中的操作說明完成步驟,然後完成下列步驟。
控制台
-
重新開啟上一節中的服務周邊。
- 按一下「輸入政策」。
- 按一下「新增 Ingress 規則」。
-
在「FROM」部分,設定下列詳細資料:
- 在「身分」部分,選取「特定身分和群組」。
- 按一下「新增身分」
-
輸入服務專員的電子郵件地址。
NotificationConfig
服務代理人的地址格式如下:service-org-ORGANIZATION_ID@gcp-sa-scc-notification.iam.gserviceaccount.com
將
ORGANIZATION_ID
替換為機構 ID。 - 選取服務代理人或按 ENTER 鍵,然後按一下「新增身分」。
- 在「來源」部分,選取「所有來源」。
-
在「TO」(收件者) 部分,設定下列詳細資料:
- 在「Project」(專案) 部分,選取「Select projects」(選取專案)。
- 按一下「新增專案」,然後新增包含 Pub/Sub 主題的專案。
- 在「作業或 IAM 角色」部分,選取「選取作業」。
-
按一下「新增作業」,然後新增下列作業:
- 新增 pubsub.googleapis.com 服務。
- 按一下「所有方法」。
- 按一下「新增所有方法」。
- 新增 pubsub.googleapis.com 服務。
- 按一下 [儲存]。
gcloud
-
如果尚未設定配額專案,請設定配額專案。選擇已啟用 Access Context Manager API 的專案。
gcloud config set billing/quota_project QUOTA_PROJECT_ID
將
QUOTA_PROJECT_ID
替換為您要用於帳單和配額的專案 ID。 -
建立名為
ingress-rule.yaml
的檔案,並在當中加入下列內容:- ingressFrom: identities: - serviceAccount:service-org-ORGANIZATION_ID@gcp-sa-scc-notification.iam.gserviceaccount.com sources: - accessLevel: '*' ingressTo: operations: - serviceName: pubsub.googleapis.com methodSelectors: - method: '*' resources: - '*'
將
ORGANIZATION_ID
替換為機構 ID。 -
將 Ingress 規則新增至範圍:
gcloud access-context-manager perimeters update PERIMETER_NAME \ --set-ingress-policies=ingress-rule.yaml
更改下列內容:
-
PERIMETER_NAME
:perimeter 的名稱。例如:accessPolicies/1234567890/servicePerimeters/example_perimeter
。如要找出需要修改的服務安全防護範圍,請檢查記錄檔中顯示
RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER
違規事項的項目。在這些項目中,檢查servicePerimeterName
欄位:accessPolicies/ACCESS_POLICY_ID/servicePerimeters/SERVICE_PERIMETER_NAME
-
詳情請參閱「輸入和輸出規則」。
所選專案、使用者和服務帳戶現在可以存取受保護的資源,並建立通知。
如果按照本指南操作後,通知功能已正常運作,現在可以刪除下列項目:
- 主體的輸入規則
- 主體的輸出規則
這些規則僅用於設定 NotificationConfig
。不過,如要讓通知功能繼續運作,您必須保留 NotificationConfig
的連入規則,讓通知發布至服務邊界後方的 Pub/Sub 主題。
後續步驟
- 瞭解如何啟用即時電子郵件和即時通訊通知。
- 瞭解如何管理 Notifications API。
- 瞭解如何篩選通知。