Certified Kubernetes Administration - 52
2024-06-22
- Kubernetes
- Cloud
Kubernetes Role-Based Access Control (RBAC) 정리
-
역할(Role) 생성:
-
Role 객체 정의:
-
apiVersion
: rbac.authorization.k8s.io/v1 -
kind
: Role -
metadata.name
: developer (개발자를 위한 역할)
-
-
Rules 섹션:
-
apiGroups
: Core 그룹의 경우 빈칸으로 둡니다. -
resources
: pods -
verbs
: list, get, create, delete -
여러 규칙 추가 가능 (예: config map 생성 권한 추가).
-
apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: developer rules: - apiGroups: [""] resources: ["pods"] verbs: ["list", "get", "create", "delete"] - apiGroups: [""] resources: ["configmaps"] verbs: ["create"]
-
Role 생성:
kubectl create role -f <role-definition-file>
-
-
Role Binding 생성:
-
Role Binding 객체 정의:
-
metadata.name
: dev-user-to-developer-binding -
kind
: RoleBinding -
subjects
: 사용자 정보 -
roleRef
: 역할 정보
-
apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: dev-user-to-developer-binding subjects: - kind: User name: dev-user apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: developer apiGroup: rbac.authorization.k8s.io
-
Role Binding 생성:
kubectl create rolebinding -f <role-binding-definition-file>
-
-
Role 및 Role Binding 조회:
-
Roles 조회:
kubectl get roles
-
Role Bindings 조회:
kubectl get rolebindings
-
Role 세부 정보 조회:
kubectl describe role developer
-
Role Binding 세부 정보 조회:
kubectl describe rolebinding dev-user-to-developer-binding
-
-
권한 확인:
-
사용자 권한 확인:
-
kubectl auth can-i create deployments
-
kubectl auth can-i delete nodes
-
-
다른 사용자로 가장하여 권한 확인:
-
kubectl auth can-i create deployments --as=dev-user
-
kubectl auth can-i create pods --namespace=test --as=dev-user
-
-
-
자원 이름별로 접근 권한 제한:
-
특정 자원에 대한 접근 권한만 허용
-
예시: 네임스페이스 내의 특정 pod들에 대한 접근 권한
rules: - apiGroups: [""] resources: ["pods"] verbs: ["list", "get"] resourceNames: ["blue-pod", "orange-pod"]
-
Certified ...
Certified ...