配置 Cloud IDS

按照以下说明为您的应用配置 Cloud IDS。如需了解 Cloud IDS 的概念性信息,请参阅 Cloud IDS 概览

准备工作

如要配置 Cloud IDS,必须先满足以下要求。

设置 Cloud IDS IAM 权限

Cloud IDS 提供多个 Identity and Access Management (IAM) 角色。可以使用示例命令向主账号授予必要的 IAM 权限。

  • Cloud IDS Admin 角色 (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 Viewer 角色 (roles/ids.viewer):具有此角色的项目查看者和主账号对 IDS 端点具有只读权限。如果您是项目的所有者、编辑者或查看者,则您已拥有此权限。

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --role=roles/ids.viewer \
        --member=user:USER_NAME ;
    
  • Compute Packet Mirroring User 角色 (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:您的 VPC 网络的名称,例如 my-vpc-network

  3. 创建与服务提供方的专用连接。专用连接在您的 VPC 网络和服务提供方的网络之间建立 VPC 网络对等互连连接。

    如果您已有专用连接,请使用 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:您的 VPC 网络的名称

    • 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:您的 VPC 网络的名称

  • PROJECT_ID:包含 VPC 网络的项目的 ID。

了解最佳实践

建议您在配置 Cloud IDS 之前了解相关最佳实践。如需了解详情,请参阅 Cloud IDS 最佳实践

配置 Cloud IDS 端点

以下部分介绍了如何创建 Cloud IDS 端点、将其附加到数据包镜像政策、查看 Cloud IDS 端点、删除 Cloud IDS 端点,以及如何配置威胁排除项。

创建 Cloud IDS 端点

我们建议您为部署了工作负载的每个区域创建一个 IDS 端点。您也可以为每个区域创建多个 IDS 端点。请按以下步骤操作,创建 IDS 端点并为其分配 IDS 服务配置文件。

控制台

在 Google Cloud 控制台中,前往 IDS 端点

前往“IDS 端点”

配置端点:

  1. 点击创建端点
  2. 端点名称字段中输入名称。
  3. 可选:在说明字段中输入说明。
  4. 点击网络列表,然后选择要让 Cloud IDS 检查的网络。
    1. 区域可用区列表中,选择您的网络或子网所在的区域和可用区。
    2. 点击继续

选择 Cloud IDS 服务配置文件:

  1. 点击选择 IDS 服务配置文件
  2. 最低威胁严重级别下,选择所需的提醒级别。
  3. 点击创建。创建过程可能需要 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 端点,请使用 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:您的 VPC 网络的名称。
  • ZONE:端点的可用区。
  • SEVERITY:要报告的威胁的最低严重程度。

    严重级别标志是必需的,并且采用以下值之一:

    • INFORMATIONAL
    • LOW
    • MEDIUM
    • HIGH
    • CRITICAL

API

Cloud IDS 端点资源具有以下字段:

字段 类型 字段说明
createTime 字符串 [仅限输出] 创建时间戳,采用 RFC 3339 文本格式。
updateTime 字符串 [仅限输出] 上次更新时间戳,采用 RFC 3339 文本格式。
name 字符串 [仅限输出] 端点的名称,格式为 projects/{project_id}/locations/{locationId}/endpoints/{endpointId}
网络 字符串 连接到 IDS 端点的 VPC 网络的名称。此字段可以是 VPC 网络名称本身(如 "src-net"),也可以是网络的完整网址(如 "projects/{project_id}/global/networks/src-net")。创建端点时,这是必填字段。
严重程度 字符串

端点报告的最低提醒严重级别。 可能的值如下所示:

  • INFORMATIONAL
  • LOW
  • MEDIUM
  • HIGH
  • CRITICAL

创建端点时,这是必填字段。

说明 字符串 端点的可选说明。
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 端点

请按以下步骤将数据包镜像政策关联到 IDS 端点。

控制台

创建 IDS 端点后,将数据包镜像政策关联到 IDS 端点:

  1. 在 Google Cloud 控制台中,前往 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. 数据包镜像有多个可选标志,包括可用于根据协议、IP 地址范围或入站流量/出站流量过滤流量的标志。如需详细了解这些可选标志,请参阅数据包镜像参考

描述 Cloud IDS 端点

请按以下步骤操作,描述 IDS 端点。

控制台

  1. 在 Google Cloud 控制台中,前往 IDS 端点

    前往“IDS 端点”

  2. IDS 端点页面上,点击 IDS 端点的名称。系统随即会显示端点详情页面。

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 端点。

控制台

  1. 在 Google Cloud 控制台中,前往 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 端点

    前往“IDS 端点”

  2. IDS 端点页面上,点击 IDS 端点的名称。系统随即会显示端点详情页面。

  3. 点击 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_ID1THREAT_ID2

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

查看威胁日志

请按照以下步骤检查是否已生成任何威胁日志。

  1. 在 Google Cloud 控制台中,前往 IDS 威胁

    前往“IDS 威胁”页面

  2. 点击某个威胁名称,即可查看相应威胁的威胁详情页面。

  3. 返回到威胁标签页。

  4. 点击 IDS 端点右侧的 菜单,然后选择查看威胁日志

后续步骤