配置 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,并为 Virtual Private Cloud (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:包含以下内容的项目的 ID 您的 VPC 网络

    如需检查操作是否成功,请使用 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 端点

我们建议您为拥有该 API 访问权限的每个区域创建一个 IDS 端点, 部署的工作负载您还可以为每个区域创建多个 IDS 端点。请按照以下步骤创建 IDS 端点并为其分配 IDS 服务配置文件。

控制台

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

    前往 IDS 端点

配置端点:

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

选择 Cloud IDS 服务配置文件:

  1. 点击选择 IDS 服务配置文件
  2. 最低威胁严重级别下,选择正确的提醒级别。
  3. 点击创建。创建过程可能需要 10-15 分钟。

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

  1. 选择端点标签页。
  2. 点击 IDS 端点旁边的附加
  3. 政策名称字段中,输入数据包镜像政策的名称。
  4. 点击下一步
  5. 选择要镜像的一个或多个子网。您可以选择多个子网和实例。
  6. 点击下一步
  7. 确定是要镜像所有流量还是要过滤流量:
    1. 如果您想镜像所有流量,请确保选择镜像所有流量
    2. 如果您想根据协议、IP 地址范围或入站流量或出站流量过滤流量,请选择镜像过滤的流量
      1. 选择允许所有协议允许特定协议
      2. 选择允许所有 IP 范围允许特定 IP 范围
  8. 点击提交。端点已创建。

现在,您可以检查是否已生成任何威胁日志。通过 以下步骤是可选的:

  1. 点击 IDS Threats(IDS 威胁)标签页。
  2. 点击威胁名称,查看该威胁的威胁详情页面。
  3. 返回威胁标签页。
  4. 点击 IDS 端点右侧的 Menu(菜单),然后选择 View threat logs(查看威胁日志)。

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 会将资源列表输出分页。此标志 指定每个网页的最大资源数量。默认值为 由服务确定(如果它支持分页);否则,它将无限 (无分页)。分页可以应用在 --filter--limit 之前或之后,具体取决于服务。
--sort-by=[FIELD,…]
排序所依据的资源字段键名称的英文逗号分隔列表。默认顺序是升序。为字段添加表示该字段以降序排列的前缀“~”。此标志与按以下顺序应用的其他标志交互:--flatten--sort-by--filter--limit
--uri
输出资源 URI 列表,而不是默认输出。
--threat-exceptions
要豁免于在此端点上收到提醒的威胁 ID 的逗号分隔列表。每个端点的异常数量上限为 99。

说明

要创建新的 IDS 端点,请执行以下步骤:

  1. 使用命令 gcloud ids endpoints create。将 ENDPOINT_NAMEVPC_NETWORKZONE、 并将 SEVERITY 替换为与您的应用匹配的信息。

    gcloud ids endpoints create ENDPOINT_NAME \
      --network=VPC_NETWORK \
      --zone=ZONE \
      --severity=SEVERITY \
     [--no-async] \
     [GCLOUD_WIDE_FLAG...]
    
  2. 严重级别标志是必需的,采用以下值之一:

    • 参考信息
    • MEDIUM
    • 严重
  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_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 文本格式。
name 字符串 [仅输出] 端点的名称,格式为 projects/{project_id}/locations/{locationId}/endpoints/{endpointId}
network 字符串 连接到 IDS 的 VPC 网络的名称 端点。这可以包含 VPC 网络名称 本身(例如 "src-net")或指向网络的完整网址 (例如 "projects/{project_id}/global/networks/src-net")。 创建端点时必须填写此字段。
和程度上减少 字符串

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

  • 信息
  • MEDIUM
  • 严重

创建端点时必须填写此字段。

说明 字符串 端点的可选说明。
endpoint_forwarding_rule 字符串 [仅限输出] 流量流向的端点网络地址的网址 将由数据包镜像发送
端点 字符串 [仅输出] 端点网络入口点的内部 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

可选:配置威胁例外情况

您可以使用 --threat-exceptions 标志(创建或更新 Cloud IDS 时) 端点。以下示例将更新现有的 Cloud IDS 端点 ENDPOINT_NAME,用于豁免威胁 ID THREAT_ID1THREAT_ID2:

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

后续步骤