Kubernetes 환경에서는 여러 사용자와 Application이 하나의 Cluster를 함께 사용합니다.
운영 환경에서는 모든 사용자가 모든 Resource에 접근할 수 있도록 설정하면 보안 문제가 발생할 수 있습니다.
Kubernetes에서는 이러한 문제를 해결하기 위해 RBAC(Role-Based Access Control) 기능을 제공합니다.
RBAC는 사용자, Service Account, Application에 필요한 권한만 부여하는 Kubernetes 보안 관리 방식입니다.
| 구성 요소 | 역할 |
|---|---|
| RBAC | 권한 관리 시스템 |
| Role | 권한 정의 |
| RoleBinding | 권한 연결 |
| ServiceAccount | Application 인증 계정 |
| User | 사용자 계정 |
RBAC를 활용하면 최소 권한 원칙에 따라 안전한 Kubernetes 운영 환경을 구성할 수 있습니다.
Kubernetes RBAC란 무엇인가?
RBAC(Role-Based Access Control)는 역할(Role)을 기반으로 Kubernetes Resource 접근 권한을 관리하는 기능입니다.
사용자마다 필요한 권한만 부여하여 불필요한 접근을 제한합니다.
예:
| 사용자 | 권한 |
|---|---|
| Developer | Application 배포 가능 |
| Operator | 운영 Resource 관리 |
| Viewer | 조회만 가능 |
| Administrator | 전체 관리 |
RBAC는 Kubernetes 보안 구조에서 가장 중요한 접근 제어 기능 중 하나입니다.
Kubernetes RBAC 동작 구조
RBAC는 크게 Role과 Binding 구조로 동작합니다.
구조:
| 구성 요소 | 역할 |
|---|---|
| User | 접근 사용자 |
| Role | 권한 정의 |
| RoleBinding | 사용자와 권한 연결 |
| Resource | 접근 대상 |
동작 과정:
| 단계 | 내용 |
|---|---|
| 1단계 | 사용자 요청 발생 |
| 2단계 | API Server 인증 확인 |
| 3단계 | RBAC 권한 확인 |
| 4단계 | 허용된 작업 수행 |
Kubernetes API Server는 모든 요청을 RBAC 정책과 비교하여 접근 가능 여부를 판단합니다.
Kubernetes Role이란?
Role은 Kubernetes Resource에 대한 권한을 정의하는 객체입니다.
어떤 Resource에 어떤 작업을 수행할 수 있는지 설정합니다.
예:
| 권한 | 설명 |
|---|---|
| get | 조회 |
| list | 목록 확인 |
| create | 생성 |
| update | 수정 |
| delete | 삭제 |
Role 설정 예:
| Resource | 허용 작업 |
|---|---|
| Pod | get, list |
| Deployment | get, create, update |
| Service | get |
Role은 특정 Namespace 내부에서만 적용됩니다.
Kubernetes ClusterRole이란?
ClusterRole은 Cluster 전체 범위에서 적용되는 권한 설정입니다.
Role과 달리 Namespace 제한 없이 사용할 수 있습니다.
비교:
| 구분 | Role | ClusterRole |
|---|---|---|
| 범위 | Namespace 내부 | Cluster 전체 |
| 대상 | 일반 Resource | 전체 Resource |
| 사용 목적 | 제한된 권한 | 관리 권한 |
Cluster 수준의 Resource 관리나 여러 Namespace에서 동일한 권한이 필요할 때 사용합니다.
Kubernetes RoleBinding이란?
RoleBinding은 Role에서 정의한 권한을 사용자 또는 ServiceAccount에 연결하는 역할을 합니다.
구조:
| 구성 요소 | 역할 |
|---|---|
| Role | 권한 정의 |
| User | 권한 대상 |
| RoleBinding | 연결 관리 |
예:
| 사용자 | Role |
|---|---|
| developer | app-manager |
| viewer | read-only |
Role만 생성해도 권한은 적용되지 않으며 RoleBinding을 통해 연결해야 합니다.
Kubernetes ClusterRoleBinding이란?
ClusterRoleBinding은 ClusterRole 권한을 사용자에게 연결하는 기능입니다.
전체 Cluster 범위의 권한을 부여할 때 사용합니다.
| 구분 | 설명 |
|---|---|
| RoleBinding | Namespace 범위 권한 연결 |
| ClusterRoleBinding | Cluster 전체 권한 연결 |
Administrator 권한이나 운영 관리자 권한 설정에 많이 사용됩니다.
Kubernetes ServiceAccount란?
ServiceAccount는 Application이 Kubernetes API Server와 통신하기 위한 인증 계정입니다.
일반 사용자 계정과 다르게 Application용으로 사용됩니다.
예:
| 대상 | 사용 계정 |
|---|---|
| 개발자 | User Account |
| Application | ServiceAccount |
Pod가 Kubernetes API를 사용할 경우 ServiceAccount 권한 설정이 필요합니다.
Kubernetes RBAC 권한 확인 방법
운영 환경에서는 현재 권한을 확인하는 것이 중요합니다.
주요 명령어:
| 명령어 | 용도 |
|---|---|
| kubectl auth can-i | 권한 확인 |
| kubectl get role | Role 확인 |
| kubectl get rolebinding | Binding 확인 |
| kubectl get serviceaccount | 계정 확인 |
예:
| 확인 내용 | 결과 |
|---|---|
| Pod 생성 가능 여부 | 허용 또는 차단 |
| Deployment 수정 가능 여부 | 권한 확인 |
RBAC 권한 확인은 보안 관리의 기본 과정입니다.
Kubernetes RBAC 보안 원칙
RBAC 운영에서는 최소 권한 원칙이 중요합니다.
| 원칙 | 설명 |
|---|---|
| Least Privilege | 필요한 권한만 제공 |
| 권한 분리 | 역할별 접근 제한 |
| 정기 검토 | 불필요 권한 제거 |
| 감사 관리 | 접근 기록 확인 |
모든 사용자에게 Administrator 권한을 부여하면 보안 위험이 증가할 수 있습니다.
Kubernetes RBAC 활용 사례
RBAC는 다양한 운영 환경에서 활용됩니다.
| 사용자 | 권한 예 |
|---|---|
| Developer | 개발 Namespace 관리 |
| Tester | 테스트 환경 접근 |
| Operator | 운영 관리 |
| Viewer | 조회 전용 |
조직 규모가 커질수록 RBAC 기반 권한 관리의 중요성은 증가합니다.
Kubernetes RBAC 장점
| 장점 | 설명 |
|---|---|
| 보안 강화 | 불필요한 접근 제한 |
| 권한 관리 | 사용자별 제어 가능 |
| 운영 안정성 | 실수 방지 |
| 감사 대응 | 접근 관리 기록 가능 |
RBAC는 Kubernetes Production 환경에서 필수적인 보안 기능입니다.
자주 묻는 질문
Role과 ClusterRole의 차이는 무엇인가요?
Role은 특정 Namespace 안에서만 적용되고 ClusterRole은 전체 Cluster 범위에서 사용할 수 있습니다.
RoleBinding이 필요한 이유는 무엇인가요?
Role은 권한만 정의하며 실제 사용자에게 권한을 적용하려면 RoleBinding 연결이 필요합니다.
ServiceAccount는 왜 사용하나요?
Application이 Kubernetes API Server와 안전하게 통신하기 위한 인증 계정입니다.
마무리
Kubernetes RBAC는 사용자와 Application의 접근 권한을 안전하게 관리하는 핵심 보안 기능입니다.
| 구성 요소 | 역할 |
|---|---|
| Role | 권한 정의 |
| RoleBinding | 권한 연결 |
| ClusterRole | 전체 Cluster 권한 |
| ServiceAccount | Application 인증 |
RBAC를 활용하면 Kubernetes 환경에서 필요한 사용자에게 필요한 권한만 제공하고 안전한 운영 환경을 구축할 수 있습니다.
다음 글에서는 Kubernetes 보안과 네트워크 접근 제어를 위한 Kubernetes Network Policy 완벽 가이드! Pod 간 통신 제어와 보안 구조 이해하기를 알아보겠습니다.