728x90
반응형
API를 사용할 때 흔히 등장하는 API Key, Access Key, Secret Key는 인증(Authentication) 및 권한 부여(Authorization)에 중요한 역할을 합니다.
각각의 개념과 역할은 아래와 같습니다:
🔐 기본 개념 요약
항목 | 설명 |
API Key | API에 접근하기 위해 필요한 고유한 인증 키 (단일 키 또는 Access/Secret Key 쌍으로 구성) |
Access Key | 사용자를 식별하는 공개된 ID 역할 키 |
Secret Key | 사용자의 요청이 신뢰할 수 있는지를 확인하는 비공개 서명 키 |
✅ 1. Access Key
- 정의: API 요청을 보내는 **주체(사용자, 애플리케이션)**를 식별하는 **공개 식별자 (ID)**입니다.
- 역할:
- 어떤 사용자가 요청을 보내는지를 나타냄.
- API 서버는 Access Key를 보고 해당 요청자의 권한, 사용량, 제한 등을 확인함.
- 보통 노출 가능하지만, 단독으로는 보안 기능이 없음.
📌 예시 (AWS):
Access Key ID: AKIAIOSFODNN7EXAMPLE
✅ 2. Secret Key
- 정의: Access Key로 인증된 요청이 진짜인지 검증하기 위한 비공개 암호 키입니다.
- 역할:
- 요청에 대한 **서명(Signature)**을 생성하는 데 사용됨.
- API 서버는 같은 Secret Key를 통해 요청의 유효성을 검증함.
- 절대 외부에 노출되어선 안 됨 (깃허브 등에 유출 시 보안 사고 발생 가능).
📌 예시:
Secret Access Key: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
✅ 3. API Key (단일 키 구조)
- 일부 API에서는 Access Key / Secret Key 쌍 대신, 단일 문자열인 API Key만 요구하기도 합니다.
- 이 경우 API Key는 일종의 간편 인증 수단입니다.
- 보안 수준은 낮지만, 단순한 테스트나 퍼블릭 API 호출에 사용됩니다.
📌 예시:
API Key: 123456789abcdef
🔐 요청 예시 (AWS 스타일 서명 구조)
- 클라이언트가 요청을 만들 때:
- Access Key ID 포함
- Secret Key를 이용해 요청 서명(Signature) 생성
- 서버는:
- Access Key ID로 사용자 확인
- 동일한 Secret Key를 이용해 서명을 검증
📌 요청 헤더 예:
Authorization: AWS AKIAIOSFODNN7EXAMPLE:SignatureGeneratedWithSecretKey
📦 비유로 정리하면
- Access Key = 사용자 ID 카드 (누군지 알려줌)
- Secret Key = 비밀번호 (요청이 진짜인지 검증함)
- API Key = 간편 입장권 (소규모 서비스용 빠른 인증 수단)
🔒 보안 팁
- Secret Key는 절대 코드나 GitHub에 노출하지 마세요.
- 가능하면 IAM 권한 최소화, Key rotation, 환경 변수 관리를 통해 보안 유지하세요.
- Google, AWS, Azure 등 대부분 클라우드 플랫폼은 이 구조를 사용합니다.
300x250
반응형
'IT' 카테고리의 다른 글
일반적인 api 호출이 아닌 브릿지 호출, 콜백url 호출하는 이유와 방식 차이는? (1) | 2025.06.22 |
---|---|
curl -i -k -v -X POST --location 뜻은? (1) | 2025.06.22 |
adid, gaid, idfa 개념과 각각 역할은? (0) | 2025.06.01 |
qr코드 생성 원리와 인식하는 원리는? (0) | 2025.05.14 |
개인키와 공개키의 역할과 차이는? (Python, Java 예시) (0) | 2025.04.22 |