Kubernetes RBAC 완벽 가이드! User·Role·Permission 기반 보안 관리 구조 이해하기

Kubernetes Cluster를 운영하다 보면 여러 사람이 하나의 환경을 함께 관리하게 됩니다.

예를 들어:

개발자

Application 배포

운영자

Cluster 관리

보안 담당자

접근 권한 관리

모든 사용자가 동일한 권한을 가지고 있다면 보안 문제가 발생할 수 있습니다.

예를 들어 개발자가 실수로 Production Database Pod를 삭제하거나, 일반 사용자가 Cluster 전체 설정을 변경하는 상황이 발생할 수 있습니다.

Kubernetes에서는 이러한 문제를 해결하기 위해 RBAC(Role-Based Access Control) 기능을 제공합니다.

RBAC는 사용자 또는 Service Account에게 필요한 권한만 부여하는 Kubernetes 접근 제어 방식입니다.

구성 요소역할
RoleNamespace 내부 권한 정의
ClusterRoleCluster 전체 권한 정의
RoleBinding권한 연결
ServiceAccountApplication 접근 계정

RBAC 구조를 이해하면 Kubernetes 환경에서 최소 권한 원칙을 적용하고 안전한 Cluster 운영이 가능합니다.

Kubernetes RBAC가 필요한 이유

초기 Kubernetes 환경에서는 관리자가 모든 권한을 가지고 작업합니다.

하지만 운영 환경에서는 역할별 접근 제한이 필요합니다.

예:

개발자:

Application 배포 가능

운영자:

Node 관리 가능

모니터링 시스템:

Metric 조회만 가능

Database 담당자:

특정 Namespace 접근 가능

이처럼 필요한 권한만 제공하는 방식이 보안 운영의 기본입니다.

Kubernetes RBAC 기본 구조

RBAC는 크게 네 가지 요소로 구성됩니다.

구조:

User / ServiceAccount

Role 또는 ClusterRole

RoleBinding

Permission 적용

권한을 직접 사용자에게 주는 것이 아니라 Role을 통해 연결합니다.

Kubernetes Role이란?

Role은 특정 Namespace 내부에서 사용할 수 있는 권한을 정의합니다.

예:

개발 Namespace

Pod 조회 권한

Developer 계정 연결

특징:

  • Namespace 범위
  • 특정 Resource 관리
  • 제한적인 접근 제공

예:

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: pod-reader
rules:
- apiGroups:
  - ""
  resources:
  - pods
  verbs:
  - get
  - list

의미:

Pod 조회 권한만 허용합니다.

Kubernetes ClusterRole이란?

ClusterRole은 Cluster 전체 범위의 권한을 정의합니다.

사용 사례:

  • Node 조회
  • 모든 Namespace 접근
  • Cluster Resource 관리

예:

Monitoring 시스템

모든 Namespace Metric 조회

ClusterRole 사용

Cluster 전체 범위에서 활용됩니다.

Kubernetes RoleBinding이란?

RoleBinding은 User와 Role을 연결하는 역할을 합니다.

구조:

Developer User

RoleBinding

Pod 조회 Role

결과:

Developer는 Pod 조회만 가능

Role 자체만 만들어서는 권한이 적용되지 않습니다.

Kubernetes ClusterRoleBinding이란?

ClusterRoleBinding은 ClusterRole을 User 또는 ServiceAccount에 연결합니다.

예:

Admin User

ClusterRoleBinding

Cluster 관리자 권한

Cluster 전체 권한이 필요한 경우 사용합니다.

Kubernetes ServiceAccount란?

ServiceAccount는 Pod가 Kubernetes API에 접근하기 위한 계정입니다.

예:

Monitoring Pod

ServiceAccount

Kubernetes API 조회

Application이 Kubernetes 리소스를 제어해야 할 때 사용합니다.

Kubernetes RBAC 권한 구조 예시

실제 운영 환경:

