시도 로그는 로그인을 따라가고, audit 로그는 privileged 액션 을 따라가. 뭔가 잘못되면 기록이 있길 바라게 될 거야. 혼자 쓰더라도 "화요일에 내가 그거 한 것 같은데" 와 "14:32 에 노트북에서 내가 했어" 는 완전히 다르거든.
audit 할 것
| 액션 | 이유 |
|---|---|
| 로그인 성공 / 실패 | 이미 attempts 에 있음. 성공한 줄만 여기 같이 남김 |
| Session revoked (단일) | 누가 했고, 어떤 session |
| Revoke All 클릭 | 제일 큰 망치야. 무조건 남겨 |
| PIN 변경 | 주요 보안 이벤트 |
| IP blacklisted / unblocked | 수동 정책 변경 |
| Config 변경 (max_retry, lockout 윈도우) | Drift 감지 |
| 복구 토큰 사용 | 마지막 수단이라 무조건 남겨 |
Tamper-evidence (편집증인 사람들)
"공격자가 audit 로그까지 고쳐서 흔적을 지운다" 를 막고 싶으면 hash 로 줄을 사슬처럼 엮어. 각 줄이 hash(prev_hash + this_row_payload) 를 저장하는 거야. 최신 hash 는 주기적으로 서버 밖에 복사해두고 (Dropbox, S3, 심지어 손으로 적은 포스트잇도). 나중에 검증할 때 사슬이 끊겨 있으면 바로 알 수 있어.