本頁說明如何使用 Docker 容器代管 Elastic Stack 安裝作業,並自動將 Security Command Center 發現項目、資產、稽核記錄和安全性來源傳送至 Elastic Stack。並說明如何管理匯出的資料。
Docker 平台可管理容器中的應用程式。Elastic Stack 是一種安全資訊與事件管理 (SIEM) 平台,可從一或多個來源擷取資料,讓安全團隊管理事件回應並執行即時分析。本指南討論的 Elastic Stack 設定包含四個元件:
- Filebeat:安裝在邊緣主機 (例如虛擬機器 (VM)) 上的輕量型代理程式,可設定為收集及轉送資料
- Logstash:轉換服務,可擷取資料、將資料對應至必要欄位,並將結果轉送至 Elasticsearch
- Elasticsearch:儲存資料的搜尋資料庫引擎
- Kibana:提供資訊主頁,可讓您以視覺化方式呈現及分析資料
在本指南中,您將設定 Docker、確保必要的 Security Command Center 和Google Cloud 服務已正確設定,並使用自訂模組將調查結果、資產、稽核記錄和安全來源傳送至 Elastic Stack。
下圖說明搭配使用 Elastic Stack 和 Security Command Center 時的資料路徑。

設定驗證和授權
如要連線至 Elastic Stack,您必須在每個要連線的 Google Cloud 機構中建立身分與存取權管理 (IAM) 服務帳戶,並授予該帳戶 Elastic Stack 需要的機構層級和專案層級 IAM 角色。
建立服務帳戶並授予 IAM 角色
下列步驟使用 Google Cloud 控制台。如要瞭解其他方法,請參閱本節結尾的連結。
針對要匯入 Security Command Center 資料的每個 Google Cloud 機構,完成下列步驟。
- 在您建立 Pub/Sub 主題的專案中,使用 Google Cloud 控制台的「Service Accounts」(服務帳戶)頁面建立服務帳戶。如需操作說明,請參閱「建立及管理服務帳戶」。
將下列角色授予服務帳戶:
- Pub/Sub 管理員 (
roles/pubsub.admin
) - Cloud 資源擁有者 (
roles/cloudasset.owner
)
- Pub/Sub 管理員 (
複製您剛建立的服務帳戶名稱。
使用 Google Cloud 控制台中的專案選取器,切換至機構層級。
開啟機構的「IAM」IAM頁面:
在「IAM」頁面中,按一下「授予存取權」。「授予存取權」面板隨即開啟。
在「授予存取權」面板中,完成下列步驟:
- 在「新增主體」欄位的「新增主體」部分中,貼上服務帳戶名稱。
在「指派角色」部分,使用「角色」欄位將下列 IAM 角色授予服務帳戶:
- 安全中心管理員編輯者 (
roles/securitycenter.adminEditor
) - 安全中心通知設定編輯者
(
roles/securitycenter.notificationConfigEditor
) - 機構檢視者 (
roles/resourcemanager.organizationViewer
) - Cloud Asset Viewer (
roles/cloudasset.viewer
) - 記錄設定寫入者 (
roles/logging.configWriter
) 按一下 [儲存]。服務帳戶會顯示在「依主體查看」下「IAM」頁面的「權限」分頁中。
透過繼承,服務帳戶也會成為機構所有子專案中的主體。適用於專案層級的角色會列為已繼承的角色。
如要進一步瞭解如何建立服務帳戶及授予角色,請參閱下列主題:
提供 Elastic Stack 的憑證
視您代管 Elastic Stack 的位置而定,向 Elastic Stack 提供 IAM 憑證的方式有所不同。
如果您在 Google Cloud中代管 Docker 容器,請注意下列事項:
將服務帳戶新增至將代管 Kubernetes 節點的 VM。如果您使用多個Google Cloud 機構,請將這個服務帳戶新增至其他機構,並授予「建立服務帳戶並授予 IAM 角色」一文步驟 5 至 7 中所述的 IAM 角色。
如果您在服務範圍內部署 Docker 容器,請建立輸入和輸出規則。如需操作說明,請參閱「在 VPC Service Controls 中授予範圍存取權」。
如果您是在地端環境中代管 Docker 容器,請為每個 Google Cloud 機構建立服務帳戶金鑰。您需要 JSON 格式的服務帳戶金鑰,才能完成本指南。
如要瞭解安全儲存服務帳戶金鑰的最佳做法,請參閱「管理服務帳戶金鑰的最佳做法」。
如果要在其他雲端中安裝 Docker 容器,請設定工作負載身分聯盟,並下載憑證設定檔。如果您使用多個 Google Cloud 機構,請將這個服務帳戶新增至其他機構,並授予「建立服務帳戶並授予 IAM 角色」一文步驟 5 至 7 中所述的 IAM 角色。
設定通知
針對要匯入 Security Command Center 資料的每個 Google Cloud 機構,完成下列步驟。
按照下列步驟設定尋找通知:
- 啟用 Security Command Center API。
- 建立篩選器,匯出調查結果和資產。
- 建立四個 Pub/Sub 主題:分別用於發現項目、資源、稽核記錄和資產。
NotificationConfig
必須使用您為發現項目建立的 Pub/Sub 主題。
您需要機構 ID、專案 ID 和 Pub/Sub 主題名稱,才能設定 Elastic Stack。
安裝 Docker 和 Elasticsearch 元件
請按照下列步驟,在環境中安裝 Docker 和 Elasticsearch 元件。
安裝 Docker Engine 和 Docker Compose
您可以安裝 Docker,以便在內部部署或搭配雲端供應商使用。如要開始使用,請完成 Docker 產品說明文件中的下列指南:
安裝 Elasticsearch 和 Kibana
您在「安裝 Docker」中安裝的 Docker 映像檔包含 Logstash 和 Filebeat。如果您尚未安裝 Elasticsearch 和 Kibana,請按照下列指南安裝應用程式:
您需要這些工作中的下列資訊,才能完成本指南:
- Elastic Stack:主機、通訊埠、憑證、使用者名稱和密碼
- Kibana:主機、通訊埠、憑證、使用者名稱和密碼
下載 GoApp 模組
本節說明如何下載 GoApp
模組,這是由 Security Command Center 維護的 Go 程式。這個模組會自動排定 Security Command Center API 呼叫的時程,並定期擷取 Security Command Center 資料,供 Elastic Stack 使用。
如要安裝 GoApp
,請按照下列步驟操作:
在終端機視窗中安裝 wget,這項免費軟體公用程式可用來從網頁伺服器擷取內容。
如為 Ubuntu 和 Debian 發行版本,請執行下列指令:
apt-get install wget
如果是 RHEL、CentOS 和 Fedora 發行版本,請執行下列指令:
yum install wget
安裝
unzip
,這項免費軟體公用程式可用於解壓縮 ZIP 檔案內容。如為 Ubuntu 和 Debian 發行版本,請執行下列指令:
apt-get install unzip
如果是 RHEL、CentOS 和 Fedora 發行版本,請執行下列指令:
yum install unzip
為 GoogleSCCElasticIntegration 安裝套件建立目錄:
mkdir GoogleSCCElasticIntegration
下載 GoogleSCCElasticIntegration 安裝套件:
wget -c https://storage.googleapis.com/security-center-elastic-stack/GoogleSCCElasticIntegration-Installation.zip
將 GoogleSCCElasticIntegration 安裝套件的內容解壓縮至
GoogleSCCElasticIntegration
目錄:unzip GoogleSCCElasticIntegration-Installation.zip -d GoogleSCCElasticIntegration
建立工作目錄,儲存及執行
GoApp
模組元件:mkdir WORKING_DIRECTORY
將
WORKING_DIRECTORY
替換為目錄名稱。前往
GoogleSCCElasticIntegration
安裝目錄:cd ROOT_DIRECTORY/GoogleSCCElasticIntegration/
將
ROOT_DIRECTORY
替換為包含GoogleSCCElasticIntegration
目錄的目錄路徑。將
install
、config.yml
、dashboards.ndjson
和templates
資料夾 (內含filebeat.tmpl
、logstash.tmpl
和docker.tmpl
檔案) 移至工作目錄。mv install/install install/config.yml install/templates/docker.tmpl install/templates/filebeat.tmpl install/templates/logstash.tmpl install/dashboards.ndjson WORKING_DIRECTORY
將
WORKING_DIRECTORY
替換為工作目錄的路徑。
安裝 Docker 容器
如要設定 Docker 容器,請從 Google Cloud 下載並安裝預先格式化的映像檔,其中包含 Logstash 和 Filebeat。如要瞭解 Docker 映像檔的相關資訊,請前往 Google Cloud 控制台中的 Artifact Registry 存放區。
安裝期間,您會使用 Security Command Center 和 Elastic Stack 憑證設定 GoApp
模組。
前往工作目錄:
cd /WORKING_DIRECTORY
將
WORKING_DIRECTORY
替換為工作目錄的路徑。確認工作目錄中顯示下列檔案:
├── config.yml ├── install ├── dashboards.ndjson ├── templates ├── filebeat.tmpl ├── docker.tmpl ├── logstash.tmpl
在文字編輯器中開啟
config.yml
檔案,並新增要求的變數。如果變數並非必要,可以留空。變數 說明 必要 elasticsearch
Elasticsearch 設定的區段。 必填 host
Elastic Stack 主機的 IP 位址。 必填 password
您的 Elasticsearch 密碼。 選用 port
Elastic Stack 主機的通訊埠。 必填 username
您的 Elasticsearch 使用者名稱。 選用 cacert
Elasticsearch 伺服器的憑證 (例如 path/to/cacert/elasticsearch.cer
)。選用 http_proxy
包含代理主機的使用者名稱、密碼、IP 位址和通訊埠的連結 (例如 http://USER:PASSWORD@PROXY_IP:PROXY_PORT
)。選用 kibana
Kibana 設定專區。 必填 host
Kibana 伺服器繫結的 IP 位址或主機名稱。 必填 password
Kibana 密碼。 選用 port
Kibana 伺服器的通訊埠。 必填 username
您的 Kibana 使用者名稱。 選用 cacert
Kibana 伺服器的憑證 (例如 path/to/cacert/kibana.cer
)。選用 cron
cron 設定的區段。 選用 asset
資產 Cron 設定的區段 (例如 0 */45 * * * *
)。選用 source
來源 Cron 設定的區段 (例如 0 */45 * * * *
)。詳情請參閱 Cron 運算式產生器。選用 organizations
貴機構設定的專區。 Google Cloud 如要新增多個 Google Cloud 機構,請將 resource
下的內容從- id:
複製到subscription_name
。必填 id
您的機構 ID。 必填 client_credential_path
下列其中一個欄位名稱: - 如果您使用服務帳戶金鑰,請提供 JSON 檔案的路徑。
- 如果您使用 Workload Identity 聯盟,則為憑證設定檔。
- 如果您要在這個 Google Cloud 機構中安裝 Docker 容器,請勿指定任何項目。
視環境而定,可選用 update
無論您是從舊版升級,請選擇 n
(否) 或y
(是)選用 project
專案 ID 專區。 必填 id
包含 Pub/Sub 主題的專案 ID。 必填 auditlog
稽核記錄的 Pub/Sub 主題和訂閱項目部分。 選用 topic_name
稽核記錄的 Pub/Sub 主題名稱 選用 subscription_name
稽核記錄的 Pub/Sub 訂閱項目名稱 選用 findings
發現項目的 Pub/Sub 主題和訂閱項目專區。 選用 topic_name
用於發現項目的 Pub/Sub 主題名稱。 選用 start_date
開始遷移調查結果的選填日期,例如: 2021-04-01T12:00:00+05:30
選用 subscription_name
發現項目的 Pub/Sub 訂閱項目名稱。 選用 asset
資產設定專區。 選用 iampolicy
Pub/Sub 主題和訂閱項目的 IAM 政策專區。 選用 topic_name
身分與存取權管理政策的 Pub/Sub 主題名稱。 選用 subscription_name
IAM 政策的 Pub/Sub 訂閱項目名稱。 選用 resource
資源的 Pub/Sub 主題和訂閱項目專區。 選用 topic_name
資源的 Pub/Sub 主題名稱。 選用 subscription_name
資源的 Pub/Sub 訂閱項目名稱。 選用 範例
config.yml
檔案以下範例顯示包含兩個 Google Cloud 機構的
config.yml
檔案。elasticsearch: host: 127.0.0.1 password: changeme port: 9200 username: elastic cacert: path/to/cacert/elasticsearch.cer http_proxy: http://user:password@proxyip:proxyport kibana: host: 127.0.0.1 password: changeme port: 5601 username: elastic cacert: path/to/cacert/kibana.cer cron: asset: 0 */45 * * * * source: 0 */45 * * * * organizations: – id: 12345678910 client_credential_path: update: project: id: project-id-12345 auditlog: topic_name: auditlog.topic_name subscription_name: auditlog.subscription_name findings: topic_name: findings.topic_name start_date: 2021-05-01T12:00:00+05:30 subscription_name: findings.subscription_name asset: iampolicy: topic_name: iampolicy.topic_name subscription_name: iampolicy.subscription_name resource: topic_name: resource.topic_name subscription_name: resource.subscription_name – id: 12345678911 client_credential_path: update: project: id: project-id-12346 auditlog: topic_name: auditlog2.topic_name subscription_name: auditlog2.subscription_name findings: topic_name: findings2.topic_name start_date: 2021-05-01T12:00:00+05:30 subscription_name: findings1.subscription_name asset: iampolicy: topic_name: iampolicy2.topic_name subscription_name: iampolicy2.subscription_name resource: topic_name: resource2.topic_name subscription_name: resource2.subscription_name
執行下列指令,安裝 Docker 映像檔並設定
GoApp
模組。chmod +x install ./install
GoApp
模組會下載 Docker 映像檔、安裝映像檔,並設定容器。程序完成後,請從安裝輸出內容中複製 WriterIdentity 服務帳戶的電子郵件地址。
docker exec googlescc_elk ls docker exec googlescc_elk cat Sink_}}HashId{{
您的工作目錄應具有下列結構:
├── config.yml ├── dashboards.ndjson ├── docker-compose.yml ├── install ├── templates ├── filebeat.tmpl ├── logstash.tmpl ├── docker.tmpl └── main ├── client_secret.json ├── filebeat │ └── config │ └── filebeat.yml ├── GoApp │ └── .env └── logstash └── pipeline └── logstash.conf
更新稽核記錄的權限
如要更新權限,讓稽核記錄能傳送至 SIEM,請按照下列步驟操作:
前往 Pub/Sub 主題頁面。
選取包含 Pub/Sub 主題的專案。
選取您為稽核記錄建立的 Pub/Sub 主題。
在「權限」中,新增 WriterIdentity 服務帳戶 (在安裝程序的步驟 4 中複製) 做為新主體,並指派「Pub/Sub 發布者」角色。稽核記錄政策已更新。
Docker 和 Elastic Stack 設定已完成。您現在可以設定 Kibana。
查看 Docker 記錄
開啟終端機,然後執行下列指令,查看容器資訊,包括容器 ID。記下安裝 Elastic Stack 的容器 ID。
docker container ls
如要啟動容器並查看記錄,請執行下列指令:
docker exec -it CONTAINER_ID /bin/bash cat go.log
將
CONTAINER_ID
替換為安裝 Elastic Stack 的容器 ID。
設定 Kibana
首次安裝 Docker 容器時,請完成下列步驟。
在文字編輯器中開啟
kibana.yml
。sudo vim KIBANA_DIRECTORY/config/kibana.yml
將
KIBANA_DIRECTORY
替換為 Kibana 安裝資料夾的路徑。更新下列變數:
server.port
:Kibana 後端伺服器使用的通訊埠,預設為 5601server.host
:Kibana 伺服器將繫結的 IP 位址或主機名稱elasticsearch.hosts
:用於查詢的 Elasticsearch 執行個體 IP 位址和通訊埠server.maxPayloadBytes
:傳入伺服器要求的酬載大小上限 (以位元組為單位),預設為 1,048,576url_drilldown.enabled
:布林值,可控制從 Kibana 資訊主頁導覽至內部或外部網址的功能;預設值為true
完成的設定應如下所示:
server.port: PORT server.host: "HOST" elasticsearch.hosts: ["http://ELASTIC_IP_ADDRESS:ELASTIC_PORT"] server.maxPayloadBytes: 5242880 url_drilldown.enabled: true
匯入 Kibana 資訊主頁
- 開啟 Kibana 應用程式。
- 在導覽選單中前往「堆疊管理」,然後點選「已儲存的物件」。
- 按一下「匯入」,前往工作目錄並選取「dashboards.ndjson」。 系統會匯入資訊主頁並建立索引模式。
升級 Docker 容器
如果您部署的是舊版 GoApp
模組,可以升級至新版。
將 Docker 容器升級至較新版本時,您可以保留現有的服務帳戶設定、Pub/Sub 主題和 ElasticSearch 元件。
如果升級前使用的整合功能未採用 Docker 容器,請參閱「升級至最新版本」。
如要從 v1 升級,請完成下列動作:
將「記錄檔設定寫入者」 (
roles/logging.configWriter
) 角色新增至服務帳戶。為稽核記錄建立 Pub/Sub 主題。
如要在其他雲端中安裝 Docker 容器,請設定 Workload Identity 聯盟,並下載憑證設定檔。
(選用) 如要避免匯入新資訊主頁時發生問題,請從 Kibana 移除現有資訊主頁:
- 開啟 Kibana 應用程式。
- 在導覽選單中前往「堆疊管理」,然後點選「已儲存的物件」。
- 搜尋「Google SCC」。
- 選取要移除的所有資訊主頁。
- 點選「刪除」。
移除現有的 Docker 容器:
開啟終端機並停止容器:
docker stop CONTAINER_ID
將
CONTAINER_ID
替換為安裝 Elastic Stack 的容器 ID。移除 Docker 容器:
docker rm CONTAINER_ID
如有必要,請在容器 ID 前新增
-f
,強制移除容器。
完成「下載 GoApp 模組」中的步驟 1 至 7。
將先前安裝的現有
config.env
檔案移至\update
目錄。視需要授予可執行權限,以執行
./update
:chmod +x ./update ./update
執行
./update
,將config.env
轉換為config.yml
。確認
config.yml
檔案包含現有設定。如果沒有,請重新執行./update
。如要支援多個 Google Cloud 機構,請在
config.yml
檔案中新增其他機構設定。將
config.yml
檔案移到工作目錄,也就是install
檔案所在的位置。完成「安裝 Docker」中的步驟。
完成「更新稽核記錄的權限」一文中的步驟。
按照「匯入 Kibana 資訊主頁」一文的說明匯入新資訊主頁。這個步驟會覆寫現有的 Kibana 資訊主頁。
查看及編輯 Kibana 資訊主頁
您可以在 Elastic Stack 中使用自訂資訊主頁,將發現項目、資產和安全性來源視覺化並進行分析。資訊主頁會顯示重要發現,協助安全團隊優先修正問題。
總覽資訊主頁
「總覽」資訊主頁包含一系列圖表,顯示機構中發現的總問題數,並依嚴重程度、類別和狀態分類。 Google Cloud 這些發現結果是從 Security Command Center 的內建服務 (例如安全狀態分析、Web Security Scanner、Event Threat Detection 和Container Threat Detection) 彙整而來,以及您啟用的任何整合式服務。
如要依錯誤設定或安全漏洞等條件篩選內容,可以選取「發現項目類別」。
其他圖表則會顯示哪些類別、專案和資產產生最多發現項目。
資產資訊主頁
「資產」資訊主頁會顯示表格,列出您的資產。 Google Cloud 這些表格會顯示資產擁有者、依資源類型和專案劃分的資產數量,以及最近新增和更新的資產。
您可以依機構、資產名稱、資產類型和父項篩選資產資料,並快速深入瞭解特定資產的調查結果。按一下資產名稱,系統會將您重新導向至 Google Cloud 控制台的 Security Command Center「資產」頁面,並顯示所選資產的詳細資料。
稽核記錄資訊主頁
「稽核記錄」資訊主頁會顯示一系列圖表和表格,說明稽核記錄資訊。資訊主頁中包含的稽核記錄有:管理員活動、資料存取、系統事件和政策遭拒的稽核記錄。表格會顯示時間、嚴重程度、記錄類型、記錄名稱、服務名稱、資源名稱和資源類型。
您可以依機構、來源 (例如專案)、嚴重性、記錄類型和資源類型篩選資料。
發現項目資訊主頁
「發現」資訊主頁會顯示圖表,說明您最近的發現。圖表會顯示發現項目的數量、嚴重性、類別和狀態。您也可以查看一段時間內的主動發現項目,以及發現項目最多的專案或資源。
您可以依機構和發現類別篩選資料。
按一下發現項目名稱,系統會將您重新導向至 Google Cloud 控制台的 Security Command Center「發現項目」頁面,並顯示所選發現項目的詳細資料。
來源資訊主頁
「來源」資訊主頁會顯示發現項目和安全來源的總數、依來源名稱列出的發現項目數量,以及所有安全來源的表格。資料表欄包括名稱、顯示名稱和說明。
新增欄
- 前往資訊主頁。
- 依序點選「編輯」和「編輯視覺化效果」。
- 在「新增子儲存區」下方,選取「分割列」。
- 在清單中選取「字詞」匯總。
- 在「遞減」下拉式選單中,選取遞增或遞減。在「大小」欄位中,輸入表格的資料列數量上限。
- 選取要新增的欄,然後按一下「更新」。
- 儲存變更。
隱藏或移除資料欄
- 前往資訊主頁。
- 按一下 [編輯]。
- 如要隱藏資料欄,請點按資料欄名稱旁邊的顯示/隱藏圖示 (眼睛圖示)。
- 如要移除資料欄,請按一下欄名旁的「X」X或「刪除」圖示。
解除安裝與 Elasticsearch 的整合
如要移除 Security Command Center 與 Elasticsearch 的整合,請完成下列各節的步驟。
移除資訊主頁、索引和索引模式
如要解除安裝這項解決方案,請移除資訊主頁。
前往資訊主頁。
搜尋「Google SCC」,然後選取所有資訊主頁。
按一下「刪除資訊主頁」。
依序前往「Stack Management」>「Index Management」。
關閉下列索引:
- gccassets
- gccfindings
- gccsources
- gccauditlogs
依序前往「Stack Management」>「Index Patterns」。
假設模式如下:
- gccassets
- gccfindings
- gccsources
- gccauditlogs
解除安裝 Docker
刪除 Pub/Sub 的 NotificationConfig。如要找出 NotificationConfig 的名稱,請執行下列指令:
docker exec googlescc_elk ls docker exec googlescc_elk cat NotificationConf_}}HashId{{
移除資產、發現項目、IAM 政策和稽核記錄的 Pub/Sub 資訊提供。如要找出動態消息的名稱,請執行下列指令:
docker exec googlescc_elk ls docker exec googlescc_elk cat Feed_}}HashId{{
移除稽核記錄的接收器。如要找出接收器的名稱,請執行下列指令:
docker exec googlescc_elk ls docker exec googlescc_elk cat Sink_}}HashId{{
如要查看容器資訊 (包括容器 ID),請開啟終端機並執行下列指令:
docker container ls
停止容器:
docker stop CONTAINER_ID
將
CONTAINER_ID
替換為安裝 Elastic Stack 的容器 ID。移除 Docker 容器:
docker rm CONTAINER_ID
如有必要,請在容器 ID 前新增
-f
,強制移除容器。移除 Docker 映像檔:
docker rmi us.gcr.io/security-center-gcr-host/googlescc_elk_v3:latest
刪除工作目錄和
docker-compose.yml
檔案:rm -rf ./main docker-compose.yml