keenauth_attack_protection
keenauth_attack_protection 리소스는 환경의 공격 방어 설정을 관리합니다. 대상은 무차별 대입, 의심스러운 IP 제한, 자격 증명 스터핑과 공격 모드, 봇 방어, 유출된 비밀번호, 가입 방어, SMS 사기 방지, 위험 정책입니다.
환경마다 하나의 객체
공격 방어 객체는 환경마다 하나만 존재하며 항상 있습니다. 리소스는 프로바이더 구성마다 최대 한 번만 선언하세요. 생성 시에는 현재 객체를 읽고, 구성이 바꾸는 항목만 기록합니다. 삭제하면 상태에서만 제거됩니다. 환경은 방어 설정을 그대로 유지하므로 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를 보낼 수 있는 국가, 일일 상한, 전환 차단기. |
risk_policy |
위험 모드, 챌린지와 차단 임곗값, 새 기기 알림. |
보안 하한과 요금제 제한
- 보안 하한보다 낮은 값(잠금 전 실패 100회 초과, 5분 미만 잠금, IP별 시간당 가입 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