K8s RBAC 관리

"개발팀은 dev 네임스페이스만, 운영팀은 prod 네임스페이스만 접근하도록 하고 싶다면?" KIOPS의 RBAC 관리 기능을 사용하면 팀별, 역할별로 Kubernetes 클러스터 접근 권한을 세밀하게 관리할 수 있습니다.
모든 사용자에게 클러스터 전체 접근 권한을 주면 실수로 인한 장애 위험이 높아집니다. RBAC을 사용하면 "필요한 권한만 필요한 사람에게" 부여하여 보안과 안정성을 높일 수 있습니다.
RBAC이란?
RBAC(Role-Based Access Control, 역할 기반 접근 제어)은 Kubernetes에서 "누가 무엇을 할 수 있는지"를 정의하는 방식입니다. 쉽게 말해, 회사의 출입 카드 시스템과 비슷합니다. 각 직원이 자신의 부서와 필요한 공간에만 접근할 수 있듯이, RBAC은 사용자가 필요한 리소스에만 접근할 수 있도록 합니다.
KIOPS의 RBAC 구조
KIOPS의 RBAC 관리는 [런타임 환경] > Kubernetes 클러스터 선택 > 권한 관리 탭에서 이루어지며, 다음 4개의 서브 탭으로 구성됩니다.
- 서비스 계정 (RBACManagementTab): 클러스터의 ServiceAccount를 직접 조회/생성/삭제합니다. SA 생성 시 SSH로 클러스터에 바로 ServiceAccount가 생성됩니다 (별도의
createInCluster플래그는 없습니다). - 권한 바인딩: ServiceAccount에 대한 RoleBinding/ClusterRoleBinding을 관리합니다.
- 권한 템플릿: cluster-admin / admin / editor / viewer 등 기본 ClusterRole에 매핑되는 권한 템플릿을 제공합니다.
- 통합 계정 관리 (KiwiSAManagementTab, cluster-admin 전용): KIOPS DB가 관리하는 ServiceAccount + 네임스페이스 바인딩 + 사용자 할당 + 클러스터 동기화를 처리하며, 이 탭의 SA 생성 모달에서
createInCluster플래그를 통해 KIOPS DB 등록과 클러스터 실제 생성 여부를 선택할 수 있습니다.
권한 수준
KIOPS에서 사용하는 권한 템플릿은 Kubernetes의 기본 ClusterRole에 매핑됩니다.
- cluster-admin: 클러스터 전체에 대한 모든 권한입니다. 클러스터 관리자에게만 부여하세요.
- admin: 네임스페이스 내 모든 리소스를 관리할 수 있습니다. 운영팀이나 관리자에게 적합합니다.
- editor: 리소스를 생성/수정/삭제할 수 있지만 RBAC 설정은 변경할 수 없습니다. 개발팀에게 적합합니다.
- viewer: 읽기 전용 접근만 가능합니다. 모니터링이나 감사 목적에 적합합니다.
보안을 위해 "최소 권한 원칙"을 따르세요. 사용자에게 필요한 최소한의 권한만 부여하면 실수나 악의적인 행동으로 인한 피해를 최소화할 수 있습니다.
사전 요구사항
- Kubernetes 클러스터가 KIOPS에 등록되어 있어야 합니다.
권한 안내: 이 기능에 접근할 수 없다면 기관 관리자에게 권한을 요청하세요.
권한 관리 탭 (RBAC 관리)
권한 관리 탭은 [런타임 환경] > Kubernetes 클러스터 선택 > 권한 관리 위치에 있으며, 클러스터의 ServiceAccount, RoleBinding, ClusterRole 등의 RBAC 리소스를 직접 다룹니다.
Step 1: 권한 관리 탭 이동
- 좌측 메뉴에서 [런타임 환경] 을 클릭합니다.
- 대상 Kubernetes 클러스터를 선택합니다.
- 클러스터 상세 페이지에서 권한 관리 탭을 클릭합니다.
Step 2: 서비스 계정 생성
- 서비스 계정 서브 탭에서 추가 버튼을 클릭합니다.
- SA 정보를 입력합니다:
- 이름: ServiceAccount 이름 (예:
developer-sa) - 네임스페이스: 모달 진입 시 클러스터의 실제 네임스페이스가 SSH로 자동 조회되어 드롭다운에 표시됩니다.
- 설명: SA 용도 설명
- 이름: ServiceAccount 이름 (예:
- 생성 버튼을 클릭하면 SSH를 통해 클러스터에 ServiceAccount가 즉시 생성됩니다.
권한 관리 탭의 서비스 계정 서브 탭에는 createInCluster 플래그가 없으며, SA 생성 시 SSH로 클러스터에 바로 SA가 생성됩니다. KIOPS DB에만 등록한 뒤 나중에 동기화하는 흐름은 통합 계정 관리 탭(아래)에서 제공됩니다.
Step 3: 권한 템플릿 기반 RoleBinding 생성
권한 바인딩은 권한 템플릿 서브 탭으로 시작하는 것이 가장 빠릅니다.
- 권한 템플릿 서브 탭에서 사용할 템플릿(cluster-admin / admin / editor / viewer) 카드를 클릭합니다.
- 모달에서 바인딩할 ServiceAccount를 선택합니다.
- 적용할 네임스페이스 또는 클러스터 범위를 선택합니다.
- 생성 버튼을 클릭하면 RoleBinding(또는 ClusterRoleBinding)이 생성되고, 결과는 권한 바인딩 서브 탭에서 확인할 수 있습니다.
Step 4: 시스템 리소스 보호
- 시스템 ServiceAccount (예:
default,kube-*)와 시스템 네임스페이스 (kube-system,kube-public등)는 삭제가 차단됩니다. - 삭제 시도 시 UI에서 경고가 표시되며 작업이 진행되지 않습니다.
통합 계정 관리 탭 (cluster admin 전용)
통합 계정 관리 탭은 cluster-admin 권한자만 접근할 수 있는 별도 화면으로, KIOPS DB가 관리하는 SA와 KIOPS 사용자 간의 할당을 다룹니다.
Step 1: 통합 계정 관리 탭 이동
- [런타임 환경] > Kubernetes 클러스터 선택 > 권한 관리 화면에서 통합 계정 관리 서브 탭을 클릭합니다.
- cluster-admin 권한이 없는 사용자에게는 이 서브 탭이 표시되지 않습니다.
통합 계정 관리 탭의
createInCluster플래그: 이 탭의 SA 생성 모달에서는createInCluster플래그를 켜면 KIOPS DB 등록과 함께 클러스터에도 즉시 ServiceAccount가 생성되며, 끄면 KIOPS DB에만 등록되고 이후 동기화 작업으로 반영할 수 있습니다.
Step 2: 사용자에게 SA 할당
- 할당할 사용자를 검색합니다.
- 사용자 행에서 SA 할당 버튼을 클릭합니다.
- 할당할 ServiceAccount를 선택합니다.
- 만료일 (expiresAt)을 설정합니다. 만료일이 지나면 자동으로 할당이 해제됩니다.
- 할당 버튼을 클릭합니다.
Step 3: 클러스터 동기화
- 사용자 할당이 변경되면 클러스터 측 토큰/바인딩과 동기화가 필요합니다.
- 클러스터에 동기화 버튼을 클릭하면 KIOPS가 SSH로 클러스터에 변경 사항을 반영합니다.
SA 및 바인딩 관리 작업
ServiceAccount 수정
- SA 목록에서 대상 SA를 클릭합니다.
- 수정 버튼을 클릭하여 설명이나 바인딩을 수정합니다.
- 변경 후 저장 합니다.
네임스페이스 바인딩 제거
- SA 상세에서 바인딩 목록을 확인합니다.
- 제거할 바인딩 옆의 삭제 버튼을 클릭합니다.
사용자 SA 할당 해제
- 통합 계정 관리 탭에서 대상 사용자를 찾습니다.
- 할당 해제 버튼을 클릭합니다.
- 확인 대화상자에서 해제 를 클릭합니다.
ServiceAccount 삭제
- SA 목록에서 대상 SA를 선택하고 삭제 버튼을 클릭합니다.
- 이 SA가 클러스터에 동기화 된 상태인 경우 다음 두 가지 옵션이 표시됩니다:
- DB에서만 삭제: KIOPS DB에서만 SA를 제거하고 클러스터의 ServiceAccount는 그대로 유지합니다.
- 클러스터에서도 삭제: KIOPS DB와 클러스터의 ServiceAccount를 함께 제거합니다.
- 적절한 옵션을 선택하고 삭제 를 클릭합니다.
SA 삭제 시 해당 SA를 사용하는 사용자의 접근 권한이 즉시 제거됩니다.
내 K8s 권한 확인 (추정)
추정 표기: 아래 내용의 메뉴 위치는 KIOPS UI 버전에 따라 다를 수 있습니다.
사용자는 자신에게 할당된 K8s 권한을 확인할 수 있을 것으로 보입니다. 정확한 메뉴 위치는 운영팀에 문의하세요.
표시될 것으로 예상되는 정보:
- 클러스터: 접근 가능한 K8s 클러스터 목록
- ServiceAccount: 각 클러스터에서 할당받은 ServiceAccount 이름
- 네임스페이스: 해당 SA를 통해 접근 가능한 네임스페이스 목록
- 역할: 각 네임스페이스에서의 권한 수준
실제 사용 시나리오
시나리오 1: 개발팀 네임스페이스 접근 권한 부여
상황: 개발팀 3명에게 dev 네임스페이스 편집 권한 부여
단계:
- 권한 관리 탭의 서비스 계정 서브 탭에서 SA 생성:
dev-team-sa(SSH로 클러스터에 즉시 생성됨) - 권한 템플릿 서브 탭에서
editor카드 클릭 →dev-team-sa선택 →dev네임스페이스 적용 - 통합 계정 관리 서브 탭에서 개발팀 사용자 3명에게
dev-team-sa할당 (만료일 설정)
시나리오 2: 운영팀 다중 네임스페이스 관리
상황: 운영팀에게 prod, staging 네임스페이스 관리 권한 부여
단계:
- 권한 관리 탭의 서비스 계정 서브 탭에서 SA 생성:
ops-team-sa(SSH로 클러스터에 즉시 생성됨) - 권한 템플릿 서브 탭에서
admin카드 클릭 →ops-team-sa선택 →prod적용 - 권한 템플릿 서브 탭에서
admin카드 클릭 →ops-team-sa선택 →staging적용 - 통합 계정 관리 서브 탭에서 운영팀 사용자에게
ops-team-sa할당
문제 해결
SA 동기화 실패
- 권한 오류가 발생하는 경우: KIOPS가 사용하는 ServiceAccount에 RBAC 리소스 생성 권한이 부족합니다. 클러스터 관리자에게 ClusterRole 및 RoleBinding 생성 권한을 요청하세요.
- 네임스페이스를 찾을 수 없는 경우: 바인딩하려는 네임스페이스가 클러스터에 존재하지 않습니다. 먼저 해당 네임스페이스를 생성한 후 다시 시도하세요.
- 연결 실패가 발생하는 경우: 클러스터와의 네트워크 연결에 문제가 있습니다. 런타임 환경 페이지에서 클러스터 연결 상태를 확인하고, 필요시 재연결하세요.
사용자가 리소스 접근 불가
- 원인 1: SA가 할당되지 않음 → 통합 계정 관리 탭에서 SA 할당 확인
- 원인 2: 만료일이 지남 → 만료일 갱신 또는 재할당
- 원인 3: 클러스터 미동기화 → 동기화 버튼 클릭
보안 권장사항
RBAC을 안전하게 운영하기 위한 보안 권장사항입니다.
RBAC 설정은 한 번 하고 끝나는 것이 아닙니다. 정기적으로 검토하고 업데이트하세요.
-
최소 권한 원칙: 사용자에게 필요한 최소 권한만 부여합니다. "혹시 필요할지 몰라서" 더 많은 권한을 주지 마세요.
-
정기 검토: 분기별로 SA 할당과 바인딩을 검토합니다. 퇴사자나 프로젝트 종료로 불필요해진 권한을 정리하세요.
-
만료일 활용: 사용자 SA 할당 시 가능하면 만료일을 설정하여 자동으로 권한이 회수되도록 합니다.
-
감사 로그 확인: RBAC 변경사항을 정기적으로 확인합니다. 비정상적인 변경이 있는지 모니터링하세요.
-
네임스페이스 분리: dev, staging, prod 등 환경별로 네임스페이스를 분리하면 실수로 인한 영향을 최소화할 수 있습니다.