Section 7-4. RBAC
udemy의 Certified Kubernetes Administrator (CKA) with Practice Tests 강의 및 쿠버네티스 인 액션 (마르코 룩샤)를 참고하여 정리한 글입니다.
Section07. Security
RBAC (Role Based Access Controls)
1
2
3
4
5
6
7
8
9
10
11
12
+===============================================+
| # 그룹 # 권한 모음 |
| +------------------+ |
| dev-user =====> | Can view Pods | |
| | Can create Pods | |
| | Can Delete Pods | |
| | ... | |
| | | |
| | Developer | |
| +------------------+ |
| |
+===============================================+
- 해당 예제의 Role을 만들고 dev-user와 바인딩해보자.
Role 생성
1
2
3
4
5
6
7
8
9
10
11
12
13
# developer-role.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: developer
rules:
- apiGroups: [""] # "" indicates the core API group
resources: ["pods"]
verbs: ["list", "get", "create", "update", "delete"]
- apiGroups: [""]
resources: ["ConfigMap"]
verbs: ["create"]
- apiGroups : core group은 비울 수 있다.
- resources : 접근 권한을 부여할 리소스
- verb : 해당 리소스에 부여할 권한
사용자를 Role에 링크하기 (RoleBinding 생성)
1
2
3
4
5
6
7
8
9
10
11
12
13
# devuser-developer-binding.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: devuser-developer-binding
subjects:
- kind: User
name: dev-user
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role
name: developer
apiGroup: rbac.authorization.k8s.io
- RoleRef : 이전에 생성한 Role의 세부 사항과 일치시킨다.
RBAC 확인하기
- Role 확인
1 2 3
$ kubecel get roles $ kubectl describe role developer
- RoleBinding 확인
1 2 3
$ kubecel get rolebindings $ kubecel describe rolebindings devuser-developer-binding
접근 권한 확인하기
1
2
3
4
5
6
7
8
9
10
11
12
13
$ kubectl auth can-i <행동> <리소스>
$ kubectl auth can-i create deployments
> yes
$ kubectl auth can-i delete nodes
> no
$ kubectl auth can-i create deployments --as dev-user
> no
$ kubectl auth can-i create pods --as dev-user
> yes
- 관리자일경우
--as
옵션을 통해 다른 유저의 권한을 확인할 수 있다.
This post is licensed under CC BY 4.0 by the author.