[TIL] Kubernetes 보안 & 커스텀 리소스-2025.09.02
2025. 9. 2. 16:01ㆍ대외활동/인공지능사관학교
728x90
반응형
SMALL

1. 인증(Authentication) & 인가(Authorization)
- 인증: "너 누구냐?" → 사용자를 확인 (X.509 인증서, ServiceAccount, OIDC 토큰).
- 인가: "뭐 할 수 있냐?" → RBAC(Role-Based Access Control)로 권한 제어.
- RBAC 핵심 요소
- Role / ClusterRole: 권한 정의.
- RoleBinding / ClusterRoleBinding: 권한과 주체(User, Group, ServiceAccount) 연결.
- 실습 예제
- dev-user → development 네임스페이스에서 파드 조회만 가능하도록 Role + RoleBinding 생성.
- kubectl auth can-i list pods --as dev-user → yes.
- 삭제/다른 네임스페이스 접근 → no.
- 인사이트: 최소 권한 원칙(Principle of Least Privilege)을 보장해야 클러스터 보안 강화 가능.
2. 관리자와 사용자 관리
- 관리자 업무 3단계
- Role/ClusterRole 생성: 권한 정의.
- 사용자 인증서 생성 & 전달: 개인 키(.key), 인증서(.crt), CA 인증서 제공.
- RoleBinding/ClusterRoleBinding 연결: 사용자와 권한 매핑.
- 자동화 스크립트 제공: CSR 생성 → 승인 → 인증서 추출까지 자동화.
- 사용자 측 설정
- kubectl 설치, 받은 인증서/키/CA를 ~/.kube에 배치.
- kubeconfig 생성 (kubectl config set-cluster, set-credentials, set-context).
- auth can-i로 권한 테스트.
- 포인트: 관리자/사용자 간 보안 채널로 인증 정보를 전달하는 것이 중요.
3. ClusterRole
- Role vs ClusterRole
- Role → 단일 네임스페이스 한정.
- ClusterRole → 클러스터 전체/네임스페이스 무관 리소스 관리.
- 사용 시점
- 클러스터 범위 리소스 (Node, PV, Namespace 등).
- 모든 네임스페이스에 동일 권한 부여 필요 시.
- 예제: storage-admin ClusterRole
- PV 전체 제어.
- StorageClass 읽기 권한.
- 모든 네임스페이스 PVC 읽기 권한.
- ClusterRoleBinding
- User(dev-user, dev-user2 등)에게 storage-admin 권한 연결.
- 주의: 매우 강력하므로 최소 권한 원칙 유지 필요.
4. ServiceAccount
- 정의: Pod 내부 프로세스가 API 서버와 통신할 때 사용하는 “로봇 계정”.
- 작동 원리
- 자동 할당 (default ServiceAccount).
- 토큰이 /var/run/secrets/...에 자동 마운트.
- Pod 내부 앱이 토큰을 Authorization 헤더로 API 서버 호출.
- API 서버는 토큰 기반 인증 → RBAC 권한 확인.
- 예제 1: Pod Lister
- ServiceAccount pod-lister-sa 생성.
- Role(get, list, watch pods) + RoleBinding 연결.
- Test Pod 실행 시 kubectl get pods 성공 로그 확인.
- 예제 2: storage-admin 권한 부여
- ServiceAccount storage-pod-sa 생성.
- 기존 storage-admin ClusterRole과 ClusterRoleBinding으로 연결.
- 해당 SA 사용하는 Pod → PV, PVC, SC 조회 가능 / Pod 조회 불가.
- 핵심: Pod는 반드시 ServiceAccount 통해 권한 획득 → 안전한 권한 분리 실현.
5. 커스텀 리소스 & 컨트롤러
- Custom Resource (CR)
- 쿠버네티스 API 확장 → 새로운 리소스 타입 정의 가능.
- CRD(CustomResourceDefinition) 생성으로 스키마 등록.
- 예: Greeting 리소스 정의 → message, recipient 필드 포함.
- Controller
- Desired State vs Actual State 맞추는 제어 루프.
- 예: Deployment Controller, Service Controller.
- Operator 패턴
- CR + Controller 조합 → 고급 자동화.
- 예: Greeting CR 생성 → Greeting Controller가 이벤트 감지 → 로그 출력/알림 전송 등 동작 수행.
- 실습 흐름
- CRD 정의 및 배포 (greeting-crd.yaml).
- CR 인스턴스 생성 (my-greeting.yaml).
- Controller 이미지 빌드 및 배포.
- 로그 모니터링하며 CR 수정/삭제 이벤트 확인.
- 의미: 쿠버네티스를 “앱 운영 플랫폼”으로 확장하는 핵심 메커니즘.
핵심
- 보안 계층화
- 사용자(User)와 Pod(ServiceAccount)를 명확히 구분.
- RBAC + 최소 권한 원칙으로 안정성 확보.
- 권한 범위 관리
- Role은 네임스페이스 한정, ClusterRole은 전체 범위.
- 잘못 쓰면 클러스터 전체 위험 가능 → 반드시 주의.
- 운영 자동화
- 관리자 인증서 발급 & 사용자 환경 세팅은 스크립트로 표준화 가능.
- ServiceAccount 활용 시 애플리케이션도 RBAC 기반 권한 획득.
- 플랫폼 확장성
- Custom Resource + Controller(Operator)로 쿠버네티스를 데이터베이스, 메시지 큐 등 복잡한 시스템 운영 플랫폼으로 확장 가능.
728x90
반응형
LIST
'대외활동 > 인공지능사관학교' 카테고리의 다른 글
| [AI Crew]네이버 기업 탐방: 1784 신사옥, 데이터센터 ‘각’, 소버린 AI, 인재 전쟁 그리고 국가대표 AI 프로젝트/인공지능사관학교6기 (0) | 2025.09.04 |
|---|---|
| [TIL]Kubernetes 리소스 단위, Requests & Limits-2025.09.04 (0) | 2025.09.03 |
| [TIL] Kubernetes 스토리지 & 보안 정리-2025.09.01 (1) | 2025.09.01 |
| [학습]IT·AI 업계 동향 파악.with GPT/Notion-인공지능사관학교6기 (2) | 2025.08.28 |
| [TIL]Kubernetes Namespace, BusyBox, ConfigMap, Secret-2025.8.28 (1) | 2025.08.28 |