Jump to: navigation, search

Keystone-BP-S3Token/ja

  • Launchpad Entry: KeystoneSpec:s3token
  • Created: 2012-01-15
  • Contributor: Akira YOSHIYAMA

概要

Swift の S3 API で Keystone のユーザ認証・認可機能を提供する機能を追加します。 本機能は Nova の EC2 API 用 Keystone のユーザ認証・認可機能を S3 API 用に移植したものです。

依存性

なし。

構成

本機能は3つのパートから構成されています。

  1. Keystone に S3 API 用の認証 API(/s3tokens)を追加する Keystone 用パッチ
  2. 1. を Swift から使用する為のミドルウェア(keystone/keystone/middleware/s3_token.py)
  3. 2. で得られたエンドポイント情報等を Swift で使うための Swift 用パッチ

EC2 API 用コードと同様、1. と 2. は Keystone、3. は Swift のソースコードに適用されます。

設定

Swift の Proxy サーバ用設定(/etc/swift/proxy-server.conf)の pipeline 設定に以下の通り s3token を追加します。


[pipeline:main]
pipeline = healthcheck cache s3token swift3 keystone proxy-server


また、同じ設定ファイル中に、以下の設定を追加します。


[filter:s3token]
use = egg:keystone#s3token
auth_protocol = http
auth_host = 127.0.0.1
auth_port = 5000
admin_token = 999888777666


auth_protocol, auth_host, auth_port は keystone のパブリック URL のスキーマ、IP アドレス、ポート番号を設定します。 admin_token は keystone の設定に合わせます。

設定適用後、Swift の Proxy サーバを再起動し、設定を反映します。

シーケンス

本機能は Nova の EC2 API における認証と同様の流れで処理されます。

Swiftクライアント Swiftミドルウェア
Swiftクライアント S3API要求→ s3token
s3token →Keystone 認証要求
s3token ←認証トークン、エンドポイント
keystone 認証トークン→
keystone ←認可情報
Swiftクライアント ←S3 API応答 swift3(S3API)

Keystone の追加 API

リクエスト

  • リクエストメソッド
 POST /v2.0/s3tokens
  • リクエストヘッダ
 Content-Type: application/json
  • リクエストボディ
 JSON形式で以下の項目を含む。
 ||access||アクセスキー(アカウント名)||
 ||signature||シグネーチャ||
 ||verb||元リクエストのメソッド||
 ||path||元リクエストの URL パス||
 ||expire||元リクエストの Date ヘッダ||
 ||content_type||元リクエストの  Content-Type ヘッダ||
 ||content_md5||元リクエストの Content-MD5 ヘッダ||
 ||xheaders||元リクエストの X-Amz-* ヘッダ群||

レスポンス

  • 200 (OK)
  • 400 (Bad Request)
  • 401 (Unauthorized)
  • 403 (User Disabled)