本発明は、コンピュータシステム及びコンピュータシステムの認証情報を変更するための方法に関する。
企業等の組織では、多量のデータを管理するために、ホストコンピュータ(以下「ホスト」)とは別に構成されたストレージ装置を用いている。例えば、金融機関や病院等のような組織では、多くの顧客に関する売買データや診療データ等を長期間保存する必要があるため、大容量のストレージ装置が必要とされる。
各ホストがストレージ装置をそれぞれ有するよりも、複数のホストが一つまたは複数のストレージ装置を共同で使用する方が、記憶領域を有効に使用することができ、データを効率的に管理することができる。このため、例えば、企業やデータセンタ等のような大規模なデータを取り扱う組織では、ネットワークを介して複数のホストと複数のストレージ装置とを接続するSAN(Storage Area Network)が普及している。
従前のSANは、大容量のバースト転送に優れたファイバチャネル技術を用いて構成されている。このようなSANはFC-SANと呼ばれる。FC-SANは、FCP(ファイバチャネルプロトコル)に対応している専用の通信機器やケーブル等を用いるため、比較的安定したデータ転送を行うことができる。しかし、専用の通信機器等は高価格であり、FCPに精通した技術者を確保しにくい等の問題が指摘されている。
そこで、近年では、より広く普及しているIP(Internet Protocol)ネットワークを用いるIP-SANが注目されている。特に、IPネットワークの高速化及び大容量化が進展し、また、ギガビット級の通信を可能とするネットワークカードやスイッチの価格も低下したため、FC-SANに比肩する存在として注目を集めている。
IP-SANでは、例えば、SCSI(Small Computer System Interface)コマンドをTCP/IP(Transmission Control Protocol/Internet Protocol)でカプセル化し、このカプセル化されたパケットをIPネットワークを用いて送受信させる技術が知られている。この技術は、iSCSI技術と呼ばれる。iSCSIを用いることにより、ストレージ装置をIPネットワークに直接接続させることができる。
iSCSIでは、データの処理等を要求するノードをイニシエータ、要求された処理の応答を返すノードをターゲットと呼ぶ。例えば、ホストがイニシエータ、ストレージ装置がターゲットとなる。イニシエータ及びターゲットは、iSCSI名と呼ばれる識別子によって特定される。イニシエータは、ターゲットにログインすることにより、ターゲットの提供するサービス(ストレージサービス)を利用することができる。
イニシエータに、ターゲットのIPアドレスやiSCSI名等を予め登録しておくことにより、イニシエータはターゲットへのセッションを確立させることができる。セッションとは、物理的な通信経路に設定される論理的な通信経路である。
セッション確立に際して、イニシエータとターゲットとの間で認証が行われる。不正なアクセスを防止するためである。認証は、ターゲットまたはイニシエータの少なくともいずれか一方または両方で行うことができる。認証は、例えば、イニシエータから通知されたユーザ名(ユーザID)及びシークレット(パスワード)が、ターゲットに登録されているユーザ名及びシークレットに一致するか否かに基づいて、行われる。ユーザ名及びシークレットの両方が一致する場合、アクセス権限が認められる。RFC(Request For Comments)3720 8.2.1.項等に記載されているように、シークレットとは、12バイト(96bit)〜16バイト(128bit)の長さの値を有するパスワード情報の一種である。
iSCSIノード(ターゲット及びイニシエータ)は、上述のようにIPネットワークに直接接続されるため、不正アクセスを防止するために、シークレットを定期的に変更するのが好ましい。なお、ネットワークストレージに関する技術ではないが、管理装置によってホスト及び端末のパスワードをそれぞれ変更できるようにした技術は知られている(特許文献1)。
特開平8−202658号公報
前記文献に記載の従来技術では、管理装置によってホスト及び端末のパスワードを簡単に変更可能である。しかし、iSCSIの場合は、その仕様上、シークレットを変更するためにはセッションをいったん切断した後、再び接続させる必要がある。シークレットの変更に際してセッションの切断が必要となるため、管理者は、ホスト上のアプリケーションプログラムを一時停止させてから、シークレットの変更作業を行う必要がある。
しかしながら、iSCSIを用いるコンピュータシステムは、24時間365日の無停止運転を要求されることが多い。従って、ホスト上のアプリケーションプログラムを停止させることなく、シークレットを変更させる技術が求められている。
そこで、本発明の目的は、第1コンピュータ装置を停止させることなく、認証情報を変更できるようにしたコンピュータシステム及びコンピュータシステムの認証情報変更方法を提供することにある。本発明の他の目的は、複数のパスが設定されている場合でも、認証情報を比較的短い時間で変更できるようにしたコンピュータシステム及びコンピュータシステムの認証情報変更方法を提供することにある。本発明のさらなる目的は、後述する実施形態の記載から明らかになるであろう。
上記課題を解決すべく、本発明の一つの観点に従うコンピュータシステムは、第1コンピュータ装置と第2コンピュータ装置とを双方向通信可能に接続したコンピュータシステムであって、第2コンピュータ装置は、第1コンピュータ装置から受領した認証情報に基づいて、第1コンピュータ装置が正当なアクセス権限を有するか否かを判定し、第1コンピュータ装置が正当なアクセス権限を有する場合には、第1コンピュータ装置による第2コンピュータ装置の利用を許可するようになっており、第1コンピュータ装置と第2コンピュータ装置とを接続するパスに設定されるセッションを管理するためのセッション管理部を設ける。そして、セッション管理部は、 パスに設けられ、変更前の認証情報を用いる第1セッションを介して、認証情報の変更が要求されるよりも前に実行中のデータ処理を実行させ、パスに設けられ、変更後の認証情報を用いる第2セッションを介して、認証情報の変更が要求された後に発生したデータ処理を実行させることにより、第1コンピュータ装置と第2コンピュータ装置との間のセッションを維持しながら、認証情報を変更させる。
本発明の実施形態では、セッション管理部は、(1)第1コンピュータ装置と第2コンピュータ装置との間に、変更前の認証情報を用いる第1セッションと、変更後の認証情報を用いる第2セッションとをそれぞれ設定し、(2)認証情報の変更前に実行中のデータ処理は第1セッションを用いて行い、認証情報の変更後の新たなデータ処理は第2セッションを用いて行い、(3)認証情報の変更前に実行中のデータ処理が完了した場合に、第1セッションを切断させる。
本発明の実施形態では、第1セッション及び第2セッションは、第1コンピュータ装置と第2コンピュータ装置とを接続する同一のパス上にそれぞれ設けられる。
本発明の実施形態では、認証情報には、ユーザを識別するためのユーザ識別情報と、このユーザ識別情報に対応付けられる変更可能なパスワード情報とが含まれている。
本発明の実施形態では、第1コンピュータ装置はホストコンピュータであり、第2コンピュータ装置は、ホストコンピュータに記憶領域を提供するストレージ装置である。
本発明の実施形態では、第1コンピュータ装置はストレージ装置であり、第2コンピュータ装置は、ストレージ装置に記憶領域を提供する他のストレージ装置である。
本発明の実施形態では、第1コンピュータ装置及び第2コンピュータ装置に変更後の認証情報をそれぞれ通知するための第3コンピュータ装置を、第1コンピュータ装置及び第2コンピュータ装置のそれぞれに双方向通信可能に接続し、第3コンピュータ装置から変更後の認証情報が第1コンピュータ装置及び第2コンピュータ装置のそれぞれに通知された場合に、(1)〜(3)のプロセスが実行される。
本発明の実施形態では、第1コンピュータ装置または第2コンピュータ装置のいずれか一方が、変更後の認証情報を相手方のコンピュータ装置に通知することにより、(1)〜(3)のプロセスが実行される。
本発明の実施形態では、第1コンピュータ装置と第2コンピュータ装置との間には複数のパスがそれぞれ設けられており、複数のパスのそれぞれについて、第1セッション及び第2セッションが設けられる。
本発明の実施形態では、第1コンピュータ装置と第2コンピュータ装置との間には複数のパスがそれぞれ設けられており、複数のパスのうち、実行中のデータ処理が完了するまでの時間が少ないパスから順番に選択して、(1)〜(3)のプロセスを実行させる。
本発明の実施形態では、複数のパスのうち実行中のコマンドの数が少ないパスから順番に選択される。
本発明の実施形態では、第1コンピュータ装置と第2コンピュータ装置との間には複数のパスがそれぞれ設けられており、複数のパスのそれぞれについて(1)のプロセスをそれぞれ実行させることにより、複数のパスの全てに第1セッション及び第2セッションをそれぞれ設定した後で、複数のパスのそれぞれについて(2)のプロセス及び(3)のプロセスをそれぞれ並行に実行させる。
本発明の実施形態では、認証情報を管理するための第4コンピュータ装置を、少なくとも第2コンピュータ装置に双方向通信可能に接続し、第2コンピュータ装置は、第1コンピュータ装置から変更後の認証情報を通知された場合、第1コンピュータ装置から通知された変更後の認証情報が正しいか否かを第4コンピュータ装置に問合せ、第4コンピュータ装置が変更後の認証情報が正しい旨を回答した場合に、(1)〜(3)のプロセスが実行される。
本発明の実施形態では、セッション管理部は、第1セッションを使用するデータ処理が完了した後で第1セッションを切断し、次に、第2セッションをパスに設定するようになっており、第1セッションを使用するデータ処理の実行中に新たなデータ処理の実行要求を受け付けた場合には、この新たなデータ処理の実行要求を保留しておき、第2セッションを設定した後で、保留された実行要求を第2セッションを用いて処理させる。
本発明の実施形態では、第1コンピュータ装置は、第2コンピュータ装置と接続するための第1通信ポートと、第1通信ポートを介して第2コンピュータ装置との間に設定されるパスを用いて、第2コンピュータ装置と通信を行うための第1通信制御部と、パスに設定されるセッションを用いたデータ転送を第1通信制御部を介して管理するための第1セッション管理部と、パスに設定されるセッションと、このセッションを使用している実行中のコマンドの数及び設定されるセッションが第1セッションであるか第2セッションであるかの種別を示す識別情報とを対応付けて管理する第1セッションテーブルと、変更前の認証情報及び変更後の認証情報を管理する第1認証情報管理テーブルと、を備えて構成され、第2コンピュータ装置は、第1通信ポートにパスを介して接続される第2通信ポートと、第2通信ポートを介して第1コンピュータ装置と通信を行うための第2通信制御部と、セッションを用いたデータ転送を第2通信制御部を介して管理するための第2セッション管理部と、パスに設定されるセッションと、このセッションが第1セッションであるか第2セッションであるかの種別を示す識別情報とを対応付けて管理する第2セッションテーブルと、変更前の認証情報及び変更後の認証情報を管理する第2認証情報管理テーブルと、を備えて構成され、変更後の認証情報が第1コンピュータ装置及び第2コンピュータ装置にそれぞれ入力された場合には、第1認証情報管理テーブル及び第2認証情報管理テーブルに変更後の認証情報をそれぞれ記憶させ、第1セッション管理部は、変更後の認証情報を用いた第2セッションの確立を第2セッション管理部に要求し、第2セッション管理部は、第1セッション管理部からの要求に含まれる変更後の認証情報の認証に成功した場合に、第2セッションを確立し、この確立した第2セッションに関する情報を第2セッションテーブルに登録し、第1セッション管理部は、第2セッションの確立を確認した場合は、この確立された第2セッションに関する情報を第1セッションテーブルに登録し、第1セッション管理部は、第2セッションの確立後に新たに発行する新コマンドは第2セッションを介して第2コンピュータ装置に送信し、第2セッション管理部は、第2セッションの確立前に第1コンピュータ装置から受領した旧コマンドに対する応答を第1セッションを介して第1コンピュータ装置に送信し、第1セッション管理部は、旧コマンドに関する全ての応答を第2コンピュータ装置から受信した場合に、第1セッションの切断を第2セッション管理部に要求し、第2セッション管理部は、第1セッション管理部から受領した第1セッションの切断要求に従って第1セッションを切断する。
本発明の他の観点に従う、通信ネットワークを介して双方向通信可能に接続された第1コンピュータ装置及び第2コンピュータ装置を備えるコンピュータシステムにおいて認証情報を変更させるための方法は、第1コンピュータ装置に変更後の認証情報を入力するステップと、第2コンピュータ装置に変更後の認証情報を入力するステップと、第1コンピュータ装置と第2コンピュータ装置とを接続するパス内に、変更後の認証情報を使用する第2セッションを確立させるステップと、第2セッションが確立された後で第1コンピュータ装置から発行される新コマンドは、第2セッションを介して処理させるステップと、第2セッションが確立される前に第1コンピュータ装置から発行された旧コマンドは、変更前の認証情報を用いる第1セッションを介して処理させるステップと、旧コマンドの処理が全て完了した場合には、第1セッションを切断させるステップと、をそれぞれ実行する。
本発明の構成要素は、その全部または一部をコンピュータプログラムとして構成できる場合がある。このコンピュータプログラムは、記録媒体に固定して譲渡等することができるほかに、インターネット等の通信ネットワークを介して伝送することもできる。
以下、図面に基づき、本発明の実施の形態を説明する。図1は、本実施形態の全体概念を示す説明図である。本実施形態では、コンピュータシステムとしてのストレージシステムを例に挙げて説明する。
このストレージシステムは、例えば、ホスト装置HDとストレージ装置SDとを通信ネットワークを介して接続することにより構成される。ホスト装置(以下、ホスト)HDは、例えば、サーバコンピュータ等のようなコンピュータ装置として構成されており、イニシエータとなる。ホストHDは「第1コンピュータ装置」に対応する。
ホストHDは、例えば、アプリケーションプログラムHD1と、パス管理部HD2と、セッション管理部HD3と、iSCSI制御部HD4及び通信ポートHD5と、セッションテーブルT1H及びシークレットテーブルT2Hを備えて構成される。
アプリケーションプログラムHD1は、例えば、電子メール管理ソフトウェア、動画配信ソフトウェア、売上管理ソフトウェア、顧客管理ソフトウェア等のようなソフトウェアであり、図外のクライアント端末に対してデータ処理のサービスを提供する。
パス管理部HD2は、ホストHDとストレージ装置(以下、ストレージと略記する場合がある)SDとの間のパスを管理するためのものである。例えば、ホストHDとストレージSDとの間に複数のパスが設けられている場合、パス管理部HD2は、いずれのパスを用いてコマンドやデータの転送を行うかを決定することができる。これにより、各パス間で負荷を分散させることができる。なお、図1では、説明の便宜上、一つのパスP1のみを示すが、後述の実施例からも明らかなように、本発明は複数のパスを備える場合にも適用される。
セッション管理部HD3は、ストレージSDとのセッションを確立し、確立したセッションを管理するものである。セッション管理部HD3は、後述のように、旧シークレットを用いたセッション(旧シークレットセッション)と、新シークレットを用いたセッション(新シークレットセッション)との複数種類のセッションを管理する。
iSCSI制御部HD4は、iSCSIに基づく通信を制御するものである。通信ポート(以下、ポート)HD5は、ストレージSDのポートSD1と通信を行うためのもので、ホストHDのポートHD5とストレージSDのポートSD1との間には、パスP1が設定されている。なお、前記FCPに対応する機器が認証を行うための規格として、FC-SP(Fibre Channel Security Protocol)が標準化されつつある。従って、本発明は,iSCSIが用いられるIP-SANだけではなく、FCが用いられるFC-SANにも適用可能である。
セッションテーブルT1Hは、ホストHDとストレージSDとの間に設けられたセッションを管理するためのテーブルである。セッションテーブルT1Hは、例えば、パスを識別するための情報と、セッションを識別するための情報と、そのセッションを使用して実行されているコマンド(仕掛中コマンド)を識別するための情報と、そのセッションが新シークレットセッションであるか旧シークレットセッションであるかを区別するための情報(バージョン)とを対応付けて管理する。
シークレットテーブルT2Hは、ホストHDがストレージSDにログインする際の認証情報を管理するためのテーブルである。認証情報としては、例えば、ユーザ名(ユーザID)及びシークレットを挙げることができる。シークレットとは、複数桁の文字列(数字を含む)であり、パスワード情報の一種である。より正確には、シークレットは、バイト列であるが、説明の便宜のため、文字列の場合を中心に説明する。シークレットテーブルT2Hは、ユーザ名と、シークレットと、そのシークレットが旧シークレットであるか新シークレットであるかを区別するためのバージョンとを対応付けて管理する。なお、ユーザ名に代えて、または、ユーザ名と共に、ホストHDを識別するためのコンピュータ識別子を採用することもできる。即ち、ユーザ名とシークレットとの組合せによって認証する構成、コンピュータ識別子とシークレットの組合せによって認証する構成、ユーザ名とコンピュータ識別子及びシークレットの組合せによって認証する構成、のいずれの構成でもよい。
ストレージSDの構成を説明する。ストレージSDは、ホストHDに記憶領域を提供するためのコンピュータ装置である。ストレージSDは、ストレージサブシステム、ディスクアレイ装置とも呼ばれる。ストレージSDは、例えば、ポートSD1と、iSCSI制御部SD2と、セッション管理部SD3と、記憶デバイスSD4と、セッションテーブルT1S及びシークレットテーブルT2Sを備えて構成される。
ポートSD1は、ホストHDのポートHD5と通信を行うためのものである。iSCSI制御部SD2は、iSCSIに基づく通信を制御するものである。セッション管理部SD3は、ホストHDとの間にセッションを確立させ、この確立されたセッションを管理するものである。
記憶デバイスSD4は、ホストHDにより使用される種々のデータ群を記憶する。記憶デバイスSD4としては、例えば、ハードディスクデバイス、半導体メモリデバイス、光ディスクデバイス、光磁気ディスクデバイス、磁気テープデバイス、フレキシブルディスクデバイス等のデータを読み書き可能な種々のデバイスを利用可能である。
記憶デバイスとしてハードディスクデバイスを用いる場合、例えば、FC(Fibre Channel)ディスク、SCSI(Small Computer System Interface)ディスク、SATAディスク、ATA(AT Attachment)ディスク、SAS(Serial Attached SCSI)ディスク等を用いることができる。
記憶デバイスとして半導体メモリデバイスを用いる場合、例えば、フラッシュメモリ、FeRAM(Ferroelectric Random Access Memory)、MRAM(Magnetoresistive Random Access Memory)、相変化メモリ(Ovonic Unified Memory)、RRAM(Resistance RAM)」等の種々のメモリデバイスを利用可能である。
セッションテーブルT1Sは、セッションを管理するためのテーブルである。セッションテーブルT1Sは、例えば、パスを識別するための情報と、セッションを識別するための情報と、そのセッションが新シークレットセッションであるか旧シークレットセッションであるかを区別するためのバージョンとを対応付けて管理する。
シークレットテーブルT2Sは、認証情報を管理するためのテーブルである。シークレットテーブルT2Sは、ホストHDのシークレットテーブルT2Hと同様に、ユーザ名とシークレット及びバージョンを管理する。
次に、ストレージシステムで使用される認証情報(シークレット)を変更する場合の動作を説明する。ホストHDがストレージSDを使用する場合、ホストHDは、ストレージSDのIPアドレスやiSCSI名を明示して、ストレージSDとの間にTCPコネクションを確立する。ホストHDは、ユーザ名及びシークレットを明示して、ストレージSDへのログインを試みる。
ストレージSDは、ホストHDからログインを要求されると、ホストHDから通知されたユーザ名及びシークレットが、シークレットテーブルT2Sに登録されているか否かを照合する。照合の結果、ホストHDが認証されると、ホストHDとストレージSDとの間のセッションが確立される。ホストHDは、確立されたセッションを用いて、記憶デバイスSD4に対してデータの読み書きを行うことができる。
ホストHDは、クライアント端末からの要求に応じて、リードコマンドやライトコマンドをストレージSDに発行する。リードコマンドの場合、ストレージSDは、記憶デバイスSD4からデータを読み出し、この読み出されたデータをホストHDに転送する。ライトコマンドの場合、ストレージSDは、ホストHDから受信したデータを記憶デバイスSD4に書き込む。
ところで、ストレージSDは、iSCSIに基づく通信を行うもので、IPネットワークを介してホストHDに接続される。従って、IPネットワークに接続されている他のコンピュータ装置から不正にアクセスされる可能性を排除することはできない。そこで、安全性を維持するために、シークレットは、例えば定期的に変更されるのが好ましい。以下の説明では、シークレットの変更を要求する前に使用されていたシークレットを旧シークレットと、変更された新しいシークレットを新シークレットと呼ぶ。
ストレージシステムの管理者は、シークレットを変更させる場合、新シークレットをホストHD及びストレージSDにそれぞれ設定する(第1プロセス(1))。新シークレットは、シークレットテーブルT2H,T2Sにそれぞれ登録される。新シークレットには、新しいシークレットであることを示すバージョンが設定される。
管理者から新シークレットが通知され、旧シークレットから新シークレットへの変更が要求されると、ホストHDのセッション管理部HD3は、新シークレットを用いたセッションの確立をストレージSDに要求する。ストレージSDのセッション管理部SD3は、ホストHDから通知された新シークレット及びユーザ名とシークレットテーブルT2Sに登録されている新シークレット及びユーザ名とを照合する。ホストHDから通知された新シークレット及びユーザ名とストレージSDに登録されている新シークレット及びユーザ名が一致する場合、新シークレットを用いたセッションがパスP1内に確立される。
なお、SAN10を流れるシークレットの盗み見を防止するために、ホストHDは新シークレットそのものではなく、新シークレットから何らかのアルゴリズムに従って導出された特定の値(例えば,新シークレットのハッシュ値)とユーザ名をストレージSDへ送信する場合がある。この場合、ストレージSDのセッション管理部SD3は、登録されている新シークレットからホストHDと同じアルゴリズムに従って特定の値を導出し、ホストHDから送信された特定の値と照合する。
これにより、ホストHDとストレージSDとは、新旧のシークレットを使用する2種類のセッション(旧シークレットセッションSa及び新シークレットセッションSb)で接続されることになる。
ここで、iSCSIの仕様上では、シークレットを変更する際には、セッションをいったん切断してから、新シークレットを用いたセッションを改めて確立する必要がある。従って、通常のiSCSIを用いたストレージシステムでは、シークレットを変更するたびに、ホストHDのアプリケーションプログラムHD1をいったん停止させる必要がある。これに対し、本実施形態では、アプリケーションプログラムHD1を停止させることなく、旧シークレットから新シークレットへ変更するための技術を提案する。
旧シークレットから新シークレットへ変更するよりも前に、ホストHDからストレージSDに発行されたコマンド(旧コマンド)は、ストレージSDによって処理されて、応答が返される。旧コマンドに対する応答は、旧シークレットを用いる旧シークレットセッションを介して行われる。
また、旧シークレットから新シークレットへの変更後に、ホストHDからストレージSDに発行されるコマンド(新コマンド)は、新シークレットを用いる新シークレットセッションを介して、ストレージSDに送信される。
このように、シークレット変更時の第2プロセス(2)では、旧コマンドに対する応答に旧シークレットセッションを使用し、新コマンドの送信に新シークレットセッションを使用する。
ストレージSDが旧コマンドの処理を全て完了した場合、旧シークレットを用いるセッションは不要となる。そこで、第3プロセス(3)では、旧シークレットセッションを切断し、セッションテーブルT1H,T1Sから旧シークレットに関するエントリをそれぞれ削除する。
このように構成される本実施形態によれば、ホストHDとストレージSDとの間に、旧シークレットを用いるセッションと新シークレットを用いるセッションとを設定し、旧コマンドに対する応答には旧シークレットセッションを使用し、新コマンドの発行には新シークレットセッションを使用する。そして、旧コマンドの処理が全て完了した場合に、旧シークレットセッションを切断し、以後は新シークレットセッションに一本化する。従って、ホストHDのアプリケーションプログラムHD1を停止させることなく、旧シークレットから新シークレットに変更させることができ、ストレージシステムの高可用性及び安全性を両立させることができる。
なお、ホストHDおよびストレージSDは、それぞれ第1ストレージSD1及び第2ストレージSD2であり、第1ストレージSD1が、パスP1を通して、第1ストレージSD1が備える記憶デバイスに格納されたデータを第2ストレージSD2へ送信し、第2ストレージSD2がそのデータを記憶デバイスSD4に格納する構成でもよい。即ち、第1ストレージと第2ストレージとの2台のストレージ間でリモートコピーを行う場合にも、本発明によるシークレット変更方法を適用可能である。以下、本実施形態を詳細に説明する。
図2は、本実施例によるストレージシステムの全体構成を示す説明図である。このストレージシステムは、例えば、一つまたは複数のストレージ装置1(以下、ストレージ1と略記する場合がある)と、少なくとも一つの管理端末2と、少なくとも一つ以上のホスト3と、一つまたは複数のクライアント端末4と、を備えて構成される。
ネットワーク構成を説明する。ストレージ1とホスト3とは、例えば、iSCSIを用いるIP-SAN10を介して接続される。ストレージ1の各ポートは、通信線15を介してSAN10にそれぞれ接続される。ホスト3は、通信線17を介してSAN10にそれぞれ接続される。管理端末2は、通信線16を介してストレージ1に接続される。
ホスト3と端末4とは、例えば、LAN(Local Area Network)11を介して接続されている。ホスト3は通信線18を介してLAN11に接続されており、端末4は通信線19を介してLAN11に接続されている。
なお、上述の通信線15,16,17,18,19は、例えば、メタルケーブルや光ファイバケーブルのような有線として構成される。しかし、ホスト3と端末4,ホスト3とストレージ1,ストレージ1と管理端末2を無線で接続することも可能である。この場合は、通信線15,16,17,18,19は省略される。
ストレージ1は、図1中のストレージSDに対応する。ストレージ1の構成は後述するが、ストレージ1はホスト3に記憶領域を提供する。管理端末2は、図1中の管理者によって操作されるコンピュータ装置である。管理者は、管理端末2を用いることにより、ストレージ1の構成変更等を行うことができる。ホスト3は、図1中のホストHDに対応する。ホスト3は、端末4からの要求に応じて、電子メールサービスや動画像配信サービス等の業務サービスを提供する。端末4は、例えば、パーソナルコンピュータや携帯情報端末、携帯電話等のようなコンピュータ装置として構成される。
図3は、ストレージ1の構成を示す説明図である。ストレージ1は、単体または複数の記憶デバイスを有する記憶装置システムであり、コントローラ107とディスク装置103とに大別することができる。ディスク装置103は、図1中の記憶デバイスSD4に対応する。
本実施例では、ディスク装置103として、ハードディスクデバイスを例に挙げるが、上述のように、フラッシュメモリデバイス等の他の記憶デバイスを用いてもよい。ディスク装置103は、ファイバチャネルケーブルのような通信線106を介して、コントローラ107に接続される。なお、複数のディスク装置103から、RAID(Redundant Array of Independent Disks)構成を得ることもできる。
コントローラ107の構成を説明する。コントローラは、ホスト3から受信したコマンドに従って、ディスク装置103へのデータの書込みや読出しを制御する。コントローラ107は、例えば、不揮発性メモリ100と、主メモリ101と、CPU(Central Processing Unit)104と、ディスクインターフェース(図中、インターフェースをI/Fと略記)105と、ポート108と、管理用のポート109とを備えて構成される。これら各メモリ100,101、CPU104,ディスクインターフェース105、各ポート108,109は、バスのような通信線102を介して相互に接続されている。
不揮発性メモリ100としては、例えば、フラッシュメモリ等のような書換可能な不揮発性のメモリを挙げることができる。このメモリ100には、例えば、GUI(Graphical User Interface)制御プログラム111と、iSCSI制御プログラム112と、I/O(Input/Output)制御プログラム113と、セッション管理プログラム114と、セッションテーブル121及びシークレットテーブル122とを記憶させることができる。
各プログラム111,112,113,114は、不揮発性メモリ100から主メモリ101に転送されて、CPU104により実行される。GUI制御プログラム111は、後述のように管理端末2に表示されるシークレット変更画面等を制御するものであり、管理者から入力された情報をセッション管理プログラム114に伝達する。
iSCSI制御プログラム112は、図1中のiSCSI制御部SD2に対応する。iSCSI制御プログラム112は、iSCSIに基づいた通信を制御する。iSCSI制御プログラム112は、IPパケットの組立及び分解等を行う。I/O制御プログラム113は、ホスト3からのライトコマンドやリードコマンドに従って、ディスク装置103にデータを書き込んだり、ディスク装置103からデータを読み出す。
セッション管理プログラム114は、図1中のセッション管理部SD3に対応する。セッション管理プログラム114は、ホスト3との間にセッションを確立し、確立されたセッションの使用方法を管理する。本実施例では、旧シークレットを用いるセッション(旧シークレットセッション)と新シークレットを用いるセッション(新シークレットセッション)との2種類のセッションを、同一のパス内にそれぞれ設定する。
セッションテーブル121は、図1中のセッションテーブルT1Sに対応する。詳細は図5と共に後述するが、セッションテーブル121は、ストレージ1とホスト3との間に設定されたセッションを管理するための情報を記憶する。シークレットテーブル122は、図1中のシークレットテーブルT2Sに対応する。詳細は図5と共に後述するが、シークレットテーブル122は、ホスト3を認証するためのユーザIDやシークレット等を記憶する。なお、セッションテーブル121及びシークレットテーブル122を、不揮発性メモリ101及びディスク装置103の両方に記憶させる構成でもよい。これにより、ストレージ1が故障等した場合でも、各テーブル121,122に記憶されている管理情報の喪失を防止することができ、信頼性が向上する。
主メモリ101には、必要に応じて、不揮発性メモリ100に記憶された各プログラム111〜114が読み込まれる。CPU104が主メモリ101に読み込まれた各プログラム111〜114をそれぞれ実行することにより、GUI制御機能、iSCSI制御機能、I/O制御機能、セッション管理機能がそれぞれ実現される。なお、IPパケットの分解及び組立等を行うための専用の装置を設ける構成でもよい。
主メモリ101には、ホスト3から受信したデータ及びディスク装置103から読み出されたデータを記憶するためのキャッシュ領域を設けることもできる。なお、主メモリ101とは別のキャッシュメモリを備える構成でもよい。
ディスクインターフェース105は、各ディスク装置103との間のデータ授受を行うものである。各ディスクインターフェース105は、通信線106を介して、各ディスク装置103にそれぞれ接続されている。
ポート108は、図1中のポートSD1に対応する。ポート108は、図2と共に述べたように、通信線15やSAN10及び通信線17を介して、ホスト3に接続される。管理用のポート109は、通信線16を介して管理端末2に接続される。
ストレージ装置1の基本的動作を簡単に説明する。ホスト3からライトコマンドが発行された場合、コントローラ107は、ホスト3から受信したライトデータを主メモリ101内のキャッシュ領域に記憶させる。コントローラ107は、キャッシュ領域に記憶させたライトデータをディスクインターフェース105を介して、ディスク装置103に書き込ませる。なお、ライトデータをキャッシュ領域に記憶させた時点で、ライトコマンドの処理が完了した旨をホスト3に通知する構成でもよいし、あるいは、ライトデータをディスク装置103に書き込んだ時点で、ライトコマンドの処理完了をホスト3に通知する構成でもよい。
ホスト3からリードコマンドが発行された場合、コントローラ107は、ホスト3から要求されたデータがキャッシュ領域に記憶されているか否かを調べる。ホスト3から要求されたデータがキャッシュ領域に記憶されている場合、コントローラ107は、そのデータをキャッシュ領域から読出し、ポート108を介してホスト3に送信させる。ホスト3の要求するデータがキャッシュ領域に記憶されていない場合、コントローラ107は、ディスクインターフェース105を介して、ディスク装置103からデータを読出して、キャッシュ領域に転送させる。そして、コントローラ107は、キャッシュ領域に記憶されたデータをポート108からホスト3に向けて送信させる。
図4は、ホスト3の構成を示す説明図である。ホスト3は、例えば、主メモリ301と、バス302と、ディスク装置303と、CPU304と、ディスプレイデバイス305と、ポインティングデバイス306と、キーボードスイッチ307と、ポート308,309とを備えて構成される。主メモリ301,ディスク装置303,CPU304、各ポート308,309等は、バス302を介して相互に接続されている。
主メモリ301には、ディスク装置303に記憶された各プログラム311,312,313が必要に応じて転送される。CPU304は、主メモリ301に読み込まれたプログラムを実行することにより、GUI制御機能、iSCSI制御機能及びセッション管理機能をそれぞれ実現させる。
ディスク装置303には、例えば、GUI制御プログラム311と、iSCSI制御プログラム312と、セッション管理プログラム313と、セッションテーブル321及びシークレットテーブル322を記憶させることができる。
GUI制御プログラム311は、ディスプレイデバイス305に表示されるシークレット変更画面を制御する。また、GUI制御プログラム311は、ポインティングデバイス306またはキーボードスイッチ307を介して管理者から入力された情報を、セッション管理プログラム313に伝達する。
iSCSI制御プログラム312は、iSCSIに基づく通信を制御するもので、図1中のiSCSI制御部HD4に対応する。iSCSI制御プログラム312は、IPパケットの分解及び組立等を行う。
セッション管理プログラム313は、図1中のセッション管理部HD3に対応する。セッション管理プログラム313は、ストレージ1との間にセッションを確立し、確立されたセッションの使用方法を管理する。
セッションテーブル321は、新シークレットを用いるセッション及び旧シークレットを用いるセッションを管理する。セッションテーブル321は、図1中のセッションテーブルT1Hに対応する。シークレットテーブル322は、ユーザID及びシークレット等を管理するもので、図1中のシークレットテーブルT2Hに対応する。各テーブル321,322の詳細は図5と共に後述する。なお、本実施例における1つのホスト3と1つのストレージ1との間には、1つのパスが存在するものとする。
図5は、テーブル構造の説明図である。図5には、ストレージ1に記憶されているセッションテーブル121及びシークレットテーブル122と、ホスト3に記憶されているセッションテーブル321及びシークレットテーブル322の構成とが、それぞれ示されている。
図5(a)に示すように、ストレージ1に記憶されているセッションテーブル121は、例えば、パスID1211と、セッションID1212と、ボリュームID1213及びバージョン1214とを対応付けて管理する。パスID1211は、ホスト3とストレージ1との間を接続するパスを識別するための情報である。セッションID1212は、パスに設定されたセッションを識別するための情報である。同一のパス内に複数のセッションを設けることができる。ボリュームID1213は、そのセッションを介してアクセスされるボリュームを識別するための情報である。
ボリュームとは、ディスク装置103の物理的な記憶領域上に設定される論理的な記憶領域である。一つのディスク装置103の有する物理的な記憶領域に一つまたは複数のボリュームを設けることもできるし、複数のディスク装置103の有する物理的な記憶領域を仮想化して、一つまたは複数のボリュームを設けることもできる。
バージョン1214は、そのセッションが旧シークレットを用いる旧シークレットセッションであるか、それとも新シークレットを用いる新シークレットセッションであるかの区別を示す情報である。旧シークレットを用いるセッションには「old」が設定され、新シークレットを用いるセッションには「new」が設定される。
図5(a)には、PID1で特定されるパスに、SID1及びSID2で特定される複数のセッションがそれぞれ設けられている様子が示されている。このパス(PID1)によりアクセスされるターゲットボリュームは、VID1で特定される。そして、SID1で特定されるセッションは旧シークレットを用いるセッションであり、SID2で特定されるセッションは新シークレットを用いるセッションであることが示されている。
ストレージ1に記憶されるシークレットテーブル122は、例えば、パスID1221と、ユーザID1222と、シークレット1223及びバージョン1224を対応付けて管理する。パスID1221は、上記同様に、パスを識別するための情報である。ユーザID1222は、ユーザを識別するための情報である。シークレット1223は、認証に使用される文字または数字の列である。バージョン1224は、そのシークレットが旧シークレット(シークレット変更前のシークレット)であるか、新シークレット(変更予定のシークレット)であるかの区別を示す情報である。旧シークレットには「old」が設定され、新シークレットには「new」が設定される。
ホスト3に記憶されるセッションテーブル321は、例えば、セッションID3212と、仕掛中コマンドリスト3213及びバージョン3214を対応付けて管理する。セッションID3212は、ストレージ1との間に設定された各セッションを識別するための情報である。仕掛中コマンドリスト3213は、そのセッションを用いて実行されているコマンドのリストである。仕掛中のコマンドとは、そのコマンドの処理結果に関する応答をストレージ1から受信していないコマンドを意味し、実行途中のコマンドである。バージョン3214は、新シークレットを用いるセッションであるか旧シークレットを用いるセッションであるかの区別を示す情報である。
ホスト3に記憶されるシークレットテーブル322は、例えば、ユーザID3222と、シークレット3223と、バージョン3224とを対応付けて管理する。ユーザID3222は、ユーザを識別する情報である。シークレット3223は、複数の文字や数字の列である。バージョン3224は、そのシークレットが新シークレットであるか旧シークレットであるかを区別するための情報である。
図6は、ストレージ1及びホスト3から管理者に提供されるシークレット変更画面を模式的に示す説明図である。図6(a)には、ストレージ1が管理端末2を介して管理者に提供するシークレット変更画面B500が示されている。このシークレット変更画面B500には、例えば、複数の入力部B501〜B504と、複数のボタンB510,B511を設けることができる。
入力部B501は、管理者にパスIDを入力させるものである。入力部B502は、管理者にユーザIDを入力させるためのものである。入力部B503は、管理者に新シークレットを入力させるためのものである。入力部B504は、管理者に新シークレットを再入力させるためのものである。ボタンB510は、管理者によって画面B500に入力された情報を確定させるためのものである。ボタンB511は、管理者によって画面B500に入力された情報を取り消すためのものである。
なお、図6(b)に示す画面B520でも同様であるが、新シークレットを再入力するための入力部B504を廃止してもよい。また、パスIDやユーザID、新シークレットを音声入力する構成でもよい。
図6(b)には、ホスト3がディスプレイデバイス305を介して、管理者に提供するシークレット変更画面B520が示されている。このシークレット変更画面B520には、例えば、複数の入力部B521〜B523と、複数のボタンB530,B531とを設けることができる。
入力部B521は、管理者にユーザIDを入力させるためのものである。入力部B522は、管理者に新シークレットを入力させるためのものである。入力部B523は、管理者に新シークレットを再入力させるためのものである。ボタンB530は、管理者によって画面B520に入力された情報を確定させるためのものである。ボタンB531は、管理者によって画面B520に入力された情報を取り消すためのものである。なお、図6に示すシークレット変更画面B500,520は、一例であって、別の画面構成でもよい。
図7は、ストレージシステムで使用されるシークレットを変更させるための全体処理を示すフローチャートである。以下の各フローチャートでも同様であるが、各フローチャートは、本発明の理解及び実施に必要な範囲で、各処理の概要を示しており、実際のプログラムとは相違する場合がある。なお、以下の説明ではステップを「S」と略記する。
まず、図7を参照して、シークレットを変更する場合の全体の流れを説明し、次に、図7に含まれる主要な処理について説明する。
管理者は、定期的にまたは不定期にシークレットの変更を指示することができる。シークレットの変更とは、現在使用されているシークレット(旧シークレット)を、別の新たなシークレット(新シークレット)に切り替えさせることを意味する。管理者が、管理端末2を介して、ストレージ1にシークレット変更を要求すると、ストレージ1は、シークレット変更画面B500を管理端末2の画面に表示させる(S601)。
管理者がシークレット変更画面B500の各入力部B501〜B504に必要な情報を入力して、確定ボタンB510を操作すると、ストレージ1は、シークレット変更処理を実行する(S602)。シークレット変更処理S602の詳細は、図8と共に後述する。
一方、管理者がホスト3にシークレットの変更を要求すると、ホスト3は、シークレット変更画面B520をディスプレイデバイス305に表示させる(S603)。管理者がシークレット変更画面B520の各入力部B521〜B523に必要な情報を入力して、確定ボタンB530を操作すると、ホスト3は、シークレット変更処理を実行する(S604)。シークレット変更処理(S604)については、図8と共に後述する。
ホスト3は、シークレット変更処理(S604)を実行した後、新シークレットセッションの確立をストレージ1に要求するための処理を実行する(S605)。新シークレットセッションとは、上述のように、新シークレットを使用するセッションである。この新シークレットセッション確立要求処理S605では、ストレージ1に対して、新シークレットを用いた新たなセッションの確立を要求する(S606)。処理S605の詳細は、図9と共に後述する。
ストレージ1は、ホスト3からセッションの確立を要求されると(S606)、新シークレットセッションを確立させて応答する処理(S607)を実行する。この処理S607の詳細は、図10と共に後述する。ストレージ1が、新シークレットを用いた新たなセッションを確立した旨をホスト3に応答すると(S608)、ホスト3は、I/O要求処理(S609)を実行する。
新シークレットを用いたセッションが確立された時点で、ホスト3とストレージ1とは、旧シークレットを用いたセッションと新シークレットを用いたセッションとの2種類のセッションで接続されることになる。
I/O要求処理S609の詳細は図11と共に後述する。先に簡単に説明すると、I/O要求処理S609では、新たなコマンドを発行する場合、その新たなコマンドを新シークレットセッションを介してストレージ1に送信する(S610)。ストレージ1は、新シークレットセッションを確立する前にホスト3から受領したコマンド(旧コマンド)に関する応答を行う場合、旧シークレットセッションを使用する(S611,S612)。
時間が経過すると、旧コマンドはストレージ1により全て処理され、ホスト3は全ての旧コマンドに関する応答を受け取る。全ての旧コマンドに関する応答を受信するまでに要する時間は、例えば、旧コマンドの発行数、ストレージ1の処理能力、通信遅延時間等によって相違する。なお、ストレージ1から受信する応答には、コマンドを正常に終了した旨の応答と、コマンドを正常に終了できなかった旨の応答とが含まれる。
ホスト3は、旧コマンドの処理が完了したことを確認すると、旧シークレットセッションを切断させるための処理(S613)を実行する。この処理S613については、図12と共に後述する。ホスト3がストレージ1に旧シークレットセッションの切断を要求すると(S614)、ストレージ1は、旧シークレットセッションを切断する処理(S615)を実行する。この処理S615の詳細は図13と共に後述する。ホスト3は、旧シークレットセッションを切断した旨の応答をストレージ1から受信すると(S616)、処理S613を終了させる。
図8は、ストレージ1及びホスト3でそれぞれ実行されるシークレット変更処理S602,S604の詳細を示すフローチャートである。図8(a)は、ストレージ1で実行されるシークレット変更処理S602のフローチャートを示す。
この処理S602では、ストレージ1は、シークレット変更画面B500のパスID入力部501に入力されたパスIDに基づいて、シークレットテーブル122(図5(b))を検索し、そのパスについて既に登録されているシークレット1223のバージョン1224を「old」に設定する(S6021)。
そして、ストレージ1は、シークレットテーブル122に、新シークレットを登録するための新規エントリを追加する(S6022)。図5(b)に示す例で説明する。管理者がパス(PID1)のシークレットの変更を指示した場合、既存シークレット(「abc」)のバージョンは「old」に変更される。そして、シークレットテーブル122には、新規エントリが追加される。新規エントリには、シークレット変更が要求されたパスID(PID1)と、新シークレット(「xyz」)及びバージョン(「new」)が設定される。
図8(b)は、ホスト3で実行されるシークレット変更処理S604の詳細を示すフローチャートである。図8(a)について述べたと同様に、ホスト3は、既存シークレット(旧シークレット)のバージョンが「old」となるように、シークレットテーブル322の設定内容を変更させる(S6041)。そして、ホスト3は、シークレットテーブル322に新規エントリを追加する(S6042)。この新規エントリには、ユーザIDと新シークレット及びバージョンが設定される。バージョンの値は「new」である。
図9は、ホスト3により実行される新シークレットセッションの確立を要求するための処理S605の詳細を示すフローチャートである。ホスト3は、図7中のS606にも示すように、新シークレットを用いた新たなセッションの確立要求をストレージ1に送信する(S6051)。
ホスト3は、ストレージ1からセッションを確立した旨の応答を受信するまで待機する(S6052)。ストレージ1からのセッション確立応答を受信すると(S6052:YES)、ホスト3は、セッションテーブル321に新規エントリを追加する(S6053)。この新規エントリには、新シークレットセッションを識別するためのセッションIDと、その新シークレットセッションを用いて実行中のコマンドのリスト及びバージョンがそれぞれ設定される。新シークレットセッションが確立された時点では、新シークレットセッションを用いてコマンドは発行されていないため、コマンドのリストは空欄となる。新シークレットセッションを用いて新たなコマンドが発行された場合は、そのコマンドのコマンドIDがコマンドリストに追加される。なお、新シークレットセッションのバージョンには「new」が設定される。
図10は、新シークレットセッションの確立及び新シークレットセッションが確立した旨の応答を行う処理S607の詳細を示すフローチャートである。この処理S607は、ストレージ1により実行される。
ストレージ1は、ホスト3から新シークレットセッションの確立を要求されると、この新シークレットセッションの確立要求を受信したパスのパスIDに基づいて、シークレットテーブル122を検索する。ストレージ1は、新シークレットセッションの確立要求を受信したパスについて設定されている新シークレット及びユーザIDを、シークレットテーブル122から読み出す(S6071)。
そして、ストレージ1は、ホスト3から受信した新シークレットセッションの確立要求に含まれているユーザID及び新シークレットと、シークレットテーブル122に登録されているユーザID及び新シークレットとを比較し、両方が一致するか否かを判断する(S6072)。ストレージ1は、認証が成功したか否かを判断し(S6073)、認証に成功した場合には(S6073:YES)、セッションテーブル121に新規エントリを追加する(S6074)。
図5(a)に示す例では、既存のセッション(SID1)のほかに、新たなセッション(SID2)のエントリがセッションテーブル121に追加される。この新規エントリのバージョンは「new」に設定される。セッションテーブル121に新シークレットセッションに関するエントリが追加されることにより、新シークレットを用いたセッションの確立が完了する。そこで、ストレージ1は、新シークレットセッションが確立された旨の応答をホスト3に送信する(S6075)。
一方、認証に失敗した場合(S6073:NO)、ホスト3にセッションを確立できなかった旨のエラー応答を返す(S6076)。ここで、管理者がストレージ1に新シークレットを登録した後は、旧シークレットを用いたセッション確立要求は拒否される。つまり、ストレージ1では、ホスト3から旧シークレットを用いてセッションの確立を要求されると、認証が失敗する。ストレージ1は、ホスト3にセッションを確立できなかった旨のエラー応答を返す。これにより、旧シークレットが漏洩したために、ボリュームへの不正アクセスが発生するリスクを低減することができる。
図11は、ホスト3により実行されるI/O要求処理S609の詳細を示すフローチャートである。この処理S609では、以下に述べるように、コマンドの発行時期に応じて、新シークレットセッションと旧シークレットセッションとを使い分ける。
まず、ホスト3は、処理対象が「新規コマンドの発行」であるか否かを判定する(S6091)。新コマンドとは、シークレット変更後に発行されるコマンドを意味する。シークレット変更前に発行されたコマンド、即ち、旧シークレットセッションを用いてホスト3からストレージ1に送信されたコマンドは、旧コマンドである。
新コマンドを発行する場合(S6091:YES)、ホスト3は、セッションテーブル321内の新シークレットセッションに関する仕掛中コマンドリストに、これから発行しようとする新コマンドのコマンドIDを追加する(S6092)。ホスト3は、新コマンドのコマンドIDをセッションテーブル321に追加した後、この新コマンドを新シークレットセッションを介してストレージ1に送信する(S6093)。
新コマンドの発行ではない場合(S6091:NO)、ホスト3は、ストレージ1からの応答を受信したか否かを判定する(S6094)。コマンドに関する応答を受信していない場合(S6094:NO)、本処理は終了する。つまり、本処理は、新コマンドの発行時及び応答の受信時を契機として動作する。
ストレージ1から応答を受信した場合(S6094:YES)、ホスト3は、セッションテーブル321内の仕掛中コマンドリストから、応答を受信したコマンドのコマンドIDを削除する(S6095)。
次に、ホスト3は、S6094で応答を受信したコマンドが旧シークレットセッションで発行されたコマンドであるか否かを判定する(S6096)。即ち、その応答を旧シークレットセッションを介してストレージ1から受信したか否かを判定する。
そのコマンドが旧シークレットセッションを用いて発行されたものではない場合(S6096:NO)、そのコマンドは新シークレットセッションを用いて発行された新コマンドであるから、本処理を終了する。即ち、ホスト3は、新コマンドに関する応答をストレージ1から受信した場合、セッションテーブル321内のコマンドリストから新コマンドのコマンドIDのみを削除する。
一方、S6094で応答を受信したコマンドが旧シークレットセッションを用いてホスト3からストレージ1に送信されたものである場合(S6096:YES)、ホスト3は、旧シークレットセッションの仕掛中コマンドリストのコマンド数が「0」になったか否かを判定する(S6097)。即ち、ホスト3は、旧シークレットセッションを介して送信された全ての旧コマンドについて、処理が完了したか否かを判定する。
旧シークレットセッションの仕掛中コマンドの数が「0」になった場合(S6097:YES)、ホスト3は、旧シークレットセッションの切断をストレージ1に要求するための処理(S613)を実行する。
図12は、ホスト3により実行される旧シークレットセッションの切断要求処理S613の詳細を示すフローチャートである。ホスト3は、旧シークレットセッションを用いて、このセッションの切断をストレージ1に要求する(S6131)。ホスト3は、セッション(旧シークレットセッション)を切断した旨の応答をストレージ1から受信するまで待機する(S6132)。
ストレージ1からセッションを切断した旨の要求を受信すると(S6132:YES)、ホスト3は、セッションテーブル321から旧シークレットセッションに関するエントリを削除する(S6133)。また、ホスト3は、シークレットテーブル322から旧シークレットに関するエントリを削除する(S6134)。
図13は、旧シークレットセッションを切断し、切断した旨の応答を返す処理S615の詳細を示すフローチャートである。この処理S615は、ストレージ1によって実行される。
ストレージ1は、ホスト3からセッションの切断要求を受信すると、この切断要求を受信したセッションのセッションIDに基づいてセッションテーブル121を検索し、そのセッションのバージョンをセッションテーブル121から読み出す(S6151)。また、ストレージ1は、切断を要求されたセッションのエントリをセッションテーブル121から削除する(S6152)。
ストレージ1は、S6152で切断したセッションが旧シークレットセッションであったか否かを、S6151で取得したバージョンに基づいて判定する(S6153)。旧シークレットセッションを切断した場合(S6153:YES)、ストレージ1は、切断された旧シークレットに関するエントリをシークレットテーブル122から削除する(S6154)。
本実施例は、上述のように構成されるので、以下の効果を奏する。本実施例では、シークレットを変更する際に、旧シークレットセッション及び新シークレットセッションの両方をそれぞれ設定し、シークレット変更処理の前に発行された仕掛中(実行途中)のコマンドは旧シークレットセッションを用いて処理し、シークレット変更処理の後に発行されたコマンドは新シークレットセッションを用いて処理する。そして、旧シークレットセッションが不要になった時点(旧コマンドの処理が全て完了した時点)で、旧シークレットセッションを切断し、新シークレットセッションのみを生かす構成としている。従って、ホスト3とストレージ1との間にセッションを維持しつつ、シークレットを変更することができる。これにより、ホスト3の可用性を維持しながら、セキュリティ性を高めることができ、使い勝手も向上する。
ここで、シークレット変更処理の前に発行されたコマンド(旧コマンド)を、シークレット変更準備の開始前に発行されたコマンドと、シークレット変更処理の後に発行されたコマンド(新コマンド)をシークレット変更準備の完了後に発行されたコマンドと、それぞれ定義し直すこともできる。
図14〜図18に基づいて第2実施例を説明する。本実施例を含む以下の各実施例は、上述した第1実施例の変形例に相当する。従って、本実施例を含む以下の実施例では、第1実施例との相違部分を中心に説明する。本実施例では、管理サーバ5からホスト3及びストレージ1に新シークレットをそれぞれ通知することにより、シークレットを変更させるようになっている。
図14は、本実施例によるストレージシステムの全体構成を示す説明図である。本実施例では、図2に示す構成に管理ネットワーク12及び管理サーバ5がそれぞれ追加されている。
管理サーバ5は、各ホスト3及びストレージ1をそれぞれ管理するためのコンピュータ装置である。管理サーバ5は、通信線16を介して、管理ネットワーク12に接続されている。各ホスト3及びストレージ1も、通信線16を介して、管理ネットワーク12にそれぞれ接続されている。つまり、管理サーバ5は、管理ネットワーク12を介して、各ホスト3及びストレージ1にそれぞれ双方向通信可能に接続されている。
ここで、管理ネットワーク12は、例えば、LANのようなネットワークとして構成することができる。但し、これに限らず、管理ネットワーク12をSANのようなネットワークとして構成してもよい。また、ホスト3とストレージ1とを接続するSAN10と管理ネットワーク12とを一体化させる構成でもよい。
図15は、管理サーバ5の構成を示す説明図である。管理サーバ5は、例えば、主メモリ501と、バス502と、ディスク装置503と、CPU504と、ディスプレイデバイス505と、ポインティングデバイス506と、キーボードスイッチ507と、ポート508を備えて構成される。主メモリ501,ディスク装置503,CPU504、ポート508等は、バス502を介して相互に接続されている。
主メモリ501には、ディスク装置503に記憶された各プログラム511,512が必要に応じて転送される。CPU504は、主メモリ501に読み込まれたプログラムを実行することにより、GUI制御機能及び通信制御機能を実現させる。
ディスク装置503には、例えば、GUI制御プログラム511と、通信制御プログラム512と、ホストテーブル521を記憶させることができる。
GUI制御プログラム511は、ディスプレイデバイス505に表示されるシークレット変更画面B540(図17参照)を制御する。また、GUI制御プログラム511は、ポインティングデバイス506またはキーボードスイッチ507を介して管理者から入力された情報を、通信制御プログラム512に伝達する。
通信制御プログラム512は、管理ネットワーク12を介して、ホスト3及びストレージ1と通信を行うためのプログラムである。この通信制御プログラム512により、管理サーバ5は、ホスト3及びストレージ1にシークレットの変更を要求し、シークレットが変更された旨の応答をホスト3及びストレージ1から受信する。
ホストテーブル521は、各ホスト3を管理するためのテーブルである。図16は、ホストテーブル521の構造例を示す説明図である。ホストテーブル521は、例えば、各ホスト3を識別するためのホストID5211と、各パスを識別するためのパスID5212とを対応付けて管理する。このホストテーブル521を用いることにより、どのホスト3がどのパスを使用しているかを検出することができる。
図17は、管理サーバ5により提供されるシークレット変更画面B540の一例を示す説明図である。シークレット変更画面B540には、例えば、複数の入力部B541〜B544と、複数のボタンB550,B551を設けることができる。
入力部B541は、管理者にパスIDを入力させるものである。入力部B542は、管理者にユーザIDを入力させるためのものである。入力部B543は、管理者に新シークレットを入力させるためのものである。入力部B544は、管理者に新シークレットを再入力させるためのものである。ボタンB550は、管理者によって画面B540に入力された情報を確定させるためのものである。ボタンB551は、管理者によって画面B500に入力された情報を取り消すためのものである。
図18は、本実施例によるシークレット変更を行う場合の全体動作を示すフローチャートである。管理サーバ5は、管理者からの指示により、シークレット変更画面B540をディスプレイデバイス505に表示させる処理を実行する(S1701)。
管理者がシークレット変更画面B540の各入力部B541〜B544に必要な情報を入力して、確定ボタンB550を操作すると、管理サーバ5は、シークレットの変更を要求するための処理を開始する(S1702)。
管理サーバ5は、ストレージ1にシークレットの変更を要求する(S1703)。ストレージ1は、管理サーバ5からの要求に従って、シークレット変更処理を実行する(S1704)。即ち、図8(a)で述べたように、ストレージ1は、既存シークレットのバージョンを「old」に設定し、新シークレットのために新規エントリをシークレットテーブル122に追加する。ストレージ1は、シークレット変更処理(S1704)を完了すると、シークレットを変更した旨の応答を管理サーバ5に返す(S1705)。
管理サーバ5は、ホスト3にシークレットの変更を要求する(S1706)。ホスト3は、管理サーバ5からの要求に従って、図7及び図8と共に述べたシークレット変更処理(S604)を実行する。
以下、図7で述べたS605〜S615のステップが実行される。即ち、ホスト3とストレージ1とは旧シークレットセッション及び新シークレットセッションを介して接続される(S605,S606,S607,S608)。新コマンドは新シークレットセッションを用いてホスト3からストレージ1に送信され、旧コマンドに関する応答は旧シークレットセッションを介してストレージ1からホスト3に送信される(S609,S610,S611,S612)。旧コマンドの処理が全て完了した場合は、旧シークレットが切断される(S613,S614,S615)。
ホスト3は、旧シークレットセッションの切断を確認すると、シークレットの変更を完了した旨を管理サーバ5に応答する(S1707)
このように構成される本実施例も前記第1実施例と同様の効果を奏する。これに加えて、本実施例では、管理者は、管理サーバ5を介して、ホスト3及びストレージ1にシークレットの変更を指示することができるため、使い勝手が向上する。即ち、管理者は、ホスト3及びストレージ1のそれぞれにシークレットの変更を個別に指示する必要がなく、管理サーバ5からの一回の指示でシークレットを変更させることができる。
図19に基づいて第3実施例を説明する。本実施例では、ホスト3からストレージ1にシークレットの変更を要求する。図19は、シークレットを変更させる場合の全体動作を示すフローチャートである。
ホスト3は、管理者からシークレット変更の指示を受けると、シークレット変更画面B520を表示する(S1801)。管理者が新シークレット等をシークレット変更画面B520に入力すると、ホスト3は、シークレット変更処理を開始する(S1802)。
ホスト3は、旧シークレットセッションを用いて、ストレージ1にシークレット変更要求を送信する(S1803)。ストレージ1は、ホスト3からシークレット変更要求を受信すると、シークレット変更処理を実行する(S1804)。ホスト3及びストレージ1でそれぞれ実行されるシークレット変更処理(S1802,S1804)は、ホスト3がシークレット変更要求を送信する点と、ストレージ1がシークレット変更処理完了後に、シークレット変更応答をホスト3へ送信する点とを除き、第1実施例で述べたS604,S602と同様である。
そして、ホスト3は、ストレージ1からシークレット変更処理が終了した旨の応答を受信すると(S1805)、上述したS605〜S615のステップを実行する。
このように構成される本実施例も前記第1実施例と同様の効果を奏する。これに加えて、本実施例では、管理者は、シークレット変更の指示をホスト3に与えるだけでよく、使い勝手が向上する。また、本実施例では、ホスト3からストレージ1にシークレット変更を要求するため、管理サーバ5を設ける必要がなく、構成を簡素化できる。
なお、本実施例では、ホスト3からストレージ1にシークレットの変更を要求する場合を述べたが、これとは逆に、ストレージ1からホスト3にシークレットの変更を要求する構成でもよい。即ち、管理者は、シークレット変更画面B500を介してストレージ1にシークレット変更を要求し、ストレージ1はホスト3にシークレットの変更を要求するように制御することもできる。
但し、本実施例のデメリットは、新シークレットがSAN10上を流れるため、盗み見の可能性がある点である。このデメリットを解消する方法として、ホスト3とストレージ1がIPsec等のセキュリティ技術を用いて、セキュアなセッションを確立する方法が考えられる。
図20,図21に基づいて第4実施例を説明する。本実施例では、ホスト3とストレージ1との間に複数のパスが設定されている場合、仕掛中のコマンド数が少ないパスから順番にシークレットを変更させる。
図20は、本実施例によるストレージシステムで使用されるセッションテーブル321,322の一例を示す説明図である。本実施例では、ホスト3とストレージ1とが複数のパスで接続されていることを前提とする。従って、ホスト3により使用されるセッションテーブル321ではパスID3211が管理されており、同様に、シークレットテーブル322でもパスID3221が管理されている。
図21は、シークレット変更を行うパスを選択するための処理を示すフローチャートである。本処理は、ホスト3によって実行される。まず、ホスト3は、図20に示すセッションテーブル321を参照し、仕掛中のコマンド数が最も少ないパスを一つ選択する(S2001)。
そして、ホスト3は、S2001で選択されたパスについて、新シークレットセッションの確立を要求する処理(S605)及びI/O要求処理(S609)をそれぞれ実行する(S2002)。
ホスト3は、ストレージ1に接続されている全てのパスについて、シークレットの変更が完了したか否かを判定する(S2003)。シークレットを変更していないパスが存在する場合(S2003:NO)、ホスト3は、仕掛中コマンド数が次に少ないパスを選択し(S2004)、S2002及びS2003を繰り返す。このようにして、仕掛中の少ないパスから順番に、シークレットが変更されていく。そして、全てのパスについてシークレットを変更すると(S2003:YES)、本処理は終了する。
このように構成される本実施例も前記第1実施例と同様の効果を奏する。これに加えて、本実施例では、ホスト3とストレージ1とが複数パスで接続されている場合、仕掛中のコマンド数が最も少ないパスから順番に、シークレットを変更する構成を採用する。従って、本実施例では、同時に確立可能なセッション数に上限が設定されている場合でも、シークレットを変更させることができる。
図22に基づいて第5実施例を説明する。本実施例では、ホスト3とストレージ1とが複数パスを介して接続されている場合、全てのパスについて新シークレットセッションをそれぞれ確立し、仕掛中コマンドの無くなった旧シークレットセッションから順番に切断していく。
図22は、シークレット変更時のパス選択処理を示すフローチャートである。本処理は、ホスト3によって実行される。ホスト3は、図20に示すセッションテーブル321に登録されている先頭のパスを一つ選択する(S2101)。ホスト3は、S2101で選択されたパスについて、新シークレットセッションの確立を要求する処理(S605)を実行する(S2102)。
ホスト3は、全てのパスについて新シークレットセッションが確立されたか否かを判定する(S2103)。新シークレットセッションの確立されていないパスが残っている場合(S2103:NO)、ホスト3は、セッションテーブル321に登録されている次のパスを選択し(S2104)、S2102及びS2103のステップを繰り返す。
全てのパスについて新シークレットセッションが確立されると(S2013:YES)、ホスト3は、各パスについて、I/O要求処理(S609)及び旧シークレットセッションの切断を要求する処理(S613)をそれぞれ実行させる(S2105)。即ち、各パスのそれぞれについてI/O要求処理(S609)が並行して実行され、仕掛中コマンドが無くなったパスから順番に旧シークレットセッションが切断される。全てのパスについて旧シークレットセッションが切断されるまで、S2105が繰り返される(S2106)。全てのパスについて旧シークレットセッションを切断した場合(S2106:YES)、本処理は終了する。
このように構成される本実施例も前記第1実施例と同様の効果を奏する。これに加えて、本実施例では、ホスト3とストレージ1とが複数パスで接続されている場合に、全パスについて新シークレットセッションを確立させた後、旧シークレットの切断処理を各パスで並行して実行させる。従って、全てのパスについてシークレットを変更するまでに要する時間を短縮することができ、使い勝手が向上する。
図23,図24に基づいて第6実施例を説明する。本実施例は、複数のホスト3が同一のボリュームを共有している場合(クラスタ構成の場合)に、ボリュームを共有する全てのホスト3でシークレットが変更されるまで旧シークレットを維持する。
図23は、本実施例のストレージシステムで使用されるセッションテーブル121及びシークレットテーブル122を示す説明図である。これらの各テーブル121,122は、ストレージ1内に記憶されている。
本実施例のシークレットテーブル122には、ボリュームID1225が追加されている。図23のセッションテーブル121に示すように、本実施例では、例えば、一つのボリューム(VID1)に複数のパス(PID1,PID4)が設定されている。
図24は、旧シークレットセッションを切断し、切断した旨をホスト3に応答するための処理を示すフローチャートである。本処理は、ストレージ1により実行される。
ストレージ1は、ホスト3からのセッション切断要求を受信すると、このセッション切断要求に関するボリュームID及びバージョンを、図23に示すセッションテーブル121からそれぞれ読み出す(S2301)。
ストレージ1は、切断を要求されたセッションのエントリをセッションテーブル121から削除する(S2302)。これにより、ホスト3から指示されたセッションが切断される。
ストレージ1は、S2302で切断されたセッションが旧シークレットセッションであるか否かを、S2301で取得したバージョンに基づいて判定する(S2303)。旧シークレットセッションの切断ではない場合(S2303:NO)、即ち、新シークレットセッションを切断した場合は、シークレットテーブル122を更新する必要がないため、本処理を終了する。
S2302で切断されたセッションが旧シークレットセッションの場合(S2303:YES)、ストレージ1は、セッションテーブル121を参照し、S2301で取得したボリュームIDと同一のボリュームIDが関連づけられている別のエントリが存在するか否かを判定する(S2304)。即ち、ストレージ1は、同一のボリュームを共有する別のホスト3が存在するか否かを調べる。
同一のボリュームを共有する別のホスト3が存在する場合(S2304:YES)、ストレージ1は、シークレットテーブル122を更新せずに本処理を終了する。一方、同一のボリュームを共有する別のホスト3が存在しなくなった場合(S2304:NO)、ストレージ1は、図23に示すシークレットテーブル122から旧シークレットのエントリを削除する(S2305)。
このように構成される本実施例も前記第1実施例と同様の効果を奏する。これに加えて、本実施例では、ホスト3がクラスタを構成している場合でも、整合性のあるシークレット変更を行うことができる。
図25〜図29に基づいて第7実施例を説明する。本実施例では、一方のストレージ1が他方のストレージ6の有する記憶領域を利用している場合において、ホスト3と一方のストレージ1との間のシークレット変更を契機として、一方のストレージ1と他方のストレージ6との間のシークレットも変更させる。
図25は、本実施例によるストレージシステムの全体構成を示す説明図である。本実施例のストレージシステムでは、外部ストレージ装置(以下、外部ストレージ)6が追加されている。
外部ストレージ6とは、ストレージ1の外部に存在するストレージである。ストレージ1と外部ストレージ6とは、SAN10を介して双方向通信可能に接続されている。ストレージ1は、外部ストレージ6の有する記憶領域(ボリューム)をストレージ1の内部に取り込み、外部ストレージ6の記憶領域が、あたかもストレージ1の記憶領域であるかのようにホスト3に見せかける。
例えば、ストレージ1の内部に仮想的なボリュームを設け、この仮想ボリュームのアドレス空間に外部ストレージ6内のボリュームのアドレス空間を割り付けることにより、外部ストレージ6のボリュームをストレージ1内の実ボリュームであるかのようにして使用することができる。
仮想ボリュームは、ホスト3からアクセスされる対象となるが、実際にデータを格納するのは外部ストレージ6内のボリューム(実ボリューム)である。ホスト3が仮想ボリュームにアクセスすると、ストレージ1は、ホスト3から受信したコマンドを外部ストレージ6に送信するためのコマンドに変換する。ストレージ1は、外部ストレージ6内のボリュームにデータを読み書きし、この読み書きの結果をホスト3に返す。
ストレージ1を接続元ストレージまたはメインストレージと、外部ストレージ6を接続先ストレージまたはサブストレージと呼ぶこともできる。
図26は、ストレージ1の構成を示す説明図である。図3に示す構成図に比べて、本実施例では、外部ストレージ管理プログラム115及び外部ストレージセッションテーブル123が追加されている。
外部ストレージ管理プログラム115は、ストレージ1が外部ストレージ6内のボリュームを取り込んで使用するためのプログラムである。外部ストレージ管理プログラム115は、上述のように、ホスト3からのアクセス要求(リードコマンドやライトコマンド)を、ストレージ1から外部ストレージ6へのアクセス要求に変換する。
図27は、外部ストレージセッションテーブル123の一例を示す説明図である。この外部ストレージセッションテーブル123は、例えば、パスID1231と、外部パスID1232と、外部セッションID1233及びバージョン1234を対応付けて管理している。
パスID1231とは、ホスト3とストレージ1との間のパスを識別するための情報である。外部パスID1232とは、ストレージ1と外部ストレージ6との間のパス(外部接続用のパス)を識別するための情報である。外部セッションID1233とは、ストレージ1と外部ストレージ6とを接続する外部パスに設けられたセッションを識別するための情報である。
図28,図29は本実施例によるストレージシステムにおいてシークレットを変更する場合の全体動作を示すフローチャートである。ストレージ1は、管理者からの指示に基づいて、シークレット変更画面B500を表示させる処理を実行し(S2701)、シークレット変更処理を実行する(S2702)。ストレージ1は、シークレットテーブル122に新シークレットを追加すると共に、外部ストレージ6に対してシークレットの変更を要求する(S2703)。
外部ストレージ6は、ストレージ1と同様のセッションテーブル及びシークレットテーブルを備えている。外部ストレージ6は、ストレージ1からの要求に従って、新シークレットを外部ストレージ6内のシークレットテーブルに追加する。外部ストレージ6は、外部ストレージ6内のシークレットが変更された旨の応答をストレージ1に応答する(S2704)。なお、ストレージ1がシークレット変更要求を送信するかわりに、管理者が外部ストレージ6のシークレット変更手段(GUIやCLI等)を用いて、 S2701の前に、外部ストレージ6のシークレットを変更しておいてもよい。
一方、ホスト3は、管理者からの指示に基づいて、シークレット変更画面B520を表示させる処理を実行し(S2705)、続いて、シークレットテーブル322に新シークレットのエントリを追加する処理を実行する(S2706)。
そして、第1実施例で述べたと同様に、ホスト3は、新シークレットセッションの確立をストレージ1に要求するための処理を開始する(S2707)。ホスト3がストレージ1に新シークレットセッションの確立を要求すると(S2708)、ストレージ1は、新シークレットセッションを確立させるための処理を実行する(S2709)。そして、ストレージ1は、外部ストレージ6に対して、新シークレットセッションの確立を要求する(S2710)。なお、外部ストレージ6が、1つのイニシエータとの間には1つのセッションしか確立しない制限を有している場合、ストレージ1は、旧シークレットセッション確立時とは異なるイニシエータのiSCSI名を用いて、新シークレットセッションを確立してもよい。
外部ストレージ6から新シークレットセッションを確立した旨の応答を受信すると(S2711)、ストレージ1は、新シークレットセッションが確立された旨の応答をホスト3に送信する(S2712)。
図29は、図28に続くフローチャートである。第1実施例で述べたと同様に、ホスト3は、I/O要求処理を開始する(S2801)。ホスト3は、新シークレットセッションの確立後に発行する新コマンドを新シークレットセッションを用いてストレージ1に送信する(S2802)。
ストレージ1は、I/O要求処理を開始する(S2803)。ストレージ1は、ホスト3から受信したコマンドを外部ストレージ6に送信するためのコマンドに変換し、この変換されたコマンドを外部ストレージ6に送信する(S2804)。ホスト3から新コマンドを受信した場合、ストレージ1は、新コマンドを変換し、新シークレットセッションを介して外部ストレージ6に送信する(S2804)。
一方、外部ストレージ6は、ストレージ1から受信したコマンドの処理結果をストレージ1に送信する(S2805,S2807)。ストレージ1と外部ストレージ6との間に新シークレットセッションが確立されるよりも前に、ストレージ1から送信されたコマンド(旧コマンド)は、旧シークレットセッションを介して、外部ストレージ6からストレージ1に送信される。
同様に、ストレージ1は、外部ストレージ6からの応答を受信すると、この応答をホスト3に送信するための応答に変換し、この変換された応答を旧シークレットセッションを介してホスト3に送信する(S2806,S2808)。
ホスト3は、旧コマンドの処理が全て完了したことを確認すると、旧シークレットセッションの切断を要求するための処理を実行する(S2809)。ストレージ1は、ホスト3から旧シークレットセッションの切断要求を受信すると(S2810)、旧シークレットセッションを切断等するための処理を実行する(S2811)。
ストレージ1は、外部ストレージ6に対して、旧シークレットセッションの切断を要求する(S2812)。外部ストレージ6は、ストレージ1からの切断要求に応じて、旧シークレットセッションを切断する。
外部ストレージ6から旧シークレットセッションが切断された旨の応答を受信すると(S2813)、ストレージ1は、旧シークレットセッションが切断された旨の応答をホスト3に送信する(S2814)。
このように構成される本実施例も前記第1実施例と同様の効果を奏する。これに加えて、本実施例では、ストレージ1が外部ストレージ6を利用している場合に、ホスト3とストレージ1との間のシークレット変更と同期させて、ストレージ1と外部ストレージ6との間のシークレット変更を行うことができる。従って、ストレージ1が外部ストレージ6を利用している場合でも、ホスト3とストレージ1の間、及び、ストレージ1と外部ストレージ6との間のセッションをそれぞれ維持したままの状態で、シークレットを変更することができ、可用性とセキュリティ性を両立させることができる。
図30〜図36に基づいて第8実施例を説明する。本実施例では、ストレージシステムに認証サーバ7を設け、シークレット変更時の認証を認証サーバ7により実行する。
図30は、本実施例によるストレージシステムの全体構成を示す説明図である。このストレージシステムは、第1実施例で述べた構成に加えて、認証サーバ7を備える。認証サーバ7は、シークレット変更時のシークレット(新シークレット)が正しいか否かを認証するためのコンピュータ装置である。認証サーバ7は、通信線17を介してSAN10に接続されており、認証サーバ7と各ホスト3及びストレージ1とはSAN10を介して双方向通信可能に接続されている。なお、ストレージシステムに図14に示した管理ネットワーク12が存在する場合、認証サーバ7は管理ネットワーク12に通信線16を介して接続されてもよい。
図31は、本実施例によるストレージ1の構成を示す説明図である。図3に示す第1実施例のストレージ1と比較して、本実施例のストレージ1は、認証サーバ通信プログラム116を備えている。また、本実施例では、シークレット管理を認証サーバ7が行うため、ストレージ1からシークレットテーブル122が取り除かれている。
図32は、認証サーバ7の構成を示す説明図である。認証サーバ7は、例えば、主メモリ701と、バス702と、ディスク装置703と、CPU704と、ディスプレイデバイス705と、ポインティングデバイス706と、キーボードスイッチ707と、ポート708を備えて構成される。主メモリ701,ディスク装置703,CPU704、ポート708等は、バス702を介して相互に接続されている。
主メモリ701には、ディスク装置703に記憶された各プログラム711,712が必要に応じて転送される。CPU704は、主メモリ701に読み込まれたプログラムを実行することにより、GUI制御機能及び認証機能をそれぞれ実現させる。
ディスク装置703には、例えば、GUI制御プログラム711と、認証プログラム712と、シークレットテーブル721を記憶させることができる。
GUI制御プログラム711は、ディスプレイデバイス705に表示されるシークレット変更画面を制御する。また、GUI制御プログラム711は、ポインティングデバイス706またはキーボードスイッチ707を介して管理者から入力された情報を、認証プログラム712に伝達する。
認証プログラム712は、問合せされたシークレットが正しいシークレットであるか否かを判定し、その判定結果を出力するプログラムである。
図33は、シークレットテーブル721の構成を示す説明図である。シークレットテーブル721は、例えば、ユーザID7211及びシークレット7212を対応付けて管理している。
図34は、シークレット変更時の全体動作を示すフローチャートである。認証サーバ7は、管理者からの指示に基づいて、シークレット変更画面を表示させるための処理を実行する(S3301)。このシークレット変更画面は、例えば、図6(b)に示すシークレット変更画面B520のように構成することができる。
管理者がシークレット変更に必要な情報(新シークレット等)を認証サーバ7に入力すると、認証サーバ7は、シークレット変更処理を実行する(S3302)。このシークレット変更処理では、認証サーバ7は、シークレットテーブル721に新シークレットに関するエントリを追加する。
管理者は、新シークレットを認証サーバ7に登録した後で、ホスト3にシークレットの変更を指示する。ホスト3は、管理者からシークレットの変更指示が入力されると、管理者にシークレット変更画面B520を提供し(S3303)、前記第1実施例で述べたと同様に、シークレット変更処理を実行する(S3304)。
ホスト3は、新シークレットセッションの確立を要求するための処理を実行する(S3305)。ストレージ1は、新シークレットセッションの確立要求をホスト3から受信すると(S3306)、新シークレットセッションを確立等するための処理を実行する(S3307)。S3307の詳細は、図35と共に後述する。
ストレージ1は、ホスト3から通知された新シークレットの認証を認証サーバ7に要求する(S3308)。認証サーバ7は、ストレージ1から受信した新シークレットがシークレットテーブル721に登録されているか否かを調べる。ストレージ1から受信した新シークレットがシークレットテーブル721に登録されている場合、認証は成功する。ストレージ1から受信した新シークレットがシークレットテーブル721に登録されていない場合、認証は失敗する。
ストレージ1は、認証サーバ7から認証成功の応答を受信すると(S3309)、新シークレットセッションを確立し、新シークレットセッションが確立された旨をホスト3に通知する(S3310)。
以下第1実施例で述べたと同様に、ホスト3はI/O要求処理を実行する(図示省略)。そして、旧コマンドの処理が全て完了すると、ホスト3は、旧シークレットセッションの切断を要求するための処理を実行する(S3311)。
ストレージ1は、ホスト3から旧シークレットセッションの切断要求を受信すると(S3312)、旧シークレットセッションを切断し、切断した旨を応答するための処理を実行する(S3313)。S3313については、図36で詳述する。そして、ストレージ1は、旧シークレットセッションの切断完了をホスト3に応答する(S3314)。
図35は、新シークレットセッションを確立等するための処理S3307の詳細を示すフローチャートである。ストレージ1は、ホスト3から受信したセッション確立要求の中からユーザID及びシークレット(新シークレット)を取得する(S3401)。
ストレージ1は、S3401で取得したユーザID及びシークレットに基づいて、認証要求を生成し、この生成された認証要求を認証サーバ7に送信する(S3402)。ストレージ1は、認証サーバ7からの認証応答を待つ(S3403)。
認証サーバ7から認証応答を受信すると(S3403:YES)、ストレージ1は、認証が成功したか否かを判定する(S3404)。認証が成功した場合(S3404:YES)、ストレージ1は、セッションテーブル121に新シークレットセッションための新規エントリを追加する(S3405)。そして、ストレージ1は、新シークレットセッションが確立された旨をホスト3に通知する(S3406)。
これに対し、認証が失敗した場合(S3404:NO)、S3306でホスト3から通知されたシークレットが誤ったシークレットであるため、ストレージ1は、セッションを確立することなく、エラー応答をホスト3に送信する(S3407)。
図36は、旧シークレットセッションを切断等するための処理S3313の内容を示すフローチャートである。ストレージ1は、ホスト3から切断を要求されたセッションのエントリをセッションテーブル121から削除する(S3501)。
このように構成される本実施例も前記第1実施例と同様の効果を奏する。これに加えて、本実施例では、ストレージシステム内のシークレットを一元的に管理するための認証サーバ7を設ける構成のため、ストレージ1内でシークレットを管理する必要がない。従って、複数のストレージを有するストレージシステムにおいて、より簡単にシークレットを変更することができる。
図37〜図42に基づいて第9実施例を説明する。本実施例では、仕掛中の旧コマンドの処理が全て完了するのを確認した後で、新シークレットセッションを設定する。
図37は、本実施例によるホスト3の構成を示す説明図である。このホスト3は、主メモリ301内にコマンドバッファ331を備えている。コマンドバッファ331は、後述のように、シークレット変更処理の実行後に発行された新コマンドを一時的に保留しておくための記憶領域である。
図38は、本実施例によるホスト3が使用するセッションテーブル321及びシークレットテーブル322を示す説明図である。第1実施例で述べたセッションテーブル及びシークレットテーブルと異なり、本実施例のセッションテーブル321及びシークレットテーブル322は、バージョン3214,3224を管理しない。
図39は、シークレット変更時の全体動作を示すフローチャートである。ストレージ1は、管理者からの指示に応じて、シークレット変更画面B500を表示させるための処理を実行する(S3801)。そして、ストレージ1は、管理者から入力された新シークレットをシークレットテーブル122に追加する(S3802)。
ホスト3は、管理者からの指示に応じて、シークレット変更画面B520を表示し(S3803)、管理者から入力された新シークレットに基づいて、シークレットを変更するための処理を実行する(S3804)。
図40を参照する。シークレット変更処理S3804では、管理者がシークレット変更画面B520に入力した値に基づいて、図38に示すシークレットテーブル322のエントリを変更する(S3901)。即ち、この時点で、旧シークレットは新シークレットに書き換えられる。
図39に戻る。ホスト3は、I/O要求処理を実行する(S3805)。このI/O要求処理の詳細を図41を参照して説明する。ホスト3は、新規コマンドを発行するか否かを判定する(S4001)。新規コマンドを発行する場合(S4001:YES)、この新コマンドを送信すべきセッション(新シークレットセッションである。しかし、この時点では、新シークレットセッションは確立されていない)の仕掛中コマンドリスト3213に、新コマンドのコマンドIDを追加する(S4002)。そして、ホスト3は、その新コマンドをコマンドバッファ331に格納させる(S4003)。即ち、新コマンドはストレージ1に送信されず、一時保留の状態に置かれる。
新コマンドの発行ではない場合(S4001:NO)、ホスト3は、ストレージ1からの応答を受信したか否かを判定する(S4004)。ストレージ1からの応答を受信した場合(S4004:YES)、ホスト3は、応答を受信したコマンドのコマンドIDを仕掛中コマンドリスト3213から削除する(S4005)。
図39に戻る。上述のように、I/O要求処理(S3805)では、新コマンドの発行を一時的に保留し、全ての旧コマンドに関する応答を受信するまで待機する(S3806,S3807)。
ホスト3は、全ての旧コマンドの応答を受信すると、旧シークレットセッションの切断を要求するための処理を実行する(S3808)。ホスト3は、ストレージ1に旧シークレットセッションの切断を要求する(S3809)。ストレージ1は、ホスト3からの切断要求に応じて旧シークレットセッションを切断し、切断した旨をホスト3に通知する(S3810)。
ホスト3は、旧シークレットセッションの切断を確認すると、新シークレットセッションの確立をストレージ1に要求する(S3811)。ストレージ1は、ホスト3からのセッション確立要求に応じて、新シークレットセッションを確立し、セッションを確立した旨をホスト3に応答する(S3812)。
新シークレットセッションが確立されると、ホスト3は、コマンドバッファ331に格納しておいた新コマンドを順番に読み出して、新シークレットセッションを介してストレージ1に送信する(S3813)。ストレージ1は、新コマンドの処理を完了すると、ホスト3に応答を返す(S3814)。
図42は、旧シークレットセッションの切断を要求するための処理(S3808)の詳細を示すフローチャートである。ホスト3は、旧シークレットセッションの切断をストレージ1に送信する(S4101)。
ホスト3は、ストレージ1からセッションが切断された旨の応答を受信すると(S4102:YES)、図38に示すセッションテーブル321から旧シークレットセッションのエントリを削除する(S4103)。
ホスト3は、図38に示すシークレットテーブル322からユーザID及びシークレットを読み出す(S4104)。S4104でシークレットテーブル322から読み出されるシークレットは、図39のS3804で新シークレットに更新済みである。
ホスト3は、シークレットテーブル322から読み出した新シークレット等に基づいて、セッションの確立をストレージ1に要求する(S4105)。そして、ホスト3は、セッションが確立された旨の応答をストレージ1から受信すると(S4106:YES)、コマンドバッファ331に格納されているコマンドを読み出して、ストレージ1に送信する(S4107)。コマンドバッファ331に格納されている全てのコマンドが新シークレットセッションを介してストレージ1に送信されるまで、ホスト3は、S4107を繰り返し実行する(S4108)。
このように構成される本実施例も前記第1実施例と同様の効果を奏する。これに加えて、本実施例では、旧コマンドに関する全ての応答を受信してから新シークレットセッションを確立し、一時保留状態に置かれた新コマンドをストレージ1に送信するため、制御構造を簡素化することができる。
なお、本発明は、上述した実施の形態に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。
例えば、シークレット変更時における仕掛中のコマンド数(実行中の旧コマンドの数)が多い場合、ホスト3が仕掛中の旧コマンドに関する全ての応答を受信するまで、時間を要する可能性がある。この結果、シークレット変更が完了するまでの時間が増大するおそれもある。この問題を解決するために、ホスト3は、以下の処理を行うことができる。(a)ホスト3は、シークレット変更処理を行った後で、旧シークレットセッションの仕掛中コマンド数を調べ、(b)この仕掛中コマンド数が予め設定された閾値を超過しているか否かを判定し、仕掛中コマンド数が閾値を超えている場合は、新コマンドをストレージ1へ送信せずに、主メモリ301内のコマンドバッファ331に記憶させ、(c)その後、仕掛中コマンド数が閾値を下回った場合に、コマンドバッファ331に記憶された新コマンドをストレージ1へ送信する。このように、ストレージ1の負荷増加を抑えることにより、シークレット変更が完了するまでの時間を短縮することも可能である。
本発明の実施形態の概念を示す説明図である。
第1実施例に係るストレージシステムの全体構成を示す説明図である。
ストレージ装置の構成を示す説明図である。
ホストの構成を示す説明図である。
セッションテーブル及びシークレットテーブルの構成を示す説明図である。
シークレット変更画面を示す説明図である。
シークレットを変更する際の全体動作を示すフローチャートである。
ストレージ側及びホスト側のシークレット変更処理を示すフローチャートである。
新シークレットセッションの確立を要求する処理を示すフローチャートである。
新シークレットセッションを確立させる処理を示すフローチャートである。
I/O要求処理を示すフローチャートである。
旧シークレットセッションの切断を要求する処理を示すフローチャートである。
旧シークレットセッションを切断する処理を示すフローチャートである。
第2実施例に係るストレージシステムの全体構成を示す説明図である。
管理サーバの構成を示す説明図である。
ホストテーブルの構成を示す説明図である。
シークレット変更画面を示す説明図である。
シークレットを変更する際の全体動作を示すフローチャートである。
第3実施例に係るストレージシステムにおいて、シークレットを変更する際の全体動作を示すフローチャートである。
第4実施例に係るストレージシステムにおいて使用されるホスト側のセッションテーブル及びシークレットテーブルを示す説明図である。
パス選択処理を示すフローチャートである。
第5実施例に係るストレージシステムで実行されるパス選択処理を示すフローチャートである。
第6実施例に係るストレージシステムで使用されるストレージ側のセッションテーブル及びシークレットテーブルを示す説明図である。
旧シークレットセッションを切断する処理を示すフローチャートである。
第7実施例に係るストレージシステムの全体構成を示す説明図である。
ストレージ装置の構成を示す説明図である。
外部ストレージへのセッション等を管理するテーブルを示す説明図である。
シークレットを変更する際の全体動作を示すフローチャートである。
図28に続くフローチャートである。
第8実施例に係るストレージシステムの全体構成を示す説明図である。
ストレージ装置の構成を示す説明図である。
認証サーバの構成を示す説明図である。
シークレットテーブルを示す説明図である。
シークレットを変更する際の全体動作を示すフローチャートである。
新シークレットセッションを確立させる処理を示すフローチャートである。
旧シークレットセッションを切断させる処理を示すフローチャートである。
第9実施例に係るストレージシステムにおけるホストの構成を示す説明図である。
ホスト側のセッションテーブル及びシークレットテーブルを示す説明図である。
シークレットを変更する際の全体動作を示すフローチャートである。
シークレット変更処理を示すフローチャートである。
I/O要求処理を示すフローチャートである。
旧シークレットセッションの切断を要求する処理を示すフローチャートである。
符号の説明
1…ストレージ装置、2…管理端末、3…ホスト、4…クライアント端末、5…管理サーバ、6…外部ストレージ装置、7…認証サーバ、10…SAN、11…LAN、12…管理ネットワーク、15,16,17,18,19…通信線