設定 Cloud IDS

請按照這些操作說明,為應用程式設定 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)。將封包鏡像政策附加至入侵偵測系統端點時,需要這個角色。如果您具備 compute.securityAdmincontainer.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.list
  • compute.zones.list

設定私人服務連線

如要建立 IDS 端點,您必須啟用 Service Networking API,並設定虛擬私有雲 (VPC) 網路的網路對等互連。每個客戶專案只需執行一次,可使用Google Cloud 控制台或 Google Cloud CLI 執行。分配 IP 位址範圍時,必須是符合 RFC 1918 規範的私人 IP 位址範圍 (10.0.0.0/8172.16.0.0/12192.168.0.0/16),否則端點建立作業會失敗。

如要設定私人服務存取權,請按照下列步驟操作:

  1. 使用下列指令啟用 Service Networking API。請將 PROJECT_ID 改成您的專案 ID。

     gcloud services enable servicenetworking.googleapis.com \
         --project=PROJECT_ID
    
  2. 如果您尚未在網路中分配 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-range

    • DESCRIPTION:範圍的說明,例如 allocated for my-service

    • VPC_NETWORK:虛擬私有雲網路的名稱,例如 my-vpc-network

  3. 建立與服務供應商的私人連線。私人連線會在您的虛擬私有雲網路與服務供應商的網路之間,建立虛擬私有雲網路對等互連連線。

    如果您已有私人連線,請使用 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:含有您 VPC 網路的專案 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。詳情請參閱「Cloud IDS 最佳做法」。

設定 Cloud IDS 端點

以下各節說明如何建立 Cloud IDS 端點、將端點附加至封包鏡像政策、查看 Cloud IDS 端點、刪除 Cloud IDS 端點,以及設定威脅例外狀況。

建立 Cloud IDS 端點

建議您為部署工作負載的每個區域建立 IDS 端點。每個地區也可以建立多個 IDS 端點。請按照下列步驟建立入侵偵測系統端點,並指派入侵偵測系統服務設定檔。

控制台

  1. 前往 Google Cloud 控制台的「IDS Endpoints」(IDS 端點) 頁面。

    前往 IDS 端點

設定端點:

  1. 按一下「建立端點」
  2. 在「端點名稱」欄位中輸入名稱。
  3. 選用:在「說明」欄位中輸入說明。
  4. 按一下「網路」下拉式清單,然後選取要讓 Cloud IDS 檢查的網路。
  5. 從「Region」(區域) 和「Zone」(可用區) 下拉式清單中,選擇網路或子網路的區域和可用區。
  6. 按一下「繼續」

選取 Cloud IDS 服務設定檔:

  1. 按一下「選取 IDS 服務設定檔」
  2. 在「最低威脅嚴重性等級」下方,選取正確的快訊等級。
  3. 按一下「Create」(建立)。建立程序可能需要 10 至 15 分鐘。

gcloud

選用標記

本節中的指令可能包含下列部分或全部選用標記:

--no-async
等待進行中的作業完成,而不是立即傳回。
--filter=EXPRESSION
對要列出的每個資源項目套用布林篩選器運算式。如果運算式評估結果為 True,則會列出該項目。如需篩選運算式的詳細資料和範例,請執行 $ gcloud topic filters。這個旗標會與其他旗標互動,套用順序如下:--flatten--sort-by--filter--limit
--limit=LIMIT
要列出的資源數量上限。預設值為無限。這個旗標會與其他旗標互動,套用順序如下:--flatten--sort-by--filter--limit
--page-size=PAGE_SIZE
將 Cloud IDS 群組資源清單輸出至頁面。這個標記會指定每頁的資源數量上限。如果服務支援分頁,預設值會由服務決定;否則為無限 (不分頁)。分頁可套用至 --filter--limit 標記之前或之後,視服務而定。
--sort-by=[FIELD,…]
以半形逗號分隔的資源欄位鍵名稱清單,用來做為排序依據。預設為遞增排序。如要依遞減順序排序,請在欄位前面加上波狀符號 (~)。這個旗標會與其他旗標互動,套用順序如下:--flatten--sort-by--filter--limit
--uri
列印資源 URI 清單,而非預設輸出內容。
--threat-exceptions
以半形逗號分隔的威脅 ID 清單,可免除對這個端點發出快訊。每個端點最多可有 99 個例外狀況。

操作說明

如要建立新的 IDS 端點,請按照下列步驟操作:

  1. 使用 gcloud ids endpoints create 指令。將 ENDPOINT_NAMEVPC_NETWORKZONESEVERITY 替換為與應用程式相符的資訊。

    gcloud ids endpoints create ENDPOINT_NAME \
        --network=VPC_NETWORK \
        --zone=ZONE \
        --severity=SEVERITY \
        [--no-async] \
        [GCLOUD_WIDE_FLAG...]
    
  2. 嚴重程度標記為必填,且必須採用下列其中一個值:

    • 參考用
    • 嚴重

API

Cloud IDS 端點資源具有下列欄位:

