この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
カスタムルールを使用すると、さまざまなリクエストパラメーターに基づいてファイアウォールポリシーを設定して受信トラフィックを管理できます。これらの API エンドポイントは、ファイアウォールのルールの既存機能を拡張します。カスタムルールを使用すると、ルール式を完全に管理できます。また、許可されるリクエストフィールドタイプとルールのアクションのリストも拡張されました。これにより柔軟性が向上し、特定のトラフィックのニーズに一致する式を作成できるようになりました。Business Manager でカスタムルールを作成するには、Salesforce ヘルプ のeCDN ゾーンのカスタムファイアウォールルールの作成を参照してください。
2024 年 2 月 6 日をもって、ファイアウォールルールは廃止されました。既存のファイアウォールルールは eCDN カスタムルールに移行され、カスタムルールエンドポイントからアクセスできます。カスタムルールエンドポイントを使用してファイアウォールルールを管理する方法の詳細については、次の ファイアウォールルールからカスタムルールへの移行 セクションを参照してください。
Important
ルール式でサポートされるフィールドと演算子は、レート制限ルールで提供されるものと一致するようになりました。詳細については、eCDN レート制限ルールガイドのルール式を参照してください。
カスタムルール式の長さは最大 4096 文字です。
Note
次のルールのアクションがアクション配列でサポートされています。
block - リクエストされたサイトへのアクセスを拒否します。
js_challenge - リクエストを行ったクライアントは、続行する前に JavaScript チャレンジに合格する必要があります。
legacy_captcha - リクエストを行ったクライアントは、インタラクティブなチャレンジに合格する必要があります。
レガシー captcha は API を通じて引き続き存在します。ただし、ユーザーエクスペリエンスを向上させるために、管理されたチャレンジレスポンスを選択することをお勧めします。
Note
managed_challenge - リクエストの特徴に応じ、適切なタイプのチャレンジがクライアントに提示されます。
log - 一致するリクエストをログに記録します。
次のスキップアクションもアクション配列でサポートされています。
skip_custom_rules - 残りのカスタムルールをすべてスキップします (つまり、優先度の低いカスタムルールは評価されません)。skip_waf - WAFv1 管理ルールをスキップします。skip_security_level - セキュリティレベルをスキップします。skip_rate_limiting_rules - レート制限ルールをスキップします。関連ドキュメントについては、eCDN レート制限ルールを参照してください。skip_wafv2 - WAFv2 管理ルールをスキップします。詳細については、eCDN WAFv2 を参照してください。スキップアクションを使用する場合、ユーザーは配列内で複数のスキップアクションを指定できます。そうしない場合、配列にはルールアクションが 1 つだけ含まれます。以下の使用例を参照してください。
Important
1"actions": ["block"]
2
3"actions": ["skip_custom_rules", "skip_waf"]
4
5"actions": ["managed_challenge"]カスタムルールは、レスポンスボディにリストされている順序で評価されます。カスタムルールの式が一致すると、アクションが実行されます。
managed_challenge、js_challenge、legacy_captcha、block、および skip_custom_rules のアクションは、それ以降のカスタムルールの評価を停止し、ルールセット内の他のルールは評価されません。skip_waf、skip_security_level およびlog のアクションは、カスタムルールの評価を停止しません。カスタムルールを作成または更新する場合、ユーザーはリクエストボディに position 属性を指定し、ルールセット内の特定の相対位置にルールを挿入できます。 ルールの作成時に位置が指定されていない場合、そのルールはデフォルトでルールセットの最後に追加されます。 以下の使用例を参照してください。
1# Places the rule before rule <RULE_ID>
2
3"position": {
4 "before": "<RULE_ID>"
5}
6
7or
8
9# Places the rule after rule <RULE_ID>
10
11"position": {
12 "after": "<RULE_ID>"
13}このエンドポイントは、指定されたゾーンにカスタムルールを作成します。
description、expression、および actions 属性が必要です。enabled および position 属性はオプションです。新しく作成されたルールはデフォルトで有効になり、特に指定のない限り、ルールセットの最後に追加されます。カスタムルールは最大 500 件まで使用できます。
Important
1curl "https://$CODE.api.commercecloud.salesforce.com/cdn/zones/v1/organizations/$ORG/zones/$ZONE/firewall-custom/rules" \
2--header "Authorization: Bearer $TOKEN" \
3--header 'Content-Type: application/json' \
4--data '{
5 "description": "Skip Merchant Approval",
6 "expression": "(http.user_agent contains \"MerchantApprovalServiceClient\")",
7 "actions": ["skip_custom_rules", "skip_waf"],
8 "enabled": false,
9 "position": {
10 "before": "ffffe61cf25e4ec49c34b029ff3060f7"
11 }
12}'レスポンスボディには、作成されたカスタムルールが含まれます。
1{
2 "data": {
3 "ruleId": "2c0fc9fa937b11eaa1b71c4d701ab86e",
4 "description": "Skip Merchant Approval",
5 "expression": "(http.user_agent contains \"MerchantApprovalServiceClient\")",
6 "actions": ["skip_custom_rules", "skip_waf"],
7 "lastUpdated": "2022-12-14T21:25:22.329194Z",
8 "enabled": false
9 }
10}このエンドポイントは、指定されたゾーンのすべてのカスタムルールを返します。カスタムルールが存在しない場合は、404 (Not Found) レスポンスが返されます。
1curl "https://$CODE.api.commercecloud.salesforce.com/cdn/zones/v1/organizations/$ORG/zones/$ZONE/firewall-custom/rules" \
2--header "Authorization: Bearer $TOKEN" \
3--header 'Content-Type: application/json'レスポンスボディには、指定されたゾーンの既存のカスタムルールがすべて含まれます。
1{
2 "data": [
3 {
4 "ruleId": "2c0fc9fa937b11eaa1b71c4d701ab86e",
5 "description": "Skip Merchant Approval",
6 "expression": "(http.user_agent contains \"MerchantApprovalServiceClient\")",
7 "actions": ["skip_custom_rules", "skip_waf"],
8 "lastUpdated": "2022-12-14T21:25:22.329194Z",
9 "enabled": true
10 },
11 {
12 "ruleId": "ffffe61cf25e4ec49c34b029ff3060f7",
13 "description": "Block Cuba",
14 "expression": "(ip.src.country eq \"CU\")",
15 "actions": ["block"],
16 "lastUpdated": "2022-12-14T21:27:45.245836Z",
17 "enabled": true
18 }
19 ]
20}このエンドポイントは、リクエストされたカスタムルールを返します。リクエストされたルールが存在しない場合は、404 (Not Found) レスポンスが返されます。
1curl "https://$CODE.api.commercecloud.salesforce.com/cdn/zones/v1/organizations/$ORG/zones/$ZONE/firewall-custom/rules/$RULEID" \
2--header "Authorization: Bearer $TOKEN" \
3--header 'Content-Type: application/json'レスポンスボディには、リクエストされたカスタムルールが含まれます。
1{
2 "data": {
3 "ruleId": "2c0fc9fa937b11eaa1b71c4d701ab86e",
4 "description": "Skip Merchant Approval",
5 "expression": "(http.user_agent contains \"MerchantApprovalServiceClient\")",
6 "actions": ["skip_custom_rules", "skip_waf"],
7 "lastUpdated": "2022-12-14T21:25:22.329194Z",
8 "enabled": false
9 }
10}このエンドポイントは、リクエストされたカスタムルールを更新します。リクエストされたルールが存在しない場合は、404 (Not Found) レスポンスが返されます。
description、expression、actions、enabled、または position の属性のうちの少なくとも 1 つをリクエストボディに指定する必要があります。1curl "https://$CODE.api.commercecloud.salesforce.com/cdn/zones/v1/organizations/$ORG/zones/$ZONE/firewall-custom/rules/$RULEID" \
2--request 'PATCH' \
3--header "Authorization: Bearer $TOKEN" \
4--header 'Content-Type: application/json' \
5--data '{
6 "description": "Block Merchant Approval",
7 "actions": ["block"],
8 "enabled": false,
9 "position": {
10 "after": "ffffe61cf25e4ec49c34b029ff3060f7"
11 }
12}'レスポンスボディには、リクエストされたルールが含まれます。
1{
2 "data": {
3 "ruleId": "2c0fc9fa937b11eaa1b71c4d701ab86e",
4 "description": "Block Merchant Approval",
5 "expression": "(http.user_agent contains \"MerchantApprovalServiceClient\")",
6 "actions": ["block"],
7 "lastUpdated": "2022-12-14T21:27:22.329194Z",
8 "enabled": false
9 }
10}このエンドポイントは、既存のすべてのカスタムルールの順序を更新します。ユーザーは、新規ルールの順序を表す ruleIds の配列を提供します。配列には、既存カスタムルールのルール ID がすべて正確に含まれている必要があります。
1curl "https://$CODE.api.commercecloud.salesforce.com/cdn/zones/v1/organizations/$ORG/zones/$ZONE/firewall-custom/rules" \
2--request 'PATCH' \
3--header "Authorization: Bearer $TOKEN" \
4--header 'Content-Type: application/json' \
5--data '{
6 "ruleIds": ["ffffe61cf25e4ec49c34b029ff3060f7", "2c0fc9fa937b11eaa1b71c4d701ab86e"]
7}'レスポンスボディには、更新されたルールの順序で既存カスタムルールがすべて含まれます。
1{
2 "data": [
3 {
4 "ruleId": "ffffe61cf25e4ec49c34b029ff3060f7",
5 "description": "Block Cuba",
6 "expression": "(ip.src.country eq \"CU\")",
7 "actions": ["block"],
8 "lastUpdated": "2022-12-14T21:27:45.245836Z",
9 "enabled": true
10 },
11 {
12 "ruleId": "2c0fc9fa937b11eaa1b71c4d701ab86e",
13 "description": "Skip Merchant Approval",
14 "expression": "(http.user_agent contains \"MerchantApprovalServiceClient\")",
15 "actions": ["skip_custom_rules", "skip_waf"],
16 "lastUpdated": "2022-12-14T21:25:22.329194Z",
17 "enabled": true
18 }
19 ]
20}このエンドポイントは、リクエストされたカスタムルールを削除します。リクエストされたルールが存在しない場合は、404 (Not Found) レスポンスが返されます。
1curl "https://$CODE.api.commercecloud.salesforce.com/cdn/zones/v1/organizations/$ORG/zones/$ZONE/firewall-custom/rules/$RULEID" \
2--request 'DELETE' \
3--header "Authorization: Bearer $TOKEN" \
4--header 'Content-Type: application/json'2024 年 2 月 6 日をもって、createFirewallRule エンドポイントと updateFirewallRuleエンドポイントは廃止され、使用できなくなりました。既存のファイアウォールルールはカスタムルール に移行され、カスタムルールとファイアウォールルールエンドポイントの 両方 を使用してアクセスできます。getFirewallRules、getFirewallRule、および deleteFirewallRule のエンドポイントは、カスタムルールへの移行を支援するために引き続き使用できますが、近い将来非推奨になります。
getCustomRulesエンドポイントを使用して、カスタムルールを表示します。既存のファイアウォールルールと作成したカスタムルールがレスポンスに含まれます。
既存の許可リストのファイアウォールルールがある場合、getCustomRules エンドポイントは追加のブロックルールを返します。「すべてブロック」ルールは、構成された許可リストルールの実行後に残りのすべてのトラフィックをブロックするために CDN-API によって作成されました。以前は、このルールはファイアウォールルール API レスポンスに表示されませんでした。トラフィックの柔軟性と制御性を高めるために、このルールがカスタムルール API レスポンスで公開されるようになりました。
次のレスポンスの例に示すように、getCustomRules エンドポイントを使用して、「すべてブロック」のルール情報を返します。複数の許可リストのファイアウォールルールを作成した場合、複数の許可リストのルールがレスポンスに含まれます。
1{
2 "data": [
3 {
4 "ruleId": "0b4728a05f4b413f97106b40da5804e6",
5 "expression": "(ip.src.country in {\"US\"})",
6 "actions": [
7 "skip_custom_rules"
8 ],
9 "lastUpdated": "2024-01-30T19:40:23.024514Z",
10 "enabled": true
11 },
12 {
13 "ruleId": "8fcc523bc6db4b74b905f21ca5d916d9",
14 "expression": "(ip.src in {0.0.0.0/0})",
15 "actions": [
16 "block"
17 ],
18 "lastUpdated": "2024-01-30T19:40:23.024514Z",
19 "enabled": true
20 }
21 ]
22}expression (国、IP、または ASN) を使用して指定された許可リストが含まれます (例: (ip.src.country in {\"US\"}))。許可リストのルールでは skip_custom_rules action が使用されます。つまり、許可リストに一致するリクエストは、それ以降のカスタムルールでは評価されません。
skip_rate_limiting_rules や skip_waf など) を含めることができます。expression が (ip.src in {0.0.0.0/0}) として定義されたブロックアクションが含まれます。これにより、構成された許可リストルールに従って、残りのトラフィックがすべてブロックされます。
ファイアウォールルール API とカスタムルール API では、RuleID の値が異なる場合があります。カスタムルールエンドポイントを使用して、現在のルール ID を取得してください。
Note
次のいずれかのオプションを使用できます。
not 演算子を使用します。以下に例を示します。
1{
2 "description": "IP Allowlist",
3 "expression": "(not ip.src in {123.123.0.0/32 123.123.0.1/32 123.124.127.0/32})",
4 "actions": ["block"]
5}expression で定義されている IP のリストに 含まれていない IP アドレスからのすべてのリクエストをブロックします。このルールは、式に IP が含まれていないリクエストを直ちにブロックします。このため、複数のルールで許可リストを定義する場合は、この方法は機能しません。この場合、前のオプションを使用する必要があります。IP アクセスコントロールを参照してください。
カスタムルールはファイアウォールのルールとどう違うのですか?
http.request.uri.path) やユーザーエージェント (http.user_agent) などのフィールドが許可されます。ファイアウォールのルールを引き続き作成して使用できますか?
ファイアウォールのルールとカスタムルールはどのような順序で評価されますか?
ルール式を構築するにはどうすればいいですか?