API 키가 뭐야? 노출되면 왜 큰일나는지 5분 정리
ChatGPT API를 처음 써보려고 하면 가장 먼저 만나는 문구가 “API 키를 안전하게 보관하세요”다. 그 키가 뭐고 왜 그렇게까지 강조하는지 알면 첫 사용이 훨씬 안전해진다.

API 키 한 줄 정의
**API 키(API Key)**는 프로그램이 다른 서비스의 API를 부를 때 신원을 증명하는 비밀 문자열이다.
OpenAI, Anthropic, Google API 같은 곳에서 발급받으면 보통 sk-ant-api03-... 같은 50자 안팎의 긴 문자열이 나온다. 이 키를 코드에 넣어 API를 호출하면, 서비스는 그 키를 보고 “이 사람이 이 사용자구나”를 알아낸다.
핵심은 두 가지다. 첫째, 사용량과 요금이 이 키 단위로 측정된다. 둘째, 이 키만 있으면 본인 계정으로 누구나 API를 부를 수 있다. 그래서 비밀로 다뤄야 한다.
중학생도 이해하는 비유
API 키를 가장 쉽게 설명하는 비유는 가게 직원이 가진 출입 카드다.
가게에 들어갈 때 직원은 본인 출입 카드를 찍는다. 카드는 “내가 이 직원이다”를 증명한다. 들어간 뒤 사용한 비용은 그 카드 주인 앞으로 청구된다.
API 키도 똑같다. 카드를 잃어버리면 누구든 그 카드를 주워서 가게에 들어갈 수 있고, 사용한 금액이 카드 주인에게 청구된다. 그래서 카드는 절대 카페 책상에 두고 가면 안 된다.
API 키도 같은 이유로 “코드에 박아 두지 마라”, “GitHub에 올리지 마라”고 강조한다. 한 번 노출되면 누구나 그 카드(키)로 본인 계정에 청구할 수 있다.
실제 노출 사고 패턴
API 키가 노출되는 가장 흔한 패턴은 단순하다.
1. GitHub에 그대로 push 초보 개발자가 .env 파일을 .gitignore에 안 넣고 그대로 push해 키가 공개 레포에 노출. 봇이 자동으로 스캔해 몇 분 안에 키를 가져간다.
2. 스크린샷·블로그에 노출 화면 캡처에 키가 보이는 채로 블로그·트위터에 공유. 흐릿하게 가렸다고 생각해도 픽셀 복원이 가능한 경우가 많다.
3. 강의·튜토리얼 영상 화면 녹화 중 환경변수가 잠시 노출. 몇 초만 보여도 충분히 캡처된다.
4. 동료에게 메신저로 전달 “테스트용으로 잠깐 써봐”라며 슬랙·카톡으로 키 공유. 그 채팅이 다른 사람에게 전달되거나 캐시에 남는다.
5. 노트북 분실 .env 파일이 들어있는 노트북을 분실하고 디스크 암호화도 안 했을 때.
이 모든 경우 즉시 해야 할 일은 동일하다. 그 키를 폐기(revoke)하고 새 키를 발급한다. “그래도 다른 사람이 못 봤겠지”라고 미루다가 며칠 뒤 청구서를 받는 사례가 너무 많다.
비슷한 용어와 차이
| 용어 | 뜻 | API 키와의 차이 |
|---|---|---|
| 비밀번호(password) | 사람이 로그인할 때 쓰는 비밀 문자열 | 사람용. API 키는 프로그램용 |
| OAuth 토큰 | 사용자 동의로 발급되는 임시 인증 토큰 | 만료 시간 짧고 갱신 필요. API 키보다 안전한 편 |
| 세션 ID | 로그인 후 일정 시간 유지되는 임시 식별자 | 브라우저 단위. 짧은 수명 |
| JWT | 토큰 안에 사용자 정보가 담긴 형식 | 서명으로 위변조 검증 |
| 시크릿(secret) | 일반적인 비밀 문자열 | API 키도 시크릿의 한 종류 |
따라서 “API 키 = 비밀번호”가 아니다. 비슷한 비밀 정보지만, API 키는 자동화된 프로그램이 사용한다는 점에서 노출 위험이 비밀번호보다 훨씬 빠르게 현실이 된다.
안전하게 보관하는 5가지 원칙
- 코드에 직접 적지 말기 — 항상 .env 같은 환경변수 파일에 보관
- .env는 .gitignore에 등록 — git에 올라가지 않게 차단
- 권한 최소화 — 키 하나에 모든 권한 주지 말고 필요한 만큼만
- 사용량 한도 설정 — 사고가 나도 청구가 폭주하지 않게 월 한도를 미리 설정
- 주기적 회전(rotation) — 6개월·1년 단위로 새 키 발급, 옛 키 폐기
이 다섯 가지만 지켜도 일반적인 사고 시나리오 대부분을 막을 수 있다.
언제 API 키를 마주치나
API 키라는 단어는 보통 이런 상황에서 등장한다.
- AI API 사용 시작: OpenAI·Anthropic 콘솔에서 첫 키 발급할 때
- 자동화 도구 연결: Zapier, Make에서 새 서비스 연동할 때 키 입력
- AI 코딩 도구 설정: Cursor·Claude Code에 본인 키를 등록해 자기 한도로 호출할 때
- GitHub Actions·CI/CD: 빌드 자동화에서 외부 서비스를 부를 때 비밀 변수로 등록
평소엔 키를 거의 안 만지지만, 자동화·개발 단계로 들어가는 순간 거의 매주 한 번씩은 마주친다.
관련 용어
API 키를 이해했다면 함께 알아두면 흐름이 연결되는 용어들이다.
- API(Application Programming Interface): 프로그램끼리 정보를 주고받는 약속. API 키는 그 약속에 출입 카드처럼 따라붙는다. API가 뭐야?: 프로그램끼리 대화하는 규칙 5분 정리 참고.
- 토큰(Token): AI API 사용량 측정 단위. API 키는 신원, 토큰은 사용량. 토큰(Token) 뜻 정리 참고.
- OAuth: API 키보다 안전한 편의 인증 방식. 짧은 만료 시간과 사용자 동의 절차가 있다.
- 시크릿(secret): API 키, 비밀번호, 인증서 등 모든 민감한 비밀 정보를 통칭하는 단어다.
API 키는 “프로그램이 다른 서비스를 부를 때 쓰는 비밀 출입 카드”다. 한 번 노출되면 본인 계정으로 누구든 API를 호출할 수 있어서, 코드에 직접 적지 않고 환경변수·시크릿 저장소에 보관하는 게 기본이다. AI 시대에 들어 거의 모든 자동화 워크플로의 출발점이 된 만큼, 안전하게 다루는 습관이 처음부터 중요하다.
출처
- OpenAI, API 키 보안 가이드, https://platform.openai.com/docs/guides/safety-best-practices
- Anthropic, API 시작하기, https://docs.anthropic.com/
- GitHub, Secret scanning 문서, https://docs.github.com/code-security/secret-scanning