인증과 권한 관리 기본 개념
쿠버네티스에서 API에 접근하려면 반드시 인증(Authentication)과 권한 관리(Authorization)를 거쳐야 한다.
- API 서버 기본 포트: 6443 (TLS 적용)
- 인증: 클라이언트와 kube-apiserver 간의 인증서 기반 통신
- 계정 종류: 사용자 계정(외부 시스템 연동)과 서비스 계정(쿠버네티스가 직접 관리)
인증 정보 관리
- 사용자 홈 디렉터리의
.kube/config파일에 인증 정보 저장 kubectl config명령으로 인증 정보 설정/조회- 주요 필드:
users,clusters,contexts,current-context
인증서 검증 옵션
insecure-skip-tls-verify: 인증서 검증 생략 여부server: API 서버 주소client-certificate-data,client-key-data,token: 인증에 필요한 데이터
권한 관리(Authorization) 방식
쿠버네티스는 대표적으로 두 가지 권한 관리 방식을 지원한다.
ABAC (Attribute Based Access Control)
- 속성 기반 권한 관리
- 사용자, 그룹, 요청 경로, 동사 등 다양한 속성으로 권한 제어
- 파일 기반 관리(변경 시 kube-apiserver 재시작 필요, 관리 번거로움)
RBAC (Role Based Access Control)
- 역할 기반 권한 관리(쿠버네티스 권장)
- 사용자와 역할을 분리 선언, 바인딩을 통해 권한 부여
- kubectl이나 API로 동적 관리 가능
RBAC 주요 리소스
- Role: 네임스페이스 단위 권한
- ClusterRole: 클러스터 전체 권한
- RoleBinding: Role과 사용자를 네임스페이스 단위로 연결
- ClusterRoleBinding: ClusterRole과 사용자를 클러스터 전체에 연결
Role/ClusterRole 예시
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: default
name: pod-reader
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "watch", "list"]
RoleBinding/ClusterRoleBinding 예시
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: read-pods
namespace: default
subjects:
- kind: ServiceAccount
name: my-service-account
roleRef:
kind: Role
name: pod-reader
apiGroup: rbac.authorization.k8s.io
참고 자료
'CKA' 카테고리의 다른 글
| 클러스터 네트워킹 구성 정리 (0) | 2025.07.08 |
|---|---|
| 데이터 저장 정리 (0) | 2025.07.07 |
| 파드 스케줄링 정리 (1) | 2025.07.03 |
| 시크릿 정리 (0) | 2025.06.30 |
| 컨피그맵 정리 (5) | 2025.06.27 |