반응형

K8s에서는 Security가 매우 중요하다. 

kube-apiserver를 중심으로 security가 이뤄지는데, 중요한 것은

1. 누가 access할 수 있고

2. 그들이 뭘 할 수 있느냐다.

 

1. 누가 access할 수 있냐!? User 계정, 토큰, 인증서, ldap, service account 등이 있다.

 

2. 접근에 대해 권한을 받은 그들이 뭘 할 수 있냐면,

RBAC, ABAC, Node Authorization, Webhook Mode를 한다고 한다.

이게 뭘까? 하나씩 알아보자.

 

먼저, 각 컴포넌트들은 Kube ApiServer를 중심으로 TLS를 사용하여 보안을 유지하고 있고,

pod간은 network policy를 통해 보안을 유지하고 있다.

 

그럼, 먼저 내부 클러스터간 어떻게 인증을 해서 통신을 하고 관리되는지 알아보자.

 

 

먼저, cluster에 접근하는 user는 크게 Admin, Developers, Robots(k8s로 접근하는 외부 프로세스 들)으로 나눈다.

크게 보면 사람 / 로봇이다.

 

그런데, k8s는 자체적으로 user 관리를 하지 않고 Service Account에 한해 관리를 한다.

* Service account는 나중에 다루고, 이번 강의에선 user에 집중한다.

 

먼저 유저들은 API SERVER를 통해 K8S에 접근하는데, kube-apiserver가 해당 req에 대한 과정이 진행되기 전,

유저 인증(Authentication user)를 진행한다.

어떻게 인증을 할까?

StaticPassword File(직접 정보 입력), Static Token file, Certificates, Identity Service (3rd party authentication program. ex. LDAP)등의 방법이 있다.

 

 

 

1. StaticPassword File

user의 id/pw를 별도의 csv로 저장한 후, 그걸 apiservice.service에 '--basic-auth-file=user-details.csv'로 가져온다.

 

 

pod가 생성되면, curl 명령을 통해 kube-api server로 user의 id/pw를 이용하여 인증한다.

 

그리고, static password file에는 optional로 group 필드가 하나 더 있으며,

2. Static Token File은 Static password file 대비, password 대신 token을 사용한다.

key값 또한 '--basic-auth-file=user-details.csv'가 아닌, '--token-auth-file=user-details.csv'를 사용한다.

 

위에서 다룬 내용들은 이해를 위해 쉬운 방법들을 다룬 것이지, 권고하는 방법은 아니다.

다음 강의에서 하나씩 더 알아보자.

 

출처: Udemy 사이트의 Certified Kubernetes Administrator (CKA) with Practice Tests 강의

 

반응형

+ Recent posts