SPIFFE/SPIRE

지원 버전: SPIRE 1.12+, Kubernetes 1.31, 1.32, 1.33 마지막 업데이트: 2026년 2월 25일

개요

제로 트러스트(Zero Trust) 아키텍처에서 워크로드 아이덴티티는 핵심적인 구성 요소입니다. 전통적인 네트워크 경계 기반 보안 모델에서는 "내부 네트워크는 신뢰할 수 있다"는 가정이 있었지만, 현대 클라우드 네이티브 환경에서는 이러한 가정이 더 이상 유효하지 않습니다.

SPIFFE(Secure Production Identity Framework for Everyone)는 이기종 환경에서 워크로드 간 상호 인증을 위한 표준화된 아이덴티티 프레임워크를 제공합니다. SPIRE(SPIFFE Runtime Environment)는 SPIFFE 사양의 프로덕션 레디 구현체로, CNCF Graduated 프로젝트입니다.

왜 SPIFFE/SPIRE가 필요한가?

기존 방식의 문제점
SPIFFE/SPIRE 솔루션

IP 기반 인증 - 동적 환경에서 불안정

암호화된 아이덴티티 기반 인증

수동 인증서 관리 - 운영 부담

자동 인증서 발급 및 갱신

단일 클러스터 범위 - 확장성 제한

크로스 클러스터, 멀티 클라우드 페더레이션

플랫폼 종속적 아이덴티티

플랫폼 독립적 표준

장기 유효 자격 증명 - 보안 위험

단기 자동 갱신 SVID


목차


1. 핵심 개념

SPIFFE ID

SPIFFE ID는 워크로드를 고유하게 식별하는 URI 형식의 식별자입니다.

구성 요소:

  • spiffe:// - SPIFFE 스키마 (고정)

  • trust-domain - 신뢰 도메인 (예: example.org, prod.acme.com)

  • workload-identifier - 워크로드 경로 (예: /ns/default/sa/web-server)

SPIFFE ID 예시:

SVID (SPIFFE Verifiable Identity Document)

SVID는 SPIFFE ID를 포함하는 암호화적으로 검증 가능한 문서입니다. 두 가지 형식을 지원합니다.

X.509-SVID vs JWT-SVID 비교

특성
X.509-SVID
JWT-SVID

형식

X.509 인증서

JSON Web Token

용도

mTLS 연결, 장기 서비스 통신

API 인증, 단기 토큰 교환

SPIFFE ID 위치

SAN URI 확장

sub 클레임

크기

상대적으로 큼

상대적으로 작음

TTL

일반적으로 1시간

일반적으로 5분

갱신

자동 갱신 필수

필요시 재발급

검증

인증서 체인 검증

서명 검증 + 클레임 확인

사용 사례

서비스 메시, 데이터베이스 연결

REST API, 외부 서비스 호출

X.509-SVID 구조:

Trust Bundle

Trust Bundle은 특정 Trust Domain의 루트 CA 인증서들을 포함하는 집합입니다. 워크로드는 Trust Bundle을 사용하여 상대방의 SVID를 검증합니다.


2. SPIRE 아키텍처

컴포넌트 개요

spinner

SPIRE Server

SPIRE Server는 아이덴티티 관리의 중앙 컴포넌트로 다음 기능을 수행합니다:

  • Certificate Authority (CA): X.509-SVID 및 JWT-SVID 서명

  • Registration API: 워크로드 등록 엔트리 관리

  • Node Attestation: 에이전트 노드 검증

  • Datastore: 등록 엔트리, CA 키 등 영속 데이터 저장

SPIRE Agent

SPIRE Agent는 각 노드에서 실행되며 다음 기능을 수행합니다:

  • Workload API: Unix 도메인 소켓을 통한 SVID 제공

  • Workload Attestation: 로컬 워크로드 검증

  • SVID 캐싱 및 갱신: 효율적인 인증서 라이프사이클 관리

  • SDS (Secret Discovery Service): Envoy와의 통합

SVID 발급 플로우

spinner

3. 설치 및 구성

Helm 차트를 이용한 설치

SPIRE Helm 차트는 전체 SPIRE 인프라를 단일 명령으로 배포합니다.

프로덕션 구성

설치 확인


4. 노드 어테스테이션

노드 어테스테이션은 SPIRE Agent가 실행되는 노드의 신원을 확인하는 프로세스입니다.

어테스테이션 방식 비교

방식
설명
사용 환경
보안 수준

k8s_psat

Kubernetes Projected ServiceAccount Token

Kubernetes

높음

aws_iid

AWS Instance Identity Document

AWS EC2

높음

gcp_iit

GCP Instance Identity Token

GCP Compute

높음

azure_msi

Azure Managed Identity

Azure VM

높음

join_token

일회용 토큰

모든 환경

중간

x509pop

기존 X.509 인증서

하이브리드

높음

노드 및 워크로드 어테스테이션 플로우

spinner

Kubernetes PSAT 어테스테이션 구성

AWS IID 어테스테이션 구성


5. 워크로드 어테스테이션

워크로드 어테스테이션은 SPIRE Agent가 로컬에서 실행 중인 워크로드의 신원을 확인하는 프로세스입니다.

Kubernetes 워크로드 어테스터

Kubernetes 어테스터는 다음 셀렉터를 제공합니다:

셀렉터
설명
예시

k8s:ns

네임스페이스

k8s:ns:payments

k8s:sa

ServiceAccount

k8s:sa:payment-processor

k8s:pod-label

Pod 레이블

k8s:pod-label:app:web

k8s:pod-owner

소유자 종류

k8s:pod-owner:Deployment

