본문 바로가기

IT

api key에서 access key, secret key 개념과 역할은?

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 스타일 서명 구조)

  1. 클라이언트가 요청을 만들 때:
    • Access Key ID 포함
    • Secret Key를 이용해 요청 서명(Signature) 생성
  2. 서버는:
    • 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
반응형