Kubernetes Cluster를 운영할 때 모든 사용자와 Application에게 동일한 권한을 제공하면 보안 문제가 발생할 수 있습니다.
예를 들어 개발자가 모든 Namespace의 Pod를 삭제할 수 있거나, Application이 불필요한 Kubernetes Resource에 접근할 수 있다면 운영 환경에 큰 위험이 될 수 있습니다.
Kubernetes에서는 이러한 문제를 해결하기 위해 RBAC(Role-Based Access Control) 기능을 제공합니다.
RBAC는 사용자(User), Application(ServiceAccount), Group에게 필요한 권한만 부여하는 Kubernetes 접근 제어 방식입니다.
| 구성 요소 | 역할 |
|---|---|
| Role | Namespace 단위 권한 정의 |
| ClusterRole | Cluster 전체 권한 정의 |
| RoleBinding | 권한 연결 |
| ClusterRoleBinding | Cluster 권한 연결 |
RBAC 구조를 이해하면 Kubernetes 환경에서 안전한 접근 관리와 최소 권한 운영 방식을 구축할 수 있습니다.
Kubernetes RBAC란 무엇인가?
RBAC(Role-Based Access Control)는 역할(Role)을 기반으로 Kubernetes Resource 접근 권한을 관리하는 기능입니다.
사용자에게 직접 권한을 부여하지 않고 Role을 통해 권한을 정의한 뒤 연결하는 방식입니다.
기존 방식:
사용자
↓
직접 권한 부여
RBAC 방식:
사용자
↓
RoleBinding
↓
Role
↓
Permission
권한과 사용자를 분리하여 관리할 수 있습니다.
Kubernetes RBAC가 필요한 이유
Kubernetes Cluster에는 다양한 사용자가 접근합니다.
예:
| 사용자 | 필요 권한 |
|---|---|
| 개발자 | Application 배포 |
| 운영자 | Cluster 관리 |
| Monitoring Tool | 상태 조회 |
| CI/CD Tool | 자동 배포 |
모든 사용자에게 관리자 권한을 제공하면 보안 위험이 증가합니다.
RBAC를 사용하면 필요한 권한만 제공할 수 있습니다.
Kubernetes RBAC 동작 구조
RBAC는 Role과 Binding Resource를 통해 동작합니다.
구조:
| 구성 요소 | 역할 |
|---|---|
| User | 접근 주체 |
| ServiceAccount | Application Identity |
| Role | 권한 정의 |
| Binding | 권한 연결 |
| API Server | 권한 검증 |
동작 과정:
| 단계 | 내용 |
|---|---|
| 1단계 | 사용자 요청 발생 |
| 2단계 | API Server 인증 |
| 3단계 | RBAC 권한 확인 |
| 4단계 | 허용 또는 거부 |
| 5단계 | Resource 접근 |
API Server가 모든 요청 권한을 검증합니다.
Kubernetes Role이란?
Role은 특정 Namespace 내부 Resource 권한을 정의하는 Resource입니다.
Namespace 범위에서만 적용됩니다.
예:
개발 Namespace:
Pod 조회 가능
Service 조회 가능
하지만 다른 Namespace 접근 불가
구조:
Role
↓
Namespace Resource 권한 정의
↓
RoleBinding 연결
특정 영역만 관리할 때 사용합니다.
Kubernetes ClusterRole이란?
ClusterRole은 Cluster 전체 범위의 권한을 정의합니다.
Namespace에 제한되지 않고 여러 Namespace 또는 Cluster Resource에 적용할 수 있습니다.
사용 사례:
| 대상 | 권한 |
|---|---|
| Node | 조회 |
| Namespace | 관리 |
| 전체 Pod | 조회 |
| Cluster Resource | 접근 |
Monitoring Tool이나 Cluster 관리 Component에서 많이 사용합니다.
Kubernetes Role과 ClusterRole 차이
두 Resource는 권한 범위가 다릅니다.
| 구분 | Role | ClusterRole |
|---|---|---|
| 범위 | Namespace | Cluster 전체 |
| 대상 | Namespace Resource | Cluster Resource |
| 사용 사례 | 개발자 권한 | 관리자 권한 |
| 확장성 | 제한적 | 높음 |
환경에 맞는 권한 범위를 선택해야 합니다.
Kubernetes RoleBinding이란?
RoleBinding은 Role 또는 ClusterRole을 사용자에게 연결하는 Resource입니다.
Role 자체는 권한 정의만 하고 실제 적용은 Binding을 통해 이루어집니다.
구조:
User
↓
RoleBinding
↓
Role
↓
Permission
예:
Developer User
↓
dev-role
↓
Pod 생성 가능
Kubernetes ClusterRoleBinding이란?
ClusterRoleBinding은 ClusterRole 권한을 User, Group, ServiceAccount에 연결합니다.
예:
Admin Group
↓
ClusterRoleBinding
↓
cluster-admin
↓
전체 Cluster 관리
전체 Cluster 운영 권한을 부여할 때 사용합니다.
Kubernetes RBAC 권한 Rule 구조
RBAC Rule은 어떤 Resource에 어떤 작업을 허용할지 정의합니다.
구성:
| 항목 | 설명 |
|---|---|
| apiGroups | API 그룹 |
| resources | 대상 Resource |
| verbs | 허용 작업 |
Verb 예:
| Verb | 의미 |
|---|---|
| get | 조회 |
| list | 목록 확인 |
| create | 생성 |
| update | 수정 |
| delete | 삭제 |
세밀한 권한 설정이 가능합니다.
Kubernetes Verb 권한 관리
RBAC에서는 작업 단위로 권한을 제한합니다.
예:
개발자:
허용:
Pod 조회
Deployment 생성
제한:
Node 삭제
Namespace 삭제
최소 권한 원칙을 적용할 수 있습니다.
Kubernetes RBAC와 ServiceAccount 관계
ServiceAccount는 Application의 Identity 역할을 합니다.
RBAC와 연결하여 Pod의 Kubernetes API 접근 권한을 관리합니다.
구조:
Pod
↓
ServiceAccount
↓
RoleBinding
↓
Role
↓
API 접근
Operator와 자동화 Tool에서 많이 활용됩니다.
Kubernetes RBAC 활용 사례
| 활용 사례 | 설명 |
|---|---|
| 개발자 권한 관리 | Namespace 제한 |
| CI/CD 자동 배포 | 배포 권한 제공 |
| Monitoring | 조회 권한 제공 |
| Operator | Resource 관리 권한 |
Production Kubernetes 환경에서 필수적인 보안 기능입니다.
Kubernetes RBAC 운영 시 고려사항
RBAC는 권한을 많이 주는 것보다 필요한 만큼만 설정하는 것이 중요합니다.
| 항목 | 설명 |
|---|---|
| 최소 권한 | 필요한 작업만 허용 |
| 정기 검토 | 불필요 권한 제거 |
| ServiceAccount 분리 | Application별 관리 |
| Audit Log | 접근 기록 확인 |
권한 관리는 Kubernetes 보안의 핵심입니다.
Kubernetes RBAC 보안 강화 방법
권장 방법:
| 방법 | 효과 |
|---|---|
| cluster-admin 제한 | 과도한 권한 방지 |
| Namespace 분리 | 환경 격리 |
| 전용 Role 생성 | 권한 관리 |
| Token 보호 | 인증 정보 보호 |
RBAC 정책을 잘 설계하면 보안 수준을 크게 향상시킬 수 있습니다.
Kubernetes RBAC 장점
| 장점 | 설명 |
|---|---|
| 접근 제어 | 사용자 권한 관리 |
| 보안 강화 | 최소 권한 적용 |
| 관리 편의 | Role 기반 관리 |
| 확장성 | 대규모 Cluster 지원 |
RBAC는 Kubernetes 보안 Architecture의 핵심 기능입니다.
자주 묻는 질문
Role과 ClusterRole 차이는 무엇인가요?
Role은 특정 Namespace 범위 권한이고 ClusterRole은 Cluster 전체 범위 권한입니다.
RoleBinding과 ClusterRoleBinding 차이는 무엇인가요?
RoleBinding은 Namespace 범위 연결이고 ClusterRoleBinding은 Cluster 전체 권한 연결입니다.
RBAC 없이 Kubernetes를 사용할 수 있나요?
가능하지만 Production 환경에서는 보안을 위해 RBAC 사용이 일반적입니다.
마무리
Kubernetes RBAC는 User, ServiceAccount, Application의 Kubernetes Resource 접근 권한을 관리하는 핵심 보안 기능입니다.
| 구성 요소 | 역할 |
|---|---|
| Role | Namespace 권한 정의 |
| ClusterRole | Cluster 권한 정의 |
| RoleBinding | 권한 연결 |
| ClusterRoleBinding | 전체 권한 연결 |
RBAC 구조를 이해하면 Kubernetes 환경에서 사용자와 Application에게 필요한 권한만 제공하고 안전한 Cluster 운영 환경을 구축할 수 있습니다.
다음 글에서는 Kubernetes Network 보안과 접근 제한을 위한 Kubernetes NetworkPolicy 완벽 가이드! Pod 통신 제어와 Traffic 보안 구조 이해하기를 알아보겠습니다.