API key와 인증 헤더
쓸모 있는 API는 대부분 세상 누구에게나 열려 있지 않다. 회사는 누가 요청하는지를 알아야 사용량을 추적하고 당신에게 요금을 청구할 수 있다. 그래서 API key — 당신의 계정을 식별하는 길고 비밀스러운 문자열 — 를 준다. 당신은 그걸 모든 요청에 붙이는데, 보통 Authorization이라 불리는 HTTP header에 붙인다. 위의 Bearer sk_live_... 줄처럼 말이다.
API key는 정확히 비밀번호처럼 다뤄야 한다. 실제로 그게 비밀번호이기 때문이다. 그걸 가진 사람은 누구든 당신인 척 요청을 보낼 수 있다 — 그리고 당신의 청구서를 불려놓거나 당신의 데이터를 읽을 수 있다. 이건 보안 챕터와 곧장 이어지는데, 가장 중요한 규칙 하나가 있다.
- API key를 브라우저로 전달되는 코드에 절대 넣지 마라. 당신의 프론트엔드에 있는 건 무엇이든 공개된 것이다 — 사용자가 개발자 도구를 열어서 읽을 수 있다. AI에게 "페이지에서 API를 호출해줘"라고 하면, 그놈은 신나게 당신의 비밀 key를 바로 거기에 붙여넣을 것이다. 막아라. 비밀 key는 서버에 있어야 한다.
- key를 git에 절대 커밋하지 마라. 나중에 지우더라도, 그건 히스토리에 영원히 살아남고, 봇들은 몇 분 안에 공개 저장소를 훑어 key를 찾아낸다.
- key는 환경 변수에 저장하라, 코드 안이 아니라 — 보안 챕터에서 다루는 바로 그 패턴이다.
만약 실제 key가 diff 안에, 프론트엔드 파일 안에, 또는 채팅 메시지 안에 떡하니 있는 걸 본다면, 이미 유출된 것으로 취급하라. 즉시 교체하라 (새로 발급하고, 기존 것을 비활성화하라).