IBM Cloud Docs
优先管理规则集

优先管理规则集

要自定义受管理的规则集的行为,请在部署时覆盖它。 覆盖规则集时,指定除缺省配置外要执行的更改。

您可以在以下级别覆盖受管理的规则集:

  • 规则集覆盖将应用于已执行的规则集中的所有规则。
  • 标记覆盖适用于具有特定标记的所有规则。 例如,使用标记覆盖来定制 CIS 受管规则集,以便将具有 wordpress 标记的所有规则都设置为 Block。 如果多个标记具有覆盖,并且规则具有多个这些标记,那么标记覆盖顺序将确定行为。 对于使用多个被覆盖标记标记的规则,将应用最后一个标记的覆盖。
  • 规则覆盖适用于受管规则集中由其规则标识引用的特定规则。

特定覆盖优先于更一般的覆盖,规则覆盖优先于标记覆盖,而标记覆盖优先于规则集覆盖。

规则集覆盖和标记覆盖适用于受管规则集中的现有规则和未来规则。 如果要仅覆盖现有规则,那么必须使用规则覆盖。

覆盖工作流程(应用程序接口)

要对受管规则集应用覆盖,请执行以下步骤。

  1. 使用列表规则集操作列出可用的规则集。

  2. 使用get ruleset操作列出规则集的规则。

  3. 在阶段入口点上调用更新规则集操作。

  4. 在执行受管规则集的规则的 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"
          }
        ]
      }
    }
    

您可以覆盖以下规则属性。

  • “操作”
  • “已启用”

某些受管规则集可能具有额外的覆盖需求,也可能覆盖其他规则属性。

通过使用覆盖在实例级别启用受管规则集中的所有规则是无效的。 此更改可能会影响实例中的所有区域。 缺省情况下,某些规则已禁用,因为它们最终会影响合法流量。 请不要在未事先考虑的情况下跨区域启用这些规则。

在控制台中覆盖托管规则集

要在控制台中覆盖托管规则集,请按照以下步骤操作:

  1. 在 CIS 控制台中,导航至安全部分。

  2. 选择 WAF 选项卡。

  3. 单击要覆盖的规则集名称。

  4. 从配置部署侧面板,单击浏览规则

  5. 在覆盖 CIS 受管规则集规则侧面板中,您可以

    • 为要覆盖的任何规则选择一个操作。
    • 选择状态切换,启用或禁用规则。
  6. 重新配置规则集规则后,单击继续

  7. 确认要覆盖的规则列表,然后单击保存

    单击“重置为默认值”恢复原始设置。

从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 中的