Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

Cloudflare Managed Ruleset

最終更新 Markdown で表示Agent セットアップ

Cloudflare のセキュリティチームが作成したこのルールセットは、すべてのアプリケーションに対して、速く効果的な保護を提供します。新しい脆弱性をカバーし、誤検知を減らすために、頻繁に更新されます。

テクノロジースタックに対応するタグのルールを有効にすることを、Cloudflare は推奨します。たとえば WordPress を使っている場合は、wordpress タグのルールを有効にします。

Cloudflare の WAF changelog で、WAF のマネージドルールセットへの継続的な変更を監視できます。

Cloudflare Managed Ruleset をデプロイする

  1. Cloudflare ダッシュボードで、Security の Settings ページを開きます。

    Settings を開く ↗
  2. (任意)Web application exploits で絞り込みます。

  3. Cloudflare managed ruleset をオンにします。

  4. デプロイ設定を確認します。受信リクエストの一部にだけルールセットを適用する場合はスコープを編集します。カスタム設定(オーバーライド)も必要に応じて設定します。

  5. Save を選択します。

この操作は、現在のゾーンにマネージドルールセットをデプロイし、Execute アクションの新しいルールを作成します。

ダッシュボードで設定する

Cloudflare Managed Ruleset は、デフォルト設定を上書きして、次のレベルで設定(またはオーバーライド)できます。

複数のレベルでオーバーライドを作ると、より具体的な設定(タグおよびルールレベル)が、より広い設定(ルールセットレベル)より優先されます。詳細は、Ruleset Engine のドキュメントの マネージドルールセットをオーバーライドする を参照してください。

ルールセットレベルの設定

Cloudflare ダッシュボードでは、次の Cloudflare Managed Ruleset の設定を変更(またはオーバーライド)できます。

  • Scope: スコープにカスタムのフィルター式を定義すると、Cloudflare Managed Ruleset は受信リクエストの一部にだけ適用されます。ダッシュボードでデプロイしたマネージドルールセットは、デフォルトですべての受信トラフィックに適用されます。

  • Ruleset action: ルールセットにアクションを定義すると、各ルールのデフォルトアクションを上書きします。利用できるアクションは、BlockLogNon-Interactive ChallengeManaged ChallengeInteractive Challenge です。 ルールセットレベルのアクションオーバーライドを外すには、ルールセットアクションを Default にします。

  • Ruleset status: ルールセット内のすべてのルールを有効または無効にします。

  • ペイロードログ: 有効にすると、マネージドルールセットの特定のルールをトリガーしたリクエスト情報(ペイロード)を記録します。ペイロードを暗号化するには、公開鍵の設定が必要です。

Cloudflare Managed Ruleset をデプロイ したあと、ダッシュボードで次の手順で設定します。

  1. Cloudflare ダッシュボードで Security rules ページを開きます。

    Security rules を開く ↗
  2. (任意)Managed rules で絞り込みます。

  3. Cloudflare Managed Ruleset を検索します。Execute アクションのルールを探します。

  4. ルール名(マネージドルールセット名を含む)を選択し、デプロイ設定ページを開きます。

  5. (任意)受信リクエストの一部にだけ Cloudflare Managed Ruleset を実行するには、Edit scope を選択し、マネージドルールセットをデプロイする現在のルールのスコープを決める 式を設定 します。

  6. ルールセット設定のセクションで、ドロップダウンリストを使い、Cloudflare Managed Ruleset 内のすべてのルールに対するフィールドを 1 つ以上設定します。

    たとえば、ルールセット内のすべてのルールに対して実行するアクションを選びます。

    Cloudflare Managed Ruleset のすべてのルールを上書きするオプション(ルールセットアクションとルールセットステータス)を表示する Configure deployment ページ
  7. Save を選択します。

タグレベルの設定

選択したタグのうち少なくとも 1 つが付いたルールに対して、ダッシュボードで次の Cloudflare Managed Ruleset の設定を変更(またはオーバーライド)できます。

  • Rule action: 選択したタグを持つすべてのルールのアクションを設定します。利用できるアクションは、BlockLogNon-Interactive ChallengeManaged ChallengeInteractive Challenge です。
  • Rule status: 選択したタグを持つすべてのルールのステータスを設定します。

