管理されたルールセットの無効化
管理されたルールセットの動作をカスタマイズするには、デプロイ時にそれを上書きします。 ルール・セットをオーバーライドする場合は、デフォルト構成に加えて、実行する変更を指定します。
管理されたルールセットは、以下のレベルで上書きすることができます
- ルール・セット・オーバーライドは、実行されたルール・セットのすべてのルールに適用されます。
- タグ・オーバーライドは、特定のタグを持つすべてのルールに適用されます。 例えば、タグ・オーバーライドを使用して CIS 管理対象ルール・セットをカスタマイズし、wordpress タグを持つすべてのルールが Block に設定されるようにします。 複数のタグにオーバーライドがあり、ルールにこれらのタグが複数ある場合、タグ・オーバーライドの順序によって動作が決まります。 複数のオーバーライドされたタグでタグ付けされたルールの場合、最後のタグのオーバーライドが適用されます。
- ルール・オーバーライドは、ルール ID によって参照される、管理対象ルール・セット内の特定のルールに適用されます。
特定のオーバーライドはより一般的なオーバーライドよりも優先され、ルール・オーバーライドはタグ・オーバーライドよりも優先されます。タグ・オーバーライドはルール・セット・オーバーライドよりも優先されます。
ルール・セット・オーバーライドおよびタグ・オーバーライドは、管理対象ルール・セット内の既存のルールと将来のルールの両方に適用されます。 既存のルールのみをオーバーライドする場合は、ルール・オーバーライドを使用する必要があります。
ワークフローのオーバーライド(API)
管理対象ルール・セットのオーバーライドを適用するには、以下の手順を実行します。
-
利用可能なルールセットをリストアップするには、リストルールセット操作を使用します。
-
get ruleset 操作を使用して、そのルールセットのルールをリストアップします。
-
フェーズ・エントリー・ポイントでルール・セットの更新操作を呼び出します。
-
管理対象ルール・セットを実行するルールの
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" } ] } }
以下のルール・プロパティーをオーバーライドできます。
- "アクション"
- "有効"
一部の管理対象ルール・セットは、追加のオーバーライド要件を持つことも、他のルール・プロパティーをオーバーライドすることもできます。
オーバーライドを使用して、管理対象ルール・セット内のすべてのルールをインスタンス・レベルで有効にすることは有効ではありません。 この変更は、インスタンス内のすべてのゾーンに影響を与える可能性があります。 一部のルールは、最終的には正当なトラフィックに影響するため、デフォルトで無効になっています。 事前に考慮することなく、ゾーン間でこれらのルールを有効にしないでください。
コンソールでマネージドルールセットを上書きする
コンソールでマネージドルールセットを上書きするには、以下の手順に従う:
-
CIS、「 セキュリティ」 セクションに移動する。
-
WAF タブを選択する。
-
オーバーライドするルールセット名をクリックします。
-
配置を設定]サイドパネルで[ ルールを参照] をクリックします。
-
Override CIS Managed Ruleset rules サイドパネルでは、以下のことが可能です:
- オーバーライドするルールのアクションを選択します。
- ルールを有効または無効にするには、 [Status] トグルを選択します。
-
ルールセットのルールを再設定したら、[ 続行]をクリックする。
-
上書きするルールのリストを確認し、[ 保存 ]をクリックします。
元の設定に戻すには、 デフォルトにリセットをクリックします。
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 を参照してください。