部署管理規則集
您可以使用 CLI、API 或 Terraform 在區域或實體層級部署受管規則集。
您可以透過覆寫受管規則集來部署具有自訂行為(除預設組態外執行的變更)的受管規則集。 如需詳細資訊,請參閱 覆寫管理規則集。
部署工作流程
使用下列工作流程,將受管理規則集部署至區域層次的階段:
- 取得您的區域 ID。
- 執行 列出區域 規則集作業,以取得可用的規則集。
- 找出您要部署的管理規則集的規則集 ID。
- 識別您要部署受管理規則集的階段。 確保管理的規則集屬於您要部署的相同階段。
- 在區域層級階段入口點規則集中新增執行管理規則集的規則。
從 CLI 部署管理規則集
您可以從 CLI 部署管理規則集。
從 CLI 列出管理的規則集
若要從 CLI 列出所有區域管理的規則集,請遵循下列步驟:
-
使用 CLI 登入您的帳戶。 輸入密碼後,系統會提示您要使用的帳號和區域:
ibmcloud login --sso
-
執行下列指令以建立自訂規則:
ibmcloud cis managed-waf rulesets DNS_DOMAIN_ID [-i, --instance INSTANCE] [--output FORMAT]
其中:
- DNS_DOMAIN_ID 是網域名稱的 ID。
- -我,--instance價值是實例名稱或 ID。
- -- output value 指定輸出格式; 僅支援 JSON。
從 CLI 更新已部署的規則集
若要從 CLI 更新已部署的規則集,請遵循下列步驟:
-
使用 CLI 登入您的帳戶。 輸入密碼後,系統會提示您要使用的帳號和區域:
ibmcloud login --sso
-
執行下列指令以建立自訂規則:
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 值是規則執行時必須符合的條件。 請參閱 使用欄位、函式和表達式,以取得要匹配的值清單。
-
- -enabled(已啟用)值表示該規則是否已啟用。 預設值為
true
。
- -enabled(已啟用)值表示該規則是否已啟用。 預設值為
- -- overide-action value 是任何置換的規則集動作。 有效值為
managed_challenge
、block
、js_challenge
、log
、challenge
。 - -- paranoia-level value 是 OWASP paranoia 層次。 有效值為
PL1
、PL2
、PL3
、PL4
。這僅適用於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
自訂規則階段的入口點規則集。 此入口點規則集可能已經存在,若不存在則需要建立。
按照以下步驟取得自訂規則入口點規則集:
-
使用正確的變數設定 API 環境。
-
將下列值儲存在變數中,以便在 API 指令中使用:
CRN
:服務實例的完整 URL 編碼雲端資源名稱 (CRN)。ZONE_ID
:網域 ID。 -
當所有變數都啟動時,取得入口點規則集:
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 列出管理的規則集:
-
使用正確的變數設定 API 環境。
-
將下列值儲存在變數中,以便在 API 指令中使用:
CRN
:服務實例的完整 URL 編碼雲端資源名稱 (CRN)。ZONE_ID
:網域 ID。RULESET_ID
:自訂規則入口點規則集的 ID。 -
啟動所有變數後,列出所有區域管理的規則集:
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 更新入口點規則集:
-
使用正確的變數設定 API 環境。
-
將下列值儲存在變數中,以便在 API 指令中使用:
CRN
:服務實例的完整 URL 編碼雲端資源名稱 (CRN)。ZONE_ID
:網域 ID。RULESET_ID
:自訂規則入口點規則集的 ID。 -
當所有變數都啟動時,更新入口點規則集:
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
作業。
- id 是要執行的規則集的 ID。 此 ID 擷取自
- 表達式是規則執行的條件。 使用
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 註冊表。