1. 接口描述
接口请求域名: cfw.tencentcloudapi.com 。
新增一条或多条互联网边界访问控制规则。
默认接口请求频率限制:20次/秒。
2. 输入参数
以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见 公共请求参数。
| 参数名称 | 必选 | 类型 | 描述 |
|---|---|---|---|
| Action | 是 | String | 公共参数,本接口取值:AddAclRule。 |
| Version | 是 | String | 公共参数,本接口取值:2019-09-04。 |
| Region | 否 | String | 公共参数,此参数为可选参数。 |
| Rules.N | 是 | Array of CreateRuleItem | 待添加的互联网边界规则列表,不能为空。每条规则均须满足方向、访问源和目的、动作、范围、协议端口及模板限制;整个请求还须满足规则配额和可生效规则数量限制。账号相关值必须来自只读查询:地址模板调用 DescribeAddressTemplateList,请求用 TemplateType=1 或 5 过滤,并确认返回项 Data[].Type 为 1 或 5;将 Data[].Uuid(mb_ 前缀)写入对应 Content,不要使用 Data[].TemplateId(ip-/dm- 前缀)。协议端口模板请求用 TemplateType=6 过滤,并将 Data[].TemplateId(pp- 前缀)写入 ParamTemplateId。资产实例调用 DescribeCfwAssets,解析返回结果后使用 assets[].instance_id;资产分组调用 DescribeResourceGroupNew,传 QueryType=resource、GroupId="0"、ShowType=all,解析返回结果后使用 GroupId;资源标签传 QueryType=tag,跳过“全部资产”根节点,以一级节点 GroupName 为 Key、所选二级子节点 GroupName 为 Value 构造 JSON,不要写入 GroupId。地域调用 DescribeAclRegInfo:Scope=serial 传 FwType=["SERIAL"],Scope=side 传 FwType=["BYPASS"],Scope=all 同时传两项,并使用 Data[].RegionCode。不得使用展示名称或自行拼接。覆盖导入的范围仅由首条规则的 Direction 决定。 |
| CfwAiAgentOperationSource | 否 | String | AI操作来源 枚举值:
示例值:console |
| From | 否 | String | 添加方式。省略或空字符串表示普通新增;insert_rule 表示指定位置新增;batch_import 表示非覆盖批量导入;batch_import_cover 表示覆盖导入,会删除首条规则 Direction 对应的现有可操作规则后再添加 Rules,添加失败时已删除的规则不会恢复,风险极高。覆盖范围仅由首条规则决定,调用方应确保 Rules 的 Direction 一致。仅支持上述取值。 示例值:batch_import |
3. 输出参数
| 参数名称 | 类型 | 描述 |
|---|---|---|
| RuleUuid | Array of Integer | 新增规则的 ID 列表,顺序与 Rules 一致。 示例值:[8888, 8889] |
| RequestId | String | 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 |
4. 示例
示例1 添加一条出站互联网边界观察规则
使用 RFC 5737 文档地址添加一条出站串行 TCP 观察规则;显式指定启用状态、生效范围、规则来源和末尾优先级。
输入示例
POST / HTTP/1.1
Host: cfw.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: AddAclRule
<公共请求参数>
{
"Rules": [
{
"SourceContent": "192.0.2.0/24",
"SourceType": "net",
"TargetContent": "198.51.100.10",
"TargetType": "net",
"Protocol": "TCP",
"RuleAction": "log",
"Port": "443",
"Direction": 0,
"OrderIndex": -1,
"Enable": "true",
"Description": "出站 TCP 观察示例",
"Scope": "serial",
"RuleSource": 0
}
]
}
输出示例
{
"Response": {
"RuleUuid": [
100001
],
"RequestId": "00000000-0000-4000-8000-000000000001"
}
}
示例2 添加一条入站地域来源规则
添加一条入站串行 TCP 规则,来源使用地域 code;地域 code 应通过只读查询取得,示例中的 gd44 仅用于展示格式。
输入示例
POST / HTTP/1.1
Host: cfw.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: AddAclRule
<公共请求参数>
{
"Rules": [
{
"SourceContent": "gd44",
"SourceType": "location",
"TargetContent": "198.51.100.0/24",
"TargetType": "net",
"Protocol": "TCP",
"RuleAction": "accept",
"Port": "443",
"Direction": 1,
"OrderIndex": -1,
"Enable": "true",
"Description": "允许地域来源访问 HTTPS",
"Scope": "serial",
"RuleSource": 0
}
]
}
输出示例
{
"Response": {
"RuleUuid": [
100002
],
"RequestId": "00000000-0000-4000-8000-000000000002"
}
}
示例3 插入一条旁路互联网边界规则
使用 insert_rule 在指定位置插入一条禁用的出站旁路规则;调用前使用 DescribeCfwRules,传 RuleType=border、Direction=0、ExpandNames=false,将目标位置对应的 rules[].sequence 写入 OrderIndex。
输入示例
POST / HTTP/1.1
Host: cfw.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: AddAclRule
<公共请求参数>
{
"From": "insert_rule",
"Rules": [
{
"SourceContent": "192.0.2.0/24",
"SourceType": "net",
"TargetContent": "198.51.100.10",
"TargetType": "net",
"Protocol": "TCP",
"RuleAction": "log",
"Port": "443",
"Direction": 0,
"OrderIndex": 3118,
"Enable": "false",
"Description": "插入旁路观察规则",
"Scope": "side",
"RuleSource": 0
}
]
}
输出示例
{
"Response": {
"RuleUuid": [
100003
],
"RequestId": "00000000-0000-4000-8000-000000000003"
}
}
示例4 在连续位置批量插入互联网边界规则
两条规则使用相同的 Direction,并按请求顺序将 OrderIndex 设置为连续位置 3 和 4。
输入示例
POST / HTTP/1.1
Host: cfw.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: AddAclRule
<公共请求参数>
{
"From": "insert_rule",
"Rules": [
{
"SourceContent": "192.0.2.31",
"SourceType": "net",
"TargetContent": "198.51.100.31",
"TargetType": "net",
"Protocol": "TCP",
"RuleAction": "log",
"Port": "443",
"Direction": 0,
"OrderIndex": 3,
"Enable": "false",
"Description": "连续位置批量插入示例一",
"Scope": "serial",
"RuleSource": 0
},
{
"SourceContent": "192.0.2.32",
"SourceType": "net",
"TargetContent": "198.51.100.32",
"TargetType": "net",
"Protocol": "TCP",
"RuleAction": "log",
"Port": "8443",
"Direction": 0,
"OrderIndex": 4,
"Enable": "false",
"Description": "连续位置批量插入示例二",
"Scope": "serial",
"RuleSource": 0
}
]
}
输出示例
{
"Response": {
"RuleUuid": [
100008,
100009
],
"RequestId": "00000000-0000-4000-8000-000000000008"
}
}
示例5 批量导入两条全局互联网边界规则
使用非覆盖的 batch_import 新增两条禁用的出站全局规则;该方式不会删除已有规则。
输入示例
POST / HTTP/1.1
Host: cfw.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: AddAclRule
<公共请求参数>
{
"From": "batch_import",
"Rules": [
{
"SourceContent": "192.0.2.1",
"SourceType": "net",
"TargetContent": "198.51.100.31",
"TargetType": "net",
"Protocol": "TCP",
"RuleAction": "log",
"Port": "443",
"Direction": 0,
"OrderIndex": -1,
"Enable": "false",
"Description": "批量全局规则一",
"Scope": "all",
"RuleSource": 0
},
{
"SourceContent": "192.0.2.2",
"SourceType": "net",
"TargetContent": "198.51.100.32",
"TargetType": "net",
"Protocol": "TCP",
"RuleAction": "log",
"Port": "8443",
"Direction": 0,
"OrderIndex": -1,
"Enable": "false",
"Description": "批量全局规则二",
"Scope": "all",
"RuleSource": 0
}
]
}
输出示例
{
"Response": {
"RuleUuid": [
100004,
100005
],
"RequestId": "00000000-0000-4000-8000-000000000004"
}
}
示例6 使用地址模板新增互联网边界规则
使用地址模板新增一条互联网边界规则。
输入示例
POST / HTTP/1.1
Host: cfw.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: AddAclRule
<公共请求参数>
{
"Rules": [
{
"SourceContent": "mb_xxxxx_xxxxx",
"SourceType": "template",
"TargetContent": "198.51.100.60",
"TargetType": "net",
"Protocol": "TCP",
"RuleAction": "log",
"Port": "443",
"Direction": 0,
"OrderIndex": -1,
"Enable": "false",
"Description": "地址模板观察规则",
"Scope": "serial",
"RuleSource": 0
}
]
}
输出示例
{
"Response": {
"RuleUuid": [
100006
],
"RequestId": "00000000-0000-4000-8000-000000000005"
}
}
示例7 使用资源标签新增互联网边界规则
调用 DescribeResourceGroupNew,传 QueryType=tag,以一级节点 GroupName 为 Key、所选二级子节点 GroupName 为 Value 构造访问源。
输入示例
POST / HTTP/1.1
Host: cfw.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: AddAclRule
<公共请求参数>
{
"Rules": [
{
"SourceContent": "{\"Key\":\"自动化测试\",\"Value\":\"autotest\"}",
"SourceType": "tag",
"TargetContent": "198.51.100.60",
"TargetType": "net",
"Protocol": "TCP",
"RuleAction": "log",
"Port": "443",
"Direction": 0,
"OrderIndex": -1,
"Enable": "false",
"Description": "资源标签观察规则",
"Scope": "serial",
"RuleSource": 0
}
]
}
输出示例
{
"Response": {
"RuleUuid": [
100007
],
"RequestId": "00000000-0000-4000-8000-000000000006"
}
}
示例8 允许腾讯云来源访问指定资产
用户要求允许腾讯云来源访问指定资产时,先调用 DescribeCfwAssets,选择具有公网 IP 的目标资产并使用 assets[].instance_id;云厂商使用协议值 tencent,不要填写展示名称“腾讯云”。
输入示例
POST / HTTP/1.1
Host: cfw.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: AddAclRule
<公共请求参数>
{
"Rules": [
{
"SourceContent": "tencent",
"SourceType": "vendor",
"TargetContent": "ins-xxxxxxxx",
"TargetType": "instance",
"Protocol": "ANY",
"RuleAction": "log",
"Port": "-1/-1",
"Direction": 1,
"OrderIndex": -1,
"Enable": "false",
"Description": "观察腾讯云来源访问指定资产",
"Scope": "serial",
"RuleSource": 0
}
]
}
输出示例
{
"Response": {
"RuleUuid": [
100010
],
"RequestId": "00000000-0000-4000-8000-000000000010"
}
}
示例9 添加 DNS 宽松和严格匹配规则
用户要求按域名解析结果控制出站访问时,可在同一方向批量添加两条规则:dnsparse 在 Host/SNI 匹配或目的 IP 属于当前 DNS 解析结果时命中,domainiptwoverify 要求两个条件同时满足。两条规则均使用查询或用户确认的精确域名,不使用单独的 *。
输入示例
POST / HTTP/1.1
Host: cfw.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: AddAclRule
<公共请求参数>
{
"Rules": [
{
"SourceContent": "192.0.2.0/24",
"SourceType": "net",
"TargetContent": "example.com",
"TargetType": "dnsparse",
"Protocol": "TCP",
"RuleAction": "log",
"Port": "443",
"Direction": 0,
"OrderIndex": -1,
"Enable": "false",
"Description": "观察 DNS 宽松匹配流量",
"Scope": "serial",
"RuleSource": 0
},
{
"SourceContent": "192.0.2.0/24",
"SourceType": "net",
"TargetContent": "example.org",
"TargetType": "domainiptwoverify",
"Protocol": "TCP",
"RuleAction": "log",
"Port": "443",
"Direction": 0,
"OrderIndex": -1,
"Enable": "false",
"Description": "观察 DNS 严格匹配流量",
"Scope": "serial",
"RuleSource": 0
}
]
}
输出示例
{
"Response": {
"RuleUuid": [
100011,
100012
],
"RequestId": "00000000-0000-4000-8000-000000000011"
}
}
5. 开发者资源
腾讯云 API 平台
腾讯云 API 平台 是综合 API 文档、错误码、API Explorer 及 SDK 等资源的统一查询平台,方便您从同一入口查询及使用腾讯云提供的所有 API 服务。
API Inspector
用户可通过 API Inspector 查看控制台每一步操作关联的 API 调用情况,并自动生成各语言版本的 API 代码,也可前往 API Explorer 进行在线调试。
SDK
云 API 3.0 提供了配套的开发工具集(SDK),支持多种编程语言,能更方便的调用 API。
- Tencent Cloud SDK 3.0 for Python: CNB, GitHub, Gitee
- Tencent Cloud SDK 3.0 for Java: CNB, GitHub, Gitee
- Tencent Cloud SDK 3.0 for PHP: CNB, GitHub, Gitee
- Tencent Cloud SDK 3.0 for Go: CNB, GitHub, Gitee
- Tencent Cloud SDK 3.0 for Node.js: CNB, GitHub, Gitee
- Tencent Cloud SDK 3.0 for .NET: CNB, GitHub, Gitee
- Tencent Cloud SDK 3.0 for C++: CNB, GitHub, Gitee
- Tencent Cloud SDK 3.0 for Ruby: CNB, GitHub, Gitee
命令行工具
6. 错误码
以下仅列出了接口业务逻辑相关的错误码,其他错误码详见 公共错误码。
| 错误码 | 描述 |
|---|---|
| AuthFailure | CAM签名/鉴权错误。 |
| DryRunOperation | DryRun 操作,代表请求将会是成功的,只是多传了 DryRun 参数。 |
| FailedOperation | 操作失败。 |
| InternalError | 内部错误。 |
| InvalidParameter | 参数错误。 |
| InvalidParameterValue | 参数取值错误。 |
| LimitExceeded | 超过配额限制。 |
| MissingParameter | 缺少参数错误。 |
| OperationDenied | 操作被拒绝。 |
| RequestLimitExceeded | 请求的次数超过了频率限制。 |
| ResourceInUse | 资源被占用。 |
| ResourceInsufficient | 资源不足。 |
| ResourceNotFound | 资源不存在。 |
| ResourceUnavailable | 资源不可用。 |
| ResourcesSoldOut | 资源售罄。 |
| UnauthorizedOperation | 未授权操作。 |
| UnknownParameter | 未知参数错误。 |
| UnsupportedOperation | 操作不支持。 |