본문으로 건너뛰기

Authentication 과 Authorization

Kubernetes 보안의 핵심 개념인 인증(Authentication)과 인가(Authorization)에 대해 알아봅니다.


핵심 개념 비교

구분Authentication (인증)Authorization (인가)
핵심 질문“당신은 누구입니까?” (Who are you?)“당신은 무엇을 할 수 있습니까?” (What can you do?)
목적신원 확인권한 부여 및 리소스 접근 제어
비유여권 검사, 회사 출입증비자 발급, 특정 층 출입 권한
K8s 방식인증서, 토큰, OIDC 등RBAC, ABAC, Node 등

보안 처리 흐름

Kubernetes API 서버로 들어오는 모든 요청은 다음의 3단계를 거칩니다.

    flowchart TD
    Request[사용자 요청] --> AuthN{1. 인증 Authentication}
    AuthN -- 성공 --> AuthZ{2. 인가 Authorization}
    AuthN -- 실패 --> Deny1[401 Unauthorized]
    
    AuthZ -- 성공 --> Admit{3. Admission Control}
    AuthZ -- 실패 --> Deny2[403 Forbidden]
    
    Admit -- 승인 --> ETCD[(etcd 저장/수행)]
    Admit -- 거부 --> Deny3[403 Forbidden]
  

1. Authentication (인증)

요청한 주체가 누구인지 확인하는 과정입니다. Kubernetes는 자체적인 ‘사용자’ 리소스를 가지지 않으며, 외부 인증 시스템이나 인증서를 통해 신원을 확인합니다.

주요 인증 방식

  • X.509 Client Certs: 클라이언트 인증서를 통한 인증 (kubeadm 기본 방식)
  • Static Token File: 정적 파일을 통한 토큰 인증
  • Bootstrap Tokens: 클러스터 조인 시 사용하는 토큰
  • Service Account Tokens: Pod 내에서 사용하는 자동 생성 토큰
  • OIDC (OpenID Connect): 외부 IDP(Google, Okta 등)와 연동한 인증

2. Authorization (인가)

인증된 사용자가 특정 리소스에 대해 특정 작업(Verb)을 수행할 권한이 있는지 확인합니다.

주요 인가 모드

  • RBAC (Role-Based Access Control): 역할 기반 접근 제어 (가장 권장됨)
  • ABAC (Attribute-Based Access Control): 속성 기반 접근 제어
  • Node Authorization: kubelet의 권한을 제한하는 특수 목적 인가
  • Webhook: 외부 서비스에 권한 확인을 요청하는 방식

3. Admission Control

인증과 인가를 통과한 요청이 클러스터의 정책에 맞는지 최종적으로 검사하고 필요시 데이터를 수정(Mutating)하거나 거부(Validating)합니다.

  • Mutating Admission Webhook: 요청 내용을 수정 (예: 사이드카 주입)
  • Validating Admission Webhook: 요청 내용 검증 (예: 리소스 제한 체크)

요약

단계역할결과
인증 (AuthN)신원 확인User/Group 식별
인가 (AuthZ)권한 확인Allow/Deny 결정
Admission정책 검수요청 수락/수정/거부

이 3단계 보안 계층을 통해 Kubernetes 클러스터는 안전하게 보호됩니다.