Post

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

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.