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 用に移植したものです.

依存性
なし.

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


 * 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 における認証と同様の流れで処理されます.

リクエスト
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)