IBM Cloud Docs
部署管理規則集

部署管理規則集

您可以使用 CLI、API 或 Terraform 在區域或實體層級部署受管規則集。

您可以透過覆寫受管規則集來部署具有自訂行為(除預設組態外執行的變更)的受管規則集。 如需詳細資訊,請參閱 覆寫管理規則集

部署工作流程

使用下列工作流程,將受管理規則集部署至區域層次的階段:

  1. 取得您的區域 ID。
  2. 執行 列出區域 規則集作業,以取得可用的規則集。
  3. 找出您要部署的管理規則集的規則集 ID。
  4. 識別您要部署受管理規則集的階段。 確保管理的規則集屬於您要部署的相同階段。
  5. 在區域層級階段入口點規則集中新增執行管理規則集的規則。

從 CLI 部署管理規則集

您可以從 CLI 部署管理規則集。

從 CLI 列出管理的規則集

若要從 CLI 列出所有區域管理的規則集,請遵循下列步驟:

  1. 設定您的 CLI 環境

  2. 使用 CLI 登入您的帳戶。 輸入密碼後,系統會提示您要使用的帳號和區域:

    ibmcloud login --sso
    
  3. 執行下列指令以建立自訂規則:

    ibmcloud cis managed-waf rulesets DNS_DOMAIN_ID [-i, --instance INSTANCE] [--output FORMAT]
    

其中:

  • DNS_DOMAIN_ID 是網域名稱的 ID。
  • -我,--instance價值是實例名稱或 ID。
  • -- output value 指定輸出格式; 僅支援 JSON。

從 CLI 更新已部署的規則集

若要從 CLI 更新已部署的規則集,請遵循下列步驟:

  1. 設定您的 CLI 環境

  2. 使用 CLI 登入您的帳戶。 輸入密碼後,系統會提示您要使用的帳號和區域:

    ibmcloud login --sso
    
  3. 執行下列指令以建立自訂規則:

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。
    • -enabled(已啟用)值表示該規則是否已啟用。 預設值為 true
  • -- overide-action value 是任何置換的規則集動作。 有效值為 managed_challengeblockjs_challengelogchallenge
  • -- paranoia-level value 是 OWASP paranoia 層次。 有效值為 PL1PL2PL3PL4。這僅適用於 CIS OWASP Core Ruleset
  • -- override-rules value 是置換的規則選項。 例如 --override-rules rule=RULE_ID,action=ACTION,enabled=STATUS
  • -我,--instance價值是實例名稱或 ID。
  • -- output value 指定輸出格式; 僅支援 JSON。

指令範例

本範例顯示如何部署規則集 efb7b8c949ac4650a09736fc376e9aee 以及覆寫規則集內的規則。 它也是覆蓋規則與類別 wordpress。

ibmcloud cis managed-waf deployment-add-ruleset $domain efb7b8c949ac4650a09736fc376e9aee --match "(http.cookie eq \"example.com/contact?page=1234\")" --action execute --enabled false --override-action block --override-status false --override-rules rule=5de7edfa648c4d6891dc3e7f84534ffa,action=log,enabled=true --override-rules action=managed_challenge,rule=e3a567afc347477d9702d9047e97d760

使用 API 部署管理規則集

您可以使用 API 部署管理規則集。

取得 API 的自訂規則入口點

所有自訂規則 API 作業都需要 RULESET_ID 自訂規則階段的入口點規則集。 此入口點規則集可能已經存在,若不存在則需要建立。

按照以下步驟取得自訂規則入口點規則集:

  1. 使用正確的變數設定 API 環境。

  2. 將下列值儲存在變數中,以便在 API 指令中使用:

    CRN:服務實例的完整 URL 編碼雲端資源名稱 (CRN)。

    ZONE_ID:網域 ID。

  3. 當所有變數都啟動時,取得入口點規則集:

curl -X GET "https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets/phases/http_request_firewall_custom/entrypoint" \
--header "X-Auth-User-Token: Bearer <API_TOKEN>" \
--header "Content-Type: application/json"

規則集 ID 將會出現在成功請求的回應中。 如果上述呼叫回傳 404 Not Found 回應,請使用下列 API 建立自訂規則階段的入口點規則集:

curl -x POST https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets \
--header "X-Auth-User-Token: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
  "name": "Zone-level phase entry point",
  "kind": "zone",
  "description": "Custom rule entry point ruleset.",
  "phase": "http_request_firewall_custom"
}'

使用 API 列出管理的規則集

按照以下步驟使用 API 列出管理的規則集:

  1. 使用正確的變數設定 API 環境。

  2. 將下列值儲存在變數中,以便在 API 指令中使用:

    CRN:服務實例的完整 URL 編碼雲端資源名稱 (CRN)。

    ZONE_ID:網域 ID。

    RULESET_ID:自訂規則入口點規則集的 ID。

  3. 啟動所有變數後,列出所有區域管理的規則集:

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 更新入口點規則集

按照以下步驟使用 API 更新入口點規則集:

  1. 使用正確的變數設定 API 環境。

  2. 將下列值儲存在變數中,以便在 API 指令中使用:

    CRN:服務實例的完整 URL 編碼雲端資源名稱 (CRN)。

    ZONE_ID:網域 ID。

    RULESET_ID:自訂規則入口點規則集的 ID。

  3. 當所有變數都啟動時,更新入口點規則集:

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 '{"rules":[{"action":"execute","action_parameters":{"id":"4814384a9e5d4991b9815dcfc25d2f1f"},"expression":"true","description":"Execute WAF OWASP ruleset"}]}'

其中:

  • $RULESET_PHASE 是要部署的規則集階段。 使用 http_request_firewall_managed 部署受管理的 WAF 規則集。
    • d 是建立規則集所需的屬性物件。
    • rules 是要與規則集一併部署的規則陣列。 例如:
      • action 是規則要採取的動作。 如需可以使用之動作的說明,請參閱 規則動作
      • action_parameters 是物件,用於定義動作應該對其執行的動作。
        • id 是要執行的規則集的 ID。 此 ID 擷取自 list zone rulesets 作業。
    • 表達式是規則執行的條件。 使用 true 表示此規則永遠執行。
    • description 定義規則完成的摘要。

使用 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 註冊表。

凌駕性規則

以下範例使用 Terraform 來覆寫規則:

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 中的 Terraform 註冊表。