Cluster Roles and Role Bindings

Yu Sang Min·2025년 6월 20일

CKA

목록 보기
55/110
post-thumbnail

🌐 ClusterRole & ClusterRoleBinding 이해하기


🧭 네임스페이스 기반 Role과의 차이점

  • RoleRoleBinding네임스페이스 범위 리소스에 대한 권한 제어에 사용
  • ClusterRoleClusterRoleBinding클러스터 범위 리소스에 대한 권한 제어에 사용
  • 네임스페이스를 지정하지 않으면 Roledefault 네임스페이스에 생성
  • Node, PersistentVolume, Namespace 등의 리소스는 클러스터 범위 리소스로 분류
  • kubectl api-resources --namespaced=true|false 명령으로 각 리소스 범위 확인 가능

🏗 ClusterRole 정의 방법

  • ClusterRoleRole과 구조는 유사하나, 클러스터 전체에서 유효
  • 예: 클러스터 관리자에게 nodes 리소스 전체에 대한 접근 권한 부여 가능

🧾 ClusterRole YAML 예시

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: cluster-admin-role
rules:
  - apiGroups: [""]
    resources: ["nodes"]
    verbs: ["get", "list", "create", "delete"]
  • resources: 접근할 리소스 설정 (nodes 등)
  • verbs: 허용할 동작 설정 (get, list, create, delete 등)

🔗 사용자와 ClusterRole 연결: ClusterRoleBinding

  • ClusterRoleBinding은 사용자 또는 서비스 계정을 ClusterRole에 연결
  • 네임스페이스에 종속되지 않고 클러스터 전역에 적용

🧾 ClusterRoleBinding YAML 예시

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: cluster-admin-binding
subjects:
  - kind: User
    name: cluster-admin-user
    apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: cluster-admin-role
  apiGroup: rbac.authorization.k8s.io
  • subjects: 사용자 정보 입력
  • roleRef: 연결할 ClusterRole 정보 명시

📌 주요 참고사항

  • ClusterRole클러스터 범위 리소스 제어가 주요 목적

  • 하지만 네임스페이스 리소스에 대한 전역 접근 제어에도 활용 가능

    • 예: ClusterRolepods 접근 권한을 주면 모든 네임스페이스의 pod 접근 가능
  • 반면, Role은 특정 네임스페이스 내에서만 리소스 접근 가능


🔍 기본 제공 ClusterRole

  • Kubernetes는 기본적으로 다양한 ClusterRole을 자동 생성

    • 예: cluster-admin, view, edit
  • kubectl get clusterroles 명령으로 확인 가능

  • 실습 환경에서 각 역할의 권한 범위와 용도 확인 가능


✅ 요약

  • ClusterRole은 클러스터 범위 리소스 또는 모든 네임스페이스에 적용되는 권한 정의
  • ClusterRoleBinding을 통해 사용자에게 클러스터 전역 권한 부여 가능
  • 네임스페이스 리소스에도 전역 권한 부여가 필요한 경우 ClusterRole 사용
  • 기본 ClusterRole 존재 여부 및 역할 확인은 클러스터 보안 및 운영에 필수
profile
React, Node.js, AWS, Git, Github, Github Action, Docker, K8S

0개의 댓글