欄位 類型 欄位說明
createTime 字串 [Output Only] Creation timestamp in RFC 3339 text format.
updateTime 字串 [Output Only] Last update timestamp in RFC 3339 text format.
名稱 字串 [僅限輸出] 端點名稱,格式為 projects/{project_id}/locations/{locationId}/endpoints/{endpointId}
網路 字串 與 IDS 端點連線的虛擬私有雲網路名稱。這個欄位可以包含虛擬私有雲網路名稱本身 (例如 "src-net"),也可以包含網路的完整網址 (例如 "projects/{project_id}/global/networks/src-net")。建立端點時,這個欄位為必填。
嚴重性 字串

端點回報的最低快訊嚴重性等級。 可能的值如下:

  • 參考用
  • 嚴重

建立端點時,必須填寫這個欄位。

說明 字串 端點說明 (選填)。
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 端點後,請將 Packet Mirroring 政策附加至 IDS 端點:

  1. 前往 Google Cloud 控制台的「IDS Endpoints」(IDS 端點) 頁面。

    前往 IDS 端點

  2. 按一下 IDS 端點旁邊的「附加」

  3. 在「政策名稱」欄位中,輸入封包鏡像政策的名稱。

  4. 點選「下一步」

  5. 選擇要建立鏡像的子網路或執行個體。您可以選取多個子網路和執行個體。

  6. 點選「下一步」

  7. 決定要鏡像所有流量或篩選流量:

    1. 如要鏡像所有流量,請務必選取「鏡像所有流量」
    2. 如要根據通訊協定、IP 位址範圍或輸入/輸出流量篩選流量,請選取「針對篩選的流量建立鏡像」
      1. 選取「允許所有通訊協定」或「允許特定通訊協定」
      2. 選取「允許所有 IP 範圍」或「允許特定 IP 範圍」
  8. 按一下「提交」。端點已建立。

gcloud

  1. 建立端點後,請將封包鏡像政策附加至該端點。首先,請使用下列指令,從 endpoint_forwarding_rule 欄位取得網址:

    gcloud ids endpoints describe ENDPOINT_NAME
    
  2. 使用下列指令建立封包鏡像政策:

     gcloud compute packet-mirrorings create POLICY_NAME \
         --region=REGION \
         --collector-ilb=ENDPOINT_FORWARDING_RULE \
         --network=VPC_NETWORK \
         --mirrored-subnets=SUBNET
    
  3. Packet Mirroring 有多個選用旗標,包括可用於根據通訊協定、IP 位址範圍,或輸入或輸出流量篩選流量的旗標。如要進一步瞭解這些選用標記,請參閱「封包鏡像參考資料」。

說明 Cloud IDS 端點

請按照下列步驟說明 IDS 端點。

控制台

  1. 前往 Google Cloud 控制台的「IDS Endpoints」(IDS 端點) 頁面。

    前往 IDS 端點

  2. 在「入侵偵測系統端點」頁面上,按一下入侵偵測系統端點的名稱。系統隨即會顯示「端點詳細資料」頁面。

gcloud

如要說明 IDS 端點,請使用 gcloud ids endpoints describe 指令。將 ENDPOINT_NAMEPROJECT_IDZONE 替換為符合您應用程式的資訊:

gcloud ids endpoints describe ENDPOINT_NAME \
    [--project=PROJECT_ID] \
    [--zone=ZONE] \
    [GCLOUD_WIDE_FLAG...]

API

如要取得 Cloud IDS 端點,請使用類似下列的 HTTP GET 要求,並視需要替換變數:

GET https://ids.googleapis.com/v1/projects/PROJECT_NAME/locations/ZONE/endpoints?endpointId=ENDPOINT_NAME

列出 Cloud IDS 端點

請按照下列步驟列出所有 IDS 端點。

控制台

  1. 前往 Google Cloud 控制台的「IDS Endpoints」(IDS 端點) 頁面。

    前往 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

或者,如要列出所有可用區中的所有 Cloud IDS 端點,可以將 ZONE 替換為連字號,如下所示:

GET https://ids.googleapis.com/v1/projects/PROJECT_NAME/locations/-/endpoints

刪除 Cloud IDS 端點

請按照下列步驟刪除 IDS 端點。

控制台

  1. 前往 Google Cloud 控制台的「IDS Endpoints」(IDS 端點) 頁面。

    前往 IDS 端點

  2. 在「入侵偵測系統端點」頁面上,按一下入侵偵測系統端點的名稱。系統隨即會顯示「端點詳細資料」頁面。

  3. 按一下「刪除端點」

gcloud

如要刪除 IDS 端點,請使用 gcloud ids endpoints delete 指令。將 ENDPOINT_NAMEPROJECT_IDZONE 替換為符合您應用程式的資訊:

gcloud ids endpoints delete ENDPOINT_NAME \
    [--project=PROJECT_ID] \
    [--zone=ZONE] \
    [--no-async] \
    [GCLOUD_WIDE_FLAG...]

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_ID1THREAT_ID2

gcloud ids endpoints update ENDPOINT_NAME \
    --threat-exceptions=THREAT_ID1,THREAT_ID2

查看威脅記錄檔

請按照下列步驟檢查是否已產生任何威脅記錄。

  1. 前往 Google Cloud 控制台的「IDS Threats」(IDS 威脅) 頁面。

    前往「IDS Threats」(IDS 威脅)

  2. 按一下威脅名稱,即可查看該威脅的「威脅詳細資料」頁面。

  3. 返回「威脅」分頁。

  4. 按一下 IDS 端點右側的「選單」,然後選取「查看威脅記錄」

後續步驟