概要

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ミドルウェア

Keystone

Swiftクライアント

S3API要求→

s3token

s3token

→Keystone 認証要求

Keystone パブリックAPI

s3token

←認証トークン、エンドポイント

Keystone パブリックAPI

keystone

認証トークン→

Keystone 管理API

keystone

←認可情報

Keystone 管理API

Swiftクライアント

←S3 API応答

swift3(S3API)

Keystone の追加 API

リクエスト

レスポンス

Wiki: Keystone-BP-S3Token/ja (last edited 2012-01-15 11:56:11 by Akira YOSHIYAMA)