创建网络 ACL
您可以配置 ACL 来限制子网的入站和出站流量。 缺省情况下,将允许所有流量。
每个子网只能连接到一个 ACL。 但是,每个 ACL 可以连接到多个子网。
开始之前,请确保已创建 VPC 和子网。
在控制台中创建网络 ACL
要在 IBM Cloud 控制台中配置 ACL,请执行以下步骤:
-
转至 IBM Cloud 控制台 并登录到您的帐户。
-
选择导航菜单
,然后单击基础设施 > 网络 > 访问控制列表。
-
单击创建 +。
-
选择 编辑位置 图标
,然后输入以下字段的值:
- 地理位置-为您的访问控制表选择大陆。
- 区域-选择访问控制表的区域。
-
为详细信息下的以下字段输入值:
- 公共网关名称-输入访问控制表的唯一名称。
- 资源组-选择访问控制表的资源组。 您可以使用此访问控制表的缺省组,或者从资源组列表 (如果已定义) 中进行选择。 有关更多信息,请参阅在资源组中组织资源的最佳实践。
调配完成后,不能更改资源组。
- 标记-添加用户标记。 用户标记在帐户范围内可见。 有关更多信息,请参阅使用标记。
- 访问管理标记-添加访问管理标记以帮助组织访问控制关系。 有关更多信息,请参阅 使用标记控制对资源的访问。
- VPC- 选择一个 VPC。 您可以对此公共网关使用缺省 VPC,或者从列表中进行选择 (如果已定义)。 有关详细信息,请参阅 虚拟专用云入门。
-
在“规则”下,单击“创建 +”配置入站和出站规则,以定义允许哪些流量进入或流出子网。 对于每个规则,请指定以下信息:
- 选择是允许还是拒绝指定的流量。
- 选择应用规则的协议。
- 对于规则的源和目标,请指定应用规则的 IP 范围和端口。 例如,如果希望允许所有入站流量到达子网中的 IP 范围
192.168.0.0/24
,请将 任何 指定为源,将192.168.0.0/24
指定为目标。 但是,如果要仅允许从169.168.0.0/24
到整个子网的入站流量,请将169.168.0.0/24
指定为源,将 任何 指定为规则的目标。 - 指定规则的优先级。 编号较小的规则将首先求值,并覆盖编号较大的规则。 例如,如果优先级为
2
的规则允许 HTTP 流量,而优先级为5
的规则拒绝所有流量,则 HTTP 流量仍被允许。 - 单击创建。
- 选择要附加到此 ACL 的子网。 单击 附加 以附加其他子网。
如果子网具有现有 ACL 连接,那么 ACL 将替换为正在创建的 ACL。
-
在页面右下方的“摘要”菜单中查看总估算成本。
从 CLI 创建网络 ACL
开始之前,请 设置 CLI 环境。
要从 CLI 创建网络 ACL,请运行以下命令:
ibmcloud is network-acl-create ACL_NAME VPC \
[--rules (RULES_JSON|@RULES_JSON_FILE) | --source-acl-id SOURCE_ACL_ID] \
[--resource-group-id RESOURCE_GROUP_ID | --resource-group-name RESOURCE_GROUP_NAME] \
[--output JSON] [-q, --quiet]
其中:
ACL_NAME
是网络 ACL 的名称。VPC
是 VPC 的标识。--rules
是 JSON 或 JSON 文件中的 ACL 规则。--source-acl-id
是要从中复制规则的网络 ACL 的 ID。--resource-group-id
是资源组的 ID。 该选项与--resource-group-name
互斥。--resource-group-name
是资源组的名称。 该选项与--resource-group-id
互斥。--output
指定 JSON 格式的输出。-q, --quiet
禁止详细输出。
例如:
ibmcloud is network-acl-create my-acl 72251a2e-d6c5-42b4-97b0-b5f8e8d1f479
ibmcloud is network-acl-create my-acl 72251a2e-d6c5-42b4-97b0-b5f8e8d1f479 --source-acl-id 72b27b5c-f4b0-48bb-b954-5becc7c1dcb3
使用 API 创建网络 ACL
要使用 API 创建网络 ACL,请执行以下步骤:
-
设置 API 环境。
-
将
VpcId
值存储在要在 API 命令中使用的变量中:export VpcId=<your_vpc_id>
-
创建网络 ACL:
curl -X POST -sH "Authorization:${iam_token}" \ "$vpc_api_endpoint/v1/network_acls?version=$api_version&generation=2" \ -d '{"name": "testacl", "vpc":{"id": "'$VpcId'"},"resource_group": {"id": "'$ResourceGroupId'"}}' | jq
示例: 配置规则
例如,可以配置以下入站规则:
- 允许来自互联网的 HTTP 流量。
- 允许来自子网的所有入站流量
10.10.20.0/24
。 - 拒绝所有其他入站流量。
优先级 | 允许/拒绝 | 协议 | 源 | 目标 |
---|---|---|---|---|
1 | 允许 | TCP | 任何 IP,端口 80-80 | 任何 IP,任何端口 |
2 | 允许 | 全部 | 10.10.20.0/24 ,任何端口 |
任何 IP,任何端口 |
3 | 拒绝 | 全部 | 任何 IP,任何端口 | 任何 IP,任何端口 |
然后,配置以下出站规则:
- 允许 HTTP 流量上网。
- 允许所有出站流量进入子网
10.10.20.0/24
。 - 拒绝所有其他出站流量。
优先级 | 允许/拒绝 | 协议 | 源 | 目标 |
---|---|---|---|---|
1 | 允许 | TCP | 任何 IP,任何端口 | 任何 IP,端口 80-80 |
2 | 允许 | 全部 | 任何 IP,任何端口 | 10.10.20.0/24 ,任何端口 |
3 | 拒绝 | 全部 | 任何 IP,任何端口 | 任何 IP,任何端口 |