Kubernetes의 API 인증은 크게 두 가지 형태로 지원한다.
Kubernetes의 인증 과정은 RBAC 기준으로 동작하기 때문에, API가 어떤 과정을 거쳐 RBAC 인증을 하고 어떻게 권한을 할당하는지 이해하고 활용할 줄 알아야 한다.
RBAC는 총 5가지 과정을 거쳐 이루어진다.
kubectl apply
등의 명령어를 통해 API 서버로 요청을 보낸다.우리가 kubectl
등의 명령어로 요청을 보낼 때의 사용자 정보는 각 Linux 계정의 홈디렉토리 아래 .kube 라는 숨겨진 경로에 위치한 config 파일에 저장된다.
~/.kube/config
이 파일의 내용을 읽어보면, user의 이름과 인증서 등 다양한 사용자 정보를 확인할 수 있다.
API Server에서는 위의 인증 정보가 적절한지 검토하고, 다음 인증 절차를 진행한다.
사용자 인증 과정이 적합하게 이루어졌다면, 이후에는 명령어의 실행 권한이 해당 사용자에게 있는지 여부를 검토한다.
예를 들어, 어떤 사용자가 deployment에 대해 get, create 등의 권한이 주어져있다면, deployment 외에 pod, service를 get 또는 create 하는 동작에 대해서는 수행 제한이 걸리게 된다.
Kubernetes에 등록된 사용자의 권한을 제어하는 것 외에, 요청한 작업이 현재 구성된 시스템에서 실행 가능한지 여부를 점검한다.
k8s 시스템은 관리자의 설정에 따라 특정한 작업의 수행이 제한될 수 있다.
Admission Control 과정은 사용자의 요청이 현재 설정된 지침에 어긋나는지 여부를 확인한다.
kubernetes에서는 사용자에 대한 인증 과정 외에도, Pod에 특정한 동작에 대한 권한을 부여하는 Service Account에 대해서도 RBAC 인증 과정을 진행할 수 있다.
이에 대해서는 https://velog.io/@kkimoy991/Service-Account 문서를 참고하자.