Cloudflare Managed Ruleset をデプロイ したあと、ダッシュボードで特定タグのルールを次の手順で設定します。

  1. Cloudflare ダッシュボードで Security rules ページを開きます。

    Security rules を開く ↗
  2. (任意)Managed rules で絞り込みます。

  3. Cloudflare Managed Ruleset を検索します。Execute アクションのルールを探します。

  4. ルール名(マネージドルールセット名を含む)を選び、Browse rules を選択します。

    Cloudflare ダッシュボードに、Cloudflare Managed Ruleset のルール一覧が表示されています。
  1. 検索入力の下でタグを 1 つ以上選び、そのタグのルールに絞り込みます。次に、テーブル左上のチェックボックスを選び、現在のページに表示されているすべてのルールを選択します。
    現在のページにすべてのルールが表示されていない場合は、Select all <NUMBER> rules を選び、選択したタグを持つすべてのページのルールに選択範囲を広げます。

    Cloudflare Managed Ruleset の Configure deployment ページで、'sqli' タグのルールが選択されている様子。
  2. テーブル右上のボタン(例: Set status)で、選択したルールの設定を 1 つ以上更新します。

  3. Next を選びます。

  4. 選択したタグを持つ新しいルールにも、指定したフィールド値を適用するかを確認するダイアログが表示されます。

    • 選択したタグを持つ新しいルールにも設定を適用する場合は、Include new rules を選びます。
    • 選択したルールにだけ設定を適用する場合は、Only selected rules を選びます。
  5. Save を選びます。

ルールレベルの設定

選択したルールに対して、ダッシュボードで次の Cloudflare Managed Ruleset の設定を変更(またはオーバーライド)できます。

  • Rule action: 1 つのルール、または複数選択した場合は選択したルールのアクションを設定します。利用できるアクションは、BlockLogNon-Interactive ChallengeManaged ChallengeInteractive Challenge です。 ルールの設定を変更したあと、Cloudflare Managed Ruleset で定義されたデフォルト設定に戻すこともできます。
  • Rule status: 1 つのルール、または複数選択した場合は選択したルールのステータス(有効または無効)を設定します。

Cloudflare Managed Ruleset をデプロイ したあと、ダッシュボードで個々のルールセットルールを次の手順で設定します。

  1. Cloudflare ダッシュボードで Security rules ページを開きます。

    Security rules を開く ↗
  2. (任意)Managed rules で絞り込みます。

  3. Cloudflare Managed Ruleset を検索します。Execute アクションのルールを探します。

  4. ルール名(マネージドルールセット名を含む)を選び、Browse rules を選択します。

    Cloudflare ダッシュボードに、Cloudflare Managed Ruleset のルール一覧が表示されています。
  1. 利用できるフィルターでルールを検索します。

  2. 結果一覧で、表示されているドロップダウンリストとトグルを使い、各ルールの値を必要に応じて変更します。たとえば、ルール横の Status トグルでルールのステータスを変更します。

    複数のルールに同じ値を設定するには、設定するすべてのルールのチェックボックスを選びます。現在のページにすべてのルールが表示されていない場合は、Select all <NUMBER> rules を選び、すべてのページのルールに選択範囲を広げます。次に、テーブル右上のボタン(例: Set status)で、選択したルールのフィールドを 1 つ以上更新します。

    Cloudflare Managed Ruleset の Configure deployment ページで、選択したルールが表示されている様子。
  3. Next を選び、Save を選びます。

API で設定する

API で特定ゾーンに Cloudflare Managed Ruleset をデプロイするには、http_request_firewall_managed フェーズの エントリポイントルールセット に、execute アクションのルールを作成します。

