4.7. Swift の一時 URL 操作
一時的なアクセスを可能にするため、radosgw
の swift エンドポイントによりサポートされます。たとえば、GET リクエストは、認証情報を共有せずにオブジェクトに送信されます。
この機能には、最初に X-Account-Meta-Temp-URL-Key
の値を設定し、必要に応じて X-Account-Meta-Temp-URL-Key-2
を設定する必要があります。Temp URL 機能は、これらの秘密鍵に対する HMAC-SHA1 署名に依存します。
4.7.1. Swift が一時 URL オブジェクトを取得
一時 URL は、以下の要素を含む暗号化 HMAC-SHA1 署名を使用します。
- Request メソッドの値 (例:GET)
- エポックからの経過時間 (秒単位)。つまり 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
4.7.2. Swift POST 一時 URL キー
必要なキーを持つ swift アカウントへの POST
リクエストは、一時 URL アクセスをアカウントに提供できるアカウントのシークレット一時 URL キーを設定します。最大 2 つのキーがサポートされ、一時 URL を無効化せずに鍵をローテーションできるように、両方のキーに対して署名がチェックされます。
構文
POST /API_VERSION/ACCOUNT HTTP/1.1 Host: FULLY_QUALIFIED_DOMAIN_NAME X-Auth-Token: AUTH_TOKEN
リクエストヘッダー
X-Account-Meta-Temp-URL-Key
- 説明
- 任意の文字列値を取るユーザー定義のキー。
- 型
- String
- 必須
- はい
X-Account-Meta-Temp-URL-Key-2
- 説明
- 任意の文字列値を取るユーザー定義のキー。
- 型
- String
- 必須
- いいえ