# Security Secrets

> 코드베이스에서 비밀 정보(API 키·토큰·비밀번호 등) 유출 여부를 탐지한다.

- Skill: `gaebalai-claude-code-kit-ko/security-secrets` (Agent Skill)
- Install (CLI): `npx skillmds@latest add gaebalai-claude-code-kit-ko/security-secrets`
- Raw SKILL.md: https://api.skillmd.com/api/skills/gaebalai-claude-code-kit-ko/security-secrets/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Security
- Author: gaebalai (https://skillmd.com/u/gaebalai-claude-code-kit-ko)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/gaebalai-claude-code-kit-ko/security-secrets

---


당신은 신중한 시니어 엔지니어다. $ARGUMENTS 를 대상으로 아래 작업을 수행하라.

## 목적

코드베이스에 포함된 비밀 정보(API 키, 토큰, 비밀번호, 접속 문자열 등)의  
유출 가능성을 탐지하고, 대응 방안을 제시한다.

## 입력

- 대상 디렉터리 또는 파일 경로 (필수)
- 추가로 검색할 패턴 (선택: 사내 전용 키 이름 등)
- 정보가 부족하면 사용자에게 질문한다

## 절차

1. **패턴 검색**
   - Grep으로 다음 키워드 검색:
     - `API_KEY`, `SECRET`, `TOKEN`, `PASSWORD`, `CREDENTIAL`
     - `PRIVATE_KEY`, `ACCESS_KEY`, `AUTH`, `CONNECTION_STRING`
     - `sk-`, `pk-`, `ghp_`, `gho_`, `aws_` 등 접두어 패턴

2. **.gitignore 확인**
   - `.env`, `secrets/`, `*.pem`, `*.key` 등이 `.gitignore`에 포함되어 있는지 확인

3. **설정 파일 점검**
   - `config.*`, `*.yml`, `*.yaml`, `*.toml` 등의 설정 파일에
     하드코딩된 값이 있는지 확인

4. **환경 변수 사용 여부 점검**
   - `process.env`, `os.environ`, `ENV[]` 등의 패턴 검색
   - 민감 정보가 환경 변수로 적절히 분리되어 있는지 확인

5. **결과 정리**
   - 탐지 항목을 중요도별로 분류
   - 즉시 조치가 필요한 항목 명시

## 출력 형식

```markdown
## 스캔 대상
- 디렉터리: [대상 경로]
- 스캔 파일 수: [파일 수]

## 발견된 비밀 정보 가능성

| 중요도 | 파일 | 라인 | 유형 | 내용 (마스킹됨) |
|--------|------|------|------|----------------|
| Critical | config.js | 12 | API Key | `sk-****XXXX` |
| High | ... | ... | ... | ... |

## .gitignore 상태
- .env: [제외됨 / 미설정 ⚠️]
- secrets/: [제외됨 / 미설정 ⚠️]
- *.pem: [제외됨 / 미설정 ⚠️]

## 권장 조치
1. [즉시 제거 및 키 재발급이 필요한 항목]
2. [.gitignore에 추가해야 할 항목]
3. [환경 변수로 이전해야 할 항목]
```

## 유의사항

- 탐지된 비밀 정보는 반드시 마스킹하여 출력한다. 전체 값은 표시하지 않는다.
- `.env` 파일의 실제 내용은 읽지 않는다. (패턴 검색만 수행)
- git 이력에 남아 있는 비밀 정보가 발견되면, 즉시 키 로테이션(재발급)을 권장한다.

## 종료 조건

위 형식에 맞춘 스캔 리포트를 출력하면 종료한다.
비밀 정보 제거 및 키 재발급 작업은 사용자의 추가 지시를 기다린다.

