Kubernetes Cluster는 여러 사용자와 Application이 함께 사용하는 환경이기 때문에 접근 권한 관리가 매우 중요합니다.
관리자, 개발자, 운영자, Application마다 필요한 권한은 서로 다릅니다.
예를 들어 개발자는 Application 배포 권한이 필요하지만 Cluster 전체 설정을 변경할 권한은 필요하지 않을 수 있습니다.
Kubernetes에서는 이러한 접근 제어를 위해 RBAC(Role-Based Access Control) 기능을 제공합니다.
RBAC는 사용자와 ServiceAccount에게 필요한 권한만 부여하여 Kubernetes Resource 접근을 관리하는 보안 기능입니다.
| 구성 요소 | 역할 |
|---|---|
| Role | Namespace 내부 권한 정의 |
| ClusterRole | Cluster 전체 권한 정의 |
| RoleBinding | 사용자와 Role 연결 |
| ClusterRoleBinding | ClusterRole과 사용자 연결 |
RBAC를 활용하면 최소 권한 원칙을 적용하고 안전한 Kubernetes 운영 환경을 구성할 수 있습니다.
Kubernetes RBAC란 무엇인가?
RBAC(Role-Based Access Control)는 역할(Role)을 기반으로 Kubernetes Resource 접근 권한을 관리하는 방식입니다.
사용자에게 직접 권한을 부여하는 것이 아니라 Role을 생성하고 필요한 사용자 또는 Application에 연결합니다.
기본 구조:
사용자(User)
↓
RoleBinding
↓
Role
↓
Permission
이러한 구조를 통해 권한 관리와 운영 정책을 쉽게 관리할 수 있습니다.
Kubernetes RBAC가 필요한 이유
Kubernetes Cluster에는 다양한 사용자가 접근합니다.
모든 사용자에게 관리자 권한을 제공하면 보안 위험이 증가합니다.
문제 상황:
| 상황 | 위험 |
|---|---|
| 개발자에게 관리자 권한 제공 | 잘못된 Resource 삭제 가능 |
| Application에 높은 권한 제공 | 보안 위험 증가 |
| 공용 계정 사용 | 접근 추적 어려움 |
RBAC를 적용하면 필요한 권한만 제공할 수 있습니다.
Kubernetes RBAC 동작 구조
RBAC는 네 가지 주요 Resource로 구성됩니다.
구조:
| 구성 요소 | 역할 |
|---|---|
| User | 사용자 계정 |
| Role | 권한 정의 |
| Binding | 권한 연결 |
| Resource | 접근 대상 |
동작 과정:
| 단계 | 내용 |
|---|---|
| 1단계 | Role 생성 |
| 2단계 | Permission 정의 |
| 3단계 | User 또는 ServiceAccount 연결 |
| 4단계 | API Server 권한 확인 |
| 5단계 | 요청 허용 또는 거부 |
API Server는 모든 요청을 RBAC 정책 기준으로 검증합니다.
Kubernetes Role이란?
Role은 특정 Namespace 내부에서 사용할 수 있는 권한을 정의하는 Resource입니다.
어떤 Resource에 어떤 작업을 할 수 있는지 지정합니다.
예:
| Resource | Action |
|---|---|
| Pod | get, list, create |
| Service | get, update |
| Deployment | delete 제한 |
Role은 Namespace 단위로 동작합니다.
Kubernetes ClusterRole이란?
ClusterRole은 Cluster 전체 범위에서 사용할 수 있는 권한을 정의합니다.
Namespace를 넘어 전체 Kubernetes Resource에 접근할 수 있습니다.
사용 사례:
| 대상 | 용도 |
|---|---|
| Node 관리 | Cluster 정보 접근 |
| Monitoring | 전체 Resource 조회 |
| Storage 관리 | Cluster Resource 관리 |
관리자 수준 권한이 필요한 경우 ClusterRole을 사용합니다.
Kubernetes Role과 ClusterRole 차이
두 Resource는 권한 범위에서 차이가 있습니다.
| 구분 | Role | ClusterRole |
|---|---|---|
| 범위 | Namespace | 전체 Cluster |
| 대상 | Namespace Resource | Cluster Resource |
| 사용 예 | 개발자 권한 | 관리자 권한 |
| 확장성 | 제한적 | 높음 |
운영 환경에서는 목적에 맞게 선택해야 합니다.
Kubernetes RoleBinding이란?
RoleBinding은 Role과 User 또는 ServiceAccount를 연결하는 기능입니다.
Role만 생성하면 권한이 적용되지 않으며 Binding 과정이 필요합니다.
구조:
User
↓
RoleBinding
↓
Role
예:
개발자 계정
↓
backend-role 연결
↓
Backend Namespace 접근 가능
RoleBinding은 Namespace 범위에서 동작합니다.
Kubernetes ClusterRoleBinding이란?
ClusterRoleBinding은 ClusterRole을 User 또는 ServiceAccount와 연결합니다.
전체 Cluster 범위 권한을 부여할 때 사용합니다.
예:
| 대상 | 권한 |
|---|---|
| Platform Admin | Cluster 관리자 |
| Monitoring Tool | 전체 조회 권한 |
높은 권한을 제공하기 때문에 신중하게 관리해야 합니다.
Kubernetes ServiceAccount와 RBAC 관계
ServiceAccount는 Pod 내부 Application이 Kubernetes API에 접근할 때 사용하는 계정입니다.
예:
Monitoring Application
↓
ServiceAccount
↓
ClusterRole
↓
Kubernetes API 접근
Application별 권한을 분리할 수 있어 보안 강화에 도움이 됩니다.
Kubernetes RBAC Permission 구조
RBAC 권한은 Resource와 Verb 조합으로 정의됩니다.
주요 Verb:
| Verb | 의미 |
|---|---|
| get | 조회 |
| list | 목록 확인 |
| watch | 변경 감시 |
| create | 생성 |
| update | 수정 |
| delete | 삭제 |
예:
Pod 조회만 허용:
Resource:
Pod
Verb:
get, list
이처럼 세밀한 권한 설정이 가능합니다.
Kubernetes RBAC 최소 권한 원칙
Production 환경에서는 최소 권한 원칙이 중요합니다.
권장 방식:
| 방법 | 설명 |
|---|---|
| 필요한 권한만 제공 | 불필요한 접근 차단 |
| Application별 계정 분리 | 권한 분리 |
| 관리자 권한 제한 | 보안 강화 |
| 정기 권한 검토 | 불필요 권한 제거 |
RBAC는 Kubernetes 보안의 핵심 요소입니다.
Kubernetes RBAC와 API Server 관계
API Server는 모든 요청을 RBAC 정책으로 확인합니다.
구조:
Client 요청
↓
Authentication
↓
Authorization(RBAC)
↓
Resource 접근
RBAC는 Kubernetes Authorization 단계에서 동작합니다.
Kubernetes RBAC 운영 시 고려사항
운영 환경에서는 권한 관리 정책이 필요합니다.
| 항목 | 설명 |
|---|---|
| 권한 최소화 | 과도한 권한 방지 |
| Role 관리 | 역할별 구분 |
| Audit Log | 접근 기록 확인 |
| ServiceAccount 관리 | Application 권한 보호 |
잘못된 RBAC 설정은 보안 사고로 이어질 수 있습니다.
Kubernetes RBAC 장점
| 장점 | 설명 |
|---|---|
| 보안 강화 | 접근 제한 가능 |
| 권한 관리 | 역할 기반 운영 |
| 추적 가능 | 사용자별 관리 |
| 확장성 | 대규모 Cluster 지원 |
RBAC는 Kubernetes Production 운영에서 필수적인 보안 기능입니다.
자주 묻는 질문
Role과 ClusterRole 차이는 무엇인가요?
Role은 특정 Namespace 내부 권한을 관리하고 ClusterRole은 전체 Cluster 범위 권한을 관리합니다.
Role만 만들면 권한이 적용되나요?
아닙니다.
RoleBinding 또는 ClusterRoleBinding으로 사용자나 ServiceAccount와 연결해야 합니다.
ServiceAccount는 왜 필요한가요?
Pod 내부 Application이 Kubernetes API에 접근할 때 필요한 인증 계정입니다.
마무리
Kubernetes RBAC는 User, Application, Resource 접근 권한을 안전하게 관리하는 핵심 보안 기능입니다.
| 구성 요소 | 역할 |
|---|---|
| Role | Namespace 권한 정의 |
| ClusterRole | Cluster 권한 정의 |
| RoleBinding | 권한 연결 |
| ServiceAccount | Application 인증 |
RBAC 구조를 이해하면 Kubernetes 환경에서 사용자와 Application의 접근 권한을 안전하게 관리하고 최소 권한 기반 운영 환경을 구축할 수 있습니다.
다음 글에서는 Kubernetes 환경 설정과 민감 데이터 관리를 위한 Kubernetes ConfigMap과 Secret 완벽 가이드! Application 설정과 보안 데이터 관리 구조 이해하기를 알아보겠습니다.