按照以下说明为您的应用配置 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,并为 Virtual Private Cloud (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
:包含以下内容的项目的 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 服务配置文件。
控制台
在 Google Cloud 控制台中,前往 IDS 端点。
配置端点:
- 点击创建端点。
- 在端点名称字段中输入名称。
- 可选:在说明字段中输入说明。
- 点击网络下拉列表,然后选择您要 需要 Cloud IDS 检查。
- 从区域和可用区下拉列表中选择网络或子网所在的区域和可用区。
- 点击继续。
选择 Cloud IDS 服务配置文件:
- 点击选择 IDS 服务配置文件。
- 在最低威胁严重级别下,选择正确的提醒级别。
- 点击创建。创建过程可能需要 10-15 分钟。
创建 IDS 端点后,将数据包镜像政策附加到 IDS 端点:
- 选择端点标签页。
- 点击 IDS 端点旁边的附加。
- 在政策名称字段中,输入数据包镜像政策的名称。
- 点击下一步。
- 选择要镜像的一个或多个子网。您可以选择多个子网和实例。
- 点击下一步。
- 确定是要镜像所有流量还是要过滤流量:
- 如果您想镜像所有流量,请确保选择镜像所有流量。
- 如果您想根据协议、IP 地址范围或入站流量或出站流量过滤流量,请选择镜像过滤的流量:
- 选择允许所有协议或允许特定协议。
- 选择允许所有 IP 范围或允许特定 IP 范围。
- 点击提交。端点已创建。
现在,您可以检查是否已生成任何威胁日志。通过 以下步骤是可选的:
- 点击 IDS Threats(IDS 威胁)标签页。
- 点击威胁名称,查看该威胁的威胁详情页面。
- 返回威胁标签页。
- 点击 IDS 端点右侧的 Menu(菜单),然后选择 View threat logs(查看威胁日志)。
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...]
严重级别标志是必需的,采用以下值之一:
- 参考信息
- 低
- MEDIUM
- 高
- 严重
创建端点后,请将数据包镜像政策附加到该端点。首先,使用
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} 。 |
network | 字符串 | 连接到 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
可选:配置威胁例外情况
您可以使用
--threat-exceptions
标志(创建或更新 Cloud IDS 时)
端点。以下示例将更新现有的 Cloud IDS 端点
ENDPOINT_NAME,用于豁免威胁 ID THREAT_ID1 和
THREAT_ID2:
gcloud ids endpoints update ENDPOINT_NAME
--threat-exceptions=THREAT_ID1,THREAT_ID2