管理されたルールセットの無効化

管理されたルールセットの動作をカスタマイズするには、デプロイ時にそれを上書きします。 ルール・セットをオーバーライドする場合は、デフォルト構成に加えて、実行する変更を指定します。

管理されたルールセットは、以下のレベルで上書きすることができます

  • ルール・セット・オーバーライドは、実行されたルール・セットのすべてのルールに適用されます。
  • タグ・オーバーライドは、特定のタグを持つすべてのルールに適用されます。 例えば、タグ・オーバーライドを使用して CIS 管理対象ルール・セットをカスタマイズし、wordpress タグを持つすべてのルールが Block に設定されるようにします。 複数のタグにオーバーライドがあり、ルールにこれらのタグが複数ある場合、タグ・オーバーライドの順序によって動作が決まります。 複数のオーバーライドされたタグでタグ付けされたルールの場合、最後のタグのオーバーライドが適用されます。
  • ルール・オーバーライドは、ルール ID によって参照される、管理対象ルール・セット内の特定のルールに適用されます。

特定のオーバーライドはより一般的なオーバーライドよりも優先され、ルール・オーバーライドはタグ・オーバーライドよりも優先されます。タグ・オーバーライドはルール・セット・オーバーライドよりも優先されます。

ルール・セット・オーバーライドおよびタグ・オーバーライドは、管理対象ルール・セット内の既存のルールと将来のルールの両方に適用されます。 既存のルールのみをオーバーライドする場合は、ルール・オーバーライドを使用する必要があります。

ワークフローのオーバーライド(API)

管理対象ルール・セットのオーバーライドを適用するには、以下の手順を実行します。

  1. 利用可能なルールセットをリストアップするには、リストルールセット操作を使用します。

  2. get ruleset 操作を使用して、そのルールセットのルールをリストアップします。

  3. フェーズ・エントリー・ポイントでルール・セットの更新操作を呼び出します。

  4. 管理対象ルール・セットを実行するルールの action_parameters でオーバーライドを指定します。

    "action_parameters": {
      "id": "<RULESET_ID>",
      "overrides": {
        // ruleset overrides
        "property-to-modify": "value",
        "property-to-modify": "value",
        // tag overrides
        "categories": [
          {
            "category": "<TAG_NAME>",
            "property-to-modify": "value",
            "property-to-modify": "value"
          }
        ],
        // rule overrides
        "rules": [
          {
            "id": "<RULE_ID>",
            "property-to-modify": "value",
            "property-to-modify": "value"
          }
        ]
      }
    }
    

以下のルール・プロパティーをオーバーライドできます。

  • "アクション"
  • "有効"

一部の管理対象ルール・セットは、追加のオーバーライド要件を持つことも、他のルール・プロパティーをオーバーライドすることもできます。

オーバーライドを使用して、管理対象ルール・セット内のすべてのルールをインスタンス・レベルで有効にすることは有効ではありません。 この変更は、インスタンス内のすべてのゾーンに影響を与える可能性があります。 一部のルールは、最終的には正当なトラフィックに影響するため、デフォルトで無効になっています。 事前に考慮することなく、ゾーン間でこれらのルールを有効にしないでください。

コンソールでマネージドルールセットを上書きする

コンソールでマネージドルールセットを上書きするには、以下の手順に従う:

  1. CIS、「 セキュリティ」 セクションに移動する。

  2. WAF タブを選択する。

  3. オーバーライドするルールセット名をクリックします。

  4. 配置を設定]サイドパネルで[ ルールを参照] をクリックします。

  5. Override CIS Managed Ruleset rules サイドパネルでは、以下のことが可能です:

    • オーバーライドするルールのアクションを選択します。
    • ルールを有効または無効にするには、 [Status] トグルを選択します。
  6. ルールセットのルールを再設定したら、[ 続行]をクリックする。

  7. 上書きするルールのリストを確認し、[ 保存 ]をクリックします。

    元の設定に戻すには、 デフォルトにリセットをクリックします。

CLI からの管理されたルールセットのリスト

CLIからすべてのゾーン・ルールセットを一覧表示するには、以下のコマンドを実行する:

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

コマンド・オプション

