반응형
1. 개념
- 클러스터의 오브젝트 및 서비스에 접근하기 위해 유저에 대한 인증/인가를 위해 인증서를 사용
- 인증서를 생성하기 위한 작업의 일환으로 유저의 개인키에 대한 사이닝을 K8s의 CA에 요청할때 CertificateSigningRequests API를 사용
- 인증서를 사이닝하는 방법에는 매뉴얼힌 방법과 API를 활용하는 방식이 존재
- 대략적인 프로세스는 다음과 같음
2. 실습(CertificateSigningRequests API 활용)
- key 생성
openssl genrsa -out [name].key 2048
- CSR 생성(Common Name에 유저 이름 입력)
openssl req -new -key [name].key -out [name].csr
- CertificateSigningRequest 생성 및 요청1 - (CSR base64 인코딩)
cat 60099.csr | base64 -w 0
- CertificateSigningRequest 생성 및 요청2 - (CSR yaml 파일 작성 및 apply)
apiVersion: certificates.k8s.io/v1
kind: CertificateSigningRequest
metadata:
name: 60099@internal.users # Common Name에 입력한 유저 이름
spec:
groups:
- system:authenticated
request: LS0tLS1CRUdJTiBD... # base64로 인코딩한 CSR 값
signerName: kubernetes.io/kube-apiserver-client
usages:
- client auth
- CSR 승인
k get csr
k certificate approve [csr_name]
- CSR로부터 CRT 생성
k get csr [csr_name] -o yaml # certificate 부분을 별도 파일에 저장
cat [file] | base64 -d > [name].crt
- config 설정 및 사용
k config set-credentials [name] --client-key=[name].key --client-certificate=[name].crt --embed-certs # config에 유저 추가
k config set-context [name] --cluster=[cluster_name] --user=[name] # config에 context 추가
k config use-context [name] # context 변경
3. 실습(CA를 활용해 직접 승인)
- CertificateSigningRequests API를 활용하는 방법과 대부분 동일하나 "CSR 생성" 이후부터 "config 설정 및 사용" 이전까지 단계가 생략(쉽게말해 CRT 파일을 수동으로 만드는 부분이 생략됨)
- CertificateSigningRequest 생성 및 요청대신 다음과 같이 CA 인증서를 활용해 직접 승인
openssl x509 -req -in [name].csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out [name].crt -days 500
4. 참고
반응형
'Kubernetes' 카테고리의 다른 글
Kubernetes Container Runtime Sandbox 개념 (0) | 2024.03.06 |
---|---|
Kubernetes ETCD 암호화 개념 및 실습 (0) | 2024.03.05 |
Kubernetes 서비스어카운트(ServiceAccount) 개념 및 설정2 (0) | 2024.02.29 |
Kubernetes RBAC 개념 및 설정2 (0) | 2024.02.29 |
Kubernetes 취약점 점검 오픈소스 (0) | 2024.02.29 |