본문 바로가기
cloud/k8s(문제풀이)

[따배쿠 CKA] 25. User Role binding ( RBAC )

by mozi2 2022. 8. 17.
반응형

*RBAC: Role 에대한 권한 

[k8s docs k.w:  csr]

* API 인증 & 권한

: kubernetes 는 모든 리소스에 대한 접근이 API를 통해서 한다. 

: "kubectl run" 명령어 입력후 API 에 접근하기 위해 인증이 필요하다.

: 이 인증은 k8s 계정에 권한을 부여한다. (인증서로)

: k8s 는 이 인증서를 확인하고, 이에 맞는 권한을 주게한다. 

Q. Cluster: Kubectl config use-context k8s

TASK:
Create the Kubeconfig named ckauser
 - username: ckasuer
 - certificate location: /data/cka/ckauser.crt, /data/cka/ckauser.key
 - context-name: ckauser
 - ckauser cluster must be operated with the privileges of the ckauser account.

Create a role named pod-role that can create, delete, watch, list, get pods.
Create the following rolebinding.
 - name: pod-rolebinding
 - role: pod-role
 - user: ckauser 

: ckauser 가 있고, 인증서가 있다. 

: role: Pod Rule (C, D, W, L, G) -> 만들어라 

: user랑 role이랑 binding 해라 

 

1. role 만들기

*Template*
kubectl create role developer --verb=create --verb=get --verb=list --verb=update --verb=delete --resource=pods

kubectl create role pod-role --verb=create,get,list,update,delete --resource=pods 
  : ns 있을시 뒤에다가 붙이면 됨 
k get role pod-role
k describe role pod-role

 

2. role binding

*Template*
kubectl create rolebinding developer-binding-myuser --role=developer --user=myuser

kubectl create rolebinding pod-rolebinding --role=pod-role --user=ckauser
k get rolebindings pod-rolebinding
k describe rolebindings.rbac.authorization.k8s.io pod-rolebinding

 

3. Add to kubeconfig

*Template*
kubectl config set-credentials myuser --client-key=myuser.key --client-certificate=myuser.crt --embed-certs=true

kubectl config set-credentials ckauser --client-key=/data/cka/ckauser.key --client-certificate=/data/cka/ckauser.crt --embed-certs=true

 

4. 확인

kubectl config view

 : 잘 바인딩 되었으면, user -> name 에 추가 된 것을 확인 할 수 있다. 

*테스틓 환경이라 다름

5. context 추가

*Template*
kubectl config set-context myuser --cluster=kubernetes --user=myuser

kubectl config set-context ckauser --cluster=kubernetes --user=ckauser
kubectl config use-context ckauser

6. context switch

 k config use-context ckauser 

7. 확인

 : 잘 되면 됨 

kubectl get pods 

kubectl get svc: 접근제한으로 인해 pod 까지만 가능하면 됨 

 

* 본 게시글은 "TTABAE-LEARN" 을 보고 정리한 내용입니다.

728x90
반응형