DNS_DOMAIN_ID
ドメインのID。
-i, --instance value
インスタンス名またはID。
--output value
出力フォーマットを指定する。

CLI からのゾーンルールセットに基づくリストのルール

CLIからゾーンのルールセットの下にあるルールをリストアップするには、次のコマンドを実行します

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

コマンド・オプション

DNS_DOMAIN_ID
ドメインのID。
RULESET_ID
リストされるルールのルールセットのID。
-i, --instance value
インスタンス名またはID。
--output value
出力フォーマットを指定する。

CLI から管理されたルールセットを上書きする

CLI から管理対象 WAF ルール・セットをオーバーライドするには、以下のコマンドを実行します。

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 value
ルールを実行するためにマッチしなければならない条件。 マッチする値のリストについては、 フィールド、関数、および式の使用を 参照のこと。
--enabled value
ルールがアクティブかどうかを示す。 デフォルトは「true」です。
--override-action value
オーバーライドのルールセットアクション。 有効な値は、「managed_challenge」、「block」、「js_challenge」、「log」、「challenge」です。
--paranoia-level value
OWASPのパラノイア・レベル。 有効な値は " PL1 ", " PL2 ", " PL3 ", " PL4 " で、 CIS OWASP Core Ruleset の場合のみ有効です。
--override-rules value
オーバーライドのルール・オプション。 例えば、--override-rules rule=RULE_ID,action=ACTION,enabled=STATUS です。
-i, --instance value
インスタンス名またはID。
--output value
出力フォーマットを指定する。

APIからゾーンルールセットをリストアップする

APIからすべてのゾーンのルールセットをリストアップするには、次のコマンドを実行します

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からルールセットのすべてのルールをリストアップする

特定のルールセットのすべてのルールをリストアップするには、次のコマンドを実行します

curl -X GET \
  https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets/$RULESET_ID \
  -H 'content-type: application/json' \
  -H 'accept: application/json' \
  -H 'x-auth-user-token: Bearer xxxxxx'

ここで、

  • $RULESET_ID は、ルールがリストされている管理対象ルール・セットの ID です。

APIからのエントリーポイントのルールセットを上書きする

API からエントリーポイントのルールセットをオーバーライドで更新するには、次のコマンドを実行します

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 '{"description":"Deploy managed ruleset, enabling a specific rule with log action","rules":[{"action":"execute","expression":"true","action_parameters":{"id":"<MANAGED_RULESET_ID>","overrides":{"rules":[{"id":"<RULE_ID>","enabled":true,"action":"log"}]}}}]}'

ここで、

  • $RULESET_PHASE は、展開されるルールセットフェーズです。 http_request_firewall_managed を使用して、マネージドWAFのルールセットを上書きします。
  • -d は、ルールセットを作成するために必要な属性の対象です。
    • description ルールセットが達成しようとしていることの要約を定義します。
    • rules は、ルールセットとともに展開するルールの配列です。
      • action は、実行するルールのアクションです。 利用可能なアクションについては 、WAF ルールセットアクション を参照してください。
      • action_parameters は、アクションの操作対象を定義するためのオブジェクトです。
        • id は、実行するルール・セットの ID です。 この ID は、ゾーン・ルール・セットのリスト操作から取得されます。
        • overrides 選択されたルールセットに設定するオーバーライドの対象です。
          • rules は、選択したプロパティーでオーバーライドされるルールのリストです。
            • id は、オーバーライドするルールの ID です。 この ID は、ゾーン・ルール・セット・ルールのリスト操作から取得されます。
            • enabled は、ルールが有効になっている場合でも上書きします。
            • action は、ルールが実行するオーバーライドされたアクションを指定します。
      • expression は、ルールが実行される条件です。 「true」を使用すると、このルールは常に実行されます。
      • description は、ルールが何を達成しているかについてのユーザー独自の要約を定義します。

Terraformで管理されたルールセットをリストアップする

以下の例では、Terraformを使って管理されているすべてのルールセットをリストアップしている:

data "ibm_cis_rulesets" "tests" {
    cis_id    = ibm_cis.instance.id
    domain_id = data.ibm_cis_domain.cis_domain.domain_id
}