개발자:

Namespace:

development

권한:

  • Pod 조회
  • Deployment 배포

운영자:

Namespace:

production

권한:

  • Deployment 관리
  • Service 관리

Monitoring:

권한:

  • Metric 조회

역할별 권한 분리가 가능합니다.

Kubernetes RBAC Permission 종류

Kubernetes 권한은 Action 기준으로 정의합니다.

대표적인 Verb:

Verb설명
get조회
list목록 확인
watch변경 감시
create생성
update수정
delete삭제

필요한 작업만 허용하는 것이 중요합니다.

Kubernetes RBAC 최소 권한 원칙

보안 운영에서는 최소 권한 원칙을 적용합니다.

잘못된 방식:

모든 사용자

Cluster Admin 권한

문제:

  • 실수 위험
  • 보안 취약점 증가

올바른 방식:

필요한 권한만 제공

접근 범위 제한

보안 강화

Kubernetes RBAC 확인 방법

현재 Role 확인:

kubectl get roles

ClusterRole 확인:

kubectl get clusterroles

Binding 확인:

kubectl get rolebindings

권한 확인:

kubectl auth can-i get pods

운영 환경에서 자주 사용하는 명령어입니다.

Kubernetes RBAC 장애 사례

권한 설정 문제로 Application이 정상 동작하지 않을 수 있습니다.

문제원인
Permission denied권한 부족
API 접근 실패ServiceAccount 문제
배포 실패Role 부족
Monitoring 오류조회 권한 없음

RBAC 문제는 Log와 Event 확인이 필요합니다.

Kubernetes RBAC와 Security 관계

RBAC는 Kubernetes 보안의 핵심 Layer입니다.

보안 구조:

Authentication

Authorization(RBAC)

Admission Control

Resource 실행

사용자를 확인하고 권한을 검증한 후 작업을 허용합니다.

Kubernetes RBAC 운영 전략

Production 환경에서는 다음 방식을 권장합니다.

항목방법
권한 분리Role 기반 관리
Admin 제한최소 사용
ServiceAccount 관리Application별 분리
권한 검토정기 확인

권한 관리는 지속적인 운영 관리가 필요합니다.

Kubernetes RBAC와 DevOps 관계

CI/CD Pipeline도 Kubernetes 권한이 필요합니다.

구조:

CI/CD System

ServiceAccount

Deployment 권한

Application 배포

자동화 환경에서는 안전한 권한 설정이 중요합니다.

Kubernetes RBAC 장점

장점설명
보안 강화접근 제한
권한 관리역할별 분리
감사 가능접근 추적
자동화 지원ServiceAccount 활용

RBAC는 Kubernetes Production 환경의 기본 보안 기능입니다.

자주 묻는 질문

Role과 ClusterRole 차이는 무엇인가요?

Role은 Namespace 범위이고 ClusterRole은 Cluster 전체 범위의 권한을 관리합니다.

RBAC 없이 Kubernetes를 사용할 수 있나요?

가능하지만 Production 환경에서는 권한 관리 때문에 RBAC 사용이 일반적입니다.

ServiceAccount는 사람 계정인가요?

아닙니다.

Application이나 Kubernetes 내부 Component가 사용하는 계정입니다.

마무리

Kubernetes RBAC는 사용자와 Application의 접근 권한을 역할 기반으로 관리하는 Kubernetes 보안 기능입니다.

구성 요소역할
RoleNamespace 권한
ClusterRoleCluster 권한
RoleBinding권한 연결
ServiceAccountApplication 인증

RBAC 구조를 이해하면 Kubernetes 환경에서 불필요한 접근을 제한하고 안전한 Production Cluster를 운영할 수 있습니다.

다음 글에서는 Kubernetes Application 보안을 강화하는 Kubernetes Pod Security 완벽 가이드! Container 실행 제한과 보안 정책 구조 이해하기를 알아보겠습니다.

댓글 남기기