동적 시크릿(Dynamic Secrets)
7️⃣ 동적 시크릿(Dynamic Secrets)
Vault의 핵심 기능 중 하나는 **동적 시크릿(Dynamic Secrets)**입니다. 기존의 정적 시크릿과 달리, 요청 시점에 실시간으로 생성되고 만료되는 일회성 자격 증명을 발급함으로써 보안성과 유연성을 극대화할 수 있습니다.
1. 동적 vs 정적 시크릿 차이
항목 | 정적 시크릿 | 동적 시크릿 |
---|---|---|
생성 시점 | 미리 저장 | 요청 시점에 생성 |
예시 | .env 파일, hardcoded credentials |
Vault의 DB, AWS 엔진 |
보안성 | 재사용되거나 유출 가능 | 자동 만료, 일회성 사용 |
관리 부담 | 회전 수동 | 자동 회전 및 만료 |
📌 정적 시크릿 예시
vault kv put secret/webapp username=admin password=1234
📌 동적 시크릿 예시
vault read database/creds/readonly
요청 시점에 계정이 생성되고, TTL이 만료되면 자동 제거됩니다.
2. DB 사용자 계정 자동 생성과 만료
Vault는 DB에 직접 연결하여 요청이 들어올 때마다 동적으로 계정을 생성할 수 있습니다.
🧪 PostgreSQL 예시
1️⃣ 데이터베이스 시크릿 엔진 활성화
vault secrets enable database
2️⃣ 연결 설정 등록
vault write database/config/my-postgres \
plugin_name=postgresql-database-plugin \
allowed_roles="readonly" \
connection_url="postgresql://{{username}}:{{password}}@db.example.com:5432/postgres?sslmode=disable" \
username="vaultuser" \
password="vaultpass"
3️⃣ Role 생성 (SQL 포함)
vault write database/roles/readonly \
db_name=my-postgres \
creation_statements="CREATE ROLE \"{{name}}\" WITH LOGIN PASSWORD '{{password}}' VALID UNTIL '{{expiration}}'; GRANT SELECT ON ALL TABLES IN SCHEMA public TO \"{{name}}\";" \
default_ttl="1h" \
max_ttl="24h"
4️⃣ 동적 계정 요청
vault read database/creds/readonly
📌 출력 결과 예시:
{
"data": {
"username": "v-token-xyz",
"password": "A1b2C3d4E5f6"
},
"lease_duration": 3600,
"lease_id": "database/creds/readonly/xyz"
}
3. AWS IAM Role의 일시적 토큰 발급
Vault는 AWS API와 통합하여 일시적인 IAM credentials를 발급할 수 있습니다.
🧪 예시 흐름
1️⃣ AWS 엔진 활성화
vault secrets enable aws
2️⃣ AWS config 설정
vault write aws/config/root \
access_key=AKIA... \
secret_key=abc123...
3️⃣ Role 정의
vault write aws/roles/my-role \
credential_type=iam_user \
policy_document=-<<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:ListBucket"],
"Resource": ["arn:aws:s3:::mybucket"]
}
]
}
EOF
4️⃣ IAM credential 요청
vault read aws/creds/my-role
⏱️ 이 IAM 계정은 자동 생성되고 TTL이 지나면 만료 또는 삭제됩니다.
4. TTL, Lease, Renewal 개념 설명
용어 | 설명 |
---|---|
TTL (Time To Live) | 자격 증명의 유효 시간 |
Lease ID | 자격 증명에 대한 고유 식별자 |
Renewal | TTL 연장 |
Revocation | 강제 만료 또는 삭제 |
📌 동적 시크릿은 Vault 내부에서 Lease 단위로 관리됩니다.
🧪 Lease 조회 & 갱신 예시
vault lease list
vault lease renew database/creds/readonly/xyz
vault lease revoke database/creds/readonly/xyz
📊 아키텍처 플로우 그림

(💡 실제 플로우 이미지가 필요하시면 요청 주시면 새로 제작 가능합니다.)
🧠 실무 TIP
- 정적 시크릿은 CI/CD 또는 legacy 시스템에서 유용하지만, 보안을 강화하려면 동적 시크릿 사용을 권장합니다.
- TTL을 짧게, 자동 갱신을 통해 만료 관리, Audit 로그 활성화로 추적성 확보까지 함께 고려하세요.
마지막 수정일자