권한 표¶
역할은 admin · devops · developer 셋입니다. 접근 제한은 세 군데에서 걸립니다.
- 사이드바 — 메뉴를 보여 줄지 (
web/src/components/layout/nav-model.tsx) - 라우트 — 주소로 들어오는 것을 막을지 (
web/src/app/routes.tsx의ProtectedRoute allowedRoles) - 서버 — API 호출을 거부할지
세 겹이 늘 같지는 않습니다. 사이드바에서 안 보이는 화면이 주소로는 열리는 경우가 있으니, 권한의 기준은 서버로 보시는 게 맞습니다.
로그인 후 첫 화면¶
web/src/features/auth/role-landing.ts 가 단일 출처입니다. 로그인 리다이렉트와
홈의 시작 버튼이 같은 값을 읽습니다.
| 역할 | 첫 화면 |
|---|---|
| admin | /admin/organization |
| devops | /stack/templates |
| developer | /cicd/developer-deploy |
역할을 알 수 없으면 홈(/)으로 보냅니다 — 권한 밖 경로로 보내면 바로 튕기기
때문입니다.
라우트 권한 — 네 묶음¶
routes.tsx 는 화면을 네 묶음으로 나눠 감싸고 있습니다.
| 묶음 | 허용 역할 | 들어 있는 경로 |
|---|---|---|
<ProtectedRoute />(역할 제한 없음 = 로그인만 하면 됨) |
admin · devops · developer | //stack/templates/stack/list/stack/history/:stackId?/stack/version, /stack/versions/stack/logs/:deploymentId/stack/deployments/:deploymentId/retry-history/observability/monitoring/observability/alert-history/observability/security/dashboard |
allowedRoles={['admin','devops']} |
admin · devops | /stack/install/stack/:id/add-tools/stack/deploy/:id/stack/oss-resource-default |
allowedRoles={['admin','devops','developer']} |
admin · devops · developer | /cicd/developer-deploy/cicd/templates/cicd/create/cicd/golden-paths/cicd/list/cicd/history/cicd/pipelines/:id/logs |
allowedRoles={['admin']} |
admin | /admin/organization, /admin/organizations/admin/users/admin/clusters/admin/known-issues/admin/token-management/admin/stack-versions/admin/backup/admin/notifications/admin/assistant |
사이드바와 라우트가 어긋나는 곳¶
아래 화면은 메뉴에서는 가려지지만 주소로는 열립니다. 설계상 의도일 수도 있고 아닐 수도 있으니, 민감한 정보를 다루는 화면이라면 서버 쪽 권한도 함께 확인하세요.
| 화면 | 사이드바에 보이는 역할 | 라우트가 허용하는 역할 | 차이 |
|---|---|---|---|
/stack/templates |
admin · devops | 모든 로그인 사용자 | developer 가 주소로 열 수 있다 |
/stack/list |
admin · devops | 모든 로그인 사용자 | 〃 |
/stack/history |
admin · devops | 모든 로그인 사용자 | 〃 |
/stack/version |
admin · devops | 모든 로그인 사용자 | 〃 |
/cicd/templates |
admin · devops | admin · devops · developer | 〃 |
/cicd/golden-paths |
admin · devops | admin · devops · developer | 〃 |
반대로 어긋나는 경우(메뉴에는 보이는데 라우트가 막는 경우)는 없습니다.
서버 쪽 권한 — 실제 기준¶
API 는 그룹 단위로 역할을 검사합니다. 여기가 진짜 경계입니다.
| 그룹 | 경로 | 허용 역할 |
|---|---|---|
| 관리 | /api/v1/admin/** |
admin 만 |
| 스택 | /api/v1/stacks/** |
admin · devops |
| CI/CD | /api/v1/cicd/** |
admin · devops · developer |
| 골든패스 쓰기 | POST·PUT·DELETE /api/v1/cicd/golden-paths |
admin · devops |
| 관측성 | /api/v1/observability/** |
역할 검사 없음 (인증만) |
| 보안 대시보드 설치 OSS | GET /api/v1/observability/security/stacks |
admin · devops |
| 로그인 | POST /api/v1/auth/login |
인증 전 |
역할 검사는 계층이 아니라 명단입니다 — admin 도 명단에 적혀 있어야 통과합니다.
골든패스와 보안 대시보드의 설치 OSS 경로는 그룹보다 좁습니다. 골든패스는 조직
전체가 고르는 설치 조합이라 읽기는 CI/CD 그룹 그대로 열어 두고, 바꾸는 쪽은
admin·devops 로 좁혀 두었습니다. 설치 OSS 경로는 스택 그룹(/stacks/**)과 같은
데이터를 모아 보여 주므로 스택 그룹과 같은 역할만 받습니다.
관측성 그룹은 역할을 보지 않습니다
알림 규칙 생성·수정·삭제까지 인증한 모든 역할이 호출할 수 있습니다.
화면은 내렸지만 API 는 열려 있는 상태입니다. 예외는 보안 대시보드의
/observability/security/stacks 하나로, 경로에 직접 역할 검사를 달았습니다.
development 모드는 모든 검사를 끕니다
server.mode 가 development 면 인증 미들웨어와 역할 검사가 아예
등록되지 않습니다. 네 그룹 전부 열립니다.
쓰이지 않는 권한 매트릭스가 코드에 남아 있습니다
roleAPIMatrix 와 경로별 역할 표를 담은 미들웨어가 저장소에 있지만
어디에도 연결돼 있지 않습니다. 그 표에 적힌 /api/v1/clusters 같은
경로는 존재하지도 않습니다. 권한을 확인할 때 그 코드를 근거로 삼지 마세요.
화면은 열리는데 데이터가 비는 경우¶
프런트엔드의 여러 화면이 자기 권한보다 좁은 API 를 부릅니다. 그래서 화면은 열리지만 목록이 비어 보입니다.
| 화면 | 화면 권한 | 부르는 API | API 권한 |
|---|---|---|---|
| 스택 설치 | admin · devops | /api/v1/admin/clusters…/clusters/{id}/namespaces…/clusters/{id}/storage-classes…/organization/resource-profiles |
admin |
| 앱 배포 | 세 역할 | /api/v1/admin/clusters…/clusters/{id}/namespaces/api/v1/stacks/api/v1/stacks/{id}/integrations |
admin / admin·devops |
| CI/CD 목록 | 세 역할 | /api/v1/admin/clusters/api/v1/stacks |
admin / admin·devops |
| 모니터링 대시보드 | 세 역할 | /api/v1/admin/clusters/api/v1/stacks/{id}/monitoring |
admin / admin·devops |
| 알림 이력 | 세 역할 | /api/v1/admin/clusters/api/v1/stacks |
admin / admin·devops |
| 홈 | 세 역할 | /api/v1/admin/clusters |
admin |
비교적 영향이 큰 쪽은 developer 의 첫 화면인 앱 배포와 devops 의 설치 위자드입니다.
역할별로 메뉴에 보이는 것¶
| 그룹 | admin | devops | developer |
|---|---|---|---|
| 데브섹옵스 스택 | 6개 | 5개 | — |
| CI/CD | 4개 | 4개 | 2개 |
| 관측성 | 3개 | 3개 | 3개 |
| 관리 | 7개 | — | — |
| 합계 | 20 | 12 | 5 |
- devops 에게 안 보이는 스택 메뉴 1개는 스택 버전 관리(
/admin/stack-versions)로, admin 전용입니다. - developer 에게 보이는 5개는 CI/CD 목록 · CI/CD 이력 · 모니터링 대시보드 · 알림 이력 · 보안 대시보드입니다.
- 관측성의 보안 대시보드는 하위 그룹 보안 아래에 있습니다(관측성 › 보안 › 보안 대시보드). 하위 그룹은 메뉴 수에 세지 않습니다.