인증 방법(Auth Methods)

인증 방법(Auth Methods)

4️⃣ 인증 방법(Auth Methods)

Vault는 다양한 **인증 백엔드(Auth Methods)**를 지원하며, 사용자의 신원을 검증한 후 **정책(Policy)**을 적용해 접근을 제어합니다.

이번 섹션에서는 가장 많이 사용하는 네 가지 인증 방식에 대해 알아봅니다.


1. Token 기반 인증 이해

Vault 설치 후 가장 먼저 사용하는 인증 방식은 바로 Token 방식입니다.
Vault는 사용자가 인증되면 고유한 Access Token을 발급하며, 이를 통해 Vault에 접근합니다.

📦 사용 예시

# 토큰 설정
export VAULT_ADDR=http://127.0.0.1:8200
export VAULT_TOKEN=s.xxxxxx

# 토큰으로 비밀 접근
vault kv put secret/myapp/config username=admin password=pass123
vault kv get secret/myapp/config

📘 특징 요약

항목 설명
초기 Root Token Vault Init 시 발급됨
Child Token 사용자/시스템 별 생성 가능
TTL 및 정책 각각 설정 가능

🖼️ Token 인증 흐름

+--------+       +--------+       +---------+
| Client | ----> | Token  | ----> | Policies|
+--------+       +--------+       +---------+

2. LDAP 인증 구성 (AD 연동 포함)

기업 환경에서 가장 많이 쓰이는 인증 방식은 LDAP / Active Directory 연동입니다.

Vault는 사용자의 LDAP 그룹과 매핑된 정책을 기반으로 접근을 제어합니다.

📦 LDAP 연동 예시

vault auth enable ldap

vault write auth/ldap/config \
  url="ldaps://ldap.example.com" \
  binddn="cn=admin,dc=example,dc=com" \
  bindpass="admin123" \
  userdn="ou=users,dc=example,dc=com" \
  groupdn="ou=groups,dc=example,dc=com" \
  groupfilter="(objectClass=groupOfNames)" \
  groupattr="cn" \
  userattr="uid" \
  insecure_tls=false

📘 사용자 로그인 테스트

vault login -method=ldap username=john password=mypassword

🖼️ LDAP 인증 아키텍처

+---------+        +-------------+         +--------------+
|  User   | -----> |  Vault      | ----->  | ActiveDirectory |
+---------+        +-------------+         +--------------+
                            ↕
                        LDAP Bind / Search

그룹 매핑을 통해 ldap-group-admins → policy: vault-admin 식의 권한 제어가 가능합니다.


3. Kubernetes Auth (ServiceAccount 기반 인증 흐름)

Kubernetes 환경에서는 Vault가 ServiceAccount Token을 통해 자동 인증하는 방식이 일반적입니다.
Pod 내 애플리케이션이 Vault에 비밀을 요청할 수 있게 됩니다.

📦 설정 흐름

  1. Vault 서버에서 K8s Auth Method 활성화
  2. K8s 클러스터 API 연결 정보 등록
  3. K8s의 특정 ServiceAccount와 Vault 정책 매핑
vault auth enable kubernetes

vault write auth/kubernetes/config \
  kubernetes_host="https://$K8S_HOST" \
  kubernetes_ca_cert=@/var/run/secrets/kubernetes.io/serviceaccount/ca.crt \
  token_reviewer_jwt=@/var/run/secrets/kubernetes.io/serviceaccount/token

📘 Role 생성

vault write auth/kubernetes/role/app \
  bound_service_account_names=app-sa \
  bound_service_account_namespaces=default \
  policies=app-policy \
  ttl=1h

🖼️ K8s 인증 흐름

+------------+
|  Pod       |
| (app-sa)   |
+-----+------+
      |
      | 1. JWT 포함 요청
      v
+------------+      2. Token 검증 요청       +----------+
|   Vault    | <---------------------------> | Kubernetes API |
+------------+                               +----------+
      |
      v
+--------------+
| Policy 적용  |
+--------------+

4. OIDC 인증 (Keycloak, Google 연동 예시)

OIDC(OpenID Connect)는 OAuth2 기반의 인증 방식으로,
Keycloak, Google, GitHub 등의 외부 IdP를 Vault와 연동할 수 있습니다.

📦 OIDC Auth 활성화

vault auth enable oidc

vault write auth/oidc/config \
  oidc_discovery_url="https://accounts.google.com" \
  oidc_client_id="YOUR_CLIENT_ID" \
  oidc_client_secret="YOUR_SECRET" \
  default_role="my-role"

📘 Role 정의

vault write auth/oidc/role/my-role \
  user_claim="email" \
  allowed_redirect_uris="http://localhost:8250/oidc/callback" \
  policies="default"

📘 로그인 시 브라우저 자동 실행

vault login -method=oidc

🖼️ OIDC 인증 플로우 (Google 예시)

+----------+
|  User    |
+----+-----+
     | 1. 로그인 요청
     v
+----------+          +-------------------+
|  Vault   | <------> | Google OIDC Server|
+----------+          +-------------------+
     |
     v
+-------------+
| Token 발급 & 정책 적용 |
+-------------+

📌 인증 방식 비교 요약

방식 사용 환경 특징
Token 로컬, 테스트용 단순하지만 수동 발급 필요
LDAP 기업 내부 기존 AD 연동 가능, 그룹 매핑 가능
K8s Kubernetes 운영환경 Pod에서 자동 인증 지원
OIDC 외부 IdP 연동 SSO 가능, Google/Keycloak 활용

RSS Feed
마지막 수정일자