コンテンツにスキップ

カスタムルールセットにルールを追加する

既存のカスタムルールセットにルールを追加するには、アカウントルールセットの更新操作を使用し、ルールを配列で渡します。各ルールには、式とアクションがあります。

以下のリクエストは、カスタムルールセットに2つのルールを追加します。これらはルールセット内の唯一の2つのルールになります。

リクエスト
curl --request PUT \
https://api.cloudflare.com/client/v4/accounts/{account_id}/rulesets/{custom_ruleset_id} \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"rules": [
{
"expression": "(ip.geoip.country eq \"GB\" or ip.geoip.country eq \"FR\") or cf.threat_score > 0",
"action": "challenge",
"description": "GBおよびFRに対するチャレンジまたはIPの評判に基づく"
},
{
"expression": "not http.request.uri.path matches \"^/api/.*$\"",
"action": "challenge",
"description": "/api以外に対するチャレンジ"
}
]
}'

レスポンスには、新しいルールのルールIDがidフィールドに含まれます:

レスポンス
{
"result": {
"id": "<CUSTOM_RULESET_ID>",
"name": "カスタムルールセット 1",
"kind": "custom",
"version": "2",
"rules": [
{
"id": "<CUSTOM_RULE_ID_1>",
"version": "1",
"action": "challenge",
"expression": "(ip.geoip.country eq \"GB\" or ip.geoip.country eq \"FR\") or cf.threat_score \u003e 0",
"description": "GBおよびFRに対するチャレンジまたはIPの評判に基づく",
"last_updated": "2021-03-18T18:25:08.122758Z",
"ref": "<CUSTOM_RULE_REF_1>",
"enabled": true
},
{
"id": "<CUSTOM_RULE_ID_2>",
"version": "1",
"action": "challenge",
"expression": "not http.request.uri.path matches \"^/api/.*$\"",
"description": "/api以外に対するチャレンジ",
"last_updated": "2021-03-18T18:25:08.122758Z",
"ref": "<CUSTOM_RULE_REF_2>",
"enabled": true
}
],
"last_updated": "2021-03-18T18:25:08.122758Z",
"phase": "http_request_firewall_custom"
},
"success": true,
"errors": [],
"messages": []
}

カスタムルールセット内のルールを更新する

カスタムルールセット内の1つまたは複数のルールを更新するには、アカウントルールセットの更新操作を使用します。変更したいルールのIDをルール配列に含め、更新したいフィールドを追加します。リクエストは、ルールセット全体を新しいバージョンで置き換えます。したがって、保持したいすべてのルールのIDを含める必要があります。

以下のリクエストは、カスタムルールセット内の1つのルールを編集し、ルールの実行順序を更新します。

リクエスト
curl --request PUT \
https://api.cloudflare.com/client/v4/accounts/{account_id}/rulesets/{ruleset_id} \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"rules": [
{
"id": "<CUSTOM_RULE_ID_2>",
"expression": "not http.request.uri.path matches \"^/api/.*$\"",
"action": "js_challenge",
"description": "/api以外に対するjs_challenge"
},
{
"id": "<CUSTOM_RULE_ID_1>"
}
]
}'

レスポンスは、修正されたカスタムルールセットを返します。更新されたルールとルールセットのバージョン番号が増加していることに注意してください。

レスポンス
{
"result": {
"id": "<CUSTOM_RULESET_ID>",
"name": "カスタムルールセット 1",
"kind": "custom",
"version": "3",
"rules": [
{
"id": "<CUSTOM_RULE_ID_2>",
"version": "2",
"action": "js_challenge",
"expression": "not http.request.uri.path matches \"^/api/.*$\"",
"description": "/api以外に対するjs_challenge",
"last_updated": "2021-03-18T18:30:08.122758Z",
"ref": "<CUSTOM_RULE_ID_2>",
"enabled": true
},
{
"id": "<CUSTOM_RULE_ID_1>",
"version": "1",
"action": "challenge",
"expression": "(ip.geoip.country eq \"GB\" or ip.geoip.country eq \"FR\") or cf.threat_score \u003e 0",
"description": "GBおよびFRに対するチャレンジまたはIPの評判に基づく",
"last_updated": "2021-03-18T18:25:08.122758Z",
"ref": "<CUSTOM_RULE_ID_1>",
"enabled": true
}
],
"last_updated": "2021-03-18T18:30:08.122758Z",
"phase": "http_request_firewall_custom"
},
"success": true,
"errors": [],
"messages": []
}

上記のリクエストは、ルールセット内のルールのリストを完全に置き換えます。rules配列から既存のルールを省略すると、新しいバージョンのルールセットには表示されません。