Cloud/KT Cloud

[KT Cloud] 인증 Signature 생성하기

yeit 2024. 3. 1. 20:26
728x90

 

KT Cloud (Platform @G) - 인증 Signature 생성하기

1. URL Parameter 정의

  • API Key : 콘솔에서 발급받은 API Key
  • API 명령어 : command 필드에서 사용하는 API 기능에 대한 값
  • API 명령어 옵션 : API 명령어 관련 필수 또는 부가적으로 사용되는 항목
  • 응답 양식 : 요청에 대한 응답을 XML / JSON으로 제공받을지 선택 (Default는 XML)
ex) 스냅샷 조회
apiKey=APIKey&command=listSnapshots&response=json

 

 

추가) API Key

* API Key와 Secret Key는 모든 Zone에서 공통으로 사용
* API Key와 Secret Key는 클라우드 콘솔 > API Key 메뉴에서 확인 가능

 

 

 

2. URL Parameter의 필드 이름 기준으로 알파벳 순 정렬 & 모든 문자열을 소문자로 변환

apiKey, command, response를 알파벳 순으로 정렬하고, 모든 문자열을 소문자로 변환한다.

# URL Parameter
apiKey=APIKey&command=listSnapshots&response=json

# 알파벳 순으로 정렬
apiKey=APIKey&command=listSnapshots&response=json

# 소문자로 변환
apikey=apikey&command=listsnapshots&response=json

 

 

 

3. Secret Key 와 HMAC SHA-1 hashing 알고리즘을 이용하여 암호화 후, Base64 Encoding 및 URL Encoding 수행

위에서 변환한 URL Parameter를 Secret Key와 HMAC SHA-1 hashing 알고리즘을 이용하여 암호화한 후, HTTP URL Parameter 로 사용하기 위해 Base64 Encoding 및 URL Encoding 해준다.

import hmac
import hashlib
import base64
import urllib.parse

URL_Parameter = "apikey=apikey&command=listsnapshots&response=json"
secret_key = "secretkey"

encrypted_data = base64.b64encode(hmac.new(secret_key.encode(), URL_Parameter.encode(), hashlib.sha1).digest()).decode()
encoded_data = urllib.parse.quote_plus(encrypted_data)

print("결과:", encoded_data)

 

이렇게 파이썬을 활용하면 쉽게 데이터를 도출해 낼 수 있다.

 

 

+HMAC-SHA1 알고리즘이란?

HMAC-SHA1은 해시 기반 메시지 인증 코드(HMAC)와 SHA-1 해시 함수를 결합한 암호화 알고리즘이다. 메시지 인증 코드(Message Authentication Code, MAC)의 일종으로, 무결성을 보장한다.
즉, API를 통해 데이터를 주고 받을 때, 메시지의 위변조가 있었는지 체크하기 위해 HMAC를 사용하는 것이다.

 

무결성(Integrity) : 데이터나 정보가 변조되거나 손상되지 않았음을 보장하는 것을 의미

 

 

 

 

 

 

참고 링크

kt cloud - Open API Guide

 

kt cloud - Open API Guide

kt cloud 의 KOR-Central A/B/M 및 KOR-HA Zone(@G1), KOR-Seoul M2(@G2)에서 사용 가능한 Open API 가이드 문서입니다. 본 페이지에서는 Open API 호출을 위한 기본 준비 사항를 예제와 함께 안내해드립니다. 1. kt cloud

cloud.kt.com

 

728x90