공격 방어 설정 조회
GET /v1/attack-protection · 권한 attack-protection:read
환경의 공격 방어 객체를 반환합니다. 무차별 대입 공격, 의심스러운 IP 제한, 자격 증명 채우기, 봇 방어, 유출된 비밀번호, 가입 방어, SMS 방어, 위험 정책이 포함됩니다. 각 섹션에는 두 가지 보기가 있습니다. configured는 직접 작성한 값이고, effective는 기본값, 보안 하한선, 요금제가 적용된 실제 적용 값입니다. 한 번도 작성하지 않은 섹션은 configured: {}입니다. ETag 응답 헤더는 객체의 내용을 식별하며, PUT과 PATCH에서 If-Match로 보내야 합니다.
요청
이 작업에는 경로, 쿼리, 본문 필드가 없습니다. 환경은 자격 증명에서 정해집니다.
응답
객체와 ETag 헤더가 포함된 200 OK입니다.
{
"schema_version": 1,
"brute_force": {
"configured": {"max_failures": 10},
"effective": {"mode": "enforce", "max_failures": 10, "window_minutes": 15, "lock_minutes": 15, "notify_user": true}
},
"risk_policy": {
"configured": {"mode": "enforce"},
"effective": {"mode": "log", "challenge_threshold": 4, "block_threshold": null, "notify_user_on_new_device": true}
},
"bot_protection": {
"configured": {},
"effective": {"mode": "risk_based", "provider": "altcha"}
}
}
예시는 간략화되어 있습니다. 모든 응답에는 여덟 개 섹션(brute_force, suspicious_ip_throttling, credential_stuffing, bot_protection, breached_password, signup_protection, sms_protection, risk_policy)이 모두 포함됩니다. 예시에서는 요금제에 위험 적용이 더 이상 포함되지 않으므로 설정된 enforce 값은 유지되지만 log로 표시됩니다.
필드
| 필드 | 타입 | 범위 또는 값 | 기본값 | 하한 |
|---|---|---|---|---|
brute_force.mode |
텍스트 | log, enforce |
enforce |
|
brute_force.max_failures |
정수 | 5-100 | 20 | 최대 100 |
brute_force.window_minutes |
정수 | 5-60 | 15 | |
brute_force.lock_minutes |
정수 | 5-60 | 15 | 최소 5 |
brute_force.notify_user |
불리언 | true |
||
suspicious_ip_throttling.mode |
텍스트 | log, enforce |
enforce |
|
suspicious_ip_throttling.login_failures_per_ip_per_day |
정수 | 10-10000 | 100 | |
suspicious_ip_throttling.signups_per_ip_per_hour |
정수 | 1-20 | 20 | 최대 20 |
suspicious_ip_throttling.allowlist |
텍스트 배열 | CIDR 접두사 최대 100개; IPv4는 /8보다, IPv6는 /32보다 넓을 수 없음 | [] |
|
credential_stuffing.mode |
텍스트 | log, enforce |
enforce |
|
credential_stuffing.attack_mode_auto |
불리언 | true |
||
credential_stuffing.attack_mode_duration_minutes |
정수 | 15-240 | 30 | |
bot_protection.mode |
텍스트 | off, risk_based, always |
risk_based |
|
bot_protection.provider |
텍스트 | altcha |
altcha |
|
breached_password.on_signup |
텍스트 | block |
block |
block |
breached_password.on_password_change |
텍스트 | block |
block |
block |
breached_password.on_login |
텍스트 | require_reset, notify |
require_reset |
|
breached_password.notify_user |
불리언 | true |
||
signup_protection.block_disposable_email |
불리언 | true |
||
signup_protection.block_email_subaddress |
불리언 | false |
||
signup_protection.max_signups_per_device_30d |
정수 | 1-50 | 3 | |
sms_protection.allowed_countries |
텍스트 배열 | ISO 3166-1 alpha-2 코드 최대 250개 | [] (요금제 기본값) |
|
sms_protection.daily_cap |
정수 | null | 1-1000000; null은 요금제 값 |
null |
|
sms_protection.conversion_breaker |
불리언 | true |
true |
|
risk_policy.mode |
텍스트 | log, enforce (enforce는 Startup 이상 요금제 필요) |
log |
|
risk_policy.challenge_threshold |
정수 | 3-8 | 4 | |
risk_policy.block_threshold |
정수 | null | 6-12, challenge_threshold보다 커야 함; null은 끔 |
null |
|
risk_policy.notify_user_on_new_device |
불리언 | true |
오류
| HTTP | 코드 | 발생 시점 |
|---|---|---|
| 401 | unauthenticated |
자격 증명이 없거나, 잘못되었거나, 폐기되었습니다. |
| 403 | insufficient_permissions |
자격 증명에 필요한 권한이 없습니다. |
| 429 | rate_limited |
요청 한도를 초과했습니다. Retry-After 시간 후에 다시 시도하십시오. |
| 503 | service_unavailable |
종속 서비스를 일시적으로 사용할 수 없습니다. Retry-After 시간 후에 다시 시도하십시오. |
예시
curl https://api.eu.keenauth.com/v1/attack-protection \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY"