클라이언트가 API 서버와 통신할 때 인증을 위해 사용하는 고유한 문자열 또는 토큰
주로 API 사용자의 신원을 확인하거나, 요청을 추적하고, 사용 권한을 제어하기 위해 사용됨
특징
1. 고유 식별자
- 각 클라이언트나 애플리케이션에 대해 고유하게 발급된다
2. 간단한 인증 방식
- 키만 제공하면 인증이 이루어지므로 구현이 간단하다
3. 서버-클라이언트 보안
- 요청하는 클라이언트를 식별하고 요청을 승인하거나 거부할 수 있다
4. 사용량 추적 가능
- 사용량 제한(예 : 초당 요청 수)을 적용해 API 남용을 방지한다
구조
보통 긴 문자열로 구성되며, 무작위로 생성됨
d1f7f85c-1f03-4d33-a9e3-b2e1f3a4d512
사용법
1. HTTP 헤더
- 요청 헤더에 API Key를 포함
GET /api/resource HTTP/1.1
Host: api.example.com
Authorization: ApiKey d1f7f85c-1f03-4d33-a9e3-b2e1f3a4d512
2. 쿼리 문자열
- URL의 파라미터로 포함
GET /api/resource?api_key=d1f7f85c-1f03-4d33-a9e3-b2e1f3a4d512
3. 요청 본문
- POST 요청에서 JSON 또는 XML 데이터로 포함
{
"api_key": "d1f7f85c-1f03-4d33-a9e3-b2e1f3a4d512"
}
장점
1. 구현 간단
- 복잡한 인증 메커니즘이 필요 없으며 쉽게 구현할 수 있다
2. 유연성
- API 호출을 추적하거나 권한을 부여하는 다양한 방식으로 사용할 수 있다
3. 서비스 보호
- 인증이 없는 요청을 차단하여 서비스를 보호한다
4. 비용 관리
- 사용량을 추적하고 청구 기준으로 활용할 수 있다
단점
1. 보안 취약성
- 키가 유출되면 악의적인 사용자가 이를 악용할 수 있다
2. 유효성 검증 부족
- 키만 있으면 인증이 완료되므로, 유효성 검사를 추가로 구현해야 보안을 강화할 수 있다
3. 비밀번호 수준 보안 필요
- API Key는 사용자 비밀번호처럼 안전하게 관리되어야 한다
4. HTTPS 필요
- HTTP로 전송되면 키가 평문으로 노출되므로 HTTPS를 반드시 사용해야 한다
API Key의 보안 모범 사례
1. HTTPS 사용 :
- 통신을 암호화하여 키가 탈취되는 것을 방지한다
2. IP 주소 제한 :
- 특정 IP 주소에서만 API Key를 사용할 수 있도록 제한한다
3. 사용량 제한 :
- 클라이언트별 요청 수를 제한해 남용을 방지한다
4. 유효 기간 설정 :
- 키의 만료 시간을 설정해 오래된 키가 악용되지 않도록 한다
5. 키 회전 :
- 정기적으로 API Key를 갱신하여 보안을 강화한다
6. 비공개 유지 :
- API Key를 코드에 하드코딩하지 말고, 환경 변수나 안전한 저장소에 보관한다
요약
- API Key는 API 요청의 인증 및 권한 부여를 위해 사용하는 고유 식별자
- 요청에 포함된 API Key를 서버가 확인하여 접근 권한을 판단한다
- 장점: 간단한 구현, 사용량 추적
- 단점: 키 유출 시 보안 위험
- 보안을 강화하려면 HTTPS 사용, IP 제한, 키 갱신 등 추가 조치를 취해야 한다
출처 : ChatGPT
'CS' 카테고리의 다른 글
| HTTP, HTTPS (0) | 2025.01.15 |
|---|---|
| JWT (JSON Web Token) (1) | 2025.01.14 |
| Bearer Token (0) | 2025.01.12 |
| URI , URL (0) | 2025.01.11 |
| 레거시 소스 (0) | 2025.01.05 |