RBAC 인증

김호현·2023년 10월 26일
0

CKA

목록 보기
7/10

RBAC?

Kubernetes의 API 인증은 크게 두 가지 형태로 지원한다.

  1. RBAC(Role-based Access Control)
  2. ABAC(Attribute-based Access Control)

Kubernetes의 인증 과정은 RBAC 기준으로 동작하기 때문에, API가 어떤 과정을 거쳐 RBAC 인증을 하고 어떻게 권한을 할당하는지 이해하고 활용할 줄 알아야 한다.

RBAC는 총 5가지 과정을 거쳐 이루어진다.

  1. API Request
    사용자는 kubectl apply 등의 명령어를 통해 API 서버로 요청을 보낸다.
  2. Authentication
    요청을 받은 API Server는 사용자의 정보를 토대로 인증 과정을 거친다.
    유저의 이름과 인증서를 확인하여 유저의 일치 여부를 점검한다.
    기존의 사용자 정보와 일치하지 않다면 사용자의 요청을 반려시킨다.
  3. Authorization
    사용자의 인증을 마쳤다면, 해당 사용자가 요청한 명령에 대해 권한을 가지고 있는지 여부를 판별한다.
    사용자가 충분한 권한을 가지고 있지 않다면 사용자의 요청을 반려시킨다.
  4. Admission Control
    사용자의 인증과 권한을 점검했다면, 사용자가 요청한 작업이 현재 시스템에서 수행 가능한지 여부를 점검한다.
    사용자의 요청이 현재 시스템에 적용된 정책에 어긋날 경우 사용자의 요청을 반려시킨다.
  5. 요청 승인
    위의 인증 과정을 모두 거치고 별다른 문제가 발견되지 않을 경우, 사용자의 요청에 적합한 동작을 수행한다.

Authentication (사용자 인증)

우리가 kubectl 등의 명령어로 요청을 보낼 때의 사용자 정보는 각 Linux 계정의 홈디렉토리 아래 .kube 라는 숨겨진 경로에 위치한 config 파일에 저장된다.
~/.kube/config
이 파일의 내용을 읽어보면, user의 이름과 인증서 등 다양한 사용자 정보를 확인할 수 있다.

API Server에서는 위의 인증 정보가 적절한지 검토하고, 다음 인증 절차를 진행한다.

Authorization (권한 인가)

사용자 인증 과정이 적합하게 이루어졌다면, 이후에는 명령어의 실행 권한이 해당 사용자에게 있는지 여부를 검토한다.
예를 들어, 어떤 사용자가 deployment에 대해 get, create 등의 권한이 주어져있다면, deployment 외에 pod, service를 get 또는 create 하는 동작에 대해서는 수행 제한이 걸리게 된다.

Admission Control

Kubernetes에 등록된 사용자의 권한을 제어하는 것 외에, 요청한 작업이 현재 구성된 시스템에서 실행 가능한지 여부를 점검한다.
k8s 시스템은 관리자의 설정에 따라 특정한 작업의 수행이 제한될 수 있다.
Admission Control 과정은 사용자의 요청이 현재 설정된 지침에 어긋나는지 여부를 확인한다.


kubernetes에서는 사용자에 대한 인증 과정 외에도, Pod에 특정한 동작에 대한 권한을 부여하는 Service Account에 대해서도 RBAC 인증 과정을 진행할 수 있다.
이에 대해서는 https://velog.io/@kkimoy991/Service-Account 문서를 참고하자.

profile
Cloud/DevOps Engineer

0개의 댓글