将安全组规则应用于源 IP 地址和目标 IP 地址
安全组规则现在支持本地 IP 地址。 这意味着规则可以允许特定本地 IP 地址,而不是允许所有本地 IP 地址。 安全组规则支持入口和出口规则的本地 IP 地址。
在以下情况下,允许使用安全组规则的特定本地 IP 地址或地址范围很有用:
- 您具有与单个虚拟网络接口关联的辅助专用 IP 地址
- 您具有将包转发到允许 IP 电子欺骗的接口的定制路由
您可以应用仅允许特定本地目标 IP 地址的入站安全组规则。 您还可以应用仅允许特定本地源 IP 地址的出站安全组规则。
你可以使用控制台、CLI、API 和 Terraform 应用安全组规则(入站和出站)。
提示:
- 系统将对所有规则求值,而不考虑这些规则的添加顺序。
- 规则是有状态的,这意味着会自动允许响应所允许流量的返回流量。 例如,创建了规则以允许端口 80 上的入站 TCP 流量。 该规则还会允许将端口 80 上的出站 TCP 流量返回给发起主机,而无需额外的规则。
- 对于 Windows 映像,请确保与实例关联的安全组允许入站和出站远程桌面协议流量 (TCP 端口
3389)。
用例
创建安全组规则时,您可以选择允许特定的本地 IP 地址或 CIDR。 与远程属性类似,有一个本地属性可以是下列其中一项:
- IP 地址-该规则适用于特定目标 IP 地址 (对于入站规则) 或源 IP 地址 (对于出站规则)
- CIDR-该规则适用于特定目标 CIDR (对于入站规则) 或源 CIDR (对于出站规则)
图 1 显示了具有 local IP 地址的安全组出站规则。 允许从本地 IP 地址 10.243.0.1 到范围 10.243.200.0/24 中的任何远程地址的流量。 绿色数据路径行显示允许的流量; 红线显示不允许的流量。
图 2 描述了具有 local IP 地址的安全组入站规则。 允许从范围 10.243.200.0/24 中的任何远程地址发送到本地 IP 地址 10.243.0.1 的流量。 不允许其他本地 IP 地址的流量。
在控制台中创建安全组规则
您可以在供应安全组期间或之后创建入站和出站规则。
-
从浏览器中,打开 IBM Cloud 控制台。
-
选择导航菜单
,然后单击基础架构
> 网络 > 安全组。
-
从 VPC 表的安全组中,选择下列其中一项:
- 要在供应新安全组时创建规则,请单击 创建,然后遵循 为资源设置安全组 中的指示信息。
- 要为现有安全组创建规则,请单击该安全组的名称以查看其“详细信息”页面,然后继续执行步骤 4。
-
要创建和管理规则,请选择“规则”选项卡。
-
请从以下选项中选择一项:
-
要创建入站规则,请在“入站规则”表上选择 创建,然后填写以下字段。 然后,单击创建。
- 协议 - 指定要强制执行的协议( ICMP_TCP_UDP、ANY 或其他 IPv4 协议之一)。
- Port-指定规则适用的端口。 选择 任意 或指定 端口范围 (最小和最大端口值)。 TCP 和 UDP 的端口值必须是 1 到 65535 之间的数字。 ICMP 的有效端口值从 0 到 254。
- 源类型 - 选择允许此规则通过的网络接口集合。 您可以为入站允许的流量选择 任何,IP 地址或 CIDR 块。 或者,可以在同一 VPC 中指定安全组,以允许连接到所选安全组的所有实例的进出流量。
- 目标类型-选择 任何,IP 地址或 CIDR 块。
-
要创建出站规则,请在“出站规则”表上选择 创建,然后填写以下字段。 然后,单击创建。
- 协议 - 指定要强制执行的协议( TCP、UDP、ICMP 或 TCP-UDP-ICMP )。
- Port-指定规则适用的端口。 选择 任意 或指定 端口范围 (最小和最大端口值)。 TCP 和 UDP 的端口值必须是 1 到 65535 之间的数字。 ICMP 的有效端口值从 0 到 254。
- 目标类型-选择 任何,IP 地址,CIDR 块或 安全组。
- 源类型-选择 任何,IP 地址或 CIDR 块。
-
从 CLI 创建安全组规则
要使用 CLI 创建安全组规则 (入站和出站),请输入以下命令。
ibmcloud is security-group-rule-add GROUP DIRECTION PROTOCOL [--vpc VPC] [--local LOCAL_ADDRESS | CIDR_BLOCK] [--remote REMOTE_ADDRESS | CIDR_BLOCK | SECURITY_GROUP] [--icmp-type ICMP_TYPE [--icmp-code ICMP_CODE]] [--port-min PORT_MIN] [--port-max PORT_MAX] [--output JSON] [-q, --quiet]
其中:
GROUP- 安全组的标识或名称。
DIRECTION- 要强制实施的流量方向。 其中一个:
inbound,outbound。 PROTOCOL- 规则适用的协议。 以下之一:
tcp,udp,icmp,icmp_tcp_udpgre,,ip_in_ip,ah,esp,l2tp,rsvp,sctp,vrrp,或number_<N>. --vpc- VPC 的标识或名称。 此选项仅用于在该VPC内通过名称指定唯一资源。
--local- 本地IP地址或本地IP地址范围,允许此规则允许传入流量(或对于出站流量,允许传出流量)。 可以指定为 IP 地址或 CIDR 块。 以下任一选项:
LOCAL_ADDRESS,CIDR_BLOCK. CIDR 块 允许流量访问所有本地 IP 地址(或对于出站规则,允许来自所有本地0.0.0.0/0IP 地址的流量)。 --remote- 此规则允许流量的网络接口集合。 它可以指定为
REMOTE_ADDRESS、或SECURITY_GROUP``CIDR_BLOCK。 若未指定,则允许来自任何源的流量(或对于出站规则,允许发往任何源的流量)。 --icmp-type- 要允许的 ICMP 流量类型。 有效值范围为
0至254。 此选项仅在协议设置为时指定icmp。 如果未指定,将允许所有类型。 --icmp-code- 要允许的 ICMP 流量代码。 有效值范围为
0至255。 仅当协议设置为 ICMP 时,才可指定此选项。 如果未指定,将允许所有代码。 -port-min- 最小端口号。 有效值范围为
1至65535。 此选项仅在协议设置为tcp或 时udp指定。 若未指定,则允许所有端口(默认:1)。 --port-max- 最大端口号。 有效值范围为
1至65535。 此选项仅在协议设置为tcp或 时udp指定。 若未指定,则允许所有端口(默认:65535)。 --output- 输出格式。
JSON之一。 --q, --quiet- 禁止详细输出。
CLI 示例
ibmcloud is security-group-rule-add 72b27b5c-f4b0-48aa-b954-5becc7c1dcb3 inbound anyibmcloud is security-group-rule-add my-sg inbound anyibmcloud is security-group-rule-add my-sg inbound any --vpc my-vpcibmcloud is security-group-rule-add 72b27b5c-f4b0-48aa-b954-5becc7c1dcb3 inbound icmp --icmp-type 8 --icmp-code 0ibmcloud is security-group-rule-add 72b27b5c-f4b0-48aa-b954-5becc7c1dcb3 inbound any --remote 12.3.2.4ibmcloud is security-group-rule-add 72b27b5c-f4b0-48aa-b954-5becc7c1dcb3 inbound any --remote 72b27b5c-f4b0-48aa-b954-5becc7c1dcb3ibmcloud is security-group-rule-add my-sg inbound any --remote my-sgibmcloud is security-group-rule-add 72b27b5c-f4b0-48aa-b954-5beaa7c1dcb3 inbound tcp --port-min 4 --port-max 22 --output JSONibmcloud is security-group-rule-add --sg 72b27b5c-f4b0-48bb-b954-5beaa7c1dcb3 --direction inbound --protocol any --local 192.176.3.0ibmcloud vpc-iaas security-group-rule-add --sg-id r134-028d1f0b-9648-41d1-b862-45d9b85b12b7 --direction inbound --protocol gre --local-address 192.176.3.0ibmcloud vpc-iaas security-group-rule-add --sg-id r134-028d1f0b-9648-41d1-b862-45d9b85b12b7 --direction inbound --protocol any --remote-address 12.3.2.4ibmcloud vpc-iaas security-group-rule-add --sg-id r134-028d1f0b-9648-41d1-b862-45d9b85b12b7 --direction inbound --protocol icmp_tcp_udp
使用 API 创建安全组规则
安全组规则 POST 请求接受名为 local 的可选属性,该属性具有两个属性:
address- 此规则允许入站流量 (或来自出站规则的入站流量) 的 IP 地址。
cidr_block- 此规则允许入站流量的 IP 地址范围 (或用于出站规则的 IP 地址范围)。
如果未指定 local 属性,那么缺省值为 cidr_block: 0.0.0.0/0。
您可以使用 API 来创建安全组规则:
-
使用正确的变量设置 API 环境。
-
将安全组标识存储在要在 API 命令中使用的变量中:
export security_group_id=<security_group_id> -
要创建允许从远程地址范围
10.1.2.0/24到本地 IP 地址192.168.1.100的入站 TCP 流量的安全组规则,请运行以下命令:curl -sX POST "$vpc_api_endpoint/v1/security_groups/$security_group_id/rules?version=$version&generation=2" \ -H "Authorization: Bearer ${iam_token}" \ -d '{ "direction": "inbound", "local": { "address": "192.168.1.100" } "protocol": "tcp", "remote": { "cidr_block": "10.1.2.0/24" } }'样本输出:
{ "direction": "inbound", "href": "https://us-south.iaas.cloud.ibm.com/v1/security_groups/r006-568b4cc2-b6d1-4ee4-898a-841be283a4cd/rules/r006-8d123cf9-9a4e-48d9-ad5e-dabf1e5b5773", "id": "r006-8d123cf9-9a4e-48d9-ad5e-dabf1e5b5773", "ip_version": "ipv4", "local": { "address": "192.168.1.100" } "protocol": "tcp", "remote": { "cidr_block": "10.1.2.0/24" } }
使用 Terraform 创建安全组规则
要使用 Terraform,请下载 Terraform CLI 并配置 Provider IBM Cloud 插件。 有关更多信息,请参阅 Terraform 入门。
以下 Terraform 示例显示如何创建入站安全组规则。 资源中的 local 参数接受 IP 地址或 CIDR 块,并且还处于数据源 ibm_is_security_group_rules 和 ibm_is_security_group_rule 的响应状态。
resource "ibm_is_security_group_rule" "example2" {
group = ibm_is_security_group.example.id
direction = "inbound"
remote = "127.0.0.1"
local = "192.168.3.0/24"
udp {
port_min = 805
port_max = 807
}
}