速度制限の構成
_旧バージョンの_レート制限ルールは、現在では非推奨となっている。 旧バージョンのレート制限ルール・インターフェースは、2025年7月30日まで利用可能である。 この日付以降、以前のバージョンのアクティブなルールは機能しなくなります。
速度制限 (エンタープライズ・プランのみ) は、サービス妨害攻撃、総当たりログイン攻撃や、アプリケーション層をターゲットにしたその他の不正な行為から保護します。
レート制限ルールのタイプ( カスタムルールまたはプロテクトログイン )を選択します。
カスタムの速度制限ルールの作成
コンソールでカスタムレート制限ルールを作成する
ルールの内容がわかるルール名を入力します。 これはオプション・フィールドです。
**「トラフィック・マッチング基準 (Traffic matching criteria)」**セクションに、以下の情報を入力します。
-
基準タイプを選択します。
-
速度制限する URL を入力します。
-
速度制限を起動する前に許容する要求の数を選択します。
-
速度制限を起動する前の、要求が発生できる期間 (秒) を選択します。
範囲は10秒から86,400秒です。
**「高度な基準」**オプションでは、一致基準をさらに制限する HTTP メソッド、ヘッダー応答、および起点応答コードを指定できます。
**「メソッド」**リスト・メニューから値を選択します (デフォルトは ANY)。
HTTP レスポンスヘッダーを更新する。 応答ヘッダーを追加して、起点 Web サーバーから戻されるヘッダーを含めることもできます。
HTTP、レスポンスヘッダーの下に複数のヘッダーがある場合、 _AND論理和が_適用される。 ヘッダーをマッチングから除外するには、 等しくない オプションを使用します。 また、各ヘッダーは完全一致である必要があります。 ただし、大/小文字の区別は適用されません。
**「起点応答コード」**の下で、マッチングする各 HTTP 応答コードの有効な数値を入力します。 2 つ以上の応答コードを含める場合は、各値をコンマで区切ります。 例えば、401, 403
と入力すると、これら 2 つのエラー・コードのみがカウントされます。
応答の構成
リストされているアクションから選択し、タイムアウト期間を指定します。 この場合、タイムアウトとはアクションの実行が禁止されるまでの期間のことです。 60秒のタイムアウトとは、アクションが60秒間適用されることを意味する。
アクション | 説明 |
---|---|
ブロック | しきい値を超えると 429 エラーを発行します |
チャレンジ | ユーザーは、Google reCaptcha チャレンジに合格しないと進めません。 正常に実行された場合、要求は受け入れられます。 そうでない場合、要求はブロックされます。 |
JS チャレンジ | 続行する前に、ユーザーはJavascriptチャレンジにパスしなければならない。 正常に実行された場合、要求は受け入れられます。 そうでない場合、要求はブロックされます。 |
シミュレート | このオプションを使用して、他のいずれかのオプションをご使用の稼働環境に適用する前に、ルールをテストできます。 |
拡張応答 セクションで、ルールのしきい値を超えた場合の応答タイプを指定します。
URL のバイパス
バイパスは、URLのセットに対して、許可リストまたは例外に相当するものを作成することができます。 これらのURLに対しては、たとえレート制限ルールにマッチしても、アクションは発生しない。
ログインの保護
ログインの保護は、ログイン・ページを総当たり攻撃から保護するための標準ルールを作成します。 5 分以内に 5 回を超えるログインを試みるクライアントは 15 分間ブロックされます。
ルールの名前とログイン URL を入力します。
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_ratelimit/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": "Rate-limting rule entry point ruleset.",
"phase": "http_ratelimit"
}'
APIによるレート制限ルールの作成
APIを使用してレート制限ルールを作成するには、以下の手順に従ってください:
-
正しい変数を使用して API 環境をセットアップします。
-
API コマンドで使用する以下の値を変数に格納します。
CRN
:サービス・インスタンスの完全な URL-encoded Cloud Resource Name(CRN)。ZONE_ID
: ドメイン ID。RULESET_ID
:レート制限ルールのエントリポイントルールセットのID。 -
すべての変数が開始されたら、レート制限ルールを作成する:
curl -X POST "https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets/$RULESET_ID/rules" \ --header "X-Auth-User-Token: Bearer <API_TOKEN>" \ --header "Content-Type: application/json" \ --data '{ "description": "My rate limiting rule", "expression": "(http.request.uri.path matches \"^/api/\")", "action": "block", "ratelimit": { "characteristics": [ "cf.colo.id", "ip.src" ], "period": 60, "requests_per_period": 100, "mitigation_timeout": 600 } }'
APIによるレート制限ルールの更新
APIを使用して既存のレート制限ルールを更新するには、以下の手順に従ってください:
-
正しい変数を使用して API 環境をセットアップします。
-
API コマンドで使用する以下の値を変数に格納します。
CRN
:サービス・インスタンスの完全な URL-encoded Cloud Resource Name(CRN)。ZONE_ID
: ドメイン ID。RULESET_ID
:レート制限ルールのエントリポイントルールセットのID。RULE_ID
:変更するレート制限ルールのID。 -
すべての変数が開始されたら、レート制限ルールを更新する:
curl -X PATCH "https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets/$RULESET_ID/rules/$RULE_ID" \ --header "X-Auth-User-Token: Bearer <API_TOKEN>" \ --header "Content-Type: application/json" \ --data '{ "enabled": true, "description": "rate limit IPs for API" }'
APIによるレート制限ルールの削除
APIを使用して既存のレート制限ルールを削除するには、以下の手順に従ってください:
-
正しい変数を使用して API 環境をセットアップします。
-
API コマンドで使用する以下の値を変数に格納します。
CRN
:サービス・インスタンスの完全な URL-encoded Cloud Resource Name(CRN)。ZONE_ID
: ドメイン ID。RULESET_ID
:レート制限ルールのエントリポイントルールセットのID。RULE_ID
:変更するレート制限ルールのID。 -
すべての変数が開始されたら、レート制限ルールを削除する:
curl -X DELETE "https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets/$RULESET_ID/rules/$RULE_ID" \ --header "X-Auth-User-Token: Bearer <API_TOKEN>" \ --header "Content-Type: application/json"
コンソールのセクションのどれかに当てはまりますか?