請使用下列操作說明,為應用程式設定 Cloud IDS。如需有關 Cloud IDS 的概念說明,請參閱「Cloud IDS 總覽」。
事前準備
設定 Cloud IDS 前,請先完成以下要求。
設定 Cloud IDS 的 IAM 權限
Cloud IDS 有多個 Identity and Access Management (IAM) 角色,您可以使用範例指令,授予主體必要的 IAM 權限。
Cloud IDS 管理員角色 (
roles/ids.admin):具備這個角色的專案主體可以建立 IDS 端點。專案擁有者本身就有這項權限,不需明確的ids.admin角色即可建立端點。gcloud projects add-iam-policy-binding PROJECT_ID \ --role=roles/ids.admin \ --member=user:USER_NAME ;這個角色可執行下列作業:
- 建立端點
- 刪除端點
- 取得端點
- 列出端點
Cloud IDS 檢視者角色 (
roles/ids.viewer):專案檢視者和具備這個角色的主體都有 IDS 端點的唯讀存取權。專案擁有者、編輯者和檢視者本身就有這項權限。gcloud projects add-iam-policy-binding PROJECT_ID \ --role=roles/ids.viewer \ --member=user:USER_NAME ;運算封包鏡像使用者角色 (
roles/compute.packetMirroringUser):必須具備這個角色,才能將封包鏡像政策附加至 IDS 端點。compute.securityAdmin或container.serviceAgent角色本身就有這項權限。如要進一步瞭解這個角色,請參閱 IAM 基本和預先定義的角色參考資料。gcloud projects add-iam-policy-binding PROJECT_ID \ --role=roles/compute.packetMirroringUser \ --member=user:USER_NAME ;記錄檢視者角色 (
roles/logging.viewer):如要查看近期威脅 (這是 Cloud IDS 的重要核心功能),必須另外具備這個角色。如要進一步瞭解這個角色,請參閱存取控管指南。gcloud projects add-iam-policy-binding PROJECT_ID \ --role=roles/logging.viewer \ --member=user:USER_NAME ;
此外,您還需要下列其他權限:
compute.regions.listcompute.zones.list
設定私人服務連線
如要建立 IDS 端點,必須啟用 Service Networking API,並為虛擬私有雲 (VPC) 網路設定網路對接。這項操作每個客戶專案只需執行一次,可透過Google Cloud 控制台或 Google Cloud CLI 完成。分配 IP 位址範圍時,須使用符合 RFC 1918 規範的私人 IP 位址範圍 (10.0.0.0/8、172.16.0.0/12 或 192.168.0.0/16),否則端點會建立失敗。
按照下列步驟操作,即可設定私人服務連線:
使用下列指令啟用 Service Networking API,並將
PROJECT_ID改成專案 ID。gcloud services enable servicenetworking.googleapis.com \ --project=PROJECT_ID如果尚未在網路中分配 IP 位址範圍,就必須在虛擬私有雲網路中為 Google 服務分配 IP 範圍。下列指令的「
addresses」欄位可省略,Google Cloud 會選擇虛擬私有雲網路中未使用的位址範圍:gcloud compute addresses create RESERVED_RANGE_NAME \ --global \ --purpose=VPC_PEERING \ --addresses=192.168.0.0 \ --prefix-length=16 \ --description="DESCRIPTION" \ --network=VPC_NETWORK請更改下列內容:
RESERVED_RANGE_NAME:分配的範圍名稱,例如my-allocated-rangeDESCRIPTION:範圍的說明,例如allocated for my-serviceVPC_NETWORK:虛擬私有雲網路的名稱,例如my-vpc-network
建立私人連線,連至服務供應商網路。私人連線會在虛擬私有雲網路與服務供應商的網路之間,建立虛擬私有雲網路對接連線。
如果已有私人連線,請使用
gcloud services vpc-peerings update指令更新連線:gcloud services vpc-peerings update \ --service=servicenetworking.googleapis.com \ --ranges=RESERVED_RANGE_NAME \ --network=VPC_NETWORK \ --project=PROJECT_ID如果沒有私人連線,請使用
gcloud services vpc-peerings connect指令。這個指令會啟動長時間執行的作業,並傳回作業名稱。gcloud services vpc-peerings connect \ --service=servicenetworking.googleapis.com \ --ranges=RESERVED_RANGE_NAME \ --network=VPC_NETWORK \ --project=PROJECT_ID請更改下列內容:
RESERVED_RANGE_NAME:一或多個已分配範圍的名稱VPC_NETWORK:虛擬私有雲網路名稱PROJECT_ID:虛擬私有雲網路所在專案的 ID
如要確認作業是否成功,請使用
gcloud services vpc-peerings operations describe指令:gcloud services vpc-peerings operations describe \ --name=OPERATION_NAME將
OPERATION_NAME改成前面步驟傳回的作業名稱。
請分別對要監控的虛擬私有雲網路,重複執行步驟 2 和 3。
選用:啟用 VPC Service Controls
啟用私人服務連線後,也可以在 Cloud IDS 啟用 VPC Service Controls。如已啟用,請執行 services vpc-peerings enable-vpc-service-controls 指令,為所有對接連線啟用 VPC Service Controls:
gcloud services vpc-peerings enable-vpc-service-controls \
--service=servicenetworking.googleapis.com \
--network=VPC_NETWORK \
--project=PROJECT_ID
請更改下列內容:
VPC_NETWORK:虛擬私有雲網路的名稱PROJECT_ID:虛擬私有雲網路所在專案的 ID
瞭解最佳做法
建議先瞭解最佳做法,再設定 Cloud IDS。詳情請參閱「Cloud IDS 最佳做法」。
設定 Cloud IDS 端點
以下各節說明如何建立 Cloud IDS 端點、將端點附加至封包鏡像政策、查看/刪除 Cloud IDS 端點,以及如何設定威脅例外狀況。
建立 Cloud IDS 端點
建議您為所有部署工作負載的區域建立 IDS 端點。一個區域也可以建立多個 IDS 端點。請按照下列步驟建立 IDS 端點,並指派 IDS 服務設定檔。
控制台
前往 Google Cloud 控制台的「IDS Endpoints」(IDS 端點) 頁面。
設定端點:
- 按一下「Create endpoint」(建立端點)。
- 在「Endpoint name」(端點名稱) 欄位輸入名稱。
- 選用:在「Description」(說明) 欄位輸入說明。
- 按一下「Network」(網路) 清單,然後選取要用 Cloud IDS 檢查的網路。
- 從「Region」(區域) 和「Zone」(可用區) 清單,選擇網路或子網路的區域和可用區。
- 按一下「Continue」(繼續)。
選取 Cloud IDS 服務設定檔:
- 按一下「Select IDS service profile」(選取 IDS 服務設定檔)。
- 在「Minimum threat severity level」(最低威脅嚴重性等級)下方,選取合適的警告等級。
- 按一下「Create」(建立)。建立程序可能需要 10 至 15 分鐘。
gcloud
選用旗標
本節中的指令可能包含下列部分或所有選用旗標:
--no-async--filter=EXPRESSIONgcloud topic filters 指令。這個旗標會與其他旗標互動,套用順序如下:--flatten、--sort-by、--filter、--limit。--limit=LIMIT--flatten、--sort-by、--filter、--limit。--page-size=PAGE_SIZE--filter 和 --limit 旗標之前或之後。--sort-by=[FIELD,…]~)。這個旗標會與其他旗標互動,套用順序如下:--flatten、--sort-by、--filter、--limit。--uri--threat-exceptions操作說明
如要建立新的 IDS 端點,請使用 gcloud ids endpoints create 指令。
gcloud ids endpoints create ENDPOINT_NAME \
--network=VPC_NETWORK \
--zone=ZONE \
--severity=SEVERITY \
[--no-async] \
[GCLOUD_WIDE_FLAG...]
請更改下列內容:
ENDPOINT_NAME:端點的名稱或 ID。VPC_NETWORK:虛擬私有雲網路的名稱。ZONE:端點的可用區。SEVERITY:威脅嚴重性至少要達到哪個等級,才需要回報。嚴重性旗標為必要設定,且必須採用下列其中一個值:
INFORMATIONALLOWMEDIUMHIGHCRITICAL
API
Cloud IDS 端點資源的欄位如下:
| 欄位 | 類型 | 欄位說明 |
|---|---|---|
| createTime | 字串 | [僅限輸出] 採用 RFC 3339 文字格式的建立時間戳記。 |
| updateTime | 字串 | [僅限輸出] 採用 RFC 3339 文字格式的上次更新時間戳記。 |
| name | 字串 | [僅限輸出] 端點名稱,格式為 projects/{project_id}/locations/{locationId}/endpoints/{endpointId}。 |
| network | 字串 | 連至 IDS 端點的虛擬私有雲網路名稱,可填寫虛擬私有雲網路名稱本身 (如 "src-net"),或網路的完整網址 (如 "projects/{project_id}/global/networks/src-net")。建立端點時,必須填寫這個欄位。 |
| severity | 字串 | 端點回報的最低警告嚴重性等級。 可用的值如下:
建立端點時,必須填寫這個欄位。 |
| description | 字串 | 端點說明 (選填)。 |
| endpoint_forwarding_rule | 字串 | [僅限輸出] 端點網路位址的網址,Packet Mirroring 會將流量傳送到這裡。 |
| endpoint | 字串 | [僅限輸出] 端點網路進入點的內部 IP 位址。 |
如要建立 Cloud IDS 端點,請使用 HTTP POST 要求 (如下所示),並視情況更改變數值。ENDPOINT_NAME 的值須介於 1 至 63 個半形字元之間,且只能使用小寫英文字母、數字和連字號,開頭須為小寫英文字母,結尾不得為連字號。
POST https://ids.googleapis.com/v1/projects/PROJECT_NAME/locations/ZONE/endpoints?endpointId=ENDPOINT_NAME
{
"network": "NETWORK_NAME",
"severity": "SEVERITY_LEVEL",
}
將封包鏡像政策附加至 Cloud IDS 端點
按照下列步驟操作,即可將封包鏡像政策附加至 IDS 端點。
控制台
建立 IDS 端點後,請將封包鏡像政策附加至該端點:
前往 Google Cloud 控制台的「IDS Endpoints」(IDS 端點) 頁面。
按一下 IDS 端點旁邊的「Attach」(附加)。
在「Policy name」(政策名稱) 欄位,輸入封包鏡像政策的名稱。
點選「Next」(下一步)。
選擇要建立鏡像的子網路或執行個體。您可以選取多個子網路和執行個體。
點選「Next」(下一步)。
決定要鏡像所有流量或篩選流量:
- 如要鏡像所有流量,請務必選取「Mirror All Traffic」(鏡像所有流量)。
- 如要根據通訊協定、IP 位址範圍或輸入/輸出流量進行篩選,請選取「Mirror filtered traffic」(鏡像篩選後的流量):
- 選取「Allow all protocols」(允許所有通訊協定) 或「Allow specific protocols」(允許特定通訊協定)。
- 選取「Allow all IP ranges」(允許所有 IP 範圍)或「Allow specific IP ranges」(允許特定 IP 範圍)。
按一下「Submit」(提交),系統就會建立端點。
gcloud
建立端點後,請將封包鏡像政策附加至該端點。首先,使用下列指令,從
endpoint_forwarding_rule欄位取得網址:gcloud ids endpoints describe ENDPOINT_NAME
使用下列指令建立封包鏡像政策:
gcloud compute packet-mirrorings create POLICY_NAME \ --region=REGION \ --collector-ilb=ENDPOINT_FORWARDING_RULE \ --network=VPC_NETWORK \ --mirrored-subnets=SUBNETPacket Mirroring 有多種選用旗標,有些可用來根據通訊協定、IP 位址範圍,或輸入/輸出流量篩選流量。如要進一步瞭解這些選用標記,請參閱 Packet Mirroring 參考資料。
提供 Cloud IDS 端點說明
如要提供 IDS 端點說明,請按照下列步驟操作。
控制台
前往 Google Cloud 控制台的「IDS Endpoints」(IDS 端點) 頁面。
在「IDS Endpoints」(IDS 端點) 頁面,按一下 IDS 端點的名稱。系統就會顯示「Endpoint details」(端點詳細資料) 頁面。
gcloud
如要提供 IDS 端點說明,請使用 gcloud ids endpoints describe 指令。
gcloud ids endpoints describe ENDPOINT_NAME \
[--project=PROJECT_ID] \
[--zone=ZONE] \
[GCLOUD_WIDE_FLAG...]
請更改下列內容:
ENDPOINT_NAME:端點的名稱或 ID。PROJECT_ID:專案 ID。ZONE:端點的可用區。
API
如要取得 Cloud IDS 端點,請使用 HTTP GET 要求 (如下所示),並視情況更改變數值:
GET https://ids.googleapis.com/v1/projects/PROJECT_NAME/locations/ZONE/endpoints?endpointId=ENDPOINT_NAME
列出 Cloud IDS 端點
按照下列步驟操作,即可列出所有 IDS 端點。
控制台
前往 Google Cloud 控制台的「IDS Endpoints」(IDS 端點) 頁面。
gcloud
如要列出 IDS 端點,請使用 gcloud ids endpoints list 指令:
gcloud ids endpoints list \
[--filter=EXPRESSION] \
[--limit=LIMIT] \
[--page-size=PAGE_SIZE] \
[--sort-by=[FIELD,...]] \
[--uri] \
[GCLOUD_WIDE_FLAG...]
請更改下列內容:
EXPRESSION:對要列出的每個資源項目套用布林值篩選條件。如果運算式評估結果為 True,系統就會列出項目。LIMIT:要列出的資源數量上限。PAGE_SIZE:每頁的資源數量上限。FIELD:列出要做為排序依據的資源欄位索引鍵名稱,並以半形逗號分隔。
API
如要列出可用區所有 Cloud IDS 端點,請使用 HTTP GET 要求 (如下所示),並視情況更改變數值:
GET https://ids.googleapis.com/v1/projects/PROJECT_NAME/locations/ZONE/endpoints
您也可以將 ZONE 改成連字號 (如下所示),列出所有可用區中全部的 Cloud IDS 端點:
GET https://ids.googleapis.com/v1/projects/PROJECT_NAME/locations/-/endpoints
刪除 Cloud IDS 端點
按照下列步驟操作,即可刪除 IDS 端點。
控制台
前往 Google Cloud 控制台的「IDS Endpoints」(IDS 端點) 頁面。
在「IDS Endpoints」(IDS 端點) 頁面,按一下 IDS 端點的名稱。系統就會顯示「Endpoint details」(端點詳細資料) 頁面。
按一下「 Delete Endpoint」(刪除端點)。
gcloud
如要刪除 IDS 端點,請使用 gcloud ids endpoints delete 指令。
gcloud ids endpoints delete ENDPOINT_NAME \
[--project=PROJECT_ID] \
[--zone=ZONE] \
[--no-async] \
[GCLOUD_WIDE_FLAG...]
請更改下列內容:
ENDPOINT_NAME:端點的名稱或 ID。PROJECT_ID:專案 ID。ZONE:端點的可用區。
API
如要刪除 Cloud IDS 端點,請使用 HTTP DELETE 要求 (如下所示),並視情況更改變數值:
DELETE https://ids.googleapis.com/v1/projects/PROJECT_NAME/locations/ZONE/endpoints?endpointId=ENDPOINT_NAME
選用:設定威脅例外狀況
建立或更新 Cloud IDS 端點時,可以使用 --threat-exceptions 旗標停用誤判率高或非必要的威脅 ID。以下範例示範如何更新現有的 Cloud IDS 端點 ENDPOINT_NAME,以排除威脅 ID THREAT_ID1 和 THREAT_ID2:
gcloud ids endpoints update ENDPOINT_NAME \
--threat-exceptions=THREAT_ID1,THREAT_ID2
查看威脅記錄
按照下列步驟操作,確認系統是否已產生任何威脅記錄。
前往 Google Cloud 控制台的「IDS Threats」(IDS 威脅) 頁面。
點選威脅名稱,即可查看該威脅的「Threat details」(威脅詳細資料) 頁面。
返回「Threats」(威脅) 分頁。
按一下 IDS 端點右側的「 Menu」(選單),然後選取「View threat logs」(查看威脅記錄檔)。