
Role과 RoleBinding은 네임스페이스 범위 리소스에 대한 권한 제어에 사용ClusterRole과 ClusterRoleBinding은 클러스터 범위 리소스에 대한 권한 제어에 사용Role은 default 네임스페이스에 생성Node, PersistentVolume, Namespace 등의 리소스는 클러스터 범위 리소스로 분류kubectl api-resources --namespaced=true|false 명령으로 각 리소스 범위 확인 가능ClusterRole은 Role과 구조는 유사하나, 클러스터 전체에서 유효nodes 리소스 전체에 대한 접근 권한 부여 가능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 등)ClusterRoleBinding은 사용자 또는 서비스 계정을 ClusterRole에 연결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은 클러스터 범위 리소스 제어가 주요 목적
하지만 네임스페이스 리소스에 대한 전역 접근 제어에도 활용 가능
ClusterRole에 pods 접근 권한을 주면 모든 네임스페이스의 pod 접근 가능반면, Role은 특정 네임스페이스 내에서만 리소스 접근 가능
Kubernetes는 기본적으로 다양한 ClusterRole을 자동 생성
cluster-admin, view, edit 등kubectl get clusterroles 명령으로 확인 가능
실습 환경에서 각 역할의 권한 범위와 용도 확인 가능
ClusterRole은 클러스터 범위 리소스 또는 모든 네임스페이스에 적용되는 권한 정의ClusterRoleBinding을 통해 사용자에게 클러스터 전역 권한 부여 가능ClusterRole 사용ClusterRole 존재 여부 및 역할 확인은 클러스터 보안 및 운영에 필수