E. 한도와 차단
막혀야 할 때 실제로 막히는가. 크레딧을 다 쓴 팀, 비밀번호를 틀린 계정, 내보낸 멤버가 어떻게 되는지.
선행 A. 온보딩. 잠금을 유발하려면 크레딧이 적은 팀이 편하다.
S-31 크레딧 소진과 팀 잠금
사용자 → Org Admin · 10분 · 선행 S-09
전제 예산이 아주 적은 팀(예: 5 C)에 인스턴스를 하나 띄운다.
절차
- 팀 예산을 소진될 만큼 작게 잡는다.
- 인스턴스를 시작하고 크레딧이 줄어드는 것을 지켜본다.
- 30% 지점을 지날 때 알림을 확인한다.
- 10% 지점을 지날 때 알림을 확인한다.
- 0이 될 때까지 둔다.
기대 — 임계값 알림
- ✅ 30% 남았을 때
threshold_warning알림이 팀과 Org Admin 양쪽에 간다. - ✅ 10%에서 한 번 더 온다.
- ✅ 같은 임계값으로 중복 알림이 오지 않는다. 한 번 울린 임계값은 기록된다.
기대 — 소진 시점
- ✅ 팀이
잠김상태가 된다. - ✅ 실행 중인 모든 인스턴스가 자동 중지된다.
- ✅ 팀에 알림:
팀이 잠겼습니다 · 크레딧 소진 / 모든 인스턴스가 자동 중지되었고, 새 예약·실행· 서버리스 호출이 차단됩니다. 데이터와 볼륨은 유지됩니다. - ✅ Org Admin에게 알림:
팀 크레딧 소진 — 자동 잠금됨 / 예산을 증액하면 즉시 잠금이 해제됩니다. - ✅ 감사 로그에 시스템 행위자로
team.lockdown이 남고 중지된 인스턴스 수가 함께 기록된다. - ✅ 잔액이 음수가 되지 않는다.
기대 — 해제
6. Org Admin이 팀 관리에서 잠금 해제 를 누른다. 증액을 함께 입력한다.
- ✅ 증액분이 조직 미할당 풀에서 팀으로 이동한다.
- ✅ 팀이 즉시 다시 쓸 수 있게 된다.
- ✅ 임계값 알림 기록이 초기화된다. 다음에 30%를 지나면 다시 울린다.
- ✅ 팀에
팀 잠금이 해제되었습니다 · 예산 +n C 증액알림이 간다.
증액 없이 해제하면 경고가 돌아온다: 증액 없이 해제하면 인스턴스 시작 즉시 다시 잠길 수 있습니다. 잔여가 0인 채로 풀어봐야 첫 과금에서 다시 잠긴다.
잠기지 않은 팀을 해제하려 하면 not_locked으로 거부된다.
S-32 잠긴 팀에서 시작 시도
사용자 · 2분 · 선행 S-31
잠금은 한 곳이 아니라 모든 입구를 막는다.
절차 잠긴 상태에서 아래를 각각 시도한다.
| 시도 | 기대 |
|---|---|
| 인스턴스 시작 | ✅ 거부. 버튼이 비활성이고 잠금 배너가 보인다 |
| 예약 신청 | ✅ 거부 |
| 조정안 수락 | ✅ 거부 |
| 서버리스 호출 | ✅ 403 team_locked |
| 대시보드·리포트 조회 | ✅ 된다. 읽기는 막지 않는다 |
| 알림함 확인 | ✅ 된다 |
| 예산 증액 요청 | ✅ 된다. 잠긴 팀이 스스로 풀 수 있는 유일한 길이다 |
기대
- ✅ 화면 상단에 잠금 사유가 배너로 뜬다.
- ✅ 데이터와 볼륨은 유지된다. 인스턴스가 삭제되지 않고 중지될 뿐이다.
- ✅ 해제되면 그대로 다시 시작할 수 있다.
읽기를 막지 않는 이유는 명확하다. 왜 잠겼는지 확인해야 조치할 수 있다. 사용량 리포트를 봐야 어디에 썼는지 알고 증액을 요청할 수 있다.
S-33 로그인 5회 실패 잠금
사용자 · 3분 · 선행 S-08
절차
- 틀린 비밀번호로 로그인을 시도한다.
- 실패 메시지의 횟수 표시를 본다.
- 5회까지 반복한다.
- 6번째로 맞는 비밀번호를 넣어 본다.
기대
- ✅ 실패할 때마다
아이디 또는 비밀번호가 올바르지 않습니다 (n/5회)로 남은 횟수가 보인다. - ✅ 5회를 채우면
login_locked로 15분 잠긴다. - ✅ 잠긴 동안은 맞는 비밀번호도 통과하지 않는다.
- ✅ 15분이 지나면 다시 된다.
- ✅ 중간에 한 번이라도 성공하면 카운터가 초기화된다.
팀 코드도 같다 가입 시 팀 코드를 틀리면 팀 코드가 일치하지 않습니다 (n/5회) · 5회 실패 시 15분간 잠깁니다로 같은 카운터를 쓴다.
급할 때 Org Admin이 그 멤버의 비밀번호를 재설정하면 바로 들어갈 수 있다.
S-34 멤버 비활성화 즉시 차단
Org Admin · 3분 · 선행 S-08
전제 대상 멤버가 로그인해 있는 상태로 둔다.
절차
- Org Admin이
팀 멤버에서 그 멤버의비활성화를 누른다. - 그 멤버 쪽에서 아무 화면이나 새로고침한다.
- 다시 로그인해 본다.
기대
- ✅ 이미 발급된 토큰도 즉시 무효가 된다. 새로고침하면 로그인 화면으로 튕긴다.
- ✅ 재로그인이
member_deactivated로 거부된다:계정이 비활성화되었습니다. - ✅ 멤버 목록에서
비활성으로 표시된다. - ✅ 그 멤버가 만든 기록은 남는다. 감사 로그, 사용 이력, 예약이 지워지지 않는다.
- ✅ 감사 로그에
member.deactivate가 남는다.
되돌리기 활성화를 누르면 바로 복구된다. 계정과 아이디가 그대로라 다시 로그인하면 된다.
즉시 무효화되는 것은 이것뿐이다 다른 변경은 다음 로그인부터 적용된다.
| 변경 | 기존 세션 |
|---|---|
| 멤버 비활성화 | 즉시 차단 |
| 팀 코드 초기화 | 영향 없음. 신규 가입에만 적용 |
| 허용 노드 타입 변경 | 다음 시작부터 |
| 팀 예산 변경 | 다음 과금 판정부터 |
| 팀 잠금 | 즉시 (실행 중 인스턴스까지 중지) |
이 묶음이 끝나면
크레딧·인증·권한 세 축의 차단이 모두 동작하는 것을 확인한 것이다.
다음: F. 장애와 복구 — 정상 경로가 아니라 깨진 경로.