반응형
이번에는 새로운 ServiceAccount(이하 SA)과 Role을 만들고 RoleBinding을 통하여 매핑하여 해당 SA 가 제한된 기능만을 수행할 수 있는지를 확인한다.
먼저 Service Account를 생성한다.
kubectl -n test-namespace create sa test-sa
serviceaccount/test-sa created
이후에 secret 과 configmap 을 생성만 할 수 있는 Role을 생성한다.
kubectl -n test-registry create role test-role \
--verb=create \
--resource=secret \
--resource=configmap
위 kubectl create 명령어와 동일하게 하단의 yaml 파일을 apply하여도 생성 가능하다.
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: test-role
namespace: test-namespace
rules:
- apiGroups:
- ""
resources:
- secrets
- configmaps
verbs:
- create
이제 Role 과 ServiceAccount 를 연결해주는 RoleBinding 객체를 생성한다. 역시 create, apply 둘다 가능하다.
### kubectl create
kubectl -n test-registry create rolebinding test-rolebinding \
--role test-role \
--serviceaccount test-namespace:test-sa
### kubectl apply
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: test-rolebinding
namespace: test-namespace
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: test-role
subjects:
- kind: ServiceAccount
name: test-sa
namespace: test-namespace
실제 생성 명령어를 사용하지 않고 권한에 대하여 확인하기 위해 'kubectl auth can-i' 명령어를 사용한다.
kubectl -n test-namespace auth can-i create secret \
--as system:serviceaccount:test-namespace:test-sa
yes
kubectl -n test-namespace auth can-i create configmap \
--as system:serviceaccount:test-namespace:test-sa
yes
kubectl -n test-namespace auth can-i create pod \
--as system:serviceaccount:test-namespace:test-sa
no
kubectl -n test-namespace auth can-i delete secret \
--as system:serviceaccount:test-namespace:test-sa
no
kubectl -n test-namespace auth can-i get configmap \
--as system:serviceaccount:test-namespace:test-sa
no
'소프트웨어 아키텍처 > Kubernetes' 카테고리의 다른 글
[Kubernetes] 1-12. Deployment 구동해보기 (0) | 2022.05.06 |
---|---|
[Kubernetes] 1-11. Daemonset 구동해보기 (0) | 2022.05.03 |
[Kubernetes] 1-09. Scheduler 역할 확인하기 (0) | 2022.05.03 |
[Kubernetes] 1-08. 마스터 노드 정보 확인하기 (0) | 2022.05.03 |
[Kubernetes] 1-07. Node, Pod 리소스 사용량 확인 (0) | 2022.05.03 |
댓글