按照以下说明为您的应用配置 Cloud IDS。如需了解 Cloud IDS 的概念性信息,请参阅 Cloud IDS 概览。
准备工作
配置 Cloud IDS 之前,您必须满足以下要求。
为 Cloud IDS 设置 IAM 权限
Cloud IDS 具有三个 Identity and Access Management (IAM) 角色。您可以使用示例命令向主帐号授予必要的 IAM 权限。
roles/ids.admin
:拥有 Cloud IDS Admin 角色 (roles/ids.admin
) 的项目主帐号可以创建 IDS 端点。如果您是 Project Owner 或 Project Editor,则表示已拥有此权限,无需明确ids.admin
角色即可创建 IDS 端点。gcloud projects add-iam-policy-binding PROJECT_ID --role=roles/ids.admin --member=user:USER_NAME ;
此角色可以执行以下操作:
- 创建端点
- 删除端点
- 获取端点
- 列出端点
roles/ids.viewer
:拥有 Cloud IDS Viewer 角色 (roles/ids.viewer
) 的项目查看者和主帐号拥有对 IDS 端点的只读权限。如果您是项目所有者、编辑者或查看者,那么您已经拥有此权限。gcloud projects add-iam-policy-binding PROJECT_ID --role=roles/ids.viewer --member=user:USER_NAME ;
roles/compute.packetMirroringUser
:将数据包镜像政策附加到 IDS 端点所需的权限。如果您拥有compute.securityAdmin
或container.serviceAgent
角色,则表示您已拥有此权限。gcloud projects add-iam-policy-binding PROJECT_ID --role=roles/compute.packetMirroringUser --member=user:USER_NAME ;
roles/logging.viewer
:查看近期威胁的额外权限,这是 Cloud IDS 的关键核心功能。如需详细了解此角色,请参阅访问权限控制指南。gcloud projects add-iam-policy-binding PROJECT_ID --role=roles/logging.viewer --member=user:USER_NAME ;
设置专用服务访问通道
如需创建 IDS 端点,您必须启用 Service Networking API,并为 Virtual Private Cloud (VPC) 网络设置网络对等互连。此操作只需针对每个客户项目执行一次,并且可以使用 Google Cloud Console 或 Google Cloud CLI 完成。
如需设置专用服务访问通道,请按以下步骤操作:
使用以下命令启用 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 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
您可以使用以下命令检查操作是否成功。将
OPERATION_NAME
替换为上一步返回的操作名称:gcloud services vpc-peerings operations describe \ --name=OPERATION_NAME
针对要监控的每个 VPC 网络重复第 2 步和第 3 步。
创建 Cloud IDS 端点
我们建议您为已部署工作负载的每个区域创建一个 IDS 端点。您还可以为每个区域创建多个 IDS 端点。按照以下步骤创建 IDS 端点并为其分配 IDS 服务配置文件。
控制台
在 Google Cloud Console 中,前往网络安全页面。
在 Cloud IDS 页面上,选择端点标签页。
配置端点:
- 点击创建端点。
- 在端点名称字段中输入名称。
- 可选:在说明字段中输入说明。
- 点击网络下拉列表,然后选择您希望 Cloud IDS 检查的网络。
- 从区域和可用区下拉列表中选择网络或子网的区域和可用区。
- 点击继续。
选择 Cloud IDS 服务配置文件:
- 点击选择 IDS 服务配置文件。
- 在最低威胁严重级别下,选择正确的提醒级别。
- 点击创建。创建过程可能需要 10-15 分钟。
创建 IDS 端点后,将数据包镜像政策附加到 IDS 端点:
- 选择端点标签页。
- 点击 IDS 端点旁边的附加。
- 在政策名称字段中,输入数据包镜像政策的名称。
- 点击下一步。
- 选择要镜像的一个或多个子网。您可以选择多个子网和实例。
- 点击下一步。
- 确定是要镜像所有流量还是要过滤流量:
- 如果您要镜像所有流量,请确保已选择镜像所有流量。
- 如果要根据协议、IP 地址范围、入站流量或出站流量过滤流量,请选择镜像过滤后的流量:
- 选择允许所有协议或允许特定协议。
- 选择允许所有 IP 范围或允许特定 IP 范围。
- 选择允许入站流量和出站流量、仅允许入站流量或仅允许出站流量。
- 点击提交。端点已创建。
现在,您可以查看是否生成了任何威胁日志。以下步骤是可选的:
- 点击威胁标签页。
- 点击威胁名称即可查看该威胁的威胁详情页面。
- 返回威胁标签页。
- 点击 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
说明
如需创建新的 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...]
必须提供严重级别标记,并采用以下值之一:
- 参考信息
- LOW
- MEDIUM
- HIGH
- CRITICAL
创建端点后,向其发送数据包镜像政策。首先,使用以下命令从
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 projects/PROJECT_NAME/locations/ZONE/endpoints?endpointId=ENDPOINT_NAME { "network": "NETWORK_NAME", "severity": "SEVERITY_LEVEL", }
如需删除 Cloud IDS 端点,请使用如下所示的 HTTP DELETE
请求,并视情况替换变量:
DELETE projects/PROJECT_NAME/locations/ZONE/endpoints?endpointId=ENDPOINT_NAME
如需获取 Cloud IDS 端点,请使用如下所示的 HTTP GET
请求,并视情况替换变量:
GET projects/PROJECT_NAME/locations/ZONE/endpoints?endpointId=ENDPOINT_NAME
如需列出可用区中的所有 Cloud IDS 端点,请使用如下所示的 HTTP GET
请求,并视情况替换变量:
GET projects/PROJECT_NAME/locations/ZONE/endpoints
或者,如需列出所有可用区中的所有 Cloud IDS 端点,您可以将 ZONE
替换为连字符,如下所示:
GET projects/PROJECT_NAME/locations/-/endpoints