SPIFFE 인증 메서드
SPIFFE 인증 메서드
SPIFFE 인증 메서드는 워크로드가 SPIFFE 검증 신원 문서(SVID)를 사용해 Vault에 인증할 수 있게 해줘요. 신뢰는 구성된 트러스트 번들에서 오는 X.509 인증서 또는 JWT 중에서 선택할 수 있어요.
출처: 문서
본문
플랫폼별 인증 메서드(Kubernetes, AWS, Azure)와 달리 SPIFFE 인증은 워크로드가 어디에서 실행되든(베어메탈, 가상 머신, 멀티클라우드 Kubernetes 클러스터) 동일한 방식으로 동작해요.
SPIFFE 프레임워크에 익숙하지 않다면 SPIFFE 개념 문서를 참조하세요.
Vault와 함께 SPIFFE 인증을 사용하는 시기
다음과 같은 경우 Vault에서 SPIFFE 인증을 사용하세요.
- 워크로드가 베어메탈, VM, 여러 클라우드 등 이기종 컴퓨팅 환경에 걸쳐 있고, 모든 워크로드를 커버하는 단일 플랫폼 네이티브 신원 발급자가 없는 경우
- 베어러 JWT가 아니라 mTLS 기반 신원(X.509-SVID)이 필요한 경우. 예를 들어 단일 인증 토큰이 아니라 더 넓은 제로 트러스트 또는 서비스 메시 신원 모델에 Vault 접근을 맞추어야 하는 경우
- 이미 SPIRE 또는 워크로드 신원용 SVID를 생성하는 서비스를 운영 중이고, 별도의 인증 스킴을 유지하지 않고 Vault가 같은 트러스트 도메인의 신원을 소비하길 원하는 경우
- 표준화된 트러스트 도메인 모델을 통해 조직 또는 클라우드 경계를 넘어 페더레이션되는 신원이 필요한 경우
사용자 기반, 대화형 또는 브라우저 기반 인증은 JWT/OIDC 인증 메서드를 참조하세요.
SPIFFE 인증 메서드와 SPIFFE 시크릿 엔진의 차이를 이해하면 사용 사례에 맞는 통합을 선택하는 데 도움이 돼요.
SPIFFE 인증 vs. SPIFFE 시크릿 엔진
- SPIRE(또는 다른 SPIFFE 발급자)를 실행 중이고 SVID로 Vault에 인증하려면 SPIFFE 인증(auth/spiffe)을 사용하세요.
- 기존 Vault 인증 메서드(Kubernetes, AppRole, AWS 등)로 SPIFFE ID와 SVID를 생성하려면 SPIFFE 시크릿 엔진(secrets/spiffe)을 사용하세요. 자세한 내용은 SPIFFE 시크릿 엔진 문서를 참조하세요.
SPIFFE 인증이 동작하는 방식
Vault로 SPIFFE를 구현할 때 핵심적인 아키텍처 구분은 워크로드 신원을 생성하는 시스템과 검증하는 시스템이 누구냐는 거예요.
Vault는 워크로드가 인증하기 전에는 워크로드에 SPIFFE 신원을 발급할 수 없어요. SPIFFE 컨트롤 플레인(호스트 노드에서 실행되는 SPIRE 에이전트 또는 서비스 메시)이 먼저 워크로드를 증명(attest)하고 SVID를 발급해야 해요.
Vault는 SVID의 소비자이지 발급자가 아니에요. auth/spiffe 플러그인은 Vault가 외부 SPIFFE 권위자(예: SPIRE)가 생성한 신원을 수락하고 검증할 수 있게 하지만, Vault 자체가 SPIFFE 신원을 생성하지는 않아요.
[ External SPIFFE Issuer ] ───(0. Fetch trust bundle)───────> [ HashiCorp Vault ]
(e.g., SPIRE Agent/Server) (validates SVIDs
| against bundle)
│ ▲
│ 1. Issue SVID │
▼ │
[ Workload ] ─────────────(2. Present SVID to login)─────────────────┘
지원되는 트러스트 번들 형식
Vault는 두 가지 유형의 SVID를 수락해요.
- X.509-SVID(mTLS): 클라이언트가 SAN 필드에 SPIFFE URI(예: spiffe://example.org/ns/prod/sa/payment-service)를 포함하는 클라이언트 인증서를 제시해요. Vault는 구성된 트러스트 번들에 대해 인증서를 검증해요.
- JWT-SVID: 클라이언트가 로컬 SPIFFE 워크로드 API에서 단기 유효 JWT를 가져와 베어러 토큰으로 보내요. Vault는 트러스트 번들의 JWKS에 대해 서명을 검증하고
aud클레임을 마운트의 audience 허용 목록과 대조해요.
트러스트 번들의 파일 형식에 따라 Vault가 검증할 수 있는 SVID 유형이 결정돼요. 형식이 맞지 않는 번들은 다른 SVID 유형을 검증하지 못해요.
| 번들 형식 | 포함 내용 | 검증 가능 |
|---|---|---|
| JWKS 문서 | X.509 CA 인증서 및 JWT 서명 키 | X.509-SVID 및 JWT-SVID |
| PEM 인코딩 X.509 인증서 | X.509 CA 인증서만 | X.509-SVID만 |
선택한 SVID는 Vault에서 SPIFFE 인증 메서드를 구성할 때 프로파일(profile) 매개변수에 직접 매핑돼요. 각 유형은 서로 다른 사용 사례와 트레이드오프가 있어요.
| 프로파일 | 번들 형식 | 지원 SVID 유형 | Vault가 번들을 가져오는 방식 | 가장 좋은 경우 |
|---|---|---|---|---|
| static (bundle = PEM) | PEM | X.509-SVID만 | 직접 붙여넣기, 가져오기 없음 | 에어갭/네트워크 의존 없음, JWT-SVID 불필요, 트러스트 앵커 업데이트에 대한 엄격한 변경 통제 |
| static (bundle = JWKS) | JWKS | X.509-SVID 및 JWT-SVID | 직접 붙여넣기, 가져오기 없음 | 위와 같지만 두 SVID 유형 모두 필요 |
| https_web_pem | PEM | X.509-SVID만 | HTTPS로 자동 가져오기, CA(시스템 트러스트 스토어 또는 커스텀 endpoint_root_ca_truststore_pem)로 검증 | Vault가 엔드포인트에 도달 가능하고 JWT-SVID 불필요 |
| https_web_bundle | JWKS | X.509-SVID 및 JWT-SVID | HTTPS로 자동 가져오기, CA 검증 | SPIRE 외의 SPIFFE 호환 발급자 또는 https_web형 페더레이션 엔드포인트를 노출하는 SPIRE 서버와 페더레이션 |
| https_spiffe_bundle | JWKS | X.509-SVID 및 JWT-SVID | 자동 가져오기, CA 체인 대신 특정 SPIFFE ID(endpoint_spiffe_id) 일치로 검증 | SPIRE 업스트림과 페더레이션하는 표준 선택 — 대부분의 설정이 기본으로 사용해야 하는 방식 |
Vault가 로드 밸런서나 리버스 프록시 뒤에 있다면 인증 메서드를 구성하기 전에 로드 밸런서 및 프록시 고려 사항을 참조하세요. TLS가 어디에서 종료되는지에 따라 문서대로 X.509-SVID 인증이 가능한지, 아니면 JWT-SVID에 의존해야 하는지가 결정돼요.
다음 단계
- SPIFFE 인증 메서드 구성하기
- SPIRE로 SPIFFE 인증 메서드를 사용해 Vault에 인증하기
더 알아보기 (Learn more)
- SPIFFE 시크릿 엔진 문서
- SPIFFE 개념 문서