사용자 권한 부여
1. 개인 key 및 csr 생성
https://kubernetes.io/docs/tasks/administer-cluster/certificates/
openssl genrsa -out jane.key 2048
openssl req -new -key jane.key -out jane.csr -subj "/CN=jane/O=developers"
2. k8s csr 객체 생성
$ cat jane.csr | base64 | tr -d "\n"
# jane-csr.yaml
apiVersion: certificates.k8s.io/v1
kind: CertificateSigningRequest
metadata:
name: jane-access-request
spec:
groups:
- system:authenticated
request: <BASE64_ENCODED_CSR_STRING_HERE>
signerName: kubernetes.io/kube-apiserver-client
usages:
- client auth
3. csr 승인
$kubectl get csr
$ kubectl certificate approve jane-access-request
4. 서명된 인증서 추출
$ kubectl get csr jane-access-request -o jsonpath='{.status.certificate}' | base64 -d > jane.crt
5. kubeconfig 사용자 등록
# 1. 사용자 자격 증명(Credential) 추가
kubectl config set-credentials jane \
--client-certificate=jane.crt \
--client-key=jane.key
# 2. 컨텍스트(Context) 생성 (사용자-클러스터 연결)
kubectl config set-context jane-context \
--cluster=<YOUR_CLUSTER_NAME> \
--namespace=default \
--user=jane
6. RBAC 권한 부여
# role-binding.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: default
name: pod-reader
rules:
- apiGroups: [""]
resources: ["pods", "pods/log"]
verbs: ["get", "watch", "list"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: read-pods
namespace: default
subjects:
- kind: User
name: jane # 위에서 CSR 만들 때 지정한 CN
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role
name: pod-reader
apiGroup: rbac.authorization.k8s.io
7. 검증
# 1. 컨텍스트 전환
kubectl config use-context jane-context
# 2. 권한 테스트 (Pod 조회 - 성공해야 함)
kubectl get pods
# 3. 권한 없는 작업 테스트 (Service 조회 - 실패해야 함)
kubectl get services
# 결과: Error from server (Forbidden): services is forbidden: User "jane" ...'K8S' 카테고리의 다른 글
| WSL2 우분투에서 Minikube 자식 노드가 NotReady 라면? (0) | 2026.03.27 |
|---|---|
| ETCD 기본 동작 원리의 이해 (0) | 2025.12.08 |
| ETCD 명령어 정리 (0) | 2025.12.08 |
| ETCD 백업과 복원 (0) | 2025.12.08 |
| [K8S] Disk io 바운더리로 인해 데이터 처리 속도 저하 (0) | 2025.08.26 |