Skip to content

feat: 계정 단위로 컨테이너 접속을 막고 푸는 작업 종류를 추가함 - #269

Merged
yoon6yo merged 3 commits into
mainfrom
feat/v3.3.66-account-access-block
Oct 9, 2026
Merged

yoon6yo merged 3 commits into
mainfrom
feat/v3.3.66-account-access-block

Conversation

@yoon6yo

@yoon6yo yoon6yo commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

무엇을

admin_be의 경고 누적 정지가 쓰는 작업 종류 POST /operations/access를 추가합니다.

  • 요청: {request_id, username, blocked}, 작업 키 access-op-, Action.CHANGE_ACCESS
  • 그 계정의 NodePort Service selector에 ailab.dgu/access-blocked: "true"를 더해 어느 Pod와도 맞지 않게 합니다. 풀 때는 라벨을 뺍니다.
  • 이동·포트 변경 요청에 access_blocked를 받아, 정지 중에 다시 만드는 Service도 막힌 채로 만듭니다. 신규 생성에는 받지 않습니다.
  • 막힌 계정은 접속 확인 단계를 건너뜁니다.

왜 Service를 지우지 않는가

Service를 지우면 포트 대장 정리(reconcile_nodeport_allocations)가 외부 포트를 풀어, 정지가 끝난 뒤 같은 포트를 돌려줄 수 없습니다.

검증

  • pytest 759 passed, 1 skipped (Python 3.10)
  • RBAC: config-server/Chart/templates/rbac.yaml에 services patch가 이미 있음

아직 확인하지 않은 것

  • 이미 열려 있던 SSH·Jupyter 연결이 selector 변경 뒤에도 유지되는지(스택 E2E에서 확인 예정)
  • 클러스터 안에서 Pod IP로 직접 가는 경로는 이 방식으로 막히지 않음

짝 PR: CSID-DGU/admin_be feat/v3.3.66-user-warnings

🤖 Generated with Claude Code

admin_be의 경고 누적 정지가 쓰는 작업이다. 그 계정의 NodePort Service를 지우지 않고
selector에 ailab.dgu/access-blocked 라벨을 더해 어느 Pod와도 맞지 않게 한다.
Service를 지우면 포트 대장 정리(reconcile_nodeport_allocations)가 외부 포트를 풀어 버리기 때문이다.

- POST /operations/access {request_id, username, blocked}, 작업 키 access-op-, Action.CHANGE_ACCESS
- 이동·포트 변경 요청에 access_blocked를 받아, 정지 중에 다시 만드는 Service도 막힌 채로 만든다.
  신규 생성에는 받지 않는다(정지 중 승인은 admin_be가 거절한다).
- 막힌 계정은 접속 확인 단계를 건너뛴다. 건너뛰지 않으면 정지 중 재시작이 항상 실패한다.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
yoon6yo and others added 2 commits October 10, 2026 03:22
접속 작업이 등록된 시각을 작업 입력에 남기고 적용할 때 Service 에 적는다. 계정의 Service 중 하나라도 더 나중
시각이 적혀 있으면 그 작업은 아무것도 바꾸지 않는다. 읽은 뒤 바뀐 Service 는 resourceVersion 으로 거절되어
단계가 다시 읽는다. Service 를 만드는 작업(컨테이너 이동·포트 변경)도 자기 등록 시각을 적어, 계정의 Service 가
전부 새로 만들어져도 그 앞의 접속 작업이 물러난다.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CiNbd7nwMSjji1vYvwpkTG
더 나중 결정으로 반대 상태가 된 Service 가 있을 때만 작업이 물러나고, 시각이 같으면 차단이 이긴다. 물러난 작업은
아무것도 바꾸지 않았으므로 성공이 아니라 ACCESS_SUPERSEDED 실패로 끝난다. 등록 시각은 막힌 채로 만드는 Service
에만 적는다 — 열린 Service 에 적힌 시각이 뒤따르는 차단을 물러나게 하면 안 된다.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CiNbd7nwMSjji1vYvwpkTG
@yoon6yo
yoon6yo merged commit d67e73a into main Oct 9, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant