3.7. Swift 임시 URL 작업
임시 액세스를 허용하기 위해 radosgw
의 swift 엔드포인트에서 임시 URL 기능을 지원합니다. 예를 들어 GET 요청은 자격 증명을 공유할 필요 없이 오브젝트에 대한 요청입니다.
이 기능의 경우 처음에 X-Account-Meta-Temp-URL-Key
및 X-Account-Meta-Temp-URL-Key-2
값을 설정해야 합니다. Temp URL 기능은 이러한 비밀 키에 대해 HMAC-SHA1 서명을 사용합니다.
3.7.1. Swift에서 임시 URL 오브젝트 가져오기
임시 URL은 다음 요소를 포함하는 암호화 HMAC-SHA1 서명을 사용합니다.
- 요청 방법의 값, 인스턴스의 "GET"
- epoch 이후의 만료 시간 (초 형식), 즉 Unix 시간
- "v1" 이후의 요청 경로
위의 항목은 새 줄 사이에 추가되는 줄로 정규화되고 HMAC는 이전에 게시된 Temp URL 키 중 하나에 대해 SHA-1 해싱 알고리즘을 사용하여 생성됩니다.
위를 보여주는 샘플 python 스크립트는 다음과 같습니다.
예제
import hmac from hashlib import sha1 from time import time method = 'GET' host = 'https://objectstore.example.com' duration_in_seconds = 300 # Duration for which the url is valid expires = int(time() + duration_in_seconds) path = '/v1/your-bucket/your-object' key = 'secret' hmac_body = '%s\n%s\n%s' % (method, expires, path) hmac_body = hmac.new(key, hmac_body, sha1).hexdigest() sig = hmac.new(key, hmac_body, sha1).hexdigest() rest_uri = "{host}{path}?temp_url_sig={sig}&temp_url_expires={expires}".format( host=host, path=path, sig=sig, expires=expires) print rest_uri
출력 예
https://objectstore.example.com/v1/your-bucket/your-object?temp_url_sig=ff4657876227fc6025f04fcf1e82818266d022c6&temp_url_expires=1423200992