공격 모드 상태 조회
GET /v1/attack-protection/attack-mode · 권한 attack-protection:read
환경이 공격 모드인지 여부와, 지난 90일 안에 시작되었거나 아직 열려 있는 공격 모드 기간을 최신순으로 반환합니다(최대 100개). more는 해당 기간 안에 더 오래된 기간이 있는지를 알려 줍니다.
환경이 공격 모드인 동안에는 bot_protection.mode 값과 관계없이 모든 비밀번호 및 일회용 코드 단계에서 더 강력한 봇 검증을 요구합니다. 패스키와 소셜 로그인은 검증 대상이 아닙니다. 기간은 다음 세 가지 방식 중 하나로 열립니다.
auto: 5분 창 안의 로그인 실패 횟수가 트리거 임계값(50과 환경 중앙값의 10배 중 큰 값)을 넘었습니다.credential_stuffing의log모드에서는 기간이would_have: true로 기록되며, 임계값의 3배를 넘지 않는 한 아무것도 적용되지 않습니다.manual_customer:activate를 사용해 직접 켰습니다.manual_platform: KeenAuth 운영팀이 켰습니다.
active는 적용되는(would_have: false) 기간이 환경 전체를 덮고 있는 동안에만 true입니다. 이때 active_until은 해당 기간들의 가장 늦은 종료 시각입니다. 종료 시각이 지났지만 정리 작업이 아직 닫지 않은 기간은 ends_at에 종료된 것으로 표시됩니다. 수동 기간을 누가 열었는지는 이 응답이 아니라 관리 감사 로그에서 확인할 수 있습니다.
응답
200 OK
| 필드 | 타입 | 설명 |
|---|---|---|
active |
boolean | 지금 환경이 공격 모드인지 여부입니다. |
active_until |
string (date-time) 또는 null | 자동 기간이 연장되지 않는 한 현재 공격 모드가 끝나는 시각입니다. active가 false이면 null입니다. |
periods[] |
array | 기간 목록(최신순)입니다. |
periods[].id |
string | 기간 ID이며 atm_ 접두사가 붙습니다. |
periods[].scope |
string | environment 또는 org_domain입니다. |
periods[].org_domain |
string 또는 null | org_domain 기간의 조직 이메일 도메인입니다. |
periods[].trigger |
string | auto, manual_customer 또는 manual_platform입니다. |
periods[].would_have |
boolean | true이면 log 모드에서 기록만 되고 적용되지 않은 기간입니다. |
periods[].trigger_value |
integer 또는 null | auto 기간을 연 5분 창 안의 실패 횟수입니다. 수동 기간이면 null입니다. |
periods[].threshold |
integer 또는 null | 그 창이 넘은 임계값입니다. 수동 기간이면 null입니다. |
periods[].started_at |
string (date-time) | 기간이 시작된 시각입니다. |
periods[].ends_at |
string (date-time) | 기간이 자체적으로 끝나는 시각입니다. auto 기간은 공격이 계속되는 동안 연장됩니다. |
periods[].ended_at |
string (date-time) 또는 null | 기간이 실제로 끝난 시각입니다. 열려 있는 동안에는 null입니다. |
more |
boolean | 지난 90일 안에 더 오래된 기간이 있는지 여부입니다. |
{
"active": true,
"active_until": "2026-10-20T10:00:00Z",
"periods": [
{
"id": "atm_01jaz8m5c3f6t9w2y4b7d0g3k6",
"scope": "environment",
"org_domain": null,
"trigger": "manual_customer",
"would_have": false,
"trigger_value": null,
"threshold": null,
"started_at": "2026-10-20T09:00:00Z",
"ends_at": "2026-10-20T10:00:00Z",
"ended_at": null
}
],
"more": false
}
오류
모든 오류는 안정적인 code를 포함한 application/problem+json 본문으로 반환됩니다.
| HTTP | code |
발생 조건 |
|---|---|---|
| 401 | unauthenticated |
API 키가 없거나, 잘못되었거나, 폐기되었습니다. |
| 403 | insufficient_permissions |
키에 attack-protection:read 권한이 없습니다. |
| 429 | rate_limited |
속도 제한을 초과했습니다. Retry-After를 따르십시오. |
| 503 | service_unavailable |
종속 서비스를 일시적으로 사용할 수 없습니다. 나중에 다시 시도하십시오. |
예제
curl https://api.eu.keenauth.com/v1/attack-protection/attack-mode \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
CLI: keenauth attack-protection attack-mode get