반응형
🔐 Kubernetes API 접근 제어란?
사용자(또는 애플리케이션)는 kubectl, 클라이언트 라이브러리, REST API를 통해 Kubernetes API에 접근해.이 요청은 다음과 같은 4단계 보안 절차를 거쳐 처리돼:
[1] 인증 → [2] 권한 확인 → [3] 어드미션 컨트롤 → [4] 저장
📡 0단계: 전송 보안(Transport Security)
- 기본적으로 API 서버는 포트 6443에서 TLS로 보호됨
- 실제 운영 환경에서는 보통 포트 443 사용
- --secure-port, --bind-address 플래그로 포트와 IP 설정 가능
- API 서버는 TLS 인증서를 클라이언트에게 제공함
- 사설 인증서(CA) 사용하는 경우, 클라이언트의 ~/.kube/config에 해당 CA의 인증서가 등록되어 있어야 함
- 클라이언트도 TLS 클라이언트 인증서를 제출할 수 있음
🧾 1단계: 인증(Authentication)
"누가 요청했는지 확인하는 단계"
- API 요청은 인증 모듈을 거침 (하나 이상 설정 가능)
- 요청의 헤더 또는 인증서 등을 사용해 인증 수행
✅ 인증 방법 예시:
- 클라이언트 인증서
- 베이직 인증 (아이디/비밀번호)
- 토큰 (일반 토큰, 부트스트랩 토큰, JWT 등)
인증 실패 시: HTTP 401 Unauthorized 반환
인증 성공 시: 해당 사용자 이름(username) 정보가 이후 단계에 전달됨
⚠️ Kubernetes는 자체적으로 User 객체를 저장하지 않음 (사용자 정보는 외부 인증 시스템에 의존)
✅ 2단계: 권한 확인(Authorization)
"이 사용자가 이 행동을 할 수 있는 권한이 있는가?"
- 요청에는 다음 정보가 포함됨:
- 사용자 이름
- 요청된 행동(읽기, 쓰기 등)
- 대상 리소스 (예: Pod, Namespace 등)
✅ 예시:
{
"user": "bob",
"namespace": "projectCaribou",
"resource": "pods",
"readonly": true
}
→ 이 설정이 있다면 Bob은 projectCaribou 네임스페이스 내에서만 Pod를 읽을 수 있음.
- 다른 네임스페이스나 쓰기 요청을 하면 권한 거부됨 (HTTP 403)
🔐 지원되는 권한 부여 방식:
- RBAC (역할 기반 접근 제어)
- ABAC (속성 기반 접근 제어)
- Webhook (외부 시스템에 권한 확인 요청)
여러 권한 모듈이 설정되었을 경우, 하나라도 허용하면 허용됨
모두 거부하면 요청이 차단됨
🚦 3단계: 어드미션 컨트롤(Admission Control)
"요청된 오브젝트의 내용을 검사하거나 수정"하는 단계
- 오브젝트 생성/수정/삭제/프록시 요청에 대해서만 작동
- 단순 조회(get/list) 요청에는 작동하지 않음
- 여러 Admission Controller를 순서대로 호출하며,
- 하나라도 거부하면 전체 요청 거부됨
- 기본값 설정이나 필드 수정도 가능
✅ 예시:
- Pod Security Admission (PSA)
- Namespace 존재 여부 확인
- Default 값 자동 설정
모든 Admission Controller를 통과하면
해당 요청은 최종적으로 검증(validation)을 거쳐 오브젝트 저장소에 기록됨
🕵️ 4단계: 감사 로깅(Auditing)
보안 로그 기록을 위한 시스템
- 누가 어떤 요청을 했는지 시간순으로 기록
- 사용자, 애플리케이션, Kubernetes 자체 시스템의 활동 포함
→ 보안 분석, 사고 대응 등에 필수적인 기능
🧩 단계별 요약
단계 설명 실패 시
0. TLS 연결 | 전송 암호화 | 연결 실패 |
1. 인증(Authentication) | 사용자 확인 | 401 Unauthorized |
2. 권한 확인(Authorization) | 권한 부여 여부 판단 | 403 Forbidden |
3. 어드미션 컨트롤 | 오브젝트 내용 검사 및 수정 | 즉시 요청 거부 |
4. 감사 로깅 | 기록 저장 (보안 추적용) | N/A (항상 기록) |
📌 PSA/PSS와 관련 있는가?
- PSA (Pod Security Admission) 는 3단계 어드미션 컨트롤 중 하나임
- PSS (Pod Security Standards) 는 PSA가 따르는 보안 정책 기준임
즉:
Kubernetes API 요청 흐름 안에서 PSA는 "3단계 어드미션"에 해당하고,
그 때 사용하는 정책 세트가 PSS야.
반응형
'Certificated 도전 > KCSA - Kubernetes' 카테고리의 다른 글
Kubernetes Secrets 보안 모범 사례 (0) | 2025.03.30 |
---|---|
[KCSA] Kubernetes RBAC 잘 사용하는 법 (0) | 2025.03.30 |
[KCSA]Pod Security Admission이란? (0) | 2025.03.27 |
[KCSA]Pod Security Standards란? (0) | 2025.03.27 |
[KCSA] Cloud Native 보안과 Kubernetes (0) | 2025.03.27 |