0Pricing
Kubernetes Basics · 강의

서비스 계정과 워크로드 ID

Service Accounts가 Pod에 고유한 ID를 부여하는 방식과 토큰의 작동 원리, 최소 권한 액세스를 부여하는 방법을 학습해 보세요.

서비스 계정과 워크로드 ID은(는) CoddyKit의 무료 Kubernetes Basics 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Kubernetes Basics 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Kubernetes Basics 강의에는 총 4개의 강의가 포함되어 있습니다.

워크로드를 위한 식별자

사용자는 쿠버네티스에 인증하지만 파드에도 식별자가 필요합니다. 그래야 API 서버와 안전하게 통신할 수 있습니다. 이 식별자가 바로 서비스 계정입니다.

서비스 계정이란 무엇인가

ServiceAccount는 워크로드의 식별자를 나타내는 네임스페이스 범위 객체입니다. 별도로 지정하지 않으면 default를 기본값으로 하여 모든 파드가 하나의 서비스 계정으로 실행됩니다.

apiVersion: v1
kind: ServiceAccount
metadata:
  name: report-generator
  namespace: analytics

파드에 서비스 계정 할당

파드 사양에서 serviceAccountName을 설정하면 특정 식별자로 실행할 수 있습니다.

apiVersion: v1
kind: Pod
metadata:
  name: reporter
spec:
  serviceAccountName: report-generator
  containers:
  - name: app
    image: reporter:1.0

마운트된 토큰

쿠버네티스는 서비스 계정용 단기 JWT 토큰을 파드에 마운트하며, 이 토큰은 API 호출을 인증하는 데 사용됩니다.

# inside the Pod
cat /var/run/secrets/kubernetes.io/serviceaccount/token

기본 계정이 위험한 이유

default 서비스 계정은 네임스페이스의 모든 파드가 공유합니다. 여기에 권한을 부여하면 모든 항목이 과도하게 노출됩니다. 워크로드마다 전용 계정을 사용하는 것이 좋습니다.

토큰 자동 마운트 비활성화

파드가 API를 호출하지 않는다면 토큰 마운트를 비활성화하여 공격 표면을 줄이세요.

apiVersion: v1
kind: Pod
metadata:
  name: no-api-pod
spec:
  automountServiceAccountToken: false
  containers:
  - name: app
    image: myapp:1.0

RBAC로 권한 부여

서비스 계정은 역할에 바인딩하기 전까지 아무런 권한이 없습니다. RoleBinding의 주체는 서비스 계정입니다.

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: reporter-read
  namespace: analytics
subjects:
- kind: ServiceAccount
  name: report-generator
roleRef:
  kind: Role
  name: pod-reader
  apiGroup: rbac.authorization.k8s.io

최소 권한 적용

  • 워크로드마다 서비스 계정을 하나씩 사용합니다
  • 실제로 필요한 동사와 리소스만 부여합니다
  • 가능하면 ClusterRole이 아니라 Role을 사용해 네임스페이스로 범위를 제한합니다

바인딩된 프로젝션 토큰

최신 토큰은 프로젝션된 형태이며 짧은 만료 시간을 가진 파드의 수명에 연결됩니다. 자동으로 교체되므로 토큰이 유출되더라도 예전의 장기 보존 시크릿보다 위험이 훨씬 적습니다.

클라우드의 워크로드 식별자

클라우드 플랫폼은 쿠버네티스 ServiceAccount를 클라우드 IAM 식별자에 연결합니다(예: AWS의 IRSA, GKE의 워크로드 식별자). 따라서 파드는 정적 자격 증명을 저장하지 않고도 클라우드 리소스에 접근할 수 있습니다.

metadata:
  annotations:
    eks.amazonaws.com/role-arn: arn:aws:iam::123:role/report-role

권한 확인

서비스 계정을 가장하여 kubectl auth can-i를 사용하면 예상한 접근 권한만 정확히 가지고 있는지 확인할 수 있습니다.

kubectl auth can-i list pods \
  --as=system:serviceaccount:analytics:report-generator \
  -n analytics

간단한 확인

서비스 계정에 대해 이해한 내용을 테스트해 보세요.

복습

ServiceAccount가 단기 프로젝션 토큰을 기반으로 파드에 고유한 식별자를 제공한다는 것을 배웠습니다. 워크로드마다 전용 계정을 사용하고, 최소 권한 원칙을 적용하며, RBAC 바인딩으로 접근 권한을 부여하세요. 사용하지 않을 때는 토큰 마운트를 비활성화하고, 자격 증명 없이 접근할 수 있도록 계정을 클라우드 IAM에 연결하세요.

자주 묻는 질문

“서비스 계정과 워크로드 ID” 강의는 무료인가요?

네 — “서비스 계정과 워크로드 ID” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Kubernetes Basics 강의 전체를 잠금 해제할 수 있습니다. Kubernetes Basics 강의에는 총 4개의 강의가 포함되어 있습니다.

“서비스 계정과 워크로드 ID”에서 뭘 배우나요?

Service Accounts가 Pod에 고유한 ID를 부여하는 방식과 토큰의 작동 원리, 최소 권한 액세스를 부여하는 방법을 학습해 보세요. 브라우저에서 직접 실행하는 실습 코드로 Kubernetes Basics을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Kubernetes Basics을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Kubernetes Basics은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“서비스 계정과 워크로드 ID” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Kubernetes Basics 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Kubernetes Basics 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 역할 기반 액세스 제어(RBAC)
  2. 격리를 위한 네트워크 정책
  3. 파드 보안 표준
  4. 서비스 계정과 워크로드 ID
← Kubernetes Basics(으)로 돌아가기