<aside>
Multi-tenancy를 구현하기 위해 아래의 리소스 격리 수단을 사용했다.
</aside>
1) RBAC 기반 권한 분리
- 테넌트가 자기 네임스페이스 외 리소스 조작 금지
- ClusterRole 중에서도 특정 권한만 제한적으로 부여
- ServiceAccount + RoleBinding 조합
2) 네트워크 분리 (CNI NetworkPolicy)
- 테넌트 간 네임스페이스 통신 차단
- 인바운드/아웃바운드 규칙으로 커뮤니케이션 제한
3) 리소스 쿼터(ResourceQuota)
- CPU/메모리 과다 사용 방지
- 특정 테넌트가 전체 클러스터 영향을 주는 것을 차단
4) API 엔드포인트 보안 (API Endpoint Security)
- API Key 기반 인증(Authentication) 적용
- 인가되지 않은 사용자(Key 미보유)의 URL 접근 차단
Runna는 각 테넌트가 자신의 함수(Function) / Job / 로그 / 이벤트만 접근할 수 있는 구조여야 하고,
진입점은 Gateway API → EventDispatcher → Knative Service 구조이므로 아래 방식으로 구성하는 것이 가장 안전하다.