Swift
実装ガイド
2017年4月 | 215-12528_A0
目次
StorageGRID Webscale
でのOpenStack Swift APIのサポート ... 4
StorageGRID WebscaleでのSwift APIサポートの履歴 ... 4
StorageGRID WebscaleでのSwift REST APIの実装 ... 5
Swift REST API
でサポートされている処理 ... 6
Swiftの情報(info)URL、認証(auth)URL、ストレージ(storage)URL に関する一般情報 ... 6 Swift API処理に対するエラー応答 ... 8 アカウントの処理 ... 9 コンテナの処理 ... 10 オブジェクトの処理 ... 15 OPTIONSメソッド ... 19 監査ログで追跡される処理 ... 19
StorageGRID Webscale
のSwift REST API処理 ... 21
GET(コンテナ整合性)要求 ... 21 PUT(コンテナ整合性)要求 ... 22
テナント アカウントと接続の設定 ... 24
Swift用テナント アカウントの作成 ... 24 クライアント アプリケーションによるHTTPS接続の使用 ... 24 APIゲートウェイ ノードとストレージ ノードのIPアドレスの特定 ... 25 APIゲートウェイ ノードおよびストレージ ノードのSwift用ポート番号 ... 25REST API
のセキュリティの設定 ... 26
StorageGRID WebscaleシステムでのREST APIのセキュリティの実装 ... 26
REST APIを使用するクライアント アプリケーションでのセキュリティ 証明書の使用 ... 27 TLSライブラリのハッシュ アルゴリズムと暗号化アルゴリズムのサポー ト ... 27
Swift API
設定での接続のテスト ... 29
処理の監視と監査 ... 31
Swiftオブジェクトに対するHTTPSトランザクション数の表示 ... 31 データ オブジェクトに関する情報の表示 ... 32 監査ログへのアクセスと確認 ... 32著作権に関する情報 ... 34
商標に関する情報 ... 35
マニュアルの更新について ... 36
索引 ... 37
StorageGRID Webscale
での
OpenStack Swift API
の
サポート
OpenStack SwiftのRepresentational State Transfer Application Programming Interface(REST API)
がサポートされているため、OpenStack Swift向けに開発されたクライアント アプリケーショ ンから、StorageGRID Webscaleシステムでオブジェクトの格納と読み出しを行うことができ ます。このAPIがStorageGRID Webscaleでどのように実装されているかを理解しておけば、 APIを使用する際に役立ちます。 StorageGRID Webscaleでは、次のバージョンがサポートされています。 項目 バージョン
Swiftの仕様 OpenStack Swift Object Storage API v1(2015年11月現在) HTTP 1.1
HTTPの詳細については、HTTP/1.1(RFC 2616)を参照してくだ
さい。
関連情報
OpenStack:Object Storage API
StorageGRID Webscale
での
Swift API
サポートの履歴
StorageGRID Webscaleシステムでの初期のSwift APIサポートやサポートに対する変更を理解
しておくことは、実装を設計する上で役立ちます。
StorageGRID WebscaleシステムでのSwift APIのサポートについて次の表にまとめます。
Date リリース 説明 2017年4月 10.4 コンテナのPOSTのサポート、およびKeystone が設定されたグリッドでのコンテナのPUT、 GET、HEADのACLヘッダーのサポートが追 加されました。 注:デフォルトではKeystoneは無効に設定 されます。Keystoneを有効にする場合は、 ネットアップの担当者にお問い合わせく ださい。 2016年8月 10.3 ドキュメントで管理に関する記述の更新と 修正が行われました。カスタム サーバ証明 書の設定に関するセクションが削除されま した。
2015年12月 10.2 StorageGRID WebscaleシステムでSwift APIが
初めてサポートされました。
現在サポートされているバージョンは、
StorageGRID Webscale
での
Swift REST API
の実装
クライアント アプリケーションは、SwiftのREST API呼び出しを使用してストレージ ノード やAPIゲートウェイ ノードに接続し、コンテナの作成やオブジェクトの格納と読み出しを行 うことができます。これを利用して、OpenStack Swift向けに開発されたサービス指向アプリ ケーションを、StorageGRID Webscaleシステムで利用できるオンプレミスのオブジェクト ス トレージに接続することができます。 StorageGRID Webscaleシステムでは、オブジェクトを管理するために、情報ライフサイクル (ILM)ルールが使用されます。 ILMルールについては、『管理者ガイド』を参照してください。 整合性の保証と制御 StorageGRID Webscaleは、新しく作成されたオブジェクトのリードアフターライト整合性を 保証します。正常に完了したPUTに続くGETでは、新しく書き込まれたデータを読み取るこ とができます。既存のオブジェクトの上書き、メタデータの更新、および削除の整合性レベ ルは、結果整合性です。 またStorageGRID Webscaleでは、コンテナ単位で整合性を制御できるため、アプリケーショ ンの要件に従って整合性と可用性のバランスを取ることができます。デフォルトでは、新規 のオブジェクトの読み取り時は特定のストレージ ノードを使用できることが必要となりま す。使用できないストレージ ノードがあると、一部の新規オブジェクトの読み取りがHTTP 500エラーで失敗することがあります。整合性を「weak」にして読み取りを行うと、以前の 動作に戻り、整合性よりも可用性が優先されます。 関連情報 StorageGRID Webscale 10.4管理者ガイドSwift REST API
でサポートされている処理
StorageGRID Webscaleシステムは、OpenStack Swift APIのほとんどの処理をサポートしてい
ます。Swift REST APIクライアントをStorageGRID Webscaleに統合する場合は、アカウント、 コンテナ、およびオブジェクトの処理の実装に関する詳細情報を理解しておくと役立ちま す。 StorageGRID Webscaleでサポートされる処理 次のSwift API処理がサポートされています。 • アカウントの処理(9ページ) • コンテナの処理(10ページ) • オブジェクトの処理(15ページ) すべての処理に共通の応答ヘッダー
StorageGRID Webscaleシステムでは、OpenStack Swift Object Storage API v1の定義に従って、
サポートされるすべての処理に共通のヘッダーが実装されます。
関連概念
StorageGRID WebscaleでのOpenStack Swift APIのサポート(4ページ)
関連情報
OpenStack:Object Storage API
Swift
の情報(
info
)
URL
、認証(
auth
)
URL
、ストレージ
(
storage
)
URL
に関する一般情報
StorageGRID Webscaleでは、複数のSwift APIエンドポイント タイプがサポートされていま
す。
具体的には次のタイプです。
• 情報(info)URL
• 認証(auth)URL
• ストレージ(storage)URL
情報(info)URLによるSwiftの機能と制限の確認
StorageGRID WebscaleのSwift実装の機能と制限は、Swiftの情報(info)URLから照会できま
す。この情報を取得するには、StorageGRID Webscale SwiftのベースURLに/infoパスを付加
してGET要求を発行します。
https://FQDN | IP:Swift_Port/info/
StorageGRID WebscaleのSwift実装では、情報(info)URLへのアクセスに認証は必要ありま
情報(info)URLに対してGET要求を実行すると、Swift実装の機能がJSONディクショナリと して返されます。クライアント ツールは、返されたJSON応答を解析して実装の機能を特定 し、後続のストレージ処理で制約として使用できます。 認証(auth)URLによるユーザ認証 クライアントは、テナント ユーザを認証し、Swiftの認証(auth)URLからSwiftトークンを 入手できます。認証要求が成功すると、StorageGRID WebscaleのCLBサービス(ゲートウェ イ ノード上)またはLDRサービス(ストレージ ノード上)でのアクセスに必要なトークン とストレージ(storage)URLが返されます。 https://FQDN | IP:Swift_Port1.//auth/v0 クレデンシャルにはユーザ名とパスワードがパラメータとして含まれ、次のように要求ヘッ ダーを使用して指定する必要があります。 • X-Auth-User : Tenant_Account_ID:Username • X-Auth-Key : Password Swiftテナント アカウント情報は認証プロセスで使用され、次のいずれかが含まれます。 • (Active DirectoryまたはLDAPの設定で)テナント アカウントに対してアイデンティティ フェデレーションが有効になっている場合は、ADサーバまたはLDAPサーバからのフェ デレーテッド ユーザのユーザ名とパスワードを指定する必要があります。または、 LDAPユーザはドメイン名でも指定できます(例:X-Auth-User: <Tenant_Account_ID>:<Username@Domain_Name>)。 • LDAPが設定されていない場合のローカル アカウントについては、ユーザ名には 「swiftadmin」を、パスワードにはテナント アカウントの作成時に指定したパスワードを 使用する必要があります。 ユーザ名とパスワードの組み合わせが有効であれば、次のように応答ヘッダーを介して有効 なトークンとストレージ(storage)URLが返されます。 X-Storage-Url : https://FQDN | IP:Swift_Port/v1/Tenant_Account_ID X-Auth-Token : token X-Storage-Token : token デフォルトでは、トークンは生成時刻から24時間有効です。 トークンは特定のテナント アカウントに対して生成されます。あるアカウントに対して有 効なトークンで、別のアカウントにアクセスするユーザを許可することはできません。
ストレージ(storage)URLによるSwift API処理
クライアント アプリケーションは、Swift REST API呼び出しを発行して、ゲートウェイ ノー ド上のCLBサービスまたはストレージ ノード上のLDRサービスに対して、サポートされるア カウント、コンテナ、およびオブジェクトの処理を実行することができます。ストレージ要 求では、認証要求によってX-Storage-Url応答ヘッダーに返されたURLをアドレスとして指 定できます。要求には、認証要求から返されたX-Auth-Tokenヘッダーと値を含める必要が あります。 https://FQDN | IP:Swift_Port//v1 コンテナ オブジェクト
が含まれるストレージ応答ヘッダーに最近変更されたオブジェクトの正確な数が反映され ない場合があります。このヘッダーに正確な数値が示されるまでには、数分を要することが あります。 使用状況の統計が含まれている応答ヘッダーの例を次に示します。 • X-Account-Bytes-Used • X-Account-Object-Count • X-Container-Bytes-Used • X-Container-Object-Count 応答の詳細については、アカウント、コンテナ、およびオブジェクトの処理に関する情報を 参照してください。 関連資料 アカウントの処理(9ページ) コンテナの処理(10ページ) オブジェクトの処理(15ページ) APIゲートウェイ ノードおよびストレージ ノードのSwift用ポート番号(25ページ)
Swift API
処理に対するエラー応答
エラー応答について理解しておくと、処理をトラブルシューティングする際に役立ちます。 処理中にエラーが発生した場合に返されるHTTPステータス コードを次に示します。 Swiftエラーの名前 HTTPのステータス AccountNameTooLong、 ContainerNameTooLong、 HeaderTooBig、 InvalidContainerName、 InvalidRequest、 InvalidURI、 MetadataNameTooLong、 MetadataValueTooBig、 MissingSecurityHeader、 ObjectNameTooLong、 TooManyContainers、 TooManyMetadataItems、 TotalMetadataTooLarge 400 Bad Request AccessDenied 403 Forbidden ContainerNotEmpty、 ContainerAlreadyExists 409 ConflictInternalError 500 Internal Server Error
InvalidRange 416 Requested Range Not Satisfiable MethodNotAllowed 405 Method Not Allowed
MissingContentLength 411 Length Required NotFound 404 Not Found
Swiftエラーの名前 HTTPのステータス
NotImplemented 501 Not Implemented PreconditionFailed 412 Precondition Failed ResourceNotFound 404 Not Found
Unauthorized 401 Unauthorized UnprocessableEntity 422 Unprocessable Entity
アカウントの処理
アカウントに対して実行するSwift API処理を次に示します。 処理 実装 GET(アカウント) アカウントに関連付けられたコンテナ リストおよびアカウントの 使用状況を示す統計を取得します。 次の要求パラメータが必要です。 • Account 次の要求ヘッダーが必要です。 • X-Auth-Token 次の要求照会パラメータがオプションとしてサポートされていま す。 • Delimiter • End_marker • Format • Limit • Marker • Prefix 実行が成功してアカウントが見つかった場合、そのアカウントにコ ンテナがないかコンテナ リストが空であるときは、「HTTP/1.1 204 No Content」の応答とともに次のヘッダーが返され、コンテナ リス トが空でないときは「HTTP/1.1 200 OK」の応答が返されます。 • Accept-Ranges • Content-Length • Content-Type • Date • X-Account-Bytes-Used • X-Account-Container-Count • X-Account-Object-Count • X-Timestamp • X-Trans-IdHEAD(アカウン ト) Swift次の要求パラメータが必要です。アカウントからアカウント情報と統計情報を取得します。 • Account 次の要求ヘッダーが必要です。 • X-Auth-Token 実行が成功すると、「HTTP/1.1 204 No Content」の応答とともに次の ヘッダーが返されます。 • Accept-Ranges • Content-Length • Date • X-Account-Bytes-Used • X-Account-Container-Count • X-Account-Object-Count • X-Timestamp • X-Trans-Id
コンテナの処理
コンテナに対して実行するSwift API処理を次に示します。StorageGRID Webscaleシステムでは、1つのSwiftアカウントにつき最大で100個のコンテナが
サポートされます。
処理 実装
DELETE(コンテ
ナ) StorageGRID Webscaleを削除します。 システムのSwiftアカウントから空のコンテナ 次の要求パラメータが必要です。 • Account • Container 次の要求ヘッダーが必要です。 • X-Auth-Token 実行が成功すると、「HTTP/1.1 204 No Content」の応答とともに次の ヘッダーが返されます。 • Content-Length • Content-Type • Date • X-Trans-Id
処理 実装 GET(コンテナ) コンテナに関連付けられているオブジェクト リストを、 StorageGRID Webscaleシステム内のコンテナの統計情報およびメタ データとともに読み出します。 次の要求パラメータが必要です。 • Account • Container 次の要求ヘッダーが必要です。 • X-Auth-Token 次の要求照会パラメータがオプションとしてサポートされていま す。 • Delimiter • End_marker • Format • Limit • Marker • Path • Prefix 実行が成功すると、「HTTP/1.1 200 Success」または「HTTP/1.1 204 No Content」の応答とともに次のヘッダーが返されます。 • Accept-Ranges • Content-Length • Content-Type • Date • X-Container-Bytes-Used • X-Container-Object-Count • X-Timestamp • X-Trans-Id Keystoneを有効にした設定でこの処理を設定すると、次のヘッダー が管理ユーザに返されます。 • X-Container-Read • X-Container-Write 注:デフォルトではKeystoneは無効に設定されます。Keystoneを有 効にする場合は、ネットアップの担当者にお問い合わせください。
HEAD(コンテナ) StorageGRID Webscaleシステムからコンテナの統計情報とメタデー タを読み出します。 次の要求パラメータが必要です。 • Account • Container 次の要求ヘッダーが必要です。 • X-Auth-Token 実行が成功すると、「HTTP/1.1 204 No Content」の応答とともに次の ヘッダーが返されます。 • Accept-Ranges • Content-Length • Date • X-Container-Bytes-Used • X-Container-Object-Count • X-Timestamp • X-Trans-Id Keystoneを有効にした設定でこの処理を設定すると、次のヘッダー が管理ユーザに返されます。 • X-Container-Read • X-Container-Write 注:デフォルトではKeystoneは無効に設定されます。Keystoneを有 効にする場合は、ネットアップの担当者にお問い合わせください。
処理 実装
POST(コンテナ) Keystoneが設定されたStorageGRID Webscaleシステムで、管理ユーザ
が既存のコンテナのACLメタデータの作成、変更、または削除を行 います。 注:この処理は、Swift Keystoneアカウントでのみサポートされま す。デフォルトではKeystoneは無効に設定されます。Keystoneを 有効にする場合は、ネットアップの担当者にお問い合わせくださ い。 Keystoneが無効になっている(デフォルト)場合は、この処理に対 して「Not Implemented」のステータスが返されます。 次の要求パラメータが必要です。 • Account • Container 次の要求ヘッダーが必要です。 • X-Auth-Token 次の要求ヘッダーはオプションです。 • X-Container-Read • X-Container-Write • X-Remove-Container-Read • X-Remove-Container-Write 注:これ以外のメタデータ処理はサポートされず、実行しても無 視されます。 実行が成功すると、「HTTP/1.1 204 No Content」の応答とともに次の ヘッダーが返されます。 • Content-Length • Date • X-Timestamp • X-Trans-Id
PUT(コンテナ) StorageGRID Webscaleシステムのアカウントにコンテナを作成しま す。 次の要求パラメータが必要です。 • Account • Container 次の要求ヘッダーが必要です。 • X-Auth-Token 実行が成功すると、「HTTP/1.1 201 Created」または「HTTP/1.1 202 Accepted」の応答(このアカウントにコンテナがすでに存在する場 合)とともに次のヘッダーが返されます。 • Content-Length • Date • X-Timestamp • X-Trans-Id コンテナ名はStorageGRID Webscaleネームスペース内で一意である 必要があります。このコンテナが別のアカウントの下に存在する場 合は、ヘッダー「HTTP/1.1 409 Conflict」が返されます。 次のヘッダーはオプションで、Keystoneを有効にした設定で管理 ユーザに対してのみサポートされます。 • X-Container-Read • X-Container-Write • X-Remove-Container-Read • X-Remove-Container-Write 注:この処理は、Swift Keystoneアカウントでのみサポートされま す。デフォルトではKeystoneは無効に設定されます。Keystoneを 有効にする場合は、ネットアップの担当者にお問い合わせくださ い。
オブジェクトの処理
オブジェクトに対して実行するSwift API処理を次に示します。 処理 実装 DELETE(オブジェ クト) オブジェクトのコンテンツとメタデータをStorageGRID Webscaleシステムから削除します。 次の要求パラメータが必要です。 • Account • Container • Object 次の要求ヘッダーが必要です。 • X-Auth-Token 実行が成功すると、「HTTP/1.1 204 No Content」の応答とともに次の 応答ヘッダーが返されます。 • Content-Length • Content-Type • Date • X-Trans-IdGET(オブジェク ト) StorageGRID Webscaleオブジェクトのメタデータを取得します。から、オブジェクトのコンテンツを読み出し、 次の要求パラメータが必要です。 • Account • Container • Object 次の要求ヘッダーが必要です。 • X-Auth-Token 次の要求ヘッダーはオプションです。 • Accept-Encoding • If-Match • If-Modified-Since • If-None-Match • If-Unmodified-Since • Range 実行が成功すると、「HTTP/1.1 200 OK」の応答とともに次のヘッダー が返されます。 • Accept-Ranges • Content-Length • Content-Type • Date • ETag • Last-Modified • X-Timestamp • X-Trans-Id
処理 実装 HEAD(オブジェク ト) 取り込まれたオブジェクトのメタデータとプロパティをStorageGRID Webscaleシステムから読み出します。 次の要求パラメータが必要です。 • Account • Container • Object 次の要求ヘッダーが必要です。 • X-Auth-Token 実行が成功すると、「HTTP/1.1 200 OK」の応答とともに次のヘッダー が返されます。 • Accept-Ranges • Content-Length • Content-Type • Date • ETag • Last-Modified • X-Timestamp • X-Trans-Id
PUT(オブジェク ト) StorageGRID Webscaleいオブジェクトを作成するか、データとメタデータを含む既存のオシステムで、データとメタデータを含む新し ブジェクトを置換します。 次の要求パラメータが必要です。 • Account • Container • Object 次の要求ヘッダーが必要です。 • X-Auth-Token 次の要求ヘッダーはオプションです。 • Content-Encoding • Content-Length • Content-Type • ETag • Transfer-Encoding • X-Object-Meta-<name>(オブジェクト関連メタデータ) オブジェクトの作成時刻を記録して、ILMルールで参照時間に
[User Defined Creation Time]オプションを使用できるようにする
には、X-Object-Meta-Creation-Timeというユーザ定義ヘッ ダーに値を格納する必要があります (例: X-Object-Meta-Creation-Time=1443399726)。このフィールドの値は、1970年1 月1日からの秒数となります。 詳細については、『管理者ガイド』の「参照時間」を参照してく ださい。 • X-Storage-Class:reduced_redundancy シングルコミットの取り込み処理を指定します。このヘッダー が情報ライフサイクル管理(ILM)ポリシーに影響することはな く、StorageGRID Webscaleシステムで格納されるデータの冗長性 レベルが低下することもありません。 詳細については、『管理者ガイド』のILMポリシーに関する説明 を参照してください。 実行が成功すると、「HTTP/1.1 201 Created」の応答とともに次のヘッ ダーが返されます。 • Content-Length • Content-Type • Date • ETag • Last-Modified • X-Trans-Id 関連情報 StorageGRID Webscale 10.4管理者ガイド
OPTIONS
メソッド
OPTIONS要求は、個々のSwiftサービスが使用可能かどうかを確認する際に役立ちます。 OPTIONS要求は、ストレージ ノード上のLDRサービスまたはURLで指定されるゲートウェ
イ ノード上のCLBサービスによって処理されます。
処理 実装
OPTIONSメソッド OPTIONSメソッドは、情報(info)URLとストレージ(storage)URL
の2つのタイプのURLに対してサポートされるRESTful動詞を、 StorageGRID Webscaleシステムから取得します。 次の要求パラメータが必要です。 • Account 次の要求パラメータはオプションです。 • Container • Object 実行が成功すると、「HTTP/1.1 204 No Content」の応答とともに次の ヘッダーが返されます。ストレージURLに対するOPTIONS要求で は、ターゲットが存在している必要はありません。 • Allow(HEAD、GET、OPTIONS、PUTなど、指定されたURLで サポートされる動詞のリスト) • Content-Length • Content-Type • Date • X-Trans-Id
監査ログで追跡される処理
ストレージに対する成功したDELETE、GET、HEAD、POST、PUTの各処理は、StorageGRID Webscaleの監査ログで追跡されます。 アカウントの処理 GET(アカウント) HEAD(アカウント) コンテナの処理 DELETE(コンテナ) GET(コンテナ) HEAD(コンテナ) POST(コンテナ) PUT(コンテナ) オブジェクトの処理 DELETE(オブジェクト)GET(オブジェクト)
HEAD(オブジェクト)
StorageGRID Webscale
の
Swift REST API
処理
StorageGRID Webscaleシステム固有の処理がSwift REST APIに追加されています。GET
(コンテナ整合性)要求
GET(コンテナ整合性)要求では、特定のコンテナに適用される整合性レベルを確認できま す。 要求 要求のHTTPヘッダー 説明 X-Auth-Token 要求に使用するアカウントのSwift認証トークンを指定し ます。x-ntap-sg-consistency 要求のタイプ(true=GET(コンテナ整合性)、false=GET
(コンテナ))を指定します。
Host 要求の転送先のホスト名です。
要求の例
Get1/28544923908243208806/ <Swift container>HTTP/1.1 x-ntap-sg-consistency: true X-Auth-Token: SGRD_3a877009a2d24cb1801587bfa9050f29 Host: test.com 応答 応答のHTTPヘッダー 説明 Date 応答の日付と時刻です。 Connection サーバへの接続が開いているかどうかを示します。 X-Trans-Id 要求の一意のトランザクション識別子。 Content-Length 応答の本文の長さです。
x-ntap-sg-consistency コンテナに適用される整合性制御レベルを指定します。 サポートされる値は次のとおりです。 • all:最高レベルの整合性が保証されます。すべての ノードが即座にデータを受け取り、できない場合は要 求が失敗として処理されます。 • strong-global:すべてのサイトにおけるすべての処理に ついて、リードアフターライト整合性が保証されます。 • strong-site:単一のサイトにおけるすべての処理につい て、リードアフターライト整合性が保証されます。 • weak:可用性は最も高くなりますが、整合性は保証さ れず、データ保護の保証レベルが低下します。 • default:結果整合性と高可用性が確保され、データ保 護が保証されます。 応答の例 HTTP/1.1 204 No Content
Date: Sat, 29 Nov 2015 01:02:18 GMT Connection: CLOSE X-Trans-Id: 1936575373 Content-Length: 0 x-ntap-sg-consistency: strong-site
PUT
(コンテナ整合性)要求
PUT(コンテナ整合性)要求では、コンテナに対して実行される処理に適用する整合性レベ ルを指定できます。 要求 要求のHTTPヘッダー 説明 X-Auth-Token 要求に使用するアカウントのSwift認証トークンを指定し ます。要求のHTTPヘッダー 説明 x-ntap-sg-consistency コンテナに対する処理に適用される整合性制御レベルを 指定します。サポートされる値は次のとおりです。 • all:最高レベルの整合性が保証されます。すべての ノードが即座にデータを受け取り、できない場合は要 求が失敗として処理されます。 • strong-global:すべてのサイトにおけるすべての処理に ついて、リードアフターライト整合性が保証されます。 • strong-site:単一のサイトにおけるすべての処理につい て、リードアフターライト整合性が保証されます。 • weak:可用性は最も高くなりますが、整合性は保証さ れず、データ保護の保証レベルが低下します。 • default:結果整合性と高可用性が確保され、データ保 護が保証されます。 Host 要求の転送先のホスト名です。 要求の例
PUT /v1/28544923908243208806/<Swift container> HTTP/1.1 x-ntap-sg-consistency: strong-site X-Auth-Token: SGRD_3a877009a2d24cb1801587bfa9050f29 Host: test.com 応答 応答のHTTPヘッダー 説明 Date 応答の日付と時刻です。 Connection サーバへの接続が開いているかどうかを示します。 X-Trans-Id 要求の一意のトランザクション識別子。 Content-Length 応答の本文の長さです。 応答の例 HTTP/1.1 204 No Content
Date: Sat, 29 Nov 2015 01:02:18 GMT Connection: CLOSE
X-Trans-Id: 1936575373 Content-Length: 0
テナント
アカウントと接続の設定
Swiftクライアント アプリケーションからの接続を受け入れるようにStorageGRID Webscale
を設定するには、Swiftテナント アカウントを1つ以上作成し、接続を設定する必要がありま す。
Swift
用テナント
アカウントの作成
Swift REST APIを使用してStorageGRID Webscaleシステムにアクセスする場合は、Swiftテナ
ント アカウントを少なくとも1つ作成する必要があります。 タスク概要 グリッドに格納されているオブジェクトをエンティティごとに分ける場合は、追加のSwiftテ ナントを作成します。それぞれのテナント アカウントには、専用のグループとユーザ、お よび専用のコンテナとオブジェクトがあります。テナント アカウントでは、アイデンティ ティ フェデレーションを使用して、フェデレーテッド グループとフェデレーテッド ユーザ にSwiftクライアントへのアクセスを許可することもできます。アイデンティティ フェデ レーションを使用する場合は、フェデレーテッド アイデンティティ ソース(Active Directory やOpenLDAPなど)を設定する必要があります。グリッド管理インターフェイス用に設定さ れたアイデンティティ ソースを使用するか、またはTenant Management Interfaceを使用して テナント アカウント専用のアイデンティティ ソースを設定できます。
Swiftテナント アカウントの作成については、『StorageGRID Webscale管理者ガイド』を参照
してください。テナント アカウントの設定作業の詳細については、『StorageGRID Webscale テナント管理者ガイド』を参照してください。 関連情報 StorageGRID Webscale 10.4管理者ガイド StorageGRID Webscale 10.4テナント管理者ガイド
クライアント
アプリケーションによる
HTTPS
接続の使用
クライアント アプリケーションは、HTTPS接続を使用してStorageGRID Webscaleシステムに アクセスし、通信します。HTTPS接続を理解することで、StorageGRID Webscaleの要件を理 解できます。 クライアント アプリケーションは、APIゲートウェイ ノードまたはストレージ ノードに直 接接続してオブジェクトの格納や読み出しを行うことができます。グリッド内のストレー ジ ノード間で取り込み処理の負荷を分散する場合は、APIゲートウェイ ノードに接続すると 負荷分散が自動で調整されます。負荷を分散しない場合は、ストレージ ノードに直接接続 します。 注:IPv6は、APIゲートウェイ ノードを経由するクライアント アプリケーションの接続でのみサポートされます。IPv6のサポートの詳細については、『StorageGRID Webscale管理者
ガイド』を参照してください。 クライアント アプリケーションでは、Swift認証クレデンシャルを入力することなく、スト レージ ノード上のSwiftポートにOPTIONS HTTPS要求を発行して、LDRサービスが使用可能 かどうかを判別できます。この要求は、監視に使用できるほか、ストレージ ノードがダウ ンしたことを外部のロード バランサが認識できるようにするために使用できます。 クライアント アプリケーションへの接続を設定するには、次のタスクを実行します。
• APIゲートウェイ ノードとストレージ ノードのIPアドレスの特定 • APIゲートウェイ ノードおよびストレージ ノードのSwiftポート番号の特定 • システムのCertificate Authority(CA;認証局)証明書のコピー(サーバの検証が必要なク ライアント アプリケーション用) 接続の設定の詳細については、『StorageGRID Webscale管理者ガイド』を参照してください。 関連情報 StorageGRID Webscale 10.4管理者ガイド
API
ゲートウェイ
ノードとストレージ
ノードの
IP
アドレスの特
定
APIクライアント アプリケーションをStorageGRID Webscaleに接続するには、グリッド ノー
ドのIPアドレスが必要です。
手順
1. サポートされているブラウザを使用してグリッド管理インターフェイスにログインしま
す。
2. [Grid]を選択します。
3. [Grid Topology]ツリーで、接続するストレージ ノードまたはAPIゲートウェイ ノードを
選択して展開します。 選択したグリッド ノードのサービスが表示されます。 4. ストレージ ノードまたはAPIゲートウェイ ノードで、[SSM] > [Resources]を選択し、 [Network Addresses]の表までスクロールします。 一覧に表示された任意のIPアドレスを使用して、APIクライアント アプリケーションから のHTTPS接続を確立することができます。
API
ゲートウェイ
ノードおよびストレージ
ノードの
Swift
用ポー
ト番号
クライアント アプリケーションからStorageGRID WebscaleシステムへのHTTPS接続でAPI ゲートウェイ ノードとストレージ ノードを使用するには、特定のポート番号を使用する必 要があります。Swiftクライアント アプリケーションでは、StorageGRID Webscaleシステムへの接続に次の
ポートが使用されます。
グリッド ノード ポート番号
APIゲートウェイ ノード(CLBのSwiftポー
ト) 8083
REST API
のセキュリティの設定
REST APIのセキュリティの実装とシステムの保護方法について理解しておく必要がありま
す。
StorageGRID Webscale
システムでの
REST API
のセキュリティ
の実装
StorageGRID Webscaleシステムでは、Transport Layer Security(TLS)接続セキュリティ、サー
バ認証、クライアント認証、およびクライアント許可を採用しています。セキュリティの問 題について検討する際は、StorageGRID WebscaleシステムでREST APIのセキュリティ、認 証、および許可がどのように実装されるかを理解しておくと役立つことがあります。 StorageGRID Webscaleシステムでは、TLSを使用したネットワーク接続を介して送信された HTTPSコマンドを実行し、接続のセキュリティ、アプリケーションの認証、およびオプショ ンでトランスポートの暗号化を実現します。TLSを使用していないコマンドは拒否されま す。オブジェクトが取り込まれた時点で暗号化されている場合、StorageGRID Webscaleシス テム内でもオブジェクトのライフサイクルを通じて暗号化されたままになります。 TLSでは、エンティティのクレデンシャルとして証明書を交換することができ、ハッシュ ア ルゴリズムと暗号化アルゴリズムを使用したネゴシエーションが可能です。
StorageGRID Webscaleシステムのインストール時に、システムのCertificate Authority(CA;認
証局)証明書と各ストレージ ノードのサーバ証明書が生成されます。これらのサーバ証明 書は、いずれもシステムのCAによって署名されています。このCA証明書を信頼するように クライアント アプリケーションを設定する必要があります。クライアント アプリケーショ ンからTLSを使用してストレージ ノードに接続する際、ストレージ ノードから提供された サーバ証明書が信頼されたシステムのCAによって署名されていることを確認することでス トレージ ノードを認証できます。 また、すべてのストレージ ノードに共通のカスタム サーバ証明書を1つ用意して、生成され るそれぞれの証明書の代わりに使用することもできます。カスタム サーバ証明書には、管 理者が選択したCAによる署名が必要です。この場合、クライアント アプリケーションでの サーバ認証プロセスは同じですが、信頼されたCAが異なります。詳細については、『管理者 ガイド』の「証明書の設定」を参照してください。 次の表に、S3およびSwiftのREST APIにおけるセキュリティの問題に対する実装を示します。 セキュリティの問題 REST APIの実装 接続のセキュリティ TLS サーバ認証 システムのCAによって署名されたX.509サーバ証明書、ま たは管理者から提供されたカスタム サーバ証明書
セキュリティの問題 REST APIの実装
クライアント認証 • S3:S3アカウント(アクセス キーIDとシークレット ア
クセス キー)
• Swift:Swiftアカウント(ユーザ名とパスワード)
注:Swift REST APIでは、要求に応じて、OpenStack
のKeystone IDサービスを有効にして使用することが できます。Keystoneが有効になっている場合は、検 証用に追加のトークンを使用する必要があります。 Keystoneのサポートを有効にするには、ネットアッ プの担当者にお問い合わせください。 クライアント許可 • S3:バケットの所有権と適用可能なすべてのアクセス 制御ポリシー • Swift:アカウントのadminロールのアクセス 関連情報 StorageGRID Webscale 10.4管理者ガイド
REST API
を使用するクライアント
アプリケーションでのセ
キュリティ証明書の使用
StorageGRID WebscaleシステムとのTLSセッションをクライアント アプリケーションで確立 する際、システムからクライアント アプリケーションにサーバ証明書が検証用に送信され、 セキュアなHTTPS接続が確立されます。 クライアント アプリケーションでは、グリッドのCA証明書をロードし、それを使用して適 切なStorageGRID Webscaleシステムと通信していることを確認します。このプロセスによ り、中間者攻撃や偽装攻撃を防ぐことができます。TLS
ライブラリのハッシュ
アルゴリズムと暗号化アルゴリズム
のサポート
クライアント アプリケーションでは、HTTPSプロトコルを使用して、Transport Layer Security (TLS)を使用したネットワーク接続を介してStorageGRID Webscaleシステムと通信します。 StorageGRID Webscaleシステムでは、TLSライブラリのハッシュ アルゴリズムと暗号化アル ゴリズムをサポートしていますが、クライアント アプリケーションからTLSセッションを確 立する際に使用できるアルゴリズムに制限があります。通信プロセスを設定するときは、シ ステムで使用されるセキュリティ アルゴリズムを把握しておくことが重要です。 StorageGRID Webscaleシステムでは、次の暗号スイートのセキュリティ アルゴリズムをサ ポートしています。 暗号スイート メリット AES128-SHA セキュアな暗号化が可能で、オブジェクト を効率的に処理できます。 AES256-SHA
AES128-GCM セキュアな暗号化が可能で、大規模なオブ
ジェクトをより効率的に処理できます。
AES256-GCM
DHE-RSA-AES128-GCM-SHA256 Perfect Forward Secrecyがサポートされます。 DHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES256-GCM-SHA384 TLSセッションでは、クライアント アプリケーションの要件に基づいてAES128または AES256のいずれかを使用して接続がネゴシエートされ、パフォーマンスと暗号化セキュリ ティのバランスが調整されます。
Swift API
設定での接続のテスト
SwiftのCLIを使用して、StorageGRID Webscaleシステムへの接続をテストし、システムに対
するオブジェクトの読み取りと書き込みが可能であることを確認できます。
開始する前に
• https://swiftstack.com/docs/integration/python-swiftclient.htmlにあるSwiftのコマンドライン
クライアントpython-swiftclientを、ダウンロードしてインストールしておく必要がありま す。
• StorageGRID WebscaleシステムにSwiftテナント アカウントを作成しておく必要がありま
す。
タスク概要
セキュリティ情報の設定に関する説明に従ってセキュリティを設定していない場合は、各コ マンドに--insecureフラグを追加する必要があります。
手順
1. StorageGRID Webscale Swift環境の情報URLを照会します。
swift -U <Tenant_Account_ID:User_Name> -K <User_Password> -A https://<FQDN | IP>:<Port>/info capabilities この手順で、Swift環境が機能することをテストできます。オブジェクトを格納すること でアカウント設定をさらにテストするには、追加の手順を進めます。 2. オブジェクトをコンテナに配置します。 touch test_object swift -U <Tenant_Account_ID:Account_User_Name> -K <User_Password> -A https://<FQDN | IP>:<Port>/auth/v1.0 upload test_container test_object --object-name test_object 3. コンテナを取得してオブジェクトを確認します。 swift -U <Tenant_Account_ID:Account_User_Name> -K <User_Password> -A https://<FQDN | IP>:<Port>/auth/v1.0 list test_container 4. オブジェクトを削除します。 swift -U <Tenant_Account_ID:Account_User_Name> -K <User_Password> -A https://<FQDN | IP>:<Port>/auth/v1.0 delete test_container test_object
swift -U <Tenant_Account_ID:Account_User_Name> -K <User_Password> -A https://<FQDN | IP>:<Port>/auth/v1.0 delete test_container 関連タスク Swift用テナント アカウントの作成(24ページ)
処理の監視と監査
すべてのLDRサービスのトランザクション数をリストする要約属性を表示することで、クラ イアント アプリケーションとStorageGRID Webscaleシステムの接続の健常性を監視できま す。また、特定のLDRサービスのトランザクション数を表示することもできます。また、監 査メッセージを使用してStorageGRID Webscaleシステムの処理やトランザクションを監視す ることもできます。 手順 1. Swiftオブジェクトに対するHTTPSトランザクション数の表示(31ページ) 2. データ オブジェクトに関する情報の表示(32ページ) 3. 監査ログへのアクセスと確認(32ページ)Swift
オブジェクトに対する
HTTPS
トランザクション数の表示
StorageGRID WebscaleシステムのSwiftオブジェクトに対してクライアント アプリケーショ
ンが試みた読み取り、書き込み、変更の各処理について、成功した回数と失敗した回数を表 示することができます。すべてのLDRサービスの全トランザクションの概要を表示するこ とも、特定のLDRサービスのトランザクションを表示することもできます。これはシステム ヘルスを評価するのに役立ちます。 開始する前に グリッド管理インターフェイスにはサポートされているブラウザを使用してサインインす る必要があります。 手順 1. [Grid]を選択します。
2. サイト > [Overview] > [Main]を選択し、[API Operations]領域を確認します。
グリッド名は、グリッド トポロジ ツリーの最上位レベルのエントリです。[API
Operations]領域には、Swiftクライアント アプリケーションをサポートするすべてのLDR
3. [Storage Node] > [LDR] > [Swift] > [Overview] > [Main]を選択して、個々のLDRサービ スの情報を表示します。
データ
オブジェクトに関する情報の表示
データ オブジェクトに関する情報を表示するには、StorageGRID Webscaleシステムでオブ ジェクトIDを使用します。オブジェクトの現在の場所を確認し、オブジェクトに関連付けら れているメタデータを取得することができます。 開始する前に • グリッド管理インターフェイスにはサポートされているブラウザを使用してサインイン する必要があります。 • このタスクを実行するには、特定のアクセス権限が必要です。詳細については、管理ユー ザ アカウントおよびグループを使用したシステム アクセスの制御に関する情報を参照 してください。 • クライアント アプリケーションからオブジェクトIDを取得しておく必要があります。 オブジェクトIDは次のいずれかです。 ◦ CBID(Content Block IDentifier) ◦ UUID(Universally Unique IDentifier)◦ オブジェクトID
◦ コンテナ / Object_Key
手順
1. [Grid]を選択します。
2. [Grid Topology]ツリーで、[primary Admin Node] > [CMN] > [Object Lookup] > [Configuration]を選択します。
3. [Object Identifier]ボックスにオブジェクトIDを入力し、[Apply Changes]をクリックしま
す。 注:無効なオブジェクトIDを入力するとエラー メッセージが表示されます。 4. [Overview]タブをクリックして結果を確認します。 関連情報 StorageGRID Webscale 10.4管理者ガイド
監査ログへのアクセスと確認
StorageGRID Webscaleシステムは、StorageGRID Webscaleシステム内の各サービスから1つ以
セージにより、セキュリティ、運用、およびパフォーマンスについて、システムの健常性の 評価に役立つ重要な監視データが提供されます。
タスク概要
StorageGRID Webscaleシステムでは、1日の終わりに監査ログを圧縮し、YYYY-MM-DD.txt.gz
の形式(元の日付を保持)に名前を変更します。 手順 1. Passwords.txtファイルに記載されたユーザ名とパスワードを使用してサーバにログイ ンします。 2. AMSサービスをホストするサーバのコマンドラインで監査ログ ディレクトリにアクセ スします。 3. /var/local/audit/export/ディレクトリに移動します。 4. audit.logファイルを表示します。
著作権に関する情報
Copyright © 1994–2017 NetApp, Inc. All rights reserved. Printed in the U.S.
このドキュメントは著作権によって保護されています。著作権所有者の書面による事前承 諾がある場合を除き、画像媒体、電子媒体、および写真複写、記録媒体、テープ媒体、電子 検索システムへの組み込みを含む機械媒体など、いかなる形式および方法による複製も禁止 します。 ネットアップの著作物から派生したソフトウェアは、次に示す使用許諾条項および免責条項 の対象となります。 このソフトウェアは、ネットアップによって「現状のまま」提供されています。ネットアッ プは明示的な保証、または商品性および特定目的に対する適合性の暗示的保証を含み、かつ これに限定されないいかなる暗示的な保証も行いません。ネットアップは、代替品または代 替サービスの調達、使用不能、データ損失、利益損失、業務中断を含み、かつこれに限定さ れない、このソフトウェアの使用により生じたすべての直接的損害、間接的損害、偶発的損 害、特別損害、懲罰的損害、必然的損害の発生に対して、損失の発生の可能性が通知されて いたとしても、その発生理由、根拠とする責任論、契約の有無、厳格責任、不法行為(過失 またはそうでない場合を含む)にかかわらず、一切の責任を負いません。 ネットアップは、ここに記載されているすべての製品に対する変更を随時、予告なく行う権 利を保有します。ネットアップによる明示的な書面による合意がある場合を除き、ここに記 載されている製品の使用により生じる責任および義務に対して、ネットアップは責任を負い ません。この製品の使用または購入は、ネットアップの特許権、商標権、または他の知的所 有権に基づくライセンスの供与とはみなされません。 このマニュアルに記載されている製品は、1つ以上の米国特許、その他の国の特許、および 出願中の特許によって保護されている場合があります。 権利の制限について:政府による使用、複製、開示は、DFARS 252.277-7103(1988年10月) およびFAR 52-227-19(1987年6月)のRights in Technical Data and Computer Software(技術デー タおよびコンピュータソフトウェアに関する諸権利)条項の(c) (1) (ii)項、に規定された制限 が適用されます。
商標に関する情報
Active IQ、AltaVault、Arch Design、ASUP、AutoSupport、Campaign Express、Clustered Data ONTAP、Customer Fitness、Data ONTAP、DataMotion、Element、Fitness、Flash Accel、Flash Cache、Flash Pool、FlexArray、FlexCache、FlexClone、FlexPod、FlexScale、FlexShare、 FlexVol、FPolicy、Fueled by SolidFire、GetSuccessful、Helix Design、LockVault、Manage ONTAP、MetroCluster、MultiStore、NetApp、NetApp Insight、OnCommand、ONTAP、 ONTAPI、RAID DP、RAID-TEC、SANscreen、SANshare、SANtricity、SecureShare、 Simplicity、Simulate ONTAP、Snap Creator、SnapCenter、SnapCopy、SnapDrive、 SnapIntegrator、SnapLock、SnapManager、SnapMirror、SnapMover、SnapProtect、
SnapRestore、Snapshot、SnapValidator、SnapVault、SolidFire、SolidFire Helix、StorageGRID、 SyncMirror、Tech OnTap、Unbound Cloud、WAFL、およびその他の名前は米国またはその他
の国におけるNetApp, Inc.の登録商標です。その他のブランドまたは製品は、それぞれを保有 する各社の商標または登録商標であり、相応の取り扱いが必要です。ネットアップの商標の 最新のリストは、以下でご覧いただけます。
マニュアルの更新について
弊社では、マニュアルの品質を向上していくため、皆様からのフィードバックをお寄せいた だく専用のEメール アドレスを用意しています。また、GA/FCS版の製品マニュアルの初回 リリース時や既存マニュアルへの重要な変更があった場合にご案内させていただくTwitter アカウントもあります。 本マニュアルの改善についてご提案がある場合は、次のアドレスまでコメントをEメールで お送りください。 [email protected] その際、担当部署で適切に対応させていただくため、製品名、バージョン、オペレーティン グ システム、弊社営業担当者または代理店の情報を必ず入れてください。 GA/FCS版の製品マニュアルの初回リリース時や既存マニュアルへの重要な変更があった場 合のご案内を希望される場合は、Twitterアカウント@NetAppDocをフォローしてください。索引
A
API サポートされるOpenStack Swiftのバージョン 4 セキュリティの設定 26 APIゲートウェイ ノード CLBサービスのIPアドレス 25 IPアドレス 25 Swift API用のポート番号 25 API処理 アカウント 9 object(オブジェクト) 15 container(コンテナ) 10C
CLBサービス IPアドレス 25 OPTIONS要求 19 Swift APIのエンドポイント 6 Swift用のポート番号 25G
GET(コンテナ整合性) 説明 21H
HTTPS接続 REST APIを使用するクライアント アプリケー ションでのセキュリティ証明書の使用 27 クライアント アプリケーションがStorageGRID システムへのアクセスと通信に使用 24 クライアント アプリケーションによるトランザ クションの数の表示 31 グリッド ノードのIPアドレス 25I
IPアドレス APIゲートウェイ ノード 25 ストレージ ノード 25L
LDRサービス HTTPSトランザクション数の表示 31 IPアドレス 25 OPTIONS要求 19 Swift APIのエンドポイント 6 Swift用のポート番号 25O
OpenStack Swift API
サポートされるバージョン 4 OPTIONSメソッド 説明 19
P
PUT(コンテナ整合性) 説明 22R
REST API セキュリティの設定 26S
StorageGRID Webscale REST APIのセキュリティ 26 Swift API OPTIONS要求 19Swift APIによるアカウントの処理 9 Swift APIによる接続のテスト 29 Swift用のポート番号 25 クライアント アプリケーションとのHTTPS接続 24 Swift API処理 アカウント 9 object(オブジェクト) 15 container(コンテナ) 10 Swift REST API
HTTPSトランザクション数の表示 31 サポートされるバージョン 4 サポートに対する変更 4 実装方法 5 設定のテスト 29 テナント アカウントの作成 24
T
TLS APIのセキュリティ 26 REST APIを使用するクライアント アプリケー ションでのセキュリティ証明書の使用 27 サポートされるハッシュ アルゴリズム 27 Transport Layer Security次を参照 : TLS Twitter マニュアルの変更に関する自動通知の受信方法 36
U
URLのタイプ 6あ
アカウントの処理アプリケーション HTTPS接続の使用 24 Swiftオブジェクトに対するHTTPSトランザク ション数の表示 31 アルゴリズム TLSでのサポート 27 暗号化 27 ハッシュ 27 暗号化アルゴリズム TLSでのサポート 27
お
応答ヘッダー, HTTP 一覧 21 オブジェクト HTTPSトランザクション数の表示 31 情報の表示 32 処理 15 object storage(オブジェクト ストレージ) Swift OpenStack APIのサポートにより対応 4か
監査ログ 確認 32 処理の監視に使用 31 処理の追跡 19く
クライアント アプリケーション HTTPS接続をStorageGRID Webscaleで使用 24 HTTPS接続をStorageGRID Webscaleとの通信に 使用 24 REST APIでのセキュリティ証明書の使用 27 Swiftオブジェクトに対するHTTPSトランザク ション数の表示 31 グリッド ノード IPアドレス 25こ
コメント マニュアルに関するフィードバックの送信方法 36 container(コンテナ) 処理 10さ
サーバ証明書 REST APIを使用するクライアント アプリケー ションでセキュリティに使用 27 サーバ認証 26し
情報 の送信方法 情報(info)URL OPTIONSメソッド 19 概要 6 処理 アカウント 9 エラー応答 6, 8 オブジェクト 15 概要 6 監査ログで追跡 19 監視 31 container(コンテナ) 10す
ストレージ(storage)URL OPTIONSメソッド 19 概要 6 ストレージ ノード IPアドレス 25 LDRサービスのIPアドレス 25 Swift API用のポート番号 25せ
セキュリティ REST APIに対する設定 26 REST APIを使用するクライアント アプリケー ションでの証明書の使用 27 S3を使用するクライアント アプリケーションで の証明書の使用 27 Swiftを使用するクライアント アプリケーショ ンでの証明書の使用 27Transport Layer Security 26 接続 APIのセキュリティとTLS 26 クライアント アプリケーションがStorageGRID Webscaleとの通信に使用 24 テスト 29
て
提案 マニュアルに関するフィードバックの送信方法 36 テナント アカウント Swift用に作成 24と
ドキュメント フィードバックの送信方法 36 変更に関する自動通知の受信方法 36 トラブルシューティング 監査ログの使用 32 処理に対するエラー応答 6, 8に
認証 HTTP接続 26 認証(auth)URL 概要 6 認証局(CA)の証明書 REST APIを使用するクライアント アプリケー ションでセキュリティに使用 27は
ハッシュ アルゴリズム TLSでのサポート 27ふ
フィードバック マニュアルに関するコメントの送信方法 36ほ
ポート番号APIゲートウェイ ノードでSwift APIに使用 25 ストレージ ノードでSwift APIに使用 25