設定 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)。這個角色用於將封包鏡像政策附加至 IDS 端點。如果您具備 compute.securityAdmincontainer.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/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 位址範圍,則必須在 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

  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:含有虛擬私有雲端網路的專案 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 端點。請按照下列步驟建立入侵偵測系統端點,並指派入侵偵測系統服務設定檔。

控制台

  1. 在 Google Cloud 控制台中,前往「IDS 端點」

    前往 IDS 端點

設定端點:

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

選取 Cloud IDS 服務設定檔:

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

建立 IDS 端點後,請將封包鏡像政策附加至 IDS 端點:

  1. 選取「端點」分頁標籤。
  2. 按一下 IDS 端點旁的「附加」
  3. 在「Policy name」欄位中,輸入封包鏡像政策的名稱。
  4. 點按「Next」
  5. 選擇要鏡像的子網路或執行個體。您可以選取多個子網路和執行個體。
  6. 點按「Next」
  7. 決定要鏡像所有流量還是篩選流量:
    1. 如要鏡像所有流量,請務必選取「Mirror All Traffic」
    2. 如要根據通訊協定、IP 位址範圍或入站/出站流量篩除流量,請選取「針對篩選的流量建立鏡像」
      1. 選取「Allow all protocols」或「Allow specific protocols」
      2. 選取「允許所有 IP 範圍」或「允許特定 IP 範圍」
  8. 按一下「提交」。端點已建立。

您現在可以查看是否已產生任何威脅記錄。以下步驟為選用步驟:

  1. 按一下「IDS 威脅」分頁標籤。
  2. 按一下威脅名稱,即可查看該威脅的「威脅詳細資料」頁面。
  3. 返回「威脅」分頁。
  4. 按一下 IDS 端點右側的 「選單」,然後選取「查看威脅記錄檔」

gcloud

選用標記

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

--no-async
等待進行中的作業完成,而不是立即傳回。
--filter=EXPRESSION
將布林值篩選器 EXPRESSION 套用至每個要列出的資源項目。如果運算式判斷為 True,則會列出該項目。如需篩選運算式的詳細資訊和範例,請執行 $ gcloud topic filters。這個旗標會與以下順序套用的其他旗標互動:--flatten--sort-by--filter--limit
--limit=LIMIT
要列出的資源數量上限。預設值為無限制。這個旗標會與以下順序套用的其他旗標互動:--flatten--sort-by--filter--limit
--page-size=PAGE_SIZE
Cloud IDS 會將資源清單輸出至頁面。這個標記會指定每頁資源數量上限。如果服務支援分頁,則預設值由服務決定;否則,預設值為無限制 (不分頁)。Paging 可在 --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. 嚴重性標記為必填,且必須採用下列其中一個值:

    • 資訊
    • 嚴重
  3. 建立端點後,請附加封包鏡像政策。首先,請使用下列指令,從 endpoint_forwarding_rule 欄位取得網址:

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

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

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

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

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

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_ID1THREAT_ID2 排除在外:

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

後續步驟