管理されたルールセットの展開
CLI、API、またはTerraformを使用して、ゾーンまたはインスタンスレベルでマネージドルールセットをデプロイできます。
カスタマイズされた動作(デフォルト設定に加えて実行される変更)を持つ管理されたルールセットを、それを上書きすることで展開することができます。 詳細は 、「管理されたルールセットの無効化 」を参照してください。
デプロイメント・ワークフロー
以下のワークフローを使用して、管理対象ルール・セットをゾーン・レベルのフェーズに配布します。
- ゾーン ID を取得します。
- 「ゾーンのリスト」 ルール・セット操作を実行して、使用可能なルール・セットを取得します。
- デプロイする管理ルールセットのルールセットIDを見つけます。
- 管理対象ルール・セットを配布するフェーズを特定します。 管理対象のルールセットが、展開したいフェーズと同じであることを確認してください。
- ゾーンレベルのフェーズエントリポイントのルールセットに、管理されたルールセットを実行するルールを追加します。
コンソールでマネージドルールセットを展開する
CIS コンソールでマネージドルールセットを展開するには、以下の手順に従ってください:
-
CIS、「 セキュリティ」 セクションに移動する。
-
[ WAF ] タブを選択します。
-
例外の追加をクリックして、例外の追加のサイドパネルを開きます。
-
管理対象ルール例外の名前を入力します。
-
式を構築してマッチ条件を定義する:
- リクエストフィールドを選択し、演算子を選択し、値を指定する。
- また、式ビルダーを使って手動で式を書くこともできます
- And と Or 演算子を使用して複数の条件を組み合わせ、複雑なロジックを作成します。
-
式に一致するリクエストをログに記録するかどうかを選択します。
-
マッチするリクエストに対するルールセットの動作を決定する:
-
残りのルールをすべてスキップするか、または
-
管理対象ルール・セットから特定のルールをスキップ
特定のルールをスキップする場合は、 [ルールの参照] をクリックしてルールセットを選択し、スキップする特定のルールを選択します。
-
-
「 デプロイ 」をクリックして、設定を有効にしてください。
配備後、いつでも戻って管理されたルールセット設定を編集することができます。
CLI からの管理されたルールセットの展開
CLIから管理されたルールセットを展開することができます。
CLI からの管理されたルールセットのリスト
CLIからすべてのゾーン管理ルールセットを一覧表示するには、以下の手順に従います:
-
CLI 環境をセットアップします。
-
CLIからアカウントにログインしてください。 パスワードを入力すると、システムから、使用するアカウントと地域を入力するよう求められます:
ibmcloud login --sso -
カスタムルールを作成するには、次のコマンドを実行してください:
ibmcloud cis managed-waf rulesets DNS_DOMAIN_ID [-i, --instance INSTANCE] [--output FORMAT]コマンド・オプション
DNS_DOMAIN_ID- ドメインのID。
-i, --instance- インスタンスの名前または ID。
--output- 出力形式を指定します。JSONのみがサポートされています。
CLI からデプロイ済みのルールセットを更新する
CLIから配備済みのルールセットを更新するには、以下の手順に従います:
-
CLI 環境をセットアップします。
-
CLIからアカウントにログインしてください。 パスワードを入力すると、システムから、使用するアカウントと地域を入力するよう求められます:
ibmcloud login --sso -
カスタムルールを作成するには、次のコマンドを実行してください:
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- ルールが実行されるために満たす必要がある条件。 マッチする値のリストについては、 フィールド、関数、および式の使用を 参照のこと。
--enabled- そのルールが有効かどうかを示します。 デフォルトは
trueです。 --overide-action- オーバーライドのルールセットアクション。 有効な値は
managed_challenge,block,js_challenge,log,challenge。 --paranoia-level- OWASPのパラノイア・レベル。 有効な値は
PL1,PL2,PL3,PL4。これはCIS OWASP Core Rulesetに対してのみ有効です。 override-rules- オーバーライドのルール・オプション。 例えば
--override-rules rule=RULE_ID,action=ACTION,enabled=STATUS。 -i, --instance- インスタンス名またはID。
--output- 出力形式を指定します。JSONのみがサポートされています。
コマンド例
この例では、ルールセット efb7b8c949ac4650a09736fc376e9aee 、ルールセット内のルールをオーバーライドする方法を示す。 また、カテゴリー・ワードプレスでルールを上書きしている。
ibmcloud cis managed-waf deployment-add-ruleset $domain efb7b8c949ac4650a09736fc376e9aee --match "(http.cookie eq \"example.com/contact?page=1234\")" --action execute --enabled false --override-action block --override-status false --override-rules rule=5de7edfa648c4d6891dc3e7f84534ffa,action=log,enabled=true --override-rules action=managed_challenge,rule=e3a567afc347477d9702d9047e97d760
APIを使用した管理されたルールセットの展開
APIを使ってマネージドルールセットをデプロイできる。
APIのカスタム・ルール・エントリー・ポイントの取得
すべてのカスタムルールAPI操作は、カスタムルール段階のエントリポイントルールセットの RULESET_ID。 このエントリーポイント・ルールセットは、すでに存在する場合もあるし、存在しない場合は作成する必要がある。
以下の手順に従って、カスタム・ルール・エントリ・ポイント・ルールセットを取得してください:
- 正しい変数を使用して API 環境をセットアップします。
- API コマンドで使用する以下の値を変数に格納します。
CRN:サービス・インスタンスの完全な URL-encoded Cloud Resource Name(CRN)。
ZONE_ID: ドメイン ID。
- すべての変数が開始されたら、エントリーポイントのルールセットを取得する:
curl -X GET "https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets/phases/http_request_firewall_managed/entrypoint" \
--header "X-Auth-User-Token: Bearer <API_TOKEN>" \
--header "Content-Type: application/json"
ルールセットIDは、成功したリクエストのレスポンスに記載される。 前述の呼び出しで 404 Not Found レスポンスが返された場合は、次の API を使用して、カスタムルールフェーズのエントリポイントルールセットを作成してください:
curl -x POST https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets \
--header "X-Auth-User-Token: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"name": "Zone-level phase entry point",
"kind": "zone",
"description": "WAF managed rule entrypoint ruleset.",
"phase": "http_request_firewall_managed"
}'
APIを使ったマネージド・ルールセットのリスト
APIを使用して管理ルールセットを一覧表示するには、以下の手順に従ってください:
- 正しい変数を使用して API 環境をセットアップします。
- API コマンドで使用する以下の値を変数に格納します。
CRN:サービス・インスタンスの完全な URL-encoded Cloud Resource Name(CRN)。
ZONE_ID: ドメイン ID。
RULESET_ID:カスタムルールのエントリポイントルールセットのID。
- すべての変数が開始されたら、すべてのゾーン管理ルールセットをリストする:
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で更新する
APIを使用してエントリーポイントのルールセットを更新するには、以下の手順に従ってください:
- 正しい変数を使用して API 環境をセットアップします。
- API コマンドで使用する以下の値を変数に格納します。
CRN:サービス・インスタンスの完全な URL-encoded Cloud Resource Name(CRN)。
ZONE_ID: ドメイン ID。
RULESET_ID:カスタムルールのエントリポイントルールセットのID。
- すべての変数が開始されたら、エントリーポイントのルールセットを更新する:
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 '{"rules":[{"action":"execute","action_parameters":{"id":"4814384a9e5d4991b9815dcfc25d2f1f"},"expression":"true","description":"Execute WAF OWASP ruleset"}]}'
ここで、
- $RULESET_PHASE は、デプロイされるルールセットフェーズです。
http_request_firewall_managedを使用して、マネージドWAFルールセットを展開します。 - -d は、ルールセットの作成に必要な属性のオブジェクトです。
- rules は、ruleset と共に展開するルールの配列です。 以下に例を示します。
- action は、実行するルールのアクションです。 使用できるアクションの説明については、 ルール・アクション を参照してください。
- action_parameters は、アクションの操作対象を定義するためのオブジェクトです。
- id は実行するルールセットのIDです。 この ID は、
list zone rulesets操作から取得されます。
- id は実行するルールセットのIDです。 この ID は、
- expressionは、ルールが実行される条件です。
trueを使用すると、このルールが常に実行されることになります。 - description は、ルールが達成している内容の要約を定義します。
- rules は、ruleset と共に展開するルールの配列です。 以下に例を示します。
Terraformでマネージドルールセットをデプロイする
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を使って管理ルールセットの全ルールをリストアップしている:
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を使ってルールを上書きしている:
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"
}
}
}
}
}
}
引数と属性の詳細については、Terraformレジストリの ibm_cis_ruleset_entrypoint_version を参照してください。