(57)【特許請求の範囲】
【請求項１】
一つ以上のホスト計算機と、前記ホスト計算機と第１ネットワークを介して接続される複数のストレージ制御装置と、前記ストレージ制御装置と第２ネットワークを介して接続される管理計算機と、を備える計算機システムにおいて、
前記ホスト計算機は、前記第１ネットワークに接続される第１インタフェースと、前記第１インタフェースに接続される第１プロセッサと、前記第１プロセッサに接続される第１メモリと、を備え、
前記ストレージ制御装置は、データを格納する記憶装置と接続され、一つ以上の第２プロセッサと、前記第２プロセッサに接続される一つ以上の第２メモリと、を備え、
前記記憶装置は、前記データを格納する一つ以上のデータ記憶領域と、前記データを暗号化する第１暗号鍵を格納する一つ以上の鍵管理領域と、を含み、
前記管理計算機は、前記第２ネットワークに接続される管理インタフェースと、前記管理インタフェースに接続される第３プロセッサと、前記第３プロセッサに接続される第３メモリと、を備え、
前記計算機システムは、前記記憶装置に含まれる前記各データ記憶領域を識別する情報と、前記各データ記憶領域へのアクセスが許可された前記ストレージ制御装置を識別する情報と、を保持し、
前記第２プロセッサは、
前記ホスト計算機からデータの書き込み要求を受信したとき、第１暗号鍵を用いて前記データを暗号化し、
当該暗号化されたデータを前記データ記憶領域に格納し、
第２暗号鍵を用いて前記第１暗号鍵を暗号化し、
当該暗号化された第１暗号鍵を前記鍵管理領域に格納し、
前記ホスト計算機から前記データの読み出し要求を受信したとき、前記データ記憶領域から前記暗号化されたデータ、及び前記鍵管理領域から前記暗号化された第１暗号鍵を読み出し、
前記鍵管理記憶領域から読み出された前記暗号化された第１暗号鍵を、前記第２暗号鍵を用いて復号化し、
当該復号化された第１暗号鍵を用いて当該暗号化されたデータを復号化し、
前記第３プロセッサは、
前記データ記憶領域へのアクセスを許可されていた複数の前記ストレージ制御装置のうち、第１ストレージ制御装置が当該データ記憶領域へのアクセスを禁止された場合、新たな前記第２暗号鍵を生成し、当該新たな第２暗号鍵を、前記複数のストレージ制御装置のうちまだ前記データ記憶領域へのアクセスを許可されている第２ストレージ制御装置に送信し、
当該第２ストレージ制御装置の前記第２プロセッサは、当該新たな第２暗号鍵を用いて前記第１暗号鍵を暗号化することを特徴とする計算機システム。
【請求項２】
一つ以上のホスト計算機と、前記ホスト計算機と第１ネットワークを介して接続される複数のストレージ制御装置と、前記ストレージ制御装置と第２ネットワークを介して接続される管理計算機と、を備える計算機システムにおいて、
前記ホスト計算機は、前記第１ネットワークに接続される第１インタフェースと、前記第１インタフェースに接続される第１プロセッサと、前記第１プロセッサに接続される第１メモリと、を備え、
前記ストレージ制御装置は、前記データを格納する記憶装置と接続され、一つ以上の第２プロセッサと、前記第２プロセッサに接続される一つ以上の第２メモリと、を備え、
前記記憶装置は、データを格納する一つ以上のデータ記憶領域と、前記データを暗号化する第１暗号鍵を格納する一つ以上の鍵管理領域と、を含み、
前記管理計算機は、前記第２ネットワークに接続される管理インタフェースと、前記管理インタフェースに接続される第３プロセッサと、前記第３プロセッサに接続される第３メモリと、を備え、
前記計算機システムは、前記記憶装置に含まれる前記各データ記憶領域を識別する情報と、前記各データ記憶領域へのアクセスが許可された前記ストレージ制御装置を識別する情報と、を保持し、
前記第２プロセッサは、
前記ホスト計算機からデータの書き込み要求を受信したとき、第１暗号鍵を用いて前記データを暗号化し、
当該暗号化されたデータを前記データ記憶領域に格納し、
第２暗号鍵を用いて前記第１暗号鍵を暗号化し、
当該暗号化された第１暗号鍵を前記鍵管理領域に格納し、
前記ホスト計算機から前記データの読み出し要求を受信したとき、前記データ記憶領域から前記暗号化されたデータ、及び前記鍵管理領域から前記暗号化された第１暗号鍵を読み出し、
前記鍵管理記憶領域から読み出された前記暗号化された第１暗号鍵を、前記第２暗号鍵を用いて復号化し、
当該復号化された第１暗号鍵を用いて当該暗号化されたデータを復号化し、
前記第３プロセッサは、
前記データ記憶領域へのアクセスを許可されていた複数の前記ストレージ制御装置のうち、第１ストレージ制御装置が当該データ記憶領域へのアクセスを禁止された場合、当該データ記憶領域のために用いられる前記第１暗号鍵が格納される前記鍵管理領域を変更し、当該変更後の鍵管理領域を識別する情報を、前記複数のストレージ制御装置のうちまだ前記データ記憶領域へのアクセスを許可されている第２ストレージ制御装置に送信し、
当該第２ストレージ制御装置の前記第２プロセッサは、当該第１暗号鍵を、当該変更後の鍵管理領域に移動することを特徴とする計算機システム。
【請求項３】
ホスト計算機と第１ネットワークを介して接続され、管理計算機と第２ネットワークを介して接続されるストレージ制御装置において、
前記ホスト計算機は、前記第１ネットワークに接続される第１インタフェースと、前記第１インタフェースに接続される第１プロセッサと、前記第１プロセッサに接続される第１メモリと、を備え、
前記ストレージ制御装置は、データを格納する記憶装置と接続され、一つ以上の第２プロセッサと、前記第２プロセッサに接続される一つ以上の第２メモリと、を備え、
前記記憶装置は、前記データを格納する一つ以上のデータ記憶領域と、前記第１暗号鍵を格納する一つ以上の鍵管理領域と、を含み、
前記管理計算機は、前記第２ネットワークに接続される管理インタフェースと、前記管理インタフェースに接続される第３プロセッサと、前記第３プロセッサに接続される第３メモリと、を備え、
前記ストレージ制御装置は、前記記憶装置に含まれる前記各データ記憶領域を識別する情報と、前記各データ記憶領域へのアクセスが許可された前記ストレージ制御装置を識別する情報と、を保持し、
前記第２プロセッサは、
前記ホスト計算機からデータの書き込み要求を受信したとき、第１暗号鍵を用いて前記データを暗号化し、
当該暗号化されたデータを前記データ記憶領域に格納し、
第２暗号鍵を用いて前記第１暗号鍵を暗号化し、
当該暗号化された第１暗号鍵を前記鍵管理領域に格納し、
前記ホスト計算機から前記データの読み出し要求を受信したとき、前記データ記憶領域から前記暗号化されたデータを読み出し、
前記鍵管理記憶領域から前記暗号化された第１暗号鍵を読み出し、
前記暗号化された第１暗号鍵を、前記第２暗号鍵を用いて復号化し、
当該復号化された第１暗号鍵を用いて当該暗号化されたデータを復号化し、
前記データ記憶領域へのアクセスを許可されていた複数の前記ストレージ制御装置のうち、第１ストレージ制御装置が当該データ記憶領域へのアクセスを禁止された場合、前記複数のストレージ制御装置のうちまだ前記データ記憶領域へのアクセスを許可されている第２ストレージ制御装置の前記第２プロセッサは、第２暗号鍵を用いて前記第１暗号鍵を復号化し、前記管理計算機から送信された新たな第２暗号鍵を用いて当該第１暗号鍵を暗号化することを特徴とするストレージ制御装置。
【請求項４】
ホスト計算機と第１ネットワークを介して接続され、管理計算機と第２ネットワークを介して接続されるストレージ制御装置において、
前記ホスト計算機は、前記第１ネットワークに接続される第１インタフェースと、前記第１インタフェースに接続される第１プロセッサと、前記第１プロセッサに接続される第１メモリと、を備え、
前記ストレージ制御装置は、データを格納する記憶装置と接続され、一つ以上の第２プロセッサと、前記第２プロセッサに接続される一つ以上の第２メモリと、を備え、
前記記憶装置は、前記データを格納する一つ以上のデータ記憶領域と、前記第１暗号鍵を格納する一つ以上の鍵管理領域と、を含み、
前記管理計算機は、前記第２ネットワークに接続される管理インタフェースと、前記管理インタフェースに接続される第３プロセッサと、前記第３プロセッサに接続される第３メモリと、を備え、
前記ストレージ制御装置は、前記記憶装置に含まれる前記各データ記憶領域を識別する情報と、前記各データ記憶領域へのアクセスが許可された前記ストレージ制御装置を識別する情報と、を保持し、
前記第２プロセッサは、
前記ホスト計算機からデータの書き込み要求を受信したとき、第１暗号鍵を用いて前記データを暗号化し、
当該暗号化されたデータを前記データ記憶領域に格納し、
第２暗号鍵を用いて前記第１暗号鍵を暗号化し、
当該暗号化された第１暗号鍵を前記鍵管理領域に格納し、
前記ホスト計算機から前記データの読み出し要求を受信したとき、前記データ記憶領域から前記暗号化されたデータを読み出し、
前記鍵管理記憶領域から前記暗号化された第１暗号鍵を読み出し、
前記暗号化された第１暗号鍵を、前記第２暗号鍵を用いて復号化し、
当該復号化された第１暗号鍵を用いて当該暗号化されたデータを復号化し、
前記データ記憶領域へのアクセスを許可されていた複数の前記ストレージ制御装置のうち、第１ストレージ制御装置が当該データ記憶領域へのアクセスを禁止された場合、前記複数のストレージ制御装置のうちまだ前記データ記憶領域へのアクセスを許可されている第２ストレージ制御装置の前記第２プロセッサは、当該データ記憶領域のために用いられる第１暗号鍵を、前記管理計算機から送信された識別情報に該当する鍵管理領域に移動することを特徴とする記載のストレージ制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本願明細書で開示される技術は、データを暗号化及び復号化するストレージシステムに関し、特に、暗号化及び復号化に用いる鍵の管理方法に関する。
【背景技術】
【０００２】
近年、ストレージシステムに対するセキュリティ対策が急務となっている。その対策の一つに、データの暗号化技術がある（特許文献１参照）。データを暗号化する際、必ず暗号鍵が必要になるが、その暗号鍵（又はその暗号鍵に対応する復号用の鍵）を使用して復号化しない限り、正しくデータを復号化することができない。その結果、復号化されたデータは、ユーザやアプリケーションにとって全く無意味なビット列になってしまう。このように、暗号鍵を知らない者は暗号化されたデータを利用することができないため、暗号化されたデータのセキュリティが保護される。
【０００３】
一方、ストレージシステムの仮想化技術が進展している。この技術によれば、複数に分散したストレージシステムを単一のストレージシステムイメージとして統一的に管理及び運用することができる。このため、システム管理者の負荷軽減だけではなく、性能のボトルネックとなっているストレージシステムの処理負荷軽減も期待できる。例えば、あるストレージシステムのコントローラにデータ処理の負荷が集中している場合、他のストレージシステムのコントローラにその処理を分散させることができる。
【特許文献１】特開２００２−２１７８８７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
以上のセキュリティ動向から、今後、ストレージシステムに対してデータの暗号化技術を適用することが考えられる。一方、ストレージシステムの仮想化技術の進展を鑑みると、ストレージシステムにデータの暗号化技術を単純に適用するだけでは課題が生じる。即ち、データ暗号化機能を備える複数のストレージシステムにおいて、データの暗号化及び復号化に必要な暗号鍵がストレージシステム間で異なる可能性がある。例えば、あるコントローラを経由して書き込まれたデータが、他のコントローラを経由して読み出される場合、それらの二つのコントローラが別の暗号鍵を使用していると、読み出されたデータが正しく復号化されない。
【課題を解決するための手段】
【０００５】
本願で開示する代表的な発明は、一つ以上のホスト計算機と、前記ホスト計算機と第１ネットワークを介して接続される複数のストレージ制御装置と、前記ストレージ制御装置と第２ネットワークを介して接続される管理計算機と、を備える計算機システムにおいて、前記ホスト計算機は、前記第１ネットワークに接続される第１インタフェースと、前記第１インタフェースに接続される第１プロセッサと、前記第１プロセッサに接続される第１メモリと、を備え、前記ストレージ制御装置は、データを格納する記憶装置と接続され、一つ以上の第２プロセッサと、前記第２プロセッサに接続される一つ以上の第２メモリと、を備え、前記記憶装置は、前記データを格納する一つ以上のデータ記憶領域と、前記データを暗号化する第１暗号鍵を格納する一つ以上の鍵管理領域と、を含み、前記管理計算機は、前記第２ネットワークに接続される管理インタフェースと、前記管理インタフェースに接続される第３プロセッサと、前記第３プロセッサに接続される第３メモリと、を備え、前記計算機システムは、前記記憶装置に含まれる前記各データ記憶領域を識別する情報と、前記各データ記憶領域へのアクセスが許可された前記ストレージ制御装置を識別する情報と、を保持し、前記第２プロセッサは、前記ホスト計算機からデータの書き込み要求を受信したとき、第１暗号鍵を用いて前記データを暗号化し、当該暗号化されたデータを前記データ記憶領域に格納し、第２暗号鍵を用いて前記第１暗号鍵を暗号化し、当該暗号化された第１暗号鍵を前記鍵管理領域に格納し、前記ホスト計算機から前記データの読み出し要求を受信したとき、前記データ記憶領域から前記暗号化されたデータ、及び前記鍵管理領域から前記暗号化された第１暗号鍵を読み出し、前記鍵管理記憶領域から読み出された前記暗号化された第１暗号鍵を、前記第２暗号鍵を用いて復号化し、当該復号化された第１暗号鍵を用いて当該暗号化されたデータを復号化し、前記第３プロセッサは、前記データ記憶領域へのアクセスを許可されていた複数の前記ストレージ制御装置のうち、第１ストレージ制御装置が当該データ記憶領域へのアクセスを禁止された場合、新たな前記第２暗号鍵を生成し、当該新たな第２暗号鍵を、前記複数のストレージ制御装置のうちまだ前記データ記憶領域へのアクセスを許可されている第２ストレージ制御装置に送信し、当該第２ストレージ制御装置の前記第２プロセッサは、当該新たな第２暗号鍵を用いて前記第１暗号鍵を暗号化することを特徴とする。
【発明の効果】
【０００６】
本発明の一実施形態によれば、複数のコントローラが一つのボリュームへのアクセスを許可されている環境において、データを書き込んだコントローラとデータを読み出したコントローラとが異なる場合であっても、データを正しく復号化することができる。
【発明を実施するための最良の形態】
【０００７】
以下、本発明の実施の形態を図面を参照して説明する。
【０００８】
図１Ａは、本発明の第１の実施の形態の計算機システムの構成を示すブロック図である。
【０００９】
図１Ａの計算機システムは、ホストコンピュータ１０Ａ、ホストコンピュータ１０Ｂ、ストレージ制御部１５Ａ、ストレージ制御部１５Ｂ及び記憶装置２０を備える。ホストコンピュータ１０Ａ及び１０Ｂは、ストレージ制御部１５Ａ及び１５Ｂとネットワーク（例えば、ストレージエリアネットワーク）を介して互いに接続される。ストレージ制御部１５Ａ及び１５Ｂは、記憶装置２０に接続される。
【００１０】
以下の説明において、ホストコンピュータ１０Ａ及び１０Ｂを特に区別する必要がない場合、これらを総称して、ホストコンピュータ１０と記載する。同様に、ストレージ制御部１５Ａ及び１５Ｂを特に区別する必要がない場合、これらを総称して、ストレージ制御部１５と記載する。
【００１１】
図１Ａには、二つのホストコンピュータ１０及び二つのストレージ制御部１５を示すが、本実施の形態の計算機システムは、さらに多くのホストコンピュータ１０及びストレージ制御部１５を備えてもよい。
【００１２】
ホストコンピュータ１０は、例えば、データファイルをユーザに提供するファイルサーバ、又は、データベースサーバの機能を有する計算機である。本実施の形態のホストコンピュータ１０は、相互に接続されたプロセッサ１０１、メモリ１０２及び一つ以上のＩ／Ｆ１０３を備える。
【００１３】
プロセッサ１０１は、メモリ１０２に格納されたプログラム（例えば、アプリケーションプログラム）を実行することによって、ホストコンピュータ１０の機能を実現する。
【００１４】
メモリ１０２は、プロセッサ１０１によって実行されるプログラム等（図示省略）を格納する。
【００１５】
Ｉ／Ｆ１０３は、ネットワークに接続され、そのネットワークを介してストレージ制御部１５と通信するインタフェースである。
【００１６】
ストレージ制御部１５は、記憶装置２０上のデータの記憶領域をホストコンピュータ１０に提供する。言い換えると、ストレージ制御部１５は、ホストコンピュータ１０によって発行された要求に応じて、記憶装置２０に対してデータを読み書きする。
【００１７】
ストレージ制御部１５Ａ及び１５Ｂは、ホストＩ／Ｆ制御部２５、キャッシュメモリ４５、制御メモリ５０、ディスクＩ／Ｆ制御部５５及びスイッチ４０を備える。
【００１８】
ホストＩ／Ｆ制御部２５は、ストレージ制御部１５をホストコンピュータ１０Ａ及び１０Ｂと接続するためのインタフェースである。このインタフェースは、例えば、ファイバチャネル又はイーサネット（登録商標、以下同じ）であるが、本発明の実施の形態は、これらに限定されない。
【００１９】
キャッシュメモリ４５は、ホストコンピュータ１０と記憶装置２０との間で転送されるデータを一時的に記憶するための半導体メモリである。
【００２０】
制御メモリ５０は、ストレージ制御部１５及び記憶装置２０からなるストレージシステムが必要とする構成情報及び制御情報等を格納し管理するための半導体メモリである。本実施の形態の制御メモリ５０は、少なくとも、ボリューム管理テーブル２００を格納する。ボリューム管理テーブル２００については、後で詳細に説明する（図２参照）。
【００２１】
ディスクＩ／Ｆ制御部５５は、記憶装置２０と接続するためのインタフェースである。記憶装置２０と接続するためのインタフェースは、例えば、ファイバチャネル又はＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）であるが、本発明の実施の形態は、これらに限定されない。
【００２２】
記憶装置２０は、ディスクアレイのように複数の磁気ディスクで構成される。しかし、本発明の実施の形態は、これに限定されない。例えば、記憶装置２０は、半導体ディスク、半導体メモリ又はテープライブラリで構成されてもよい。また、記憶装置２０は、ディスクアレイでなくてもよい。
【００２３】
記憶装置２０は、複数のボリュームを含む。各ボリュームは、記憶装置２０の記憶領域を論理的に分割することによって生成された各領域である。ホストコンピュータ１０及びホストコンピュータ上のアプリケーションプログラムは、一つのボリュームを一つのディスクと認識する。ボリュームのうち少なくとも一つは、データボリューム７０であり、残りのボリュームのうち少なくとも一つは、鍵管理ボリューム７５である。データボリューム７０は、ホストコンピュータ１０によって書き込まれたデータが格納される記憶領域である。鍵管理ボリューム７５は、後述するように、暗号鍵が格納される記憶領域である。
【００２４】
スイッチ（ＳＷ）４０は、上述のホストＩ／Ｆ制御部２５、キャッシュメモリ４５、制御メモリ５０、ディスクＩ／Ｆ制御部５５を相互に接続し、これらの間のデータ通信を中継する。
【００２５】
ホストＩ／Ｆ制御部２５は、プロセッサ３０、メモリ３５及びバッファ（ＢＵＦ）３６を備える。
【００２６】
プロセッサ３０は、メモリ３５に格納されたプログラムを実行する。
【００２７】
メモリ３５は、プロセッサ３０によって実行されるプログラム等を格納する。メモリ３５については、後で説明する（図１Ｂ参照）。
【００２８】
ディスクＩ／Ｆ制御部５５は、プロセッサ６０及びメモリ６５を備える。
【００２９】
プロセッサ６０は、メモリ６５に格納されたプログラムを実行する。
【００３０】
メモリ６５は、プロセッサ６０によって実行されるプログラム等を格納する。メモリ６５については、後で説明する（図１Ｃ参照）。
【００３１】
図１Ｂは、本発明の第１の実施の形態のホストＩ／Ｆ制御部２５が備えるメモリ３５の説明図である。
【００３２】
メモリ３５には、暗号処理モジュール８７、Ｉ／Ｏ処理モジュール８９、鍵処理モジュール９１及び暗号鍵書き込みモジュール９３が格納される。これらの各モジュールは、プロセッサ３０によって実行されるプログラムである。
【００３３】
暗号処理モジュール８７は、ホストコンピュータ１０から書き込み／読み出しを要求されたデータの暗号化及び復号化を実行する。さらに、暗号処理モジュール８７は、暗号化及び復号化に必要な暗号鍵を生成する。具体的には、例えばホストコンピュータ１０からデータを受け取った場合（ライトアクセス）、暗号処理モジュール８７は、まず暗号鍵を生成し、受け取ったデータを生成した暗号鍵で暗号化する。その後、暗号処理モジュール８７は、キャッシュメモリ４５又は記憶装置２０に暗号化したデータを格納することを、Ｉ／Ｏ処理モジュール８９に対して指示する。
【００３４】
Ｉ／Ｏ処理モジュール８９は、ホストコンピュータ１０の要求に応じて、ホストコンピュータと、キャッシュメモリ４５又は記憶装置２０との間のデータ転送を処理する。
【００３５】
その他のモジュールの詳細については後述する。
【００３６】
図１Ｃは、本発明の第１の実施の形態のディスクＩ／Ｆ制御部５５が備えるメモリ６５の説明図である。
【００３７】
メモリ６５には、Ｉ／Ｏ処理モジュール９５、暗号鍵書き込みモジュール９７及び鍵取得モジュール９９が格納される。これらの各モジュールは、プロセッサ６０によって実行されるプログラムである。
【００３８】
Ｉ／Ｏ処理モジュール９５は、キャッシュメモリ４５と記憶装置２０との間のデータ転送を処理する。
【００３９】
その他のモジュールの詳細については後述する。
【００４０】
図２は、本発明の第１の実施の形態のボリューム管理テーブル２００の一例を示す説明図である。
【００４１】
本実施の形態のボリューム管理テーブル２００は、図１Ａに示すように、制御メモリ５０に格納される。しかし、ボリューム管理テーブル２００は、プロセッサ３０及びプロセッサ６０がアクセスすることができる限り、どこに格納されてもよい。例えば、ボリューム管理テーブル２００がメモリ３５、メモリ６５又はＳＷ４０内のメモリ（図示省略）に格納されてもよい。
【００４２】
図２のボリューム管理テーブル２００は、ボリューム番号（Ｖｏｌ＃）２０１、アクセス許可ストレージ制御部２０２、アクセス許可ホストコンピュータ２０３、暗号鍵２０４及び状態２０５を含む。これらは、各ボリュームに対してアクセスを許可しているストレージ制御部１５及びホストコンピュータ１０、暗号処理に用いられる暗号鍵、並びに、ボリュームの状態を表すパラメータである。
【００４３】
ボリューム番号２０１は、記憶装置２０内のボリュームの識別子である。例えば、記憶装置２０にｎ＋１個のボリュームが存在する場合、ボリューム番号２０１として、「０」から「ｎ」までの値が登録される（図２参照）。以下の説明において、ボリューム番号２０１が「０」であるボリュームを、「Ｖｏｌ＃０」と記載する。他のボリューム番号２０１についても同様である。
【００４４】
アクセス許可ストレージ制御部２０２には、各ボリュームにアクセスすることが出来るストレージ制御部１５の識別子が登録される。図２の例において、Ｖｏｌ＃１及びＶｏｌ＃ｎは、ストレージ制御部１５Ａ及び１５Ｂからのアクセスを許可している。一方、Ｖｏｌ＃０は、ストレージ制御部１５Ａのみからのアクセスを許可している。なお、本実施の形態において、ストレージ制御部１５Ａ及び１５Ｂの識別子は、それぞれ、「１５Ａ」及び「１５Ｂ」である。一方、ホストコンピュータ１０Ａ及び１０Ｂの識別子は、それぞれ、「１０Ａ」及び「１０Ｂ」である。
【００４５】
アクセス許可ホストコンピュータ２０３には、各ボリュームにアクセスすることが出来るホストコンピュータ１０の識別子が登録される。図２の例において、Ｖｏｌ＃１は、ホストコンピュータ１０Ａ及び１０Ｂからのアクセスを許可している。一方、Ｖｏｌ＃０は、ホストコンピュータ１０Ａのみからのアクセスを許可している。
【００４６】
なお、ホストコンピュータ１０は、鍵管理ボリューム７５にアクセスすることができない。このため、鍵管理ボリューム７５に対応するアクセス許可ホストコンピュータ２０３の値は、空欄（「−」）となる。図２の例では、Ｖｏｌ＃ｎが鍵管理ボリューム７５である。
【００４７】
暗号鍵２０４には、各ボリュームに格納されたデータの暗号鍵が登録される。暗号鍵２０４に登録された暗号鍵を用いた場合のみ、暗号処理モジュール８７は、各ボリュームに格納されたデータを正常に復号化することができる。
【００４８】
暗号鍵２０４の内容が仮に変わった場合、ボリュームに格納されたデータを正常に復号化することが出来ない。その結果、復号化されたデータは、ホストコンピュータ１０又はアプリケーションプログラムにとって全く無意味なビット列となってしまう。例えば、図２の例では、Ｖｏｌ＃０の暗号鍵２０４として「１２３４５６７８１２３４５６７８」が登録されている。この場合、「１２３４５６７８１２３４５６７８」以外の暗号鍵を用いてＶｏｌ＃０に格納されたデータを復号化すると、そのデータは正常に復号化されず、復号化されたデータは無意味なビット列となる。
【００４９】
なお、後述するように、鍵管理ボリューム７５には、暗号化された暗号鍵が格納される。その暗号鍵を暗号化するための暗号鍵は、ボリューム管理テーブル２００によって管理されない。このため、鍵管理ボリューム７５（図２の例では、Ｖｏｌ＃ｎ）に対応する暗号鍵２０４の値は、空欄（「−」）となる。以下の説明において、暗号鍵を暗号化又は復号化するための暗号鍵を鍵暗号用鍵と記載する。
【００５０】
状態２０５には、ボリュームの状態を示す値が登録される。本実施の形態の状態２０５には、少なくとも、「非共有」、「共有」及び「鍵格納」のいずれかが登録される。「非共有」とは、ボリュームが一つのストレージ制御部のみからアクセスされる状態を示す。「共有」とは、ボリュームが複数のストレージ制御部からアクセスされる状態を示す。「鍵格納」とは、ボリュームに暗号鍵が格納された状態を示す。
【００５１】
図２の例において、Ｖｏｌ＃０は、ストレージ制御部１５Ａのみからアクセスされる（アクセス許可ストレージ制御部２０２参照）。このため、Ｖｏｌ＃０に対応する状態２０５として「非共有」が登録される。Ｖｏｌ＃１は、ストレージ制御部１５Ａ及び１５Ｂからアクセスされる。このため、Ｖｏｌ＃１に対応する状態２０５として「共有」が登録される。Ｖｏｌ＃ｎは、暗号鍵２０４の値が「−」となっている。この場合、Ｖｏｌ＃ｎは、データを格納せず、暗号鍵を格納する領域である鍵管理ボリューム７５と判断される。その場合、Ｖｏｌ＃ｎに対応する状態２０５の値は、「鍵格納」となる。
【００５２】
次に、ホストコンピュータ１０からアクセス要求を受けたストレージ制御部１５が実行する処理について、図３及び図４を参照して説明する。
【００５３】
図３及び図４に示す処理は、あるデータボリューム７０に対するアクセス要求を、そのデータボリューム７０に関するアクセス許可ストレージ制御部２０２として既に登録されているストレージ制御部１５が受信した場合に、そのストレージ制御部１５の各モジュールが実行する処理である。具体例として、図３及び図４は、ストレージ制御部１５ＡがＶｏｌ＃０又はＶｏｌ＃１に対するアクセス要求を受信した場合の処理を示す。
【００５４】
なお、前述のように、ストレージ制御部１５の各モジュールは、プロセッサ３０又はプロセッサ６０によって実行されるプログラムである。したがって、図３及び図４の各ステップは、実際には、プロセッサ３０又はプロセッサ６０によって実行される。
【００５５】
図３は、本発明の第１の実施の形態において、ホストコンピュータ１０からのデータライト要求に対してストレージ制御部１５が実行する処理を示すフローチャートである。
【００５６】
最初のステップＳ３００では、Ｉ／Ｏ処理モジュール８９が、ホストコンピュータ１０からデータライト要求を受信したか否かを判定する。
【００５７】
ステップＳ３００においてデータライト要求を受信していないと判定された場合、通常処理が実行される。通常処理とは、例えば、次回のアクセス要求を待つ処理等である。
【００５８】
ステップＳ３００においてデータライト要求を受信したと判定された場合、Ｉ／Ｏ処理モジュール８９は、受信した要求の内容を参照して、どのボリュームに対する書き込みか、及び、どのくらいのデータ長か、等を解析し、キャッシュメモリ４５上に必要な領域を確保する。そして、鍵処理モジュール９１が、書き込み対象のボリュームの暗号鍵（Ｋｅｙ１）を制御メモリ５０のボリューム管理テーブル２００（図２）から読み出し、メモリ３５に格納する（Ｓ３０５）。
【００５９】
ステップＳ３１５では、暗号処理モジュール８７が、ステップＳ３０５でメモリ３５に格納された暗号鍵Ｋｅｙ１を読み出し、その暗号鍵Ｋｅｙ１を使って、ホストコンピュータから受信したデータを暗号化する。そして、暗号処理モジュール８７は、暗号化が完了したら、Ｉ／Ｏ処理モジュール８９に完了を通知する。
【００６０】
Ｉ／Ｏ処理モジュール８９は、その通知を受け、暗号化されたデータをステップＳ３００で確保されたキャッシュメモリ４５の領域に格納する。最終的には、Ｉ／Ｏ処理モジュール９５が、キャッシュメモリ４５に格納されたデータを読み出して、そのデータをデータライト要求の対象のデータボリューム７０に格納する（Ｓ３２０）。
【００６１】
ステップＳ３２５において、鍵処理モジュール９１は、データライト要求の対象のデータボリューム７０が共有状態であるか否かを判定する。具体的には、鍵処理モジュール９１は、制御メモリ５０のボリューム管理テーブル２００の状態２０５が「共有」であるか否かを判定する。データライト要求の対象のデータボリューム７０がＶｏｌ＃０である場合、非共有状態であると判定され、そのデータボリューム７０がＶｏｌ＃１である場合、共有状態であると判定される。
【００６２】
ステップＳ３２５において、データライト要求の対象のデータボリューム７０が非共有状態であると判定された場合、そのデータボリューム７０は他のストレージ制御部１５からアクセスされない。この場合、通常処理に戻る。
【００６３】
一方、ステップＳ３２５において、データライト要求の対象のデータボリューム７０が共有状態であると判定された場合、そのデータボリューム７０は他のストレージ制御部１５からアクセスされる。この場合、ステップＳ３１５でデータ暗号化に用いた暗号鍵Ｋｅｙ１を他のストレージ制御部と共有する必要があるため、以下のステップが実行される。
【００６４】
まず、ステップＳ３３０において、鍵処理モジュール９１が暗号鍵Ｋｅｙ１を鍵暗号用鍵ＫｅｙＫで暗号化し、暗号鍵Ｋｅｙ２を生成する。なお、本実施の形態では、鍵暗号用鍵ＫｅｙＫはストレージ制御部内で生成される。
【００６５】
次に、ステップＳ３３５において、暗号鍵書き込みモジュール９３は、制御メモリ５０のボリューム管理テーブル２００を参照し、鍵管理ボリューム７５（図２の例ではＶｏｌ＃ｎ）に暗号鍵Ｋｅｙ２を格納する。その後、通常処理が実行される。
【００６６】
図４は、本発明の第１の実施の形態において、ホストコンピュータ１０からのデータリード要求に対してストレージ制御部１５が実行する処理を示すフローチャートである。
【００６７】
図４において、図３と同様の部分については、詳細な説明を省略する。
【００６８】
最初のステップＳ４００では、Ｉ／Ｏ処理モジュール８９が、ホストコンピュータ１０からデータリード要求を受信したか否かを判定する。
【００６９】
ステップＳ４００においてデータリード要求を受信していないと判定された場合、通常処理が実行される。
【００７０】
ステップＳ４００においてデータリード要求を受信したと判定された場合、Ｉ／Ｏ処理モジュール８９は、受信した要求の内容を参照して、どのボリュームに対する読み出しか、どのくらいのデータ長か、及び、キャッシュメモリ４５上に要求されたデータが存在するか否か、等を判定する。
【００７１】
次に、鍵処理モジュール９１は、データリード要求の対象のデータボリューム７０が共有状態であるか否かを判定する（Ｓ４０５）。具体的には、鍵処理モジュール９１は、図３のステップＳ３２５と同様、制御メモリ５０のボリューム管理テーブル２００を参照する。その結果、そのデータボリューム７０が共有状態であると判定された場合はステップＳ４３５へ、非共有状態であると判定された場合はステップＳ４１０へと進む。
【００７２】
データリード要求の対象のデータボリューム７０が非共有状態である場合、そのデータボリューム７０は他のストレージ制御部１５からアクセスされないため、暗号鍵を共有する必要がない。したがって、そのデータボリューム７０の暗号鍵は、そのデータボリューム７０にアクセスするストレージ制御部１５内で管理される。よって、ステップＳ４１０では、鍵処理モジュール９１が制御メモリ５０のボリューム管理テーブル２００からそのデータボリューム７０の暗号鍵を読み出し、メモリ３５に格納する。
【００７３】
一方、データリード要求の対象のデータボリューム７０が共有状態である場合、そのデータボリューム７０は他のストレージ制御部からもアクセスされるため、複数のストレージ制御部１５が暗号鍵を共有する必要がある。この場合、データリード要求を受信したストレージ制御部１５で管理されているそのデータボリューム７０の暗号鍵では正しく復号化されない可能性がある。このため、鍵取得モジュール９９は、制御メモリ５０のボリューム管理テーブル２００を参照して、鍵管理ボリューム７５（図２の例ではＶｏｌ＃ｎ）から暗号化された暗号鍵（図３の例ではＫｅｙ２）を読み出す（Ｓ４３５）。そして、鍵取得モジュール９９は、読み出された暗号鍵Ｋｅｙ２を、データリード要求の対象のデータボリューム７０の暗号鍵２０４として、制御メモリ５０に一旦格納する。
【００７４】
鍵処理モジュール９１は、ステップＳ４３５で登録された暗号鍵Ｋｅｙ２を読み出し、鍵暗号用鍵を用いて暗号鍵Ｋｅｙ２を元の暗号鍵Ｋｅｙ１に復号化し、その暗号鍵Ｋｅｙ１を再び制御メモリ５０に格納する（Ｓ４４０）。具体的には、Ｋｅｙ１が、データリード要求の対象のデータボリューム７０に対応する暗号鍵２０４として、ボリューム管理テーブル２００に登録される。
【００７５】
なお、本実施の形態では、鍵管理ボリューム７５から読み出された暗号鍵（Ｋｅｙ２）及びその暗号鍵を鍵暗号用鍵を用いて復号化することによって取得された暗号鍵（Ｋｅｙ１）が、ボリューム管理テーブル２００に登録される。しかし、これらの暗号鍵は、ボリューム管理テーブル２００に登録されなくてもよい。例えば、Ｋｅｙ１を用いてデータボリューム７０のデータが復号化された後、Ｋｅｙ１及びＫｅｙ２が制御メモリ５０から削除されてもよい。この場合、暗号鍵が必要となるたびに、その暗号鍵が鍵管理ボリューム７５から読み出され、その暗号鍵が鍵暗号用鍵を用いて復号化される。
【００７６】
このように、暗号鍵をストレージ制御部１５に残さないことによって、データの漏洩を防ぐことができる場合がある（詳細には、図８及び図９参照）。
【００７７】
ステップＳ４１０又はステップＳ４４０が実行されると、Ｉ／Ｏ処理モジュール９５は、次に、データリード要求の対象のデータを記憶装置２０内の対象のデータボリューム７０から読み出す（Ｓ４２０）。なお、要求されたデータがキャッシュメモリ４５上に存在する場合、Ｉ／Ｏ処理モジュール９５は、そのデータをキャッシュメモリ４５から読み出す。
【００７８】
次に、暗号処理モジュール８７は、ステップＳ４１０又はＳ４４０で取得した暗号鍵を用いて、読み出されたデータを復号化する（Ｓ４２５）。
【００７９】
次に、Ｉ／Ｏ処理モジュール８９は、復号化されたデータをホストコンピュータ１０に送信する（Ｓ４３０）。その後、通常処理が実行される。
【００８０】
次に、本発明の第２の実施の形態について、図５Ａ、図５Ｂ及び図６を参照して説明する。
【００８１】
図５Ａは、本発明の第２の実施の形態の計算機システムの構成を示すブロック図である。
【００８２】
図５Ａに示す計算機システムは、管理端末５００がネットワーク５０２を介してストレージ制御部１５に接続されている点、及び、管理端末５００と通信するインタフェースを備える管理Ｉ／Ｆ５２５をストレージ制御部１５が備えている点において図１Ａに示す計算機システムと異なる。以下、図５Ａと図１Ａの相違点について説明する。図５Ａと図１Ａの共通点については説明を省略する。
【００８３】
管理端末５００は、ストレージシステムの構成変更、状態監視、及び、障害情報の収集を行う計算機である。本実施の形態の管理端末５００は、相互に接続されたプロセッサ５０４、メモリ５０６及び管理Ｉ／Ｆ５０８を備える。
【００８４】
プロセッサ５０４は、メモリ５０６に格納されたプログラムを実行することによって、管理端末５００の機能を実現する。
【００８５】
メモリ５０６は、プロセッサ５０４によって実行されるプログラム等を格納する。メモリ５０６については、後で説明する（図５Ｂ参照）。
【００８６】
管理Ｉ／Ｆ５０８は、ネットワーク５０２に接続され、ネットワーク５０２を介してストレージ制御部１５と通信するインタフェースである。
【００８７】
一方、ストレージ制御部１５の管理Ｉ／Ｆ５２５は、ネットワーク５０２に接続され、ネットワーク５０２を介して管理端末５００と通信するインタフェースである。
【００８８】
図５Ｂは、本発明の第２の実施の形態の管理端末５００が備えるメモリ５０６の説明図である。
【００８９】
メモリ５０６には、鍵生成モジュール５１０、通知モジュール５１５、鍵配信モジュール５２０及びボリューム管理テーブル５２２が格納される。なお、鍵生成モジュール５１０、通知モジュール５１５及び鍵配信モジュール５２０は、プロセッサ５０４によって実行されるプログラムである。
【００９０】
鍵生成モジュール５１０は、ストレージ制御部１５の暗号鍵書き込みモジュール９３が記憶装置２０の鍵管理ボリューム７５に暗号鍵を格納する際に用いる鍵暗号用鍵を生成する。
【００９１】
鍵配信モジュール５２０は、鍵生成モジュール５１０が生成した鍵暗号用鍵をストレージ制御部１５へ配信する。
【００９２】
ところで、鍵暗号用鍵をストレージ制御部１５に配信する際に、ただ配信するだけではセキュリティの観点から望ましくない。それは、配信する必要のないストレージ制御部１５に配信してしまうと、そのストレージ制御部１５からデータが漏洩する可能性があるためである。このため、管理端末５００のメモリ５０６には、ボリューム管理テーブル５２２が格納される。ボリューム管理テーブル５２２の内容は、ボリューム管理テーブル２００と同様である。鍵配信モジュール５２０は、ボリューム管理テーブル５２２を参照して、適切なストレージ制御部１５に鍵暗号用鍵を配信する。
【００９３】
具体的には、鍵配信モジュール５２０は、アクセス許可ストレージ制御部２０２として登録されているストレージ制御部１５に鍵暗号用鍵を配信（送信）する。例えば、ボリューム管理テーブル５２２の内容が図２ボリューム管理テーブル２００と同じである場合、鍵配信モジュール５２０は、Ｖｏｌ＃０に使用される鍵暗号用鍵をストレージ制御部１５Ａに配信し、Ｖｏｌ＃１に使用される鍵暗号用鍵をストレージ制御部１５Ａ及び１５Ｂに配信する。
【００９４】
図６は、本発明の第２の実施の形態において管理端末５００が鍵暗号用鍵を配信する処理の説明図である。
【００９５】
図６は、図２で示したボリューム管理テーブル２００のＶｏｌ＃０を例として説明する。図２において、ストレージ制御部１５ＡのみがＶｏｌ＃０に対するアクセスを許可されている。このため、Ｖｏｌ＃０の状態２０５は「非共有」となっている。ここで、新たにストレージ制御部１５ＢがＶｏｌ＃０へのアクセスを許可され、Ｖｏｌ＃０の状態２０５が「共有」になった場合について説明する。なお、図６において、既にアクセスを許可されていたストレージ制御部１５Ａを「既メンバ」、新たにアクセスを許可されるストレージ制御部１５Ｂを「新メンバ」と記載する。
【００９６】
なお、以下の説明において、管理端末５００が実行する処理（管理端末５００の各モジュールが実行する処理を含む）は、実際にはプロセッサ５０４によって実行される。また、ストレージ制御部１５が実行する処理（ストレージ制御部１５の各モジュールが実行する処理を含む）は、実際にはプロセッサ３０又はプロセッサ６０によって実行される。
【００９７】
最初に、新メンバのストレージ制御部１５ＢのＩ／Ｏ処理モジュール８９は、ストレージ制御部１５Ｂの構成情報を管理端末５００に送信する（Ｓ６０５）。このとき送信される構成情報には、ストレージ制御部１５Ｂがデータ暗号化機能を備えるという情報が含まれる。
【００９８】
管理端末５００は、新メンバのストレージ制御部１５Ｂがデータ暗号化機能を備えているか否かを判定する（Ｓ６００）。この判定のために、管理端末５００は、ステップＳ６０５において送信された構成情報を参照する。
【００９９】
ステップＳ６００において、ストレージ制御部１５Ｂがデータ暗号化機能を備えていないと判定された場合、何もせずに通常処理に戻る。
【０１００】
一方、ステップＳ６００において、ストレージ制御部１５Ｂがデータ暗号化機能を備えていると判定された場合、鍵生成モジュール５１０が鍵暗号用鍵を生成する（Ｓ６１０）。
【０１０１】
次に、鍵配信モジュール５２０が、鍵生成モジュール５１０が生成した鍵暗号用鍵をストレージ制御部１５Ｂに配信（送信）する（Ｓ６１５）。このとき、鍵配信モジュール５２０は、管理端末５００のボリューム管理テーブル５２２を更新する。
【０１０２】
ストレージ制御部１５Ｂの管理Ｉ／Ｆ５２５は、管理端末５００から鍵暗号用鍵を受信する。暗号鍵書き込みモジュール９３は、受信した鍵暗号用鍵を制御メモリ５０に格納する（Ｓ６２５）。
【０１０３】
通知モジュール５１５は、Ｖｏｌ＃０にアクセスするストレージ制御部１５Ｂが追加されたこと、及び、鍵暗号用鍵が生成されたことを、ストレージ制御部１５Ａに対して通知する（Ｓ６２０）。このとき、鍵配信モジュール５２０は、生成された鍵暗号用鍵をストレージ制御部１５Ａにも送信する。
【０１０４】
鍵処理モジュール９１は、ステップＳ６２０の通知を受信すると、受信した鍵暗号用鍵を用いて、Ｖｏｌ＃０のデータに用いられる暗号鍵を暗号化する（Ｓ６３０）。
【０１０５】
次に、暗号鍵書き込みモジュール９３が、暗号化された暗号鍵を、ボリューム管理テーブル２００に基づいて鍵管理ボリューム７５に格納する（Ｓ６３５）。
【０１０６】
その後、ホストコンピュータ１０からデータライト要求又はデータリード要求を受信したストレージ制御部１５は、図３又は図４に示す処理を実行する。例えば、データリード要求を受信したストレージ制御部１５Ｂは、鍵管理ボリューム７５から暗号化された暗号鍵を取得し（Ｓ６４０）、その暗号鍵を、鍵暗号用鍵を用いて復号化する（Ｓ６４５）。ステップＳ６４０及びＳ６４５は、それぞれ、図４のステップＳ４３５及びＳ４４０に相当する。
【０１０７】
このように、データボリューム７０の暗号鍵を鍵管理ボリューム７５に格納することによって、複数のストレージ制御部１５がその暗号鍵を共有することができる。鍵管理ボリューム７５に格納された暗号鍵は鍵暗号用鍵によって暗号化されており、その鍵暗号用鍵はデータボリューム７０へのアクセスを許可されたストレージ制御部１５のみに配信されるため、その暗号鍵が不正に使用されることによるデータの漏洩が防止される。
【０１０８】
次に、データボリューム７０に対するストレージ制御部１５のアクセスが禁止された場合に実行される処理について説明する。データボリューム７０に対するアクセスを許可されていたストレージ制御部１５が、ある時点をもってそのデータボリューム７０へのアクセスを禁止されたとしても、そのデータボリューム７０の暗号鍵自体がそのストレージ制御部１５に残っていれば、その暗号鍵を使用してデータボリューム７０のデータが復号化され、そのデータが外部に不正に漏洩する可能性がある。あるいは、そのデータボリューム７０の暗号鍵が残っていなくても、その暗号鍵に使用される鍵暗号用鍵が残っていれば、鍵管理ボリューム７５から暗号鍵が読み出されることによって、上記と同様にデータが漏洩する可能性がある。このようなデータ漏洩を防ぐ方法について、図７から図９を参照して説明する。
【０１０９】
図７は、本発明の第２の実施の形態において、ストレージ制御部１５がデータボリューム７０へのアクセスを禁止された場合に実行される処理の説明図である。
【０１１０】
図７に示す処理によれば、いずれかのストレージ制御部１５がデータボリューム７０へのアクセスを禁止されたときに、そのアクセスを禁止されたストレージ制御部１５からの不正なデータ漏洩を防ぐため、異なる暗号鍵によってデータが再暗号化される。ストレージ制御部１５等の構成は、図５Ａ等に示す通りである。
【０１１１】
図７は、ボリューム管理テーブル２００のＶｏｌ＃１を例として、アクセス許可ストレージ制御部２０２からストレージ制御部１５Ｂを除外する場合（言い換えると、ストレージ制御部１５Ｂに対して、それまで許可されていたＶｏｌ＃１へのアクセスを禁止する場合）について説明する。なお、以下の例では、図７の処理が開始された時点で、ボリューム管理テーブル５２２にボリューム管理テーブル２００と同一の内容が登録されている。
【０１１２】
最初に、管理端末５００は、ボリューム管理テーブル５２２において、Ｖｏｌ＃１に対応するアクセス許可ストレージ制御部２０２から「１５Ｂ」を除外し（Ｓ７００）、通知モジュール５１５が、除外したことの通知をストレージ制御部１５Ａに送信する（Ｓ７０５）。ストレージ制御部１５Ａ以外にＶｏｌ＃１へのアクセスを許可されているストレージ制御部１５が存在する場合、そのストレージ制御部１５にも上記の通知が送信される。
【０１１３】
ストレージ制御部１５Ａは、ステップＳ７００と同様に、ボリューム管理テーブル２００を更新する。具体的には、ストレージ制御部１５Ａは、ボリューム管理テーブル２００において、Ｖｏｌ＃１に対応するアクセス許可ストレージ制御部２０２から「１５Ｂ」を除外する（Ｓ７１０）。
【０１１４】
ところで、ストレージ制御部１５Ｂのボリューム管理テーブル２００には、Ｖｏｌ＃１に対応する暗号鍵２０４が残っている。このため、この暗号鍵が不正に使用されて、外部に不正にデータが漏洩する可能性がある。そこで、図７に示す処理では、Ｖｏｌ＃１のデータのための暗号鍵が新たに生成され、その新しい暗号鍵でＶｏｌ＃１のデータが再暗号化される。これによって、ストレージ制御部１５Ｂに残っている暗号鍵を用いてＶｏｌ＃１のデータを復号化しても、正常に復号化することができなくなる。すなわち、ストレージ制御部１５Ｂに残っている暗号鍵によって外部に不正にデータが漏洩する可能性がなくなる。
【０１１５】
具体的には、ストレージ制御部１５ＡのＩ／Ｏ処理モジュール８９がＶｏｌ＃１のデータを記憶装置２０（又はキャッシュメモリ４０）から読み出し、そのデータを暗号処理モジュール８７が現在の暗号鍵で復号化する（Ｓ７１２）。
【０１１６】
次に、暗号処理モジュール８７が新たな暗号鍵を生成し、その新たな暗号鍵を用いてＶｏｌ＃１のデータを再び暗号化し、暗号化されたデータをＩ／Ｏ処理モジュール９５がＶｏｌ＃１に格納する（Ｓ７１５）。
【０１１７】
その後、除外されたストレージ制御部１５ＢがＶｏｌ＃１のデータを読み出した（Ｓ７２０）としても、ストレージ制御部１５Ｂが持つ旧暗号鍵で復号化すると（Ｓ７２５）、復号化されたデータは、意味のない文字列となる。すなわち、ストレージ制御部１５Ｂは、Ｖｏｌ＃１のデータを正常に復号化することができない。
【０１１８】
このように、図７に示す処理を実行することによって、アクセスを禁止されたストレージ制御部１５に残された暗号鍵によってデータが漏洩することが防止される。しかし、図７に示す処理によれば、データボリューム７０に格納されたデータを全て復号化した後、新たな暗号鍵で再び暗号化する必要がある。このため、多大な処理時間及びハードウェア資源を消費することが予想される。そこで、より簡易な方法でデータの漏洩を防ぐ方法について、図８及び図９を参照して説明する。なお、図８及び図９の処理は、図４のステップＳ４４０において暗号鍵がボリューム管理テーブル２００に登録されないことを前提としている。
【０１１９】
図８は、本発明の第２の実施の形態において、ストレージ制御部１５がデータボリューム７０へのアクセスを禁止された場合に実行される別の処理の説明図である。
【０１２０】
図７に示す処理と異なり、図８に示す処理によれば、ストレージ制御部１５がデータボリューム７０に対するアクセスを禁止されたとき、そのストレージ制御部１５からの不正なデータ漏洩を防ぐため、管理端末５００の鍵生成モジュール５１０が鍵暗号用鍵を再生成することによって、鍵暗号用鍵が変更される。ストレージ制御部１５等の構成は、図５Ａ等に示す通りである。
【０１２１】
図８は、図７と同様、ボリューム管理テーブル２００のＶｏｌ＃１を例として、アクセス許可ストレージ制御部２０２からストレージ制御部１５Ｂを除外する場合について説明する。
【０１２２】
最初に、管理端末５００は、ボリューム管理テーブル５２２において、Ｖｏｌ＃１に対応するアクセス許可ストレージ制御部２０２から「１５Ｂ」を除外する（Ｓ８００）。
【０１２３】
次に、鍵生成モジュール５１０がＶｏｌ＃１の鍵暗号用鍵を新たに生成する（Ｓ８０５）。
【０１２４】
そして、鍵配信モジュール５２０が新たに生成された鍵暗号用鍵をストレージ制御部１５Ａに送信する（Ｓ８１０）。ストレージ制御部１５Ａ以外にＶｏｌ＃１へのアクセスを許可されているストレージ制御部１５が存在する場合、そのストレージ制御部１５にも新たに生成された鍵暗号用鍵が送信される。
【０１２５】
ストレージ制御部１５Ａは、管理端末５００から送信された鍵暗号用鍵を制御メモリ５０に格納（Ｓ８１５）する。以下、図８の説明において、管理端末５００から送信された鍵暗号用鍵を新鍵暗号用鍵、新鍵暗号用鍵が送信される前に使用されていた鍵暗号用鍵を旧鍵暗号用鍵と記載する。
【０１２６】
次に、ストレージ制御部１５Ａは、ステップＳ８００と同様に、ボリューム管理テーブル２００を更新する。具体的には、ストレージ制御部１５Ａは、ボリューム管理テーブル２００において、Ｖｏｌ＃１に対応するアクセス許可ストレージ制御部２０２から「１５Ｂ」を除外する（Ｓ８２０）。
【０１２７】
次に、鍵処理モジュール９１が、旧鍵暗号用鍵を用いて、Ｖｏｌ＃１に使用される暗号鍵を復号化し、その暗号鍵を、新鍵暗号用鍵を用いて暗号化する（Ｓ８２２）。さらに、ステップＳ８２２において、暗号鍵書き込みモジュール９３が、暗号化された暗号鍵をボリューム管理テーブル２００に基づいて鍵管理ボリューム７５に格納する。ボリューム管理テーブル２００が図２に示す通りである場合、Ｖｏｌ＃ｎが鍵管理ボリューム７５である。このため、暗号鍵書き込みモジュール９３は、暗号化された暗号鍵をＶｏｌ＃ｎに格納する。
【０１２８】
その後、除外されたストレージ制御部１５Ｂは、Ｖｏｌ＃１からデータを読み出し（Ｓ８２５）、さらに、Ｖｏｌ＃１に使用される暗号鍵をＶｏｌ＃ｎから読み出すことができる。しかし、ストレージ制御部１５Ｂは、Ｖｏｌ＃１のための新暗号鍵を持っていないため、読み出された暗号鍵を正常に復号化することができない。すなわち、ストレージ制御部１５Ｂが、Ｖｏｌ＃ｎから読み出された暗号鍵を旧鍵暗号用鍵で復号化し（Ｓ８３０）、その復号化された暗号鍵を用いてＶｏｌ＃１のデータを復号化した場合、復号化されたデータは、意味のない文字列となる。結局、ストレージ制御部１５Ｂは、Ｖｏｌ＃１のデータを正常に復号化することができない。
【０１２９】
このように、鍵暗号用鍵を変更することによって、データボリューム７０のデータを新たな暗号鍵によって暗号化しなくても、除外されたストレージ制御部１５によってデータが漏洩することを防ぐことができる。
【０１３０】
図９は、本発明の第２の実施の形態において、ストレージ制御部１５がデータボリューム７０へのアクセスを禁止された場合に実行される別の処理の説明図である。
【０１３１】
図７又は図８に示す処理と異なり、図９に示す処理によれば、ストレージ制御部１５がデータボリューム７０に対するアクセスを禁止されたとき、そのストレージ制御部１５からの不正なデータ漏洩を防ぐため、鍵管理ボリューム７５に格納された暗号鍵が別の鍵管理ボリューム７５に移動される。ストレージ制御部１５等の構成は、図５Ａ等に示す通りである。
【０１３２】
図９は、図７及び図８と同様、ボリューム管理テーブル２００のＶｏｌ＃１を例として、アクセス許可ストレージ制御部２０２からストレージ制御部１５Ｂを除外する場合について説明する。
【０１３３】
最初に、管理端末５００は、ボリューム管理テーブル５２２において、Ｖｏｌ＃１に対応するアクセス許可ストレージ制御部２０２から「１５Ｂ」を除外する（Ｓ９００）。
【０１３４】
次に、管理端末５００は、鍵管理ボリューム７５の論理的な場所を変更する（Ｓ９０５）。具体的には、記憶装置２０が複数の鍵管理ボリューム７５を含む場合、管理端末５００は、暗号鍵を別の鍵管理ボリューム７５に移動することを決定してもよい。この決定に従って移動が実行された場合、暗号鍵は、移動先の鍵管理ボリューム７５に新たに格納され、移動元の鍵管理ボリューム７５から削除される。
【０１３５】
以下の説明において、移動先の鍵管理ボリューム７５（すなわち、変更後の鍵管理ボリューム７５）を「新鍵管理ボリューム７５」、移動元の鍵管理ボリューム７５（すなわち、変更前の鍵管理ボリューム７５）を「旧鍵管理ボリューム７５」と記載する。
【０１３６】
次に、通知モジュール５１５が、新鍵管理ボリューム７５のボリューム番号２０１の通知をストレージ制御部１５Ａに送信する（Ｓ９１０）。例えば、暗号鍵がＶｏｌ＃ｎからＶｏｌ＃ｍに移動した場合、「ｍ」が送信される。
【０１３７】
なお、ストレージ制御部１５Ａ以外にＶｏｌ＃１へのアクセスを許可されているストレージ制御部１５が存在する場合、そのストレージ制御部１５にも上記の通知が送信される。
【０１３８】
ストレージ制御部１５Ａは、ステップＳ９００と同様に、ボリューム管理テーブル２００を更新する（Ｓ９１５）。具体的には、ストレージ制御部１５Ａは、ボリューム管理テーブル２００において、Ｖｏｌ＃１に対応するアクセス許可ストレージ制御部２０２から「１５Ｂ」を除外する。
【０１３９】
例えば、ストレージ制御部１５Ａが使用する暗号鍵がＶｏｌ＃ｎからＶｏｌ＃ｍ（図示省略）に移動する場合、ストレージ制御部１５Ａのボリューム管理テーブル２００において、Ｖｏｌ＃ｎに対応するアクセス許可ストレージ制御部２０２から「１５Ａ」が削除される。ここで、ｍはｎ以外の自然数である。さらに、Ｖｏｌ＃ｍに対応するアクセス許可ストレージ制御部２０２に「１５Ａ」が登録され、Ｖｏｌ＃ｍに対応する状態２０５に「鍵格納」が登録される。
【０１４０】
次に、ステップＳ９１５の変更に伴い、ストレージ制御部１５Ａは、旧鍵管理ボリューム７５（上記の例ではＶｏｌ＃ｎ）に格納されている暗号鍵を新鍵管理ボリューム７５（上記の例ではＶｏｌ＃ｍ）へ移動する（Ｓ９１７）。具体的には、ストレージ制御部１５Ａは、Ｖｏｌ＃１に対応する暗号鍵を旧鍵管理ボリューム７５から削除し、新鍵管理ボリューム７５に新たに格納する。
【０１４１】
その後も、除外されたストレージ制御部１５Ｂは、旧鍵管理ボリューム７５にアクセスすることができる（Ｓ９２０）。しかし、旧鍵管理ボリューム７５からはＶｏｌ＃１の暗号鍵が削除されているため、ストレージ制御部１５Ｂは、Ｖｏｌ＃１の暗号鍵を取得することができない。ストレージ制御部１５Ｂは、新鍵管理ボリュームのボリューム番号２０１を通知されていないため、新鍵管理ボリューム７５にアクセスして暗号鍵を取得することもできない。これは、ストレージ制御部１５ＢがＶｏｌ＃１のデータを正常に復号化することが出来ないことを意味する。
【０１４２】
このように、暗号鍵を別の鍵管理ボリューム７５に移動することによって、データボリューム７０のデータを新たな暗号鍵によって暗号化しなくても、除外されたストレージ制御部１５によってデータが漏洩することを防ぐことができる。
【０１４３】
上記の図９の処理によれば、Ｖｏｌ＃１に対応する暗号鍵は、Ｖｏｌ＃ｎからＶｏｌ＃ｍに移動する。一方、Ｖｏｌ＃０に対応する暗号鍵は移動しないため、引き続きＶｏｌ＃ｎに格納される。このように、図９の処理によれば、異なる鍵管理ボリューム７５（例えば、Ｖｏｌ＃ｎ及びＶｏｌ＃ｍ）に、それぞれ、異なるデータボリューム７０（例えば、Ｖｏｌ＃０及びＶｏｌ＃１）に使用される暗号鍵が格納される場合がある。
【０１４４】
上記の図９では、鍵管理ボリューム７５に格納された暗号鍵が別の鍵管理ボリューム７５に移動するが、データボリューム７０に格納されたデータが別のデータボリューム７０に移動してもよい。以下、データを移動する処理について、ボリューム管理テーブル２００のＶｏｌ＃１を例として、アクセス許可ストレージ制御部２０２からストレージ制御部１５Ｂを除外する場合について説明する。
【０１４５】
図１０は、本発明の第２の実施の形態において、ストレージ制御部１５がデータボリューム７０へのアクセスを禁止された場合に実行される別の処理の説明図である。
【０１４６】
最初に、管理端末５００は、ボリューム管理テーブル５２２において、Ｖｏｌ＃１に対応するアクセス許可ストレージ制御部２０２から「１５Ｂ」を除外する（Ｓ１０００）。
【０１４７】
次に、管理端末５００は、データボリューム７０の論理的な場所を変更する（Ｓ１００５）。具体的には、例えば、管理端末５００が記憶装置２０に新たなデータボリューム７０としてＶｏｌ＃２（図示省略）の作成を指示し、さらに、Ｖｏｌ＃１に格納されたデータをＶｏｌ＃２に移動することを指示する。このようにしてデータボリューム７０の論理的な場所が変更された結果、変更後のＶｏｌ＃２には変更前のＶｏｌ＃１に格納されていたデータが格納され、変更後のＶｏｌ＃１は空になる。空になったＶｏｌ＃１には新たに別のデータが格納されてもよいが、そのデータは、変更前のデータとは異なる暗号鍵で暗号化される。
【０１４８】
次に、通知モジュール５１５が、変更後のデータボリューム７０の論理的な位置に関する通知をストレージ制御部１５Ａに送信する（Ｓ１０１０）。上記の例では、変更後のＶｏｌ＃２のボリューム番号２０１の値「２」が送信される。
【０１４９】
ストレージ制御部１５Ａは、上記の通知を受信すると、ボリューム管理テーブル２００を更新する（Ｓ１０１５）。具体的には、ストレージ制御部１５Ａは、ボリューム管理テーブル２００において、ボリューム番号２０１の値「１」に対応して登録されていたアクセス許可ストレージ制御部２０２、アクセス許可ホストコンピュータ２０３、暗号鍵２０４及び状態２０５の値を更新してボリューム番号２０１の値「２」に対応して登録する。
【０１５０】
図２の例では、ボリューム番号２０１の値「２」（図示省略）に対応するアクセス許可ストレージ制御部２０２、アクセス許可ホストコンピュータ２０３、暗号鍵２０４及び状態２０５として、それぞれ、「１５Ａ」、「１０Ａ、１０Ｂ」、「ａｂａｂａｂａｂａｂａｂａｂａｂａｂ」、「非共有」が登録される。さらに、ストレージ制御部１５Ａは、鍵管理ボリューム７５から、Ｖｏｌ＃１に対応する暗号鍵を削除する。具体的には、暗号鍵書き込みモジュール９３がＶｏｌ＃１の暗号鍵を削除する。このとき、削除するのではなく、例えばゼロクリア、又は、全く関係の値を書き込んでもよい。
【０１５１】
さらに、ストレージ制御部１５Ａは、変更前のデータボリューム７０について登録されていた暗号鍵をボリューム管理テーブル２００から削除する。図２の例では、ボリューム番号２０１の値「１」に対応する暗号鍵２０４の値「ａｂａｂａｂａｂａｂａｂａｂａｂａｂ」が削除される。
【０１５２】
以後、ストレージ制御部１５Ａは、ホスト１０Ａ等からデータボリューム７０への読み出し要求を受信すると、変更後のデータボリューム７０（例えば、Ｖｏｌ＃２）からデータを読み出して、そのデータをボリューム管理テーブル２００に登録された暗号鍵（例えば、「ａｂａｂａｂａｂａｂａｂａｂａｂａｂ」）を用いて復号化する。その結果、ストレージ制御部１５Ａは、正常なデータを取得する。
【０１５３】
一方、ストレージ制御部１５Ｂは、データが移動したことを通知されていない。このため、ストレージ制御部１５Ｂは、ホスト１０Ａ等からデータボリューム７０への読み出し要求を受信すると、変更前のデータボリューム７０（例えば、Ｖｏｌ＃１）からデータを読み出す（Ｓ１０２０）。しかし、Ｖｏｌ＃１から読み出されたデータは、変更前の暗号鍵（例えば、「ａｂａｂａｂａｂａｂａｂａｂａｂａｂ」）と対応しないため、復号化されたＶｏｌ＃１のデータは意味のないものとなる。
【０１５４】
また、ストレージ制御部１５Ｂのボリューム管理テーブル２００は更新されていない。すなわち、ストレージ制御部１５Ｂのボリューム管理テーブル２００には、変更後のデータボリューム７０（例えば、Ｖｏｌ＃２）のデータを復号化するために必要な暗号鍵（例えば、「ａｂａｂａｂａｂａｂａｂａｂａｂａｂ」）が登録されていない。このため、仮にストレージ制御部１５ＢがＶｏｌ＃２を対象とした読み出し要求を受信した場合、ストレージ制御部１５ＢはＶｏｌ＃２のデータを正常に復号化することができない。
【０１５５】
このようにして、除外されたストレージ制御部１５に残された暗号鍵によってデータが漏洩することを防ぐことができる。
【０１５６】
なお、本発明は上記の各実施の形態に限定されるものではなく、例えば、以下のようなことも可能である。
【０１５７】
上記の各実施の形態において、データ及び暗号鍵の暗号処理は、ホストＩ／Ｆ制御部２５によって実行されていたが、最終的に記憶装置２０上で暗号化されれば、ストレージ制御部１５内の他の部分が暗号処理を実行してもよい。例えば、ディスクＩ／Ｆ制御部５５が暗号処理を実行する場合、メモリ３５上の暗号処理モジュール８７及び鍵処理モジュール９１がメモリ６５に格納されていれば、上記の実施の形態を実現することができる。また、ＳＷ４０が暗号処理を実行する場合、ＳＷ４０上がプロセッサ（図示省略）及びメモリ（図示省略）を備え、そのメモリに暗号処理モジュール８７及び鍵処理モジュール９１が格納されていれば、上記の実施の形態を実現することができる。
【０１５８】
各実施の形態において、暗号鍵は、ホストコンピュータが発行したデータライト要求やデータリード要求の内容を元に生成されてもよい。
【０１５９】
各実施の形態において、ストレージ制御部１５と記憶装置２０は、ネットワークによって接続されてもよい。
【０１６０】
各実施の形態において、プログラムによって実現されていた機能の一部がハードウェアによって実現されてもよく、逆に、ハードウェアで実現されていた機能の一部がソフトウェアによって実現されてもよい。
【０１６１】
各実施の形態において、データを暗号化する鍵（暗号鍵）と復号化する鍵（復号鍵）を異なるものとしてもよい。例えば、いわゆる公開鍵を暗号鍵、いわゆる秘密鍵を復号鍵としてもよい。その場合、例えば、図２で示したボリューム管理テーブルに、「暗号鍵２０４」に加えて「復号鍵（図示省略）」を登録し、各々を管理することによって上記の実施の形態を実現することができる。
【０１６２】
各実施の形態において、同一の暗号処理モジュールがデータの暗号処理と暗号鍵の暗号処理を実行しても良い。
【０１６３】
以上の本発明の第１及び第２の実施の形態によれば、データボリューム７０のデータを復号化するために使用される暗号鍵を鍵管理ボリューム７５に格納することによって、複数のストレージ制御部１５がその暗号鍵を共有することができる。その結果、複数のストレージ制御部１５が一つのデータボリューム７０へのアクセスを許可されている環境において、データを書き込んだストレージ制御部とデータを読み出したストレージ制御部とが異なる場合であっても、データを正しく復号化することができる。鍵管理ボリューム７５に格納された暗号鍵は鍵暗号用鍵によって暗号化されており、その鍵暗号用鍵はデータボリューム７０へのアクセスを許可されたストレージ制御部１５のみに配信される。このため、鍵管理ボリューム７５に格納された暗号鍵を不正に使用することによるデータの漏洩が防止される。
【０１６４】
また、ストレージ制御部１５がデータボリューム７０へのアクセスを禁止された場合、そのデータボリューム７０のデータが新たな暗号鍵によって暗号化される。その結果、アクセスを禁止されたストレージ制御部１５に残された暗号鍵によってデータが漏洩することが防止される。
【０１６５】
あるいは、ストレージ制御部１５がデータボリューム７０へのアクセスを禁止された場合、鍵暗号用鍵が変更され、又は、鍵暗号用鍵の格納場所が変更される。その結果、データが漏洩することが防止される。
【図面の簡単な説明】
【０１６６】
【図１Ａ】本発明の第１の実施の形態の計算機システムの構成を示すブロック図である。
【図１Ｂ】本発明の第１の実施の形態のホストＩ／Ｆ制御部が備えるメモリの説明図である。
【図１Ｃ】本発明の第１の実施の形態のディスクＩ／Ｆ制御部が備えるメモリの説明図である。
【図２】本発明の第１の実施の形態のボリューム管理テーブルの一例を示す説明図である。
【図３】本発明の第１の実施の形態において、ホストコンピュータからのデータライト要求に対してストレージ制御部が実行する処理を示すフローチャートである。
【図４】本発明の第１の実施の形態において、ホストコンピュータからのデータリード要求に対してストレージ制御部が実行する処理を示すフローチャートである。
【図５Ａ】本発明の第２の実施の形態の計算機システムの構成を示すブロック図である。
【図５Ｂ】本発明の第２の実施の形態の管理端末が備えるメモリの説明図である。
【図６】本発明の第２の実施の形態において管理端末が鍵暗号用鍵を配信する処理の説明図である。
【図７】本発明の第２の実施の形態において、ストレージ制御部がデータボリュームへのアクセスを禁止された場合に実行される処理の説明図である。
【図８】本発明の第２の実施の形態において、ストレージ制御部がデータボリュームへのアクセスを禁止された場合に実行される別の処理の説明図である。
【図９】本発明の第２の実施の形態において、ストレージ制御部がデータボリュームへのアクセスを禁止された場合に実行される別の処理の説明図である。
【図１０】本発明の第２の実施の形態において、ストレージ制御部がデータボリュームへのアクセスを禁止された場合に実行される別の処理の説明図である。
【符号の説明】
【０１６７】
１０Ａ、１０Ｂ  ホストコンピュータ
１５Ａ、１５Ｂ  ストレージ制御部
２０  記憶装置
２５  ホストＩ／Ｆ制御部
３０、６０、１０１、５０４  プロセッサ
３５、６５、１０２、５０６  メモリ
４０  ＳＷ
４５  キャッシュメモリ
５０  制御メモリ
５５  ディスクＩ／Ｆ制御部
７０  データボリューム
７５  鍵管理ボリューム
８７  暗号処理モジュール
８９  Ｉ／Ｏ処理モジュール
９１  鍵処理モジュール
９３  暗号鍵書き込みモジュール
９５  Ｉ／Ｏ処理モジュール
９７  暗号鍵書き込みモジュール
９９  鍵取得モジュール
１０３  インタフェース（Ｉ／Ｆ）
２００、５２２  ボリューム管理テーブル
５００  管理端末
５０２  ネットワーク
５１０  鍵生成モジュール
５１５  通知モジュール
５２０  鍵配信モジュール
５２５  管理Ｉ／Ｆ
【図１Ａ】
0004643427.tif 000002
【図１Ｂ】
0004643427.tif 000003
【図１Ｃ】
0004643427.tif 000004
【図２】
0004643427.tif 000005
【図３】
0004643427.tif 000006
【図４】
0004643427.tif 000007
【図５Ａ】
0004643427.tif 000008
【図５Ｂ】
0004643427.tif 000009
【図６】
0004643427.tif 000010
【図７】
0004643427.tif 000011
【図８】
0004643427.tif 000012
【図９】
0004643427.tif 000013
【図１０】
0004643427.tif 000014