지정해주신 원칙 및 스키마 구조를 엄격히 준수하여 개념 노트 동적 시크릿을 작성하였습니다.
생성된 위키 노크 파일 위치:
작성된 위키 노트 내용 요약
---
type: concept
status: draft
core: false
tags:
- security
- secret-management
- devops
- zero-trust
- infrastructure
aliases:
- Dynamic Secrets
- 동적 자격 증명
- 임시 자격 증명
sources:
- raw/API_Key_관리_및_Infisical_도입_가이드.md
created: 2026-08-28
updated: 2026-08-28
---
# 동적 시크릿
## 한 줄 정의
**동적 시크릿(Dynamic Secrets)**은 정적인 API Key나 비밀번호를 장기 보관하는 대신, 요청 시점에 임시 자격 증명(Credential)을 즉시 생성하고 지정된 유효 기간(TTL/Lease)이 지나면 자동으로 폐기하는 보안 메커니즘입니다.
## 핵심 요지
- **Zero Trust 및 임시 접근 제어**: 정적 자격 증명의 보관 비용 및 유출 위험을 근본적으로 제거하며, 필요 시점에만 최소 권한으로 자격 증명을 생성합니다 (raw/API_Key_관리_및_Infisical_도입_가이드.md).
- **자동 폐기 및 임대(Lease) 기반 만료**: 생성된 시크릿에는 명확한 수명 주기(TTL)가 부여되며, 별도의 수동 폐기 작업 없이도 시간이 지나면 자동 만료됩니다 (raw/API_Key_관리_및_Infisical_도입_가이드.md).
- **피해 범위(Blast Radius)의 극소화**: 개발자 노트북 도난이나 설정 파일 유출 사고가 발생하더라도 자격 증명이 이미 만료되었거나 짧은 TTL을 가지므로 잠재적 피해를 극도로 제한합니다 (raw/API_Key_관리_및_Infisical_도입_가이드.md).
- **멀티 데이터베이스 및 서비스 연동**: PostgreSQL, MongoDB 등 데이터베이스 자격 증명이나 클라우드 인프라 IAM 계정을 요청 단위로 자동 발급·삭제할 수 있습니다 (raw/API_Key_관리_및_Infisical_도입_가이드.md).
## 상세
### 1. 정적 시크릿 vs 동적 시크릿 비교
전통적인 시크릿 관리 방식은 지속적이고 장기적인 자격 증명을 생성하여 `.env` 파일이나 데이터베이스에 저장합니다. 반면 동적 시크릿은 필요할 때만 발급받아 사용합니다 (raw/API_Key_관리_및_Infisical_도입_가이드.md).
| 비교 항목 | 정적 시크릿 (Static Secrets) | 동적 시크릿 (Dynamic Secrets) |
|---|---|---|
| **생성 시점** | 관리자가 사전 생성 | 애플리케이션/클라이언트 요청 시 실시간 생성 |
| **수명 주기 (TTL)** | 무기한 또는 장기 (30~180일 주기 수동/자동 로테이션) | 단기 (몇 분~몇 시간 단위 Lease 만료) |
| **유출 위험성** | 코드/Git 히스토리/로컬 파일 유출 시 장기 악용 가능 | 유출되더라도 만료 시점 이후 즉시 무효화 |
| **폐기 메커니즘** | 관리자의 수동 Revoke 또는 정기 로테이션 절차 | 시크릿 관리자에 의한 자동 탈옥/폐기 (Auto-revoke) |
| **적용 대상** | 외부 SaaS API Key (Stripe, SendGrid 등) | PostgreSQL, MongoDB, AWS IAM 등 자격 증명 생성 API를 제공하는 백엔드 인프라 |
### 2. 주요 아키텍처 및 작동 원리
동적 시크릿 체계는 [[시크릿 관리자]](예: [[Infisical]], HashiCorp Vault)가 타깃 인프라(예: PostgreSQL)의 마스터 관리자 권한을 갖고, 인가된 클라이언트의 요청이 올 때마다 전용 사용자를 즉시 생성해 주는 방식으로 동작합니다 (raw/API_Key_관리_및_Infisical_도입_가이드.md).
1. **시크릿 요청**: 애플리케이션 또는 CI/CD 파이프라인이 Universal Auth 또는 IAM 인증을 통해 [[시크릿 관리자]]에 동적 시크릿 발급을 요청합니다.
2. **자격 증명 실시간 생성**: [[시크릿 관리자]]가 연동된 타깃 서비스(예: PostgreSQL DB)에 접속하여 임시 사용자 계정과 임의의 고복잡도 비밀번호를 생성하고, 특정 역할(Role)을 부여합니다.
3. **Lease(임대 기간) 전달**: 생성된 자격 증명과 Lease ID, TTL(예: 1시간)을 클라이언트에 반환합니다.
4. **자동 폐기(Revocation)**: TTL이 만료되거나 요청에 의해 Lease가 취소되면 [[시크릿 관리자]]가 타깃 서비스에서 해당 임시 사용자 계정을 자동으로 Drop/Revoke 처리합니다.
### 3. 주요 활용 시나리오
- **CI/CD 파이프라인 및 통합 테스트**: 빌드/테스트 런타임에만 일회성 DB 계정을 생성하여 테스트 수행 후 빌드가 끝나면 즉시 계정을 파기합니다.
- **개발자 데이터베이스 직접 접근**: 개발자가 운영/스테이징 DB 조회가 필요할 때 개인용 장기 계정을 주는 대신, 1시간 유효한 동적 DB 계정을 발급하여 접근 로그를 완벽히 남깁니다.
- **클라우드 인프라 프로비저닝**: Terraform 또는 K8s 오케스트레이터가 작업을 수행할 때 임시 AWS IAM 자격 증명을 받아 사용한 후 파기합니다.
## 예시
### 1. Infisical / Vault 체계에서의 동적 PostgreSQL 자격 증명 생성 흐름 (Node.js SDK)
애플리케이션이 런타임에 정적 DB 비밀번호를 보관하지 않고, 동적 시크릿 엔진을 호출하여 1시간짜리 임시 DB 연결 문자열을 받아오는 예시입니다 (raw/API_Key_관리_및_Infisical_도입_가이드.md):
```typescript
import { InfisicalClient } from "@infisical/sdk";
import { Client } from "pg";
const infisical = new InfisicalClient({
siteUrl: "https://infisical.my-company.com",
auth: {
universalAuth: {
clientId: process.env.INFISICAL_CLIENT_ID!,
clientSecret: process.env.INFISICAL_CLIENT_SECRET!,
},
},
});
async function connectToDatabaseWithDynamicSecret() {
// PostgreSQL용 동적 시크릿 발급 요청 (1시간 TTL)
const dynamicSecret = await infisical.secrets().getDynamicSecret({
slug: "postgres-db-dynamic",
environment: "prod",
projectId: "proj-12345",
});
const { username, password } = dynamicSecret.value;
// 발급받은 임시 자격 증명으로 DB 연결
const dbClient = new Client({
host: "postgres.internal.net",
port: 5432,
database: "production_db",
user: username, // 예: v-token-app-usr-8f3a1b-1724800000
password: password, // 임의 생성된 일회성 암호
});
await dbClient.connect();
console.log(`Connected to DB with dynamic user: ${username}`);
return dbClient;
}2. Infisical CLI 기반 임시 자격 증명 주입 실행 예시
로컬 개발 또는 디버깅 시 CLI 명령을 통해 임시 자격 증명을 받아 프로세스를 구동하는 형태입니다 (raw/API_Key_관리_및_Infisical_도입_가이드.md):
# PostgreSQL 또는 MongoDB 동적 시크릿이 설정된 환경에서 CLI 실행
# 명령 실행 동안만 임시 DB_USER / DB_PASS가 환경 변수로 주입됨
infisical run --env=dev --dynamic-secret=postgres-db -- python manage.py migrate충돌
- SaaS API Key와의 호환성 제약: PostgreSQL, MongoDB, AWS IAM 등 자체 계정 생성/삭제 API를 제공하는 인프라 솔루션과 달리, 외부 SaaS(예: OpenAI API Key, Stripe Live Key 등)는 요청 단위의 실시간 동적 발급 API를 제공하지 않는 경우가 많습니다. 이러한 외부 API Key의 경우 ‘동적 시크릿 발급’ 대신 ‘무중단 API Key 로테이션’ 및 중앙집중식 시크릿 관리자 주입 방식을 결합하여 보안을 유지해야 합니다 (raw/API_Key_관리_및_Infisical_도입_가이드.md).
관련 노트
- 시크릿 관리자: 동적 시크릿 발급, E2EE 저장 및 Lease 관리를 총괄하는 중앙 인프라 노트
- Infisical: PostgreSQL, MongoDB 동적 시크릿(Dynamic Secrets) 생성을 지원하는 오픈소스 시크릿 플랫폼 노트
- API Key 관리: 정적 및 동적 자격 증명을 다루는 전반적인 API Key 관리 원칙 노트
- API Key 로테이션: 동적 시크릿 조달이 불가능한 외부 API Key의 정기/무중단 교체 전략 노트
- Zero Trust 보안 모델: 모든 요청에 대해 최소 권한과 동적 자격 증명을 요구하는 보안 패러다임 노트