請按照這些操作說明,為應用程式設定 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
角色即可建立 IDS 端點。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 ;
Compute 封包鏡像使用者角色 (
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 ;
「Logs Viewer」角色 (
roles/logging.viewer
)。 這是需要額外角色才能查看近期威脅的 Cloud IDS 重要核心功能。如要進一步瞭解這個角色,請參閱存取權控管指南。gcloud projects add-iam-policy-binding PROJECT_ID \ --role=roles/logging.viewer \ --member=user:USER_NAME ;
此外,您還需要下列其他權限:
compute.regions.list
compute.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 位址範圍,則必須在 VPC 網路中為 Google 服務分配 IP 範圍。在下列指令中,您可以省略
addresses
欄位,Google Cloud 會在 VPC 網路中選取未使用的位址範圍: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-range
DESCRIPTION
:範圍的說明,例如allocated for my-service
VPC_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
替換為先前步驟傳回的作業名稱。
針對要監控的每個 VPC 網路重複執行步驟 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 端點
建議您為部署工作負載的每個區域建立 IDS 端點。您也可以為每個區域建立多個 IDS 端點。請按照下列步驟建立入侵偵測系統端點,並指派入侵偵測系統服務設定檔。
控制台
在 Google Cloud 控制台中,前往「IDS 端點」。
設定端點:
- 按一下「建立端點」。
- 在「端點名稱」欄位中輸入名稱。
- 選用:在「說明」欄位中輸入說明。
- 點選「網路」下拉式清單,然後選取要讓 Cloud IDS 檢查的網路。
- 在「Region」和「Zone」下拉式清單中,選擇網路或子網路的區域和區域。
- 按一下「繼續」。
選取 Cloud IDS 服務設定檔:
- 按一下「選取 IDS 服務設定檔」。
- 在「最低威脅嚴重性」下方,選取正確的警報等級。
- 按一下「建立」,建立程序可能需要 10 至 15 分鐘。
建立 IDS 端點後,請將封包鏡像政策附加至 IDS 端點:
- 選取「端點」分頁標籤。
- 按一下 IDS 端點旁的「附加」。
- 在「Policy name」欄位中,輸入封包鏡像政策的名稱。
- 點按「Next」。
- 選擇要鏡像的子網路或執行個體。您可以選取多個子網路和執行個體。
- 點按「Next」。
- 決定要鏡像所有流量還是篩選流量:
- 如要鏡像所有流量,請務必選取「Mirror All Traffic」。
- 如要根據通訊協定、IP 位址範圍或入站/出站流量篩除流量,請選取「針對篩選的流量建立鏡像」:
- 選取「Allow all protocols」或「Allow specific protocols」。
- 選取「允許所有 IP 範圍」或「允許特定 IP 範圍」。
- 按一下「提交」。端點已建立。
您現在可以查看是否已產生任何威脅記錄。以下步驟為選用步驟:
- 按一下「IDS 威脅」分頁標籤。
- 按一下威脅名稱,即可查看該威脅的「威脅詳細資料」頁面。
- 返回「威脅」分頁。
- 按一下 IDS 端點右側的 「選單」,然後選取「查看威脅記錄檔」。
gcloud
選用標記
本節中的指令可能會包含下列部分或全部選用標記:
--no-async
--filter=EXPRESSION
--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
指令。將ENDPOINT_NAME
、VPC_NETWORK
、ZONE
和SEVERITY
替換為與應用程式相符的資訊。gcloud ids endpoints create ENDPOINT_NAME \ --network=VPC_NETWORK \ --zone=ZONE \ --severity=SEVERITY \ [--no-async] \ [GCLOUD_WIDE_FLAG...]
嚴重性標記為必填,且必須採用下列其中一個值:
- 資訊
- 低
- 中
- 高
- 嚴重
建立端點後,請附加封包鏡像政策。首先,請使用下列指令,從
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=SUBNET
封包鏡像作業有幾個可選標記,包括可用於根據通訊協定、IP 位址範圍或輸入/輸出流量篩選流量的標記。如要進一步瞭解這些選用標記,請參閱封包鏡像參考資料。
如要刪除 IDS 端點,請使用 gcloud ids endpoints
delete
指令。將 ENDPOINT_NAME
、PROJECT_ID
和 ZONE
替換為符合您應用程式的資訊:
gcloud ids endpoints delete ENDPOINT_NAME \ [--project=PROJECT_ID] \ [--zone=ZONE] \ [--no-async] \ [GCLOUD_WIDE_FLAG...]
如要描述 IDS 端點,請使用 gcloud ids endpoints
describe
指令。將 ENDPOINT_NAME
、PROJECT_ID
和 ZONE
替換為符合您應用程式的資訊:
gcloud ids endpoints describe ENDPOINT_NAME \ [--project=PROJECT_ID] \ [--zone=ZONE] \ [GCLOUD_WIDE_FLAG...]
如要列出 IDS 端點,請使用 gcloud ids endpoints list
指令:
gcloud ids endpoints list / [--filter=EXPRESSION] \ [--limit=LIMIT] \ [--page-size=PAGE_SIZE] \ [--sort-by=[FIELD,...]] \ [--uri] \ [GCLOUD_WIDE_FLAG...]
API
Cloud IDS 端點資源包含下列欄位:
欄位 | 類型 | 欄位說明 |
---|---|---|
createTime | 字串 | [僅供輸出] 建立時間戳記,採用 RFC 3339 文字格式。 |
updateTime | 字串 | [僅供輸出] 上次更新的時間戳記,採用 RFC 3339 文字格式。 |
名稱 | 字串 | [僅供輸出] 端點名稱,格式為 projects/{project_id}/locations/{locationId}/endpoints/{endpointId} 。 |
網路 | 字串 | 連線至 IDS 端點的虛擬私有雲網路名稱。這個欄位可以包含虛擬私有雲網路名稱本身 (例如 "src-net" ),或是網路的完整網址 (例如 "projects/{project_id}/global/networks/src-net" )。建立端點時,這個欄位為必填欄位。 |
嚴重性 | 字串 | 端點回報的最低快訊嚴重性等級。可能的值如下:
建立端點時,必須填入這個欄位。 |
說明 | 字串 | 端點的說明 (選填)。 |
endpoint_forwarding_rule | 字串 | [僅輸出] 要透過封包鏡像傳送流量的端點網路位址網址。 |
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 端點,請使用類似下方的 HTTP DELETE
要求,並視需要替換變數:
DELETE https://ids.googleapis.com/v1/projects/PROJECT_NAME/locations/ZONE/endpoints?endpointId=ENDPOINT_NAME
如要取得 Cloud IDS 端點,請使用類似下方的 HTTP GET
要求,並視需要替換變數:
GET https://ids.googleapis.com/v1/projects/PROJECT_NAME/locations/ZONE/endpoints?endpointId=ENDPOINT_NAME
如要列出區域中的所有 Cloud IDS 端點,請使用類似下方的 HTTP GET
要求,並視需要替換變數:
GET https://ids.googleapis.com/v1/projects/PROJECT_NAME/locations/ZONE/endpoints
或者,如要列出所有區域中的所有 Cloud IDS 端點,您可以將 ZONE
替換為連字號,如下所示:
GET https://ids.googleapis.com/v1/projects/PROJECT_NAME/locations/-/endpoints
選用步驟:設定威脅例外狀況
建立或更新 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