引数と属性の詳細については、Terraformレジストリの 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"
}

引数と属性の詳細については、Terraformレジストリの ibm_cis_ruleset を参照してください。

Terraformでルールを上書きする

この例では、さまざまなオーバーライドを持つ CIS 管理ルールセットを展開する方法を示します。 まず、すべてのルールのトラフィックを有効にし、ブロックする。 そして、特定のルールのトラフィックを有効にしたりブロックしたりする。 最後に、 wordpress カテゴリ内のすべてのルールのトラフィックを有効にし、ブロックする。 基本的に、この例は、配備されたルールを上書きするためのさまざまな方法を示している(グローバル、特定、カテゴリー別)。

  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"
            }
          }
        }
      }
    }
  }

以下の例では、WAFのエントリーポイントを作成し、Terraformでルールを上書きする方法を示している:

resource "ibm_cis_ruleset_entrypoint_version" "waf_config" {
  cis_id    = ibm_cis.instance.id
  domain_id = data.ibm_cis_domain.cis_domain.domain_id
  phase = "http_request_firewall_managed"
  rulesets {
     description = "Entry Point rulesets"
  }
  lifecycle {
      ignore_changes = [
        rulesets
      ]
  }
}

 data "ibm_cis_ruleset_entrypoint_versions" "test"{
    cis_id    = ibm_cis.instance.id
    domain_id = data.ibm_cis_domain.cis_domain.domain_id
    phase = "http_request_firewall_managed"
    depends_on = [
      ibm_cis_ruleset_entrypoint_version.waf_config
    ]
  }

resource ibm_cis_ruleset_rule "rule1" {

    cis_id    = ibm_cis.instance.id
    domain_id = data.ibm_cis_domain.cis_domain.domain_id
    ruleset_id = data.ibm_cis_ruleset_entrypoint_versions.test.rulesets[0].ruleset_id

      rule {
        action = "execute"
        description = "OWASP Core RuleSet"
        enabled = true
        expression = "true"
        action_parameters {
            id = "4814384a9e5d4991b9815dcfc25d2f1f"
            overrides {
            categories {
                 category = "paranoia-level-2"
                 enabled = false
            }
            categories {
                 category = "paranoia-level-3"
                  enabled = false
            }
            categories {
                 category = "paranoia-level-4"
                 enabled = false
            }
            override_rules {
              rule_id         = "6179ae15870a4bb7b2d480d4843b323c"
              action          = "block"
              score_threshold = 60
              enabled = true
            }
            override_rules {
              rule_id         = "8ac8bc2a661e475d940980f9317f28e1"
              enabled         = true
            }
       }
   }
}
}

resource ibm_cis_ruleset_rule "rule2" {

    cis_id    = ibm_cis.instance.id
    domain_id = data.ibm_cis_domain.cis_domain.domain_id
    ruleset_id = data.ibm_cis_ruleset_entrypoint_versions.test.rulesets[0].ruleset_id

    rule {
      action = "execute"
      description = "CIS exposed credential ruleset"
      enabled = true
      expression = "true"
      action_parameters {
           id = "c2e184081120413c86c3ab7e14069605"
           overrides {
            override_rules {
              rule_id = "53f38cd8974a4cd3bc9a8a64fc731fb0"
              enabled = true
              action = "log"
            }
      }
      }
    }
}

resource ibm_cis_ruleset_rule "rule3" {

    cis_id    = ibm_cis.instance.id
    domain_id = data.ibm_cis_domain.cis_domain.domain_id
    ruleset_id = data.ibm_cis_ruleset_entrypoint_versions.test.rulesets[0].ruleset_id

      rule {
          action = "execute"
         description = "CIS Managed ruleset"
          enabled = true
          expression = "true"
          action_parameters {
              id = "efb7b8c949ac4650a09736fc376e9aee"
              overrides {
            override_rules {
              rule_id = "5de7edfa648c4d6891dc3e7f84534ffa"
              enabled = true
              action = "block"
            }
          }
         }
      }
}

引数と属性の詳細については、Terraformレジストリの ibm_cis_ruleset_entrypoint_version を参照してください。