keenauth_attack_protection
keenauth_attack_protection リソースは、環境の攻撃防御設定を管理します。対象は、ブルートフォース、疑わしい IP アドレスの制限、クレデンシャルスタッフィングと攻撃モード、ボット防御、漏えいしたパスワード、サインアップ防御、SMS 不正防止、リスクポリシーです。
環境ごとに 1 つのオブジェクト
攻撃防御のオブジェクトは環境ごとに 1 つだけ存在し、常に存在します。リソースはプロバイダー設定ごとに多くても 1 回だけ宣言してください。作成時には現在のオブジェクトを読み取り、設定で変更した内容だけを書き込みます。削除するとステートから取り除かれるだけです。環境の防御設定はそのまま残るため、destroy によってセキュリティが黙って緩むことはありません。
書いたものだけが管理される
記述を省略した属性やグループは、現在の値を維持します。設定から属性を削除しても、最後の値を維持します。ステートには有効な値、つまり API が適用した既定値、セキュリティの下限、プランによる制限が保存されます。そのため、プランをダウングレードすると次の plan で変更として表示されます。suspicious_ip_throttling.allowlist や sms_protection.allowed_countries などのリストは集合として扱われるため、順序は関係ありません。
resource "keenauth_attack_protection" "this" {
brute_force = {
max_failures = 10
lock_minutes = 30
}
suspicious_ip_throttling = {
allowlist = ["203.0.113.0/24"]
}
sms_protection = {
allowed_countries = ["DE", "TR"]
daily_cap = 500
}
risk_policy = {
mode = "enforce"
challenge_threshold = 5
block_threshold = 8
}
}
グループ
| 属性 | 制御する内容 |
|---|---|
brute_force |
サインイン失敗後のユーザーごとのロック: モード、ロックまでの失敗回数、集計期間、ロック時間、ユーザーのメールアドレス。 |
suspicious_ip_throttling |
サインイン失敗とサインアップ失敗に対する IP ごとの上限、および対象外となる CIDR 許可リスト。 |
credential_stuffing |
クレデンシャルスタッフィングの検知モードと攻撃モード(自動開始、継続時間)。 |
bot_protection |
ボットチャレンジのモード(off、risk_based、always)とプロバイダー。 |
breached_password |
サインアップ、パスワード変更、サインイン時に漏えいしたパスワードが使われた場合の動作。 |
signup_protection |
使い捨てメールアドレス、+ のサブアドレス、30 日間のデバイスごとのサインアップ数。 |
sms_protection |
SMS の送信先として許可する国、1 日の上限、コンバージョンのブレーカー。 |
risk_policy |
リスクモード、チャレンジとブロックのしきい値、新しいデバイスの通知。 |
セキュリティの下限とプランによる制限
- セキュリティの下限を下回る値(ロックまでの失敗が 100 回超、ロックが 5 分未満、IP ごとの 1 時間あたりのサインアップが 20 回超)は、plan の時点で拒否されます。
breached_password.on_signupとon_password_changeのブロック設定も下限です。 risk_policy.block_thresholdはrisk_policy.challenge_thresholdより大きくなければなりません。risk_policy.mode = "enforce"には Startup 以上のプランが必要です。それ以外の場合、API は403 plan_feature_unavailableを返します。block_thresholdとdaily_capは、無効な間はステートでnullになります。一度設定すると、設定ではそれを無効にできません。無効化するにはダッシュボードまたは管理 API を使用してください。- 許可リストのエントリは
203.0.113.0/24のような正規のネットワークアドレスです。/8 より広い IPv4 プレフィックスと /32 より広い IPv6 プレフィックスは拒否されます。
安全な変更
- 更新は、変更されたフィールドだけを
If-Match付きの JSON merge patch として送信します。plan の作成後に誰かがオブジェクトを変更していた場合、API は412を返し、何も変更されません。planを再実行してください。 - ダッシュボードでの変更は次の
planにドリフトとして表示され、管理対象の属性についてapplyで元に戻されます。 - 有効なロックと攻撃モードは設定ではなく操作です。これらにはダッシュボードまたは管理 API(
/v1/attack-protection/lockoutsと/v1/attack-protection/attack-mode)を使用してください。
インポート
tofu import keenauth_attack_protection.this attack-protection