k8s:pod-owner-uid

소유자 UID

k8s:pod-owner-uid:xxx

k8s:pod-name

Pod 이름

k8s:pod-name:web-xxx

k8s:pod-uid

Pod UID

k8s:pod-uid:xxx

k8s:container-name

컨테이너 이름

k8s:container-name:app

k8s:container-image

컨테이너 이미지

k8s:container-image:nginx:1.25

k8s:node-name

노드 이름

k8s:node-name:ip-10-0-1-5

SPIRE Agent 구성 - 워크로드 어테스터

등록 엔트리 생성


6. Kubernetes 통합

SPIFFE CSI Driver

SPIFFE CSI Driver는 Pod에 SVID를 파일 시스템으로 마운트합니다.

SPIRE Controller Manager (자동 등록)

SPIRE Controller Manager는 ClusterSPIFFEID CR을 감시하여 자동으로 등록 엔트리를 생성합니다.

Envoy SDS 연동

SPIRE Agent는 Envoy의 Secret Discovery Service(SDS)를 통해 인증서를 동적으로 제공합니다.


7. 서비스 메시 연동

Istio + SPIRE

Istio는 기본적으로 자체 CA(istiod)를 사용하지만, SPIRE를 외부 CA로 사용하도록 구성할 수 있습니다.

Cilium + SPIRE

Cilium은 SPIRE와 연동하여 네트워크 정책과 워크로드 아이덴티티를 통합합니다.

Linkerd + SPIRE

Linkerd는 자체 Identity 시스템을 사용하지만, Trust Anchor를 외부에서 주입할 수 있습니다.


8. 페더레이션

페더레이션은 서로 다른 Trust Domain 간에 신뢰를 설정하여 크로스 클러스터 또는 멀티 클라우드 환경에서 워크로드 간 인증을 가능하게 합니다.

페더레이션 아키텍처

spinner

페더레이션 구성

Trust Domain A (US 클러스터):

Trust Domain B (EU 클러스터):

크로스 클러스터 워크로드 등록

페더레이션 상태 확인


9. EKS 통합

IRSA vs SPIFFE 비교

특성
IRSA (IAM Roles for Service Accounts)
SPIFFE/SPIRE

범위

AWS 서비스 접근

워크로드 간 상호 인증

아이덴티티 형식

OIDC + IAM Role ARN

X.509-SVID, JWT-SVID

신뢰 범위

단일 AWS 계정/클러스터

크로스 클러스터, 멀티 클라우드

자동 갱신

자동 (12시간 TTL)

자동 (구성 가능한 TTL)

mTLS 지원

미지원

기본 지원

관리 주체

AWS 관리형

자체 관리형

비용

무료

인프라 비용

사용 사례

S3, DynamoDB 등 AWS 서비스

서비스 간 통신, 외부 시스템

EKS Pod Identity vs SPIRE 비교

특성
EKS Pod Identity
SPIRE

설정 복잡도

낮음

중간

플랫폼 독립성

AWS 전용

플랫폼 독립

페더레이션

AWS 계정 간

모든 Trust Domain

인증서 기반 인증

미지원

기본 지원

운영 부담

낮음

중간

하이브리드 사용 사례

대부분의 EKS 환경에서는 IRSA/Pod Identity와 SPIRE를 함께 사용하는 것이 권장됩니다:

AWS Private CA 통합

프로덕션 환경에서는 SPIRE의 내장 CA 대신 AWS Private CA를 사용할 수 있습니다:


10. 모범 사례

Trust Domain 네이밍 전략

주의사항:

  • Trust Domain은 변경하기 어려우므로 신중하게 설계

  • 환경(dev/staging/prod)을 Trust Domain에 포함하여 격리

  • DNS 호환 형식 권장

SVID TTL 튜닝

사용 사례
X.509-SVID TTL
JWT-SVID TTL
근거

일반 서비스

1시간

5분

표준 보안/성능 균형

고보안 서비스

15분

2분

키 노출 위험 최소화

배치 작업

2시간

10분

장기 실행 작업 허용

CI/CD 파이프라인

30분

5분

빌드 시간 내 유효

고가용성 배포

키 로테이션

SPIRE는 자동으로 CA 키를 로테이션합니다. 수동 로테이션이 필요한 경우:

보안 강화 체크리스트


11. 요약 및 참고 자료

핵심 요약

구성 요소
역할
핵심 기능

SPIFFE ID

워크로드 식별자

URI 형식의 고유 식별

X.509-SVID

인증서 기반 아이덴티티

mTLS, 장기 서비스 통신

JWT-SVID

토큰 기반 아이덴티티

API 인증, 단기 토큰

SPIRE Server

아이덴티티 관리

CA, 등록, 어테스테이션

SPIRE Agent

로컬 아이덴티티 제공

Workload API, 캐싱

Trust Bundle

신뢰 앵커

상대방 SVID 검증

페더레이션

크로스 도메인 신뢰

멀티 클러스터 통신

구현 로드맵

  1. 1단계: 개발 환경에 SPIRE 설치 및 기본 구성

  2. 2단계: 파일럿 워크로드에 SPIFFE 아이덴티티 적용

  3. 3단계: 서비스 메시 통합 (Istio/Cilium/Linkerd)

  4. 4단계: 크로스 클러스터 페더레이션 구성

  5. 5단계: 프로덕션 HA 배포 및 모니터링

참고 자료

공식 문서:

통합 가이드:

AWS 관련:


다음 단계: Kubernetes 인증 및 권한 부여에서 RBAC과 함께 SPIFFE 아이덴티티를 활용하는 방법을 학습하세요.

마지막 업데이트