管理されたルールセットの展開

CLI、API、またはTerraformを使用して、ゾーンまたはインスタンスレベルでマネージドルールセットをデプロイできます。

カスタマイズされた動作(デフォルト設定に加えて実行される変更)を持つ管理されたルールセットを、それを上書きすることで展開することができます。 詳細は 、「管理されたルールセットの無効化 」を参照してください。

デプロイメント・ワークフロー

以下のワークフローを使用して、管理対象ルール・セットをゾーン・レベルのフェーズに配布します。

  1. ゾーン ID を取得します。
  2. 「ゾーンのリスト」 ルール・セット操作を実行して、使用可能なルール・セットを取得します。
  3. デプロイする管理ルールセットのルールセットIDを見つけます。
  4. 管理対象ルール・セットを配布するフェーズを特定します。 管理対象のルールセットが、展開したいフェーズと同じであることを確認してください。
  5. ゾーンレベルのフェーズエントリポイントのルールセットに、管理されたルールセットを実行するルールを追加します。

コンソールでマネージドルールセットを展開する

CIS コンソールでマネージドルールセットを展開するには、以下の手順に従ってください:

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

  2. [ WAF ] タブを選択します。

  3. 例外の追加をクリックして、例外の追加のサイドパネルを開きます。

  4. 管理対象ルール例外の名前を入力します。

  5. 式を構築してマッチ条件を定義する:

    • リクエストフィールドを選択し、演算子を選択し、値を指定する。
    • また、式ビルダーを使って手動で式を書くこともできます
    • And と Or 演算子を使用して複数の条件を組み合わせ、複雑なロジックを作成します。
  6. 式に一致するリクエストをログに記録するかどうかを選択します。

  7. マッチするリクエストに対するルールセットの動作を決定する:

    • 残りのルールをすべてスキップするか、または

    • 管理対象ルール・セットから特定のルールをスキップ

      特定のルールをスキップする場合は、 [ルールの参照] をクリックしてルールセットを選択し、スキップする特定のルールを選択します。

  8. 「 デプロイ 」をクリックして、設定を有効にしてください。

    配備後、いつでも戻って管理されたルールセット設定を編集することができます。

CLI からの管理されたルールセットの展開

CLIから管理されたルールセットを展開することができます。

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

CLIからすべてのゾーン管理ルールセットを一覧表示するには、以下の手順に従います:

  1. CLI 環境をセットアップします。

  2. CLIからアカウントにログインしてください。 パスワードを入力すると、システムから、使用するアカウントと地域を入力するよう求められます:

    ibmcloud login --sso
    
  3. カスタムルールを作成するには、次のコマンドを実行してください:

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

    コマンド・オプション

    DNS_DOMAIN_ID
    ドメインのID。
    -i, --instance
    インスタンスの名前または ID。
    --output
    出力形式を指定します。JSONのみがサポートされています。

CLI からデプロイ済みのルールセットを更新する

CLIから配備済みのルールセットを更新するには、以下の手順に従います:

  1. CLI 環境をセットアップします。

  2. CLIからアカウントにログインしてください。 パスワードを入力すると、システムから、使用するアカウントと地域を入力するよう求められます:

    ibmcloud login --sso
    
  3. カスタムルールを作成するには、次のコマンドを実行してください:

    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。 このエントリーポイント・ルールセットは、すでに存在する場合もあるし、存在しない場合は作成する必要がある。

以下の手順に従って、カスタム・ルール・エントリ・ポイント・ルールセットを取得してください:

  1. 正しい変数を使用して API 環境をセットアップします。
  2. API コマンドで使用する以下の値を変数に格納します。

CRN:サービス・インスタンスの完全な URL-encoded Cloud Resource Name(CRN)。

ZONE_ID: ドメイン ID。

  1. すべての変数が開始されたら、エントリーポイントのルールセットを取得する:
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を使用して管理ルールセットを一覧表示するには、以下の手順に従ってください:

  1. 正しい変数を使用して API 環境をセットアップします。
  2. API コマンドで使用する以下の値を変数に格納します。

CRN:サービス・インスタンスの完全な URL-encoded Cloud Resource Name(CRN)。

ZONE_ID: ドメイン ID。

RULESET_ID:カスタムルールのエントリポイントルールセットのID。

  1. すべての変数が開始されたら、すべてのゾーン管理ルールセットをリストする:
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を使用してエントリーポイントのルールセットを更新するには、以下の手順に従ってください:

  1. 正しい変数を使用して API 環境をセットアップします。
  2. API コマンドで使用する以下の値を変数に格納します。

CRN:サービス・インスタンスの完全な URL-encoded Cloud Resource Name(CRN)。

ZONE_ID: ドメイン ID。

RULESET_ID:カスタムルールのエントリポイントルールセットのID。

  1. すべての変数が開始されたら、エントリーポイントのルールセットを更新する:
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 操作から取得されます。
    • expressionは、ルールが実行される条件です。 true を使用すると、このルールが常に実行されることになります。
    • description は、ルールが達成している内容の要約を定義します。

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 を参照してください。