按照以下说明为您的应用配置 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.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
:您的 VPC 网络的名称,例如my-vpc-network
。
创建与服务提供方之间的专用连接。专用连接在您的 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 端点
我们建议您为部署了工作负载的每个区域创建一个 IDS 端点。您也可以为每个区域创建多个 IDS 端点。请按以下步骤操作,创建 IDS 端点并为其分配 IDS 服务配置文件。
控制台
在 Google Cloud 控制台中,前往 IDS 端点。
配置端点:
- 点击创建端点。
- 在端点名称字段中输入名称。
- 可选:在说明字段中输入说明。
- 点击网络下拉列表,然后选择要让 Cloud IDS 检查的网络。
- 从区域和可用区下拉列表中,选择您的网络或子网所在的区域和可用区。
- 点击继续。
选择 Cloud IDS 服务配置文件:
- 点击选择 IDS 服务配置文件。
- 在最低威胁严重级别下,选择所需的提醒级别。
- 点击创建。创建过程可能需要 10-15 分钟。
创建 IDS 端点后,将数据包镜像政策关联到 IDS 端点:
- 选择端点标签页。
- 点击 IDS 端点旁边的关联。
- 在政策名称字段中,为数据包镜像政策输入一个名称。
- 点击下一步。
- 选择要镜像的子网或实例。您可以选择多个子网和实例。
- 点击下一步。
- 确定您是要镜像所有流量,还是要过滤流量:
- 如果您想镜像所有流量,请确保已选择镜像所有流量。
- 如果您想根据协议、IP 地址范围或入站流量/出站流量来过滤流量,请选择镜像过滤的流量:
- 选择允许所有协议或允许特定协议。
- 选择允许所有 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...]
严重级别标志是必需的,并且采用以下值之一:
- 信息
- 低
- 中
- HIGH
- 严重
创建端点后,请将数据包镜像政策关联到该端点。首先,使用以下命令从
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 文本格式。 |
name | 字符串 | [输出专用] 端点的名称,格式为 projects/{project_id}/locations/{locationId}/endpoints/{endpointId} 。 |
网络 | 字符串 | 连接到 IDS 端点的 VPC 网络的名称。此字段可以是 VPC 网络名称本身(如 "src-net" ),也可以是网络的完整网址(如 "projects/{project_id}/global/networks/src-net" )。创建端点时,这是必填字段。 |
严重程度 | 字符串 | 端点报告的最低提醒严重级别。 可能的值如下所示:
创建端点时,这是必填字段。 |
说明 | 字符串 | 端点的可选说明。 |
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
可选:配置威胁例外情况
在创建或更新 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