믿을 만한 방어는 하나뿐이야. LLM 이 애초에 시크릿을 못 보게 하는 것. "공유하지 마" 라고 말하는 건 방어가 아니고.
Layered 전략
| Layer | 하는 일 | 방법 |
|---|---|---|
| 1. Agent 가 읽는 파일에 시크릿 두지 마 | context 에 없으면 반복할 수 없음 | OS keychain, secrets manager, repo 외부의 runtime env var 사용 |
| 2. Ignore 파일 | 1번을 한 겹 더 받쳐주는 안전장치 | .cursorignore, .aiignore, .aiderignore 등 |
| 3. commit 된 config 에 placeholder | 진짜 값은 돌고 있는 프로세스에만 존재 | .env.example 에 API_KEY=<FROM_KEYCHAIN> |
| 4. 적극적 회전 | 새더라도 번지는 범위를 제한 | OPENAI / Anthropic / GitHub 키: 분기 최소 |
| 5. Scoped 토큰 | 토큰이 새도 번지는 범위가 작음 | Read-only DB 사용자, repo-scoped GitHub PAT |