Search

[CKA] 38. Authentication

Date
2025/01/09
Category
Devops
Tag
Kubernetes
CKA
Security
목차
쿠버네티스 클러스터는 여러 물리적/가상 노드와, 함께 동작하는 구성 요소들로 이뤄진다. 이에 액세스하는 유저들은 다양하다:
관리자 - 관리 업무를 수행하기 위해 클러스터에 액세스
개발자 - 앱을 테스트하거나 배포하기 위해 클러스터에 액세스
엔드 유저 - 클러스터에 배포된 애플리케이션에 액세스
서드파티 앱 - 통합 용도로써 클러스터에 액세스
다양한 유저들의 클러스터에 대한 액세스를 인증 메커니즘을 통해 보안해야 한다. 애플리케이션에 액세스하는 End User에 대한 보안은 애플리케이션 자체에 의해 내부적으로 관리된다.

 Accounts

모든 Kubernetes 클러스터에는 Kubernetes가 관리하는 서비스 계정과 일반 사용자라는 두 가지 범주의 사용자가 있다. 위에서 얘기한 관리자, 개발자, 서드파티 앱을 나눈다면, 일반 사용자는 관리자와 개발자이며, 서비스 계정은 서트파티 앱이다.

User Accounts

쿠버네티스는 User Accounts를 직접 관리하지 않고 외부 소스나 서드파티 ID 서비스에 의존한다. 외부 소스로는 사용자 세부 정보가 있는 파일이나 인증서가 있으며, ID 서비스로는 LDAP이 있다.
모든 사용자 액세스는 API Server에 의해 관리되며, kubectl을 통해 클러스터에 접근하든 API로 직접 접근하든 모든 요청은 API Server를 거친다. API Server는 요청을 처리하기 전, 인증을 수행한다.

Service Accounts

쿠버네티스 클러스터에서는 User를 생성하거나 User 리스트를 확인할 수 없는데, Service Accounts의 경우는 관리가 가능하다.
kubectl create serviceaccount <sa-name>
kubectl get serviceaccount

 Auth Mechanisms - User

kube-apiserver는 요청을 처리하기 전, 인증을 수행한다.
Static Password File
Static Token File
Certificates
Identity Services (ex: LDAP, Kerberos)

Basic (using File)

csv 파일에 사용자 목록과 암호를 만들어 사용자 정보에 대한 소스로 사용할 수 있다. 파일 생성 이후 kube-apiserver 옵션을 추가하여 적용시킬 수 있다. 서비스가 해당 옵션을 적용시키기 위해서는 재시작되어야 한다.
--basic-auth-file=<static-password-file>
--token-auth-file=<static-token-file>
kubeadm을 통해 생성된 클러스터일 경우 kube-apiserver.yaml에 옵션을 추가해야하며, 인증 파일을 전달하기 위해 볼륨 마운트를 고려해야 한다.
# user-details.csv password123, user1, u0001, group1 password123, user2, u0002, group2 password123, user3, u0003, group3 # user-token-details.csv sbasdfibefkalbsdfein, user1, u0001, group1 nlxhvbuiqgdlsnfnsave, user2, u0002, group2 phlsabngkjadnvdpsahv, user3, u0003, group3
Plain Text
복사
적용이 완료되면 아래의 curl 명령을 통해 API Server에 액세스할 수 있다.
# Static Password File인 경우 curl -v -k https://master-node-ip:6443/api/v1/pods \ -u “user1:password123” # Static Token File인 경우 curl -v -k https://master-node-ip:6443/api/v1/pods \ --header "Authorization: Bearer sbasdfibefkalbsdfein"
Bash
복사
Username, Password, Token을 정적 파일에 일반 텍스트로 저장하는 이 인증 메커니즘은 보안이 취약하므로 권장되지 않는 방식이다.