Section 7-5. Cluster Roles and RoleBindings
udemy의 Certified Kubernetes Administrator (CKA) with Practice Tests 강의 및 쿠버네티스 인 액션 (마르코 룩샤)를 참고하여 정리한 글입니다.
07. Security
Cluster Roles and RoleBindings
1
2
3
4
5
6
7
8
9
10
11
12
+============================================================+
| |
| +--------------------+ +----------------------------+ |
| | pods replicasets | | nodes PV | |
| | jobs deployments | | clusterroles | |
| | services secrets | | clusterrolebindings | |
| | roles rolebindings | | certificatesigningrequests | |
| | configmaps PVC | | namespaces | |
| | | | | |
| +---- Namespaced ----+ +----- Cluster Scroped ------+ |
| |
+============================================================+
- Role과 RoleBinding은 namespace 내에서 생성되고 그 namespace안에서만 액세스를 제어할 수 있다.
- 즉 노드나 PV 같은 클러스터 스코프의 리소스에는 연결되지 않는다.
- 다음 명령어를 통해 리소스 목록을 확인할 수 있다.
- Namespaced :
kubectl api-resources --namespaced=true
- Cluster Scoped :
kubectl api-resources --namespaced=false
- Namespaced :
Cluster Resource에 Authorization 하는 방법
- Cluster Role과 ClusterRoleBinding을 사용할 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
+===============================================+
| # 그룹 # 권한 모음 |
| +------------------+ |
| cluster-admin =====> | Can view Nodes | |
| | Can create Nodes | |
| | Can Delete Nodes | |
| | ... | |
| | | |
| | Cluster Admin | |
| +------------------+ |
| |
+===============================================+
- 해당 예제의 ClusterRole을 만들고 바인딩해보자.
Role 생성
1
2
3
4
5
6
7
8
9
10
# developer-role.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: cluster-administrator
rules:
- apiGroups: [""] # "" indicates the core API group
resources: ["nodes"]
verbs: ["list", "get", "create", "delete"]
사용자를 ClusterRole에 링크하기 (ClusterRoleBinding 생성)
1
2
3
4
5
6
7
8
9
10
11
12
13
# cluster-admin-role-binding.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: cluster-admin-role-binding
subjects:
- kind: User
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: cluster-administrator
apiGroup: rbac.authorization.k8s.io
- RoleRef : 이전에 생성한 ClusterRole의 세부 사항과 일치시킨다.
This post is licensed under CC BY 4.0 by the author.