Kubernetes ServiceAccount 완벽 가이드! Application 인증과 API 접근 권한 관리 구조 이해하기

Kubernetes Cluster에서는 사람이 사용하는 계정뿐만 아니라 Application 자체도 Kubernetes API에 접근해야 하는 경우가 있습니다.

예를 들어:

Monitoring Agent

Node 정보 조회

CI/CD Pipeline

Deployment 변경

Operator

Kubernetes Resource 관리

이러한 Application은 일반 사용자 계정이 아닌 ServiceAccount를 사용합니다.

Kubernetes ServiceAccount는 Pod와 Application이 Kubernetes API Server와 통신하기 위한 인증 Identity입니다.

구성 요소역할
ServiceAccountApplication 인증 계정
TokenAPI 인증 정보
RBAC권한 연결
PodServiceAccount 사용

ServiceAccount 구조를 이해하면 Kubernetes 내부 Component와 Application의 접근 권한을 안전하게 관리할 수 있습니다.

Kubernetes ServiceAccount가 필요한 이유

Kubernetes에서는 두 종류의 Identity가 존재합니다.

Human User

사람이 사용하는 계정

예:

  • Developer
  • Administrator
  • Operator

ServiceAccount

Application이 사용하는 계정

예:

  • Monitoring System
  • CI/CD Tool
  • Kubernetes Operator

Application이 Kubernetes API를 사용하려면 ServiceAccount가 필요합니다.

Kubernetes ServiceAccount 동작 구조

Application이 Kubernetes API에 접근하는 과정:

Pod 실행

ServiceAccount 연결

Token 제공

API Server 인증

RBAC 권한 확인

Resource 접근

Authentication과 Authorization을 함께 사용합니다.

Kubernetes 기본 ServiceAccount

Namespace가 생성되면 기본 ServiceAccount가 자동 생성됩니다.

확인:

kubectl get serviceaccount

기본:

default

Pod는 별도 설정이 없으면 default ServiceAccount를 사용합니다.

Kubernetes Pod와 ServiceAccount 연결

Pod에서는 사용할 ServiceAccount를 지정할 수 있습니다.

예:

spec:
  serviceAccountName: app-account

구조:

Pod

app-account

RBAC Permission

Kubernetes API 접근

필요한 권한만 연결할 수 있습니다.

Kubernetes ServiceAccount 생성 방법

생성:

kubectl create serviceaccount app-account

확인:

kubectl get serviceaccount

Application 전용 인증 계정을 만들 수 있습니다.

Kubernetes ServiceAccount와 RBAC 관계

ServiceAccount는 권한 자체를 가지고 있지 않습니다.

Role 또는 ClusterRole과 연결해야 합니다.

구조:

ServiceAccount

RoleBinding

Role

Permission

예:

Monitoring Agent

ServiceAccount

ClusterRole

Node 조회 권한

권한 분리가 가능합니다.

Kubernetes ServiceAccount Token 구조

ServiceAccount는 API Server 인증을 위한 Token을 사용합니다.

구조:

Pod

Token Mount

API Request

API Server

Token을 통해 Application임을 확인합니다.

Kubernetes Token 자동 Mount

기본적으로 Kubernetes는 Pod 내부에 ServiceAccount Token을 자동으로 연결할 수 있습니다.

예:

Container 내부:

/var/run/secrets/kubernetes.io/serviceaccount/

포함:

  • Token
  • CA Certificate
  • Namespace 정보

Application이 Kubernetes API와 통신할 때 사용합니다.

Kubernetes automountServiceAccountToken 설정

API 접근이 필요 없는 Application은 Token Mount를 비활성화할 수 있습니다.

예:

automountServiceAccountToken: false

효과:

  • 불필요한 인증 정보 제거
  • 공격 가능성 감소

보안 강화 방법입니다.

Kubernetes ServiceAccount 활용 사례

Monitoring System

구조:

Prometheus

ServiceAccount

Cluster 조회 권한

Metric 수집

CI/CD Pipeline

구조:

Pipeline

ServiceAccount

Deployment 권한

Application 배포

Operator

구조:

Operator

ServiceAccount

Resource 관리

운영 자동화에서 많이 활용됩니다.

Kubernetes ServiceAccount 보안 관리

ServiceAccount는 높은 권한을 가질 수 있기 때문에 관리가 중요합니다.

주의:

항목방법
권한 최소화필요한 권한만 부여
Token 보호외부 노출 방지
계정 분리Application별 생성
사용하지 않는 계정 제거정기 관리

RBAC과 함께 운영해야 합니다.

Kubernetes ServiceAccount 장애 사례

문제원인
API 접근 실패권한 부족
Permission DeniedRoleBinding 오류
Token 오류인증 문제
Application 실행 실패잘못된 ServiceAccount 설정

문제 발생 시 권한 구조를 확인해야 합니다.

Kubernetes ServiceAccount 확인 방법

ServiceAccount 확인:

kubectl get serviceaccount

상세 확인:

kubectl describe serviceaccount account-name

Pod 연결 확인:

kubectl describe pod pod-name

RBAC 연결 확인:

kubectl get rolebinding

Kubernetes ServiceAccount와 Security 관계

Kubernetes 보안 구조:

Authentication

ServiceAccount 확인

Authorization

RBAC 검사

Resource 접근

누가 접근하는지 확인한 후 권한을 적용합니다.

Kubernetes ServiceAccount 운영 전략

Production 환경에서는 다음 방식을 권장합니다.

기본 default 계정 사용 최소화

Application별 ServiceAccount 생성

최소 권한 RBAC 연결

Token 자동 Mount 검토

정기 권한 검토

안전한 Application 운영 환경을 만들 수 있습니다.

Kubernetes ServiceAccount와 DevSecOps

자동화 환경에서는 ServiceAccount 관리가 중요합니다.

구조:

CI/CD System

ServiceAccount

RBAC Permission

Kubernetes Deploy

자동 배포 권한을 안전하게 관리할 수 있습니다.

Kubernetes ServiceAccount 장점

장점설명
Application 인증Pod 접근 관리
권한 분리최소 권한 적용
자동화 지원CI/CD 연결
보안 강화Token 관리 가능

ServiceAccount는 Kubernetes Application 보안의 핵심 구성 요소입니다.

자주 묻는 질문

ServiceAccount와 User Account 차이는 무엇인가요?

User Account는 사람이 사용하고 ServiceAccount는 Application이 사용합니다.

ServiceAccount만 만들면 Kubernetes API 접근이 가능한가요?

아닙니다.

RBAC Role 또는 ClusterRole 권한 연결이 필요합니다.

모든 Pod에서 ServiceAccount Token이 필요한가요?

아닙니다.

API 접근이 필요 없는 Application은 Token Mount를 제한하는 것이 좋습니다.

마무리

Kubernetes ServiceAccount는 Application과 Kubernetes API Server 사이의 인증 Identity를 관리하는 기능입니다.

구성 요소역할
ServiceAccountApplication 인증
TokenAPI 인증 정보
RBAC권한 관리
Pod계정 사용

ServiceAccount 구조를 이해하면 Kubernetes 내부 Component와 Application 접근 권한을 안전하게 관리하고 Production Cluster 보안을 강화할 수 있습니다.

다음 글에서는 Kubernetes 배포 환경에서 발생하는 Container Image 보안 문제를 다루는 Kubernetes Image Security 완벽 가이드! Container Image 취약점 관리와 안전한 배포 구조 이해하기를 알아보겠습니다.

댓글 남기기