次の例では、指定したゾーン($ZONE_ID)の http_request_firewall_managed フェーズに Cloudflare Managed Ruleset をデプロイします。マネージドルールセットを実行するルールを作成します。

  1. Get a zone entry point ruleset オペレーションを呼び出し、http_request_firewall_managed フェーズのエントリポイントルールセットの定義を取得します。この作業には ゾーン ID が必要です。

    Get a zone entry point rulesetbash
    curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/phases/http_request_firewall_managed/entrypoint" \
    	--request GET \
    	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"
    {
    	"result": {
    		"description": "Zone-level phase entry point",
    		"id": "<RULESET_ID>",
    		"kind": "zone",
    		"last_updated": "2024-03-16T15:40:08.202335Z",
    		"name": "zone",
    		"phase": "http_request_firewall_managed",
    		"rules": [
    			// ...
    		],
    		"source": "firewall_managed",
    		"version": "10"
    	},
    	"success": true,
    	"errors": [],
    	"messages": []
    }
  2. エントリポイントルールセットがすでに存在する場合(つまり、200 OK ステータスコードとルールセット定義を受け取った場合)は、レスポンス内のルールセット ID を控えます。次に、ゾーンルールセットのルールを作成する 操作を呼び出して、既存のルールセットに Cloudflare Managed Ruleset(ID は efb7b8c949ac4650a09736fc376e9aee) をデプロイする execute ルールを追加します。デフォルトでは、ルールはルールセット内の既存ルール一覧の末尾に追加されます。

    Create a zone ruleset rulebash
    curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/$RULESET_ID/rules" \
    	--request POST \
    	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
    	--json '{
    		"action": "execute",
    		"action_parameters": {
    				"id": "efb7b8c949ac4650a09736fc376e9aee"
    		},
    		"expression": "true",
    		"description": "Execute the Cloudflare Managed Ruleset"
    	}'
    {
    	"result": {
    		"id": "<RULESET_ID>",
    		"name": "Zone-level phase entry point",
    		"description": "",
    		"kind": "zone",
    		"version": "11",
    		"rules": [
    			// ... any existing rules
    			{
    				"id": "<RULE_ID>",
    				"version": "1",
    				"action": "execute",
    				"action_parameters": {
    					"id": "efb7b8c949ac4650a09736fc376e9aee",
    					"version": "latest"
    				},
    				"expression": "true",
    				"description": "Execute the Cloudflare Managed Ruleset",
    				"last_updated": "2024-03-18T18:08:14.003361Z",
    				"ref": "<RULE_REF>",
    				"enabled": true
    			}
    		],
    		"last_updated": "2024-03-18T18:08:14.003361Z",
    		"phase": "http_request_firewall_managed"
    	},
    	"success": true,
    	"errors": [],
    	"messages": []
    }
  3. エントリポイントルールセットが存在しない場合(ステップ 1 で 404 Not Found ステータスコードを受け取った場合)、ゾーンルールセットを作成する 操作で作成します。rules 配列に、Cloudflare Managed Ruleset(ID は efb7b8c949ac4650a09736fc376e9aee) を ゾーン内のすべての受信リクエスト 向けに実行するルールを 1 件含めます。

    Create a zone rulesetbash
    curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets" \
    	--request POST \
    	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
    	--json '{
    		"name": "My ruleset",
    		"description": "Entry point ruleset for WAF managed rulesets",
    		"kind": "zone",
    		"phase": "http_request_firewall_managed",
    		"rules": [
    				{
    						"action": "execute",
    						"action_parameters": {
    								"id": "efb7b8c949ac4650a09736fc376e9aee"
    						},
    						"expression": "true",
    						"description": "Execute the Cloudflare Managed Ruleset"
    				}
    		]
    	}'

次のステップ

API で Cloudflare Managed Ruleset を設定するには、Rulesets API を使って オーバーライド を作成します。次の設定ができます。

  • ルールセットオーバーライドを作成し、ルールセット内のすべてのルールに対して実行するアクションを指定する。

  • ルールオーバーライドを作成し、個々のルールを無効にするか、アクションをカスタマイズする。

API でオーバーライドを作成する例は、マネージドルールセットをオーバーライドする を参照してください。

その他のリソース

API でマネージドルールセットを扱う詳細は、Ruleset Engine のドキュメントにある マネージドルールセットを使う を参照してください。

Terraform で設定する

次の例は、ゾーンに Cloudflare Managed Ruleset をデプロイし、特定ルールのアクションとステータスをオーバーライドします。

必要な API トークン権限

次の トークン権限 のうち、少なくとも 1 つが必要です。

  • Zone WAF Write

cloudflare_ruleset リソースを設定します。

# Configure a ruleset at the zone level for the "http_request_firewall_managed" phase
resource "cloudflare_ruleset" "zone_level_managed_waf" {
  zone_id     = var.cloudflare_zone_id
  name        = "Managed WAF entry point ruleset"
  description = "Zone-level WAF Managed Rules config"
  kind        = "zone"
  phase       = "http_request_firewall_managed"

  # Execute Cloudflare Managed Ruleset
  rules = [{
    ref         = "execute_cloudflare_managed_ruleset"
    description = "Execute Cloudflare Managed Ruleset on my zone-level phase entry point ruleset"
    expression  = "true"
    action      = "execute"
    action_parameters = {
      id = "efb7b8c949ac4650a09736fc376e9aee"
      overrides = {
        rules = [{
          id      = "5de7edfa648c4d6891dc3e7f84534ffa"
          action  = "log"
          enabled = true
        }]
      }
    }
  }]
}
# Configure a ruleset at the zone level for the "http_request_firewall_managed" phase
resource "cloudflare_ruleset" "zone_level_managed_waf" {
  zone_id     = var.cloudflare_zone_id
  name        = "Managed WAF entry point ruleset"
  description = "Zone-level WAF Managed Rules config"
  kind        = "zone"
  phase       = "http_request_firewall_managed"

  # Execute Cloudflare Managed Ruleset
  rules {
    ref         = "execute_cloudflare_managed_ruleset"
    description = "Execute Cloudflare Managed Ruleset on my zone-level phase entry point ruleset"
    expression  = "true"
    action      = "execute"
    action_parameters {
      id = "efb7b8c949ac4650a09736fc376e9aee"
      overrides {
        rules {
          id      = "5de7edfa648c4d6891dc3e7f84534ffa"
          action  = "log"
          enabled = true
        }
      }
    }
  }
}

詳細は、Terraform で WAF Managed Rules を設定する を参照してください。

役に立ちましたか?