优先管理规则集
要自定义受管理的规则集的行为,请在部署时覆盖它。 覆盖规则集时,指定除缺省配置外要执行的更改。
您可以在以下级别覆盖受管理的规则集:
- 规则集覆盖将应用于已执行的规则集中的所有规则。
- 标记覆盖适用于具有特定标记的所有规则。 例如,使用标记覆盖来定制 CIS 受管规则集,以便将具有 wordpress 标记的所有规则都设置为 Block。 如果多个标记具有覆盖,并且规则具有多个这些标记,那么标记覆盖顺序将确定行为。 对于使用多个被覆盖标记标记的规则,将应用最后一个标记的覆盖。
- 规则覆盖适用于受管规则集中由其规则标识引用的特定规则。
特定覆盖优先于更一般的覆盖,规则覆盖优先于标记覆盖,而标记覆盖优先于规则集覆盖。
规则集覆盖和标记覆盖适用于受管规则集中的现有规则和未来规则。 如果要仅覆盖现有规则,那么必须使用规则覆盖。
覆盖工作流程(应用程序接口)
要对受管规则集应用覆盖,请执行以下步骤。
-
使用列表规则集操作列出可用的规则集。
-
使用get ruleset操作列出规则集的规则。
-
在阶段入口点上调用更新规则集操作。
-
在执行受管规则集的规则的
action_parameters
中指定覆盖。"action_parameters": { "id": "<RULESET_ID>", "overrides": { // ruleset overrides "property-to-modify": "value", "property-to-modify": "value", // tag overrides "categories": [ { "category": "<TAG_NAME>", "property-to-modify": "value", "property-to-modify": "value" } ], // rule overrides "rules": [ { "id": "<RULE_ID>", "property-to-modify": "value", "property-to-modify": "value" } ] } }
您可以覆盖以下规则属性。
- “操作”
- “已启用”
某些受管规则集可能具有额外的覆盖需求,也可能覆盖其他规则属性。
通过使用覆盖在实例级别启用受管规则集中的所有规则是无效的。 此更改可能会影响实例中的所有区域。 缺省情况下,某些规则已禁用,因为它们最终会影响合法流量。 请不要在未事先考虑的情况下跨区域启用这些规则。
在控制台中覆盖托管规则集
要在控制台中覆盖托管规则集,请按照以下步骤操作:
-
在 CIS 控制台中,导航至安全部分。
-
选择 WAF 选项卡。
-
单击要覆盖的规则集名称。
-
从配置部署侧面板,单击浏览规则。
-
在覆盖 CIS 受管规则集规则侧面板中,您可以
- 为要覆盖的任何规则选择一个操作。
- 选择状态切换,启用或禁用规则。
-
重新配置规则集规则后,单击继续。
-
确认要覆盖的规则列表,然后单击保存。
单击“重置为默认值”恢复原始设置。
从CLI中覆盖管理规则集
您可以从CLI覆盖规则集。
从CLI列出已管理的规则集
要列出CLI中的所有区域规则集,请运行以下命令:
ibmcloud cis managed-waf rulesets DNS_DOMAIN_ID [-i, --instance INSTANCE] [--output FORMAT]
命令选项
DNS_DOMAIN_ID
- 域的 ID。
-i, --instance value
- 实例名称或 ID。
--output value
- 指定输出格式;仅支持 JSON 格式。
CLI区域规则集下的列表规则
要从CLI中列出区域规则集下的规则,请运行以下命令:
ibmcloud cis managed-waf ruleset DNS_DOMAIN_ID RULESET_ID [-i, --instance INSTANCE] [--output FORMAT]
命令选项
DNS_DOMAIN_ID
- 域的 ID。
RULESET_ID
- 要列出的规则的规则集 ID。
-i, --instance value
- 实例名称或 ID。
--output value
- 指定输出格式;仅支持 JSON 格式。
从CLI中覆盖管理规则集
要从 CLI 覆盖受管 WAF 规则集,请运行以下命令:
ibmcloud cis managed-waf deployment-add-ruleset DNS_DOMAIN_ID RULESET_ID [--match EXPRESSION] [--enabled true|false] [--override-action ACTION] [--override-status STATUS] [--paranoia-level LEVEL] [--override-rules RULE] [-i, --instance INSTANCE] [--output FORMAT]
命令选项
DNS_DOMAIN_ID
- 域的 ID。
--match value
- 规则运行必须满足的条件。 有关匹配值的列表,请参阅 使用字段、函数和表达式。
--enabled value
- 表示规则是否处于活动状态。 缺省为 "true"。
--override-action value
- 任何覆盖的规则集操作。 有效值为 "managed_challenge","block","js_challenge","log" 和 "challenge"。
--paranoia-level value
- OWASP 偏执级别。 有效值为 " PL1 "、" PL2 "、" PL3 "、" PL4 ",仅适用于
CIS OWASP Core Ruleset
。 --override-rules value
- 覆盖的规则选项。 例如,
--override-rules rule=RULE_ID,action=ACTION,enabled=STATUS
。 -i, --instance value
- 实例名称或 ID。
--output value
- 指定输出格式;仅支持 JSON 格式。
用API覆盖管理规则集
您可以从API中覆盖规则集。
从API中列出区域规则集
要列出API中的所有区域规则集,请运行以下命令:
curl -X GET \
https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets \
-H 'content-type: application/json' \
-H 'accept: application/json' \
-H 'x-auth-user-token: Bearer xxxxxx'
列出API规则集的所有规则
要列出特定规则集的所有规则,请运行以下命令:
curl -X GET \
https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets/$RULESET_ID \
-H 'content-type: application/json' \
-H 'accept: application/json' \
-H 'x-auth-user-token: Bearer xxxxxx'
其中:
$RULESET_ID
是针对其列出规则的受管规则集的标识。
从API中覆盖一个入口点规则集
要使用覆盖更新API的入口规则集,请运行以下命令:
curl -X PUT \
https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets/phases/$RULESET_PHASE/entrypoint \
-H 'content-type: application/json' \
-H 'accept: application/json' \
-H 'x-auth-user-token: Bearer xxxxxx' \
-d '{"description":"Deploy managed ruleset, enabling a specific rule with log action","rules":[{"action":"execute","expression":"true","action_parameters":{"id":"<MANAGED_RULESET_ID>","overrides":{"rules":[{"id":"<RULE_ID>","enabled":true,"action":"log"}]}}}]}'
其中:
$RULESET_PHASE
是部署的规则集阶段。 使用http_request_firewall_managed
覆盖托管的 WAF 规则集。-d
是创建规则集所需的属性对象。description
定义您自己对规则集所完成工作的总结。rules
是规则集要部署的规则列表。action
是规则要执行的操作。 请参阅 WAF规则集操作,了解可用操作的说明。action_parameters
是用于定义操作对象的对象。id
是要执行的规则集的标识。 将从列表区域规则集操作中检索此标识。overrides
是对所选规则集进行覆盖的对象。rules
是使用所选属性覆盖的规则的列表。id
是要覆盖的规则的标识。 此标识是从列表区域规则集规则操作中检索的。- 即使启用了规则,
enabled
也会覆盖。 action
指定规则执行的覆盖操作。
expression
是运行规则的条件。 使用 "true" 表示此规则始终运行。description
定义您自己的规则实现内容摘要。
使用 Terraform 重写托管规则集
您可以使用 Terraform 覆盖规则集。
使用 Terraform 列出受管规则集
下面的示例列出了使用 Terraform 管理的所有规则集:
data "ibm_cis_rulesets" "tests" {
cis_id = ibm_cis.instance.id
domain_id = data.ibm_cis_domain.cis_domain.domain_id
}
有关参数和属性的更多信息,请参阅 ibm_cis_rulesets
中的
使用 Terraform 列出受管规则集的所有规则
下面的示例使用 Terraform 列出了托管规则集的所有规则:
resource "ibm_cis_ruleset" "config" {
cis_id = ibm_cis.instance.id
domain_id = data.ibm_cis_domain.cis_domain.domain_id
ruleset_id = "943c5da120114ea5831dc1edf8b6f769"
}
有关参数和属性的更多信息,请参阅 ibm_cis_ruleset
中的
使用 Terraform 重写规则
本示例展示了如何部署带有各种重载的 CIS 受管规则集。 首先,它会启用和阻止所有规则的流量。 然后,它会启用和阻止特定规则的流量。 最后,它会启用和阻止 wordpress
类别中所有规则的流量。 基本上,这个例子说明了覆盖已部署规则的不同方法(全局、特定、按类别)。
resource "ibm_cis_ruleset_entrypoint_version" "test" {
cis_id = ibm_cis.instance.id
domain_id = data.ibm_cis_domain.cis_domain.domain_id
phase = "http_request_firewall_managed"
rulesets {
description = "Entrypoint ruleset for managed ruleset"
rules {
action = "execute"
description = "Deploy CIS managed ruleset"
enabled = true
expression = "true"
action_parameters {
id = "efb7b8c949ac4650a09736fc376e9aee"
overrides {
action = "block"
enabled = true
override_rules {
rule_id = "var.overriden_rule.id"
enabled = true
action = "block"
}
categories {
category = "wordpress"
enabled = true
action = "block"
}
}
}
}
}
}
有关参数和属性的更多信息,请参阅 ibm_cis_ruleset_entrypoint_version
中的