동적 시크릿(Dynamic Secrets)

동적 시크릿(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

📊 아키텍처 플로우 그림

![동적 시크릿 아키텍처](sandbox:/mnt/data/A_presentation_slide_in_Korean_titled_“정책과_권한_제어_(.png)

(💡 실제 플로우 이미지가 필요하시면 요청 주시면 새로 제작 가능합니다.)


🧠 실무 TIP

  • 정적 시크릿은 CI/CD 또는 legacy 시스템에서 유용하지만, 보안을 강화하려면 동적 시크릿 사용을 권장합니다.
  • TTL을 짧게, 자동 갱신을 통해 만료 관리, Audit 로그 활성화로 추적성 확보까지 함께 고려하세요.

RSS Feed
마지막 수정일자