(58)【調査した分野】(Int.Cl.,DB名)
【背景技術】
【0002】
今日、階層データベース・システム、カラムナ(columnar)・データベース・システム、および関係データベース・システムのような多くの商用ソフトウェア・システムにおいて、ならびにHadoop/Big Data処理インフラストラクチャにおいて、個人情報(PII)が格納されている。従来のシステムは、例えば認証および許可を使用するアクセス制限を用いてPIIを保護することができる。
【0003】
さらに、従来のシステムは、例えば暗号化を用いてPIIを保護することができる。このような暗号化は、保存データ(バックアップなど)の暗号化と、伝送中のデータの暗号化(例えば、通信チャネルを暗号化すること(例えば、Secure Socket Layer(セキュア・ソケット・レイヤ、SSL))による、転送中のデータを暗号化すること(メッセージの暗号化)による、通信チャネルおよび転送中のデータを暗号化することの組合せによる、ならびに監査証跡による)とが含まれる。
【0004】
一部の従来のシステムは、データベースにおいてPIIを検出する。しかしながらPIIは、センシティブ情報の一例にすぎず、(給与情報、勤務評定、機密の製品計画などのような)他のタイプのセンシティブ情報がある。
【0005】
従来のデータベース・システムではセンシティブ情報(例えばPII)は、必要とされなくなると、破棄されなければならない。しかしながら、一部の従来のシステムは、このようなセンシティブ情報を適切に破棄しない。例えば、センシティブ情報を含むテーブルがデータベースで削除されるが、テーブルが格納されていたハード・ディスク上の適切な領域を上書きするための対策をとらない場合、これによりハード・ディスク上のセンシティブ情報は、ハード・ディスク発見ツールに攻撃を受けやすい状態で放置されることとなる。
【0006】
単一ノードのデータベース・システムを、4つのテーブルスペースを有するサーバにインストールされたデータベースとして説明することができ、ここではテーブルスペースTS1がテーブルT1、テーブルT2、およびテーブルT3を含み、テーブルスペースTS2がテーブルT4、テーブルT5、およびテーブルT6を含み、テーブルスペースTS3がテーブルT7、テーブルT8、およびテーブルT9を含み、テーブルスペースTS4がテーブルT10、およびテーブルT11を含む。データベースのストレージとして、2つのストレージ・システムがあり、それぞれが6つのハード・ディスクを含んでおり、2つのストレージ・システムにおいて、ハード・ディスクのうちの8つは、オペレーティング・システムによって管理されるファイル・システムを有し、ハード・ディスクのうちの4つは、ロー(raw)・デバイスとして使用され、これは、こうした4つのハード・ディスク上にはオペレーティング・システムによって管理されるファイル・システムがないことを意味する。
【0007】
単一ノードのデータベース・システムを参照すると、テーブルスペースTS4は、4つのロー・デバイスを使用して次のステートメント1を用いて作成されたと仮定する:
ステートメント1
CREATE TABLESPACE T4
MANAGED BY DATABASE
USING (DEVICE '/dev/rhdisk0' 10000,
DEVICE '/dev/rhdisk1' 10000,
DEVICE '/dev/rhdisk2' 10000,
DEVICE '/dev/rhdisk3'10000 )
【0008】
ステートメント1を用いて、テーブルT10およびテーブルT11がテーブルスペースTS4に作成される。テーブルT10がセンシティブ情報(例えばPII)を含み、削除されると仮定する。このシナリオでは、PIIを削除するためにファイル・システムで使用される従来の技術を使用して、センシティブ情報を含んでいた4つのロー・デバイスの部分を(例えば、センシティブ情報をゼロで数回上書きすることなどによって)安全に削除して、情報がディスク復元ツールで復元できないものになることを確実にすることができない。これは、オペレーティング・システムおよびファイル・システムが、データベースによって管理されるロー・デバイスとして使用されるハード・ディスクに作用することができないからである。
【0009】
単一ノードのデータベース・システムの例を続けると、テーブルスペースTS1は次のステートメント2を用いて作成されたと仮定する:
ステートメント2
CREATE TABLESPACE T1
MANAGED BY DATABASE USING (FILE'C.\db2\file1' 1 M, FILE 'D:\db2\file2' 1 M)
AUTORESIZE YES
INCREASESIZE 2 M
MAXSIZE 100 M
【0010】
この場合、テーブルスペースTS1は、初期サイズ1メガバイト(MB)、増加率2メガバイト、および最大サイズ100メガバイトの2つのファイル・コンテナを使用する。ファイル・コンテナを、ファイル・システム上のファイルとして説明することができる。つまり、テーブルスペースTS1のテーブルT1、T2、およびT3が、合わせて最大サイズ200MB(2つのファイル・コンテナがそれぞれ最大サイズ100メガバイトを有する)を割り当てることができる。ここで、T2はセンシティブ情報を含むテーブルであり、T2は削除されると仮定する。ステートメント1を使用するシナリオとは異なり、ここではオペレーティング・システムとデータベースとの間にファイル・システム・レイヤがある。しかしながら、2つのファイル・コンテナのファイル1およびファイル2のどの部分をデータベースが使用し、したがってセンシティブ情報を確実に復元できないようにするために(例えば、適切な部分をゼロで上書きすることなどによって)削除する必要があるかを認識しているのは、データベースのみである。したがって、PIIの削除にファイル・システムで使用される、よく理解された技術を使用して、センシティブ情報を含んだ部分を確実に安全に削除することはできない。
【0011】
マルチノードのデータベース・システムは、複数のノードを含む。ノードをサーバ・システムのような個々のコンピューティング・デバイスとして説明することができる。この例については、データベースは、複数のノードにわたって分割される。データベースのストレージとして、ネットワーク・アタッチト・ストレージ(Network Attached Storage、NAS)がアクセスする3つのストレージ・システムがあり、このストレージ・システムのそれぞれが、6つのハード・ディスクを含み、2つのストレージ・システムにおいて、ハード・ディスクのうちの6つがファイル・システムをオペレーティング・システムによって管理され、ハード・ディスクのうちの6つがロー・デバイスとして使用され、オペレーティング・システムによって管理されるファイル・システムがなく、ハード・ディスクのうちの4つは、暗号化ファイル・システム(EncryptingFile System、EFS)を有する。
【0012】
テーブルスペースが、1つまたは複数のノードにまたがることがある。パーティション・グループ節を使用して、テーブルスペースがまたがることができるノードの数を微細な粒度で調整することができる。テーブルをいくつかのパーティションにわたって分割することができる。
【0013】
グローバル・パラレル・ファイル・システム(Global Parallel FileSystem、GPFS)のようなファイル・システム技術と組み合わされる場合、ストレージ・デバイスと関連するファイル・システムとの間に追加の抽象化レイヤが存在し、データベースのようなファイル・スペースの消費者から、下にある物理ストレージ・ハードウェアの詳細を隠して、ビジネス・レジリエンシ(businessresiliency)を向上させる。
【0014】
単一ノードのデータベース・システムと同様に、マルチノードのデータベース・システムでは、テーブルスペースが削除されるとき、センシティブ情報を破棄することが困難である。
【0015】
従来のシステムでは、ハード・ディスク/ファイル・システムのどの部分がテーブルに属し、センシティブ情報を破棄するために削除されるべきであるかを認識しているのはデータベースのみである。
【0016】
一部の従来のシステムは、ファイル・システムの暗号化技術を使用する。データベースで高性能を要求される場合、このようなファイル・システムの暗号化技術は、その性能への影響のために使用することができず、いかなるデータベースの操作に対しても入力/出力(I/O)操作が性能の制約となる。さらに、ロー・デバイスの場合は、関連するファイル・システムがないので、こうしたファイル・システムの暗号化技術は利用できない。
【発明を実施するための形態】
【0021】
本発明の様々な実施形態の記述を、説明の目的で提示したが、網羅的であること、または開示する実施形態に限定することを意図していない。説明される実施形態の範囲および趣旨を逸脱することなく、多くの変更形態および変形形態が当業者には明らかであろう。本明細書で使用する用語は、実施形態の原理、実際の応用、または市場に見られる技術に関する技術的改良を最も良く説明するように、または、当業者が本明細書に開示する実施形態を理解できるように選択した。
【0022】
図1は、ある実施形態に従った複数のサーバを有するコンピューティング環境を示す。サーバ100a・・・100n(ここでaおよびnは正の整数を表す)が、エンタープライズ・サービス・バス(EnterpriseService Bus、ESB)150に結合される。各サーバ100a・・・100nは、データベース110a・・・110nを含んでいる。各データベース110a・・・110nは、1つまたは複数のテーブルスペースを含んでおり、各テーブルスペースが1つまたは複数のテーブル112a・・・112nを格納している。各データベース110a・・・110nは、データベース・カタログ114a・・・114nおよびデータベースI/Oレイヤ116a・・・116nもまた含んでいる。
【0023】
各サーバ100a・・・100nは、ストレージ・システムに結合される。様々な実施形態では、異なるサーバが、異なる数のストレージ・システムに結合される場合がある。
図1では、サーバ100aはストレージ・システム120b・・・120m(ここでbおよびmは正の整数を表す)に結合される。各ストレージ・システム120b・・・120mは、1つまたは複数のファイル・システム・デバイス122b・・・122mと、1つまたは複数のロー・ストレージ・デバイス124b・・・124mとを含む。
図1では、サーバ100nはストレージ・システム130c・・・130p(ここでcおよびpは正の整数を表す)に結合される。各ストレージ・システム130c・・・130pは、1つまたは複数のファイル・システム・デバイス132c・・・132pと、1つまたは複数のロー・ストレージ・デバイス134c・・・134pとを含む。
【0024】
また、セキュリティ・ポリシー・システム160、センシティブ情報検出器162、およびライトウェイト・ディレクトリ・アクセス・プロトコル(Lightweight Directory Access Protocol、LDAP)・システム164は、ESB150に結合される。ESB150を介して、サーバ100a・・・100nは、セキュリティ・ポリシー・システム160、センシティブ情報検出器162、およびLDAPシステム164と対話する。LDAPシステム164が使用されて、データベースおよびサーバのユーザを識別する、およびユーザがどのグループにあるかを特定する(ここではデータベースおよびサーバにアクセスするときに使用される認証ルールにグループ・メンバーシップが使用される)。ある実施形態では、データベース・システムは、LDAPシステム164で統合することによってユーザの認証のためのタスクを企業規模のLDAPシステム164に委託することができる。データベースが許可特権を執行する前に認証が行われるので、LDAPシステム164は、LDAPリポジトリに登録された既知のユーザに対するポリシーおよびアクセス・プロセスに関する全状況について含まれる。
【0025】
図2は、ある代替的実施形態に従ったコンピューティング環境を示す。
図2では、サーバ200aが、4つのテーブルスペースに11のテーブル(T1〜T11)を有するデータベース210aを含んでいる。同様にサーバ200nが、4つのテーブルスペースに11のテーブル(T1〜T11)を有するデータベース210nを含んでいる。またサーバ200aは、ストレージ・システム220b、220mに結合され、それぞれのストレージ・システム220b、220mは4つのファイル・システム・デバイス(それぞれ「FS」で表す)と、2つのロー・デバイス(Raw device)(それぞれ「R」で表す)とを含んでいる。同様にサーバ200nは、ストレージ・システム230c、230pに結合され、それぞれのストレージ・システム230c、230pは4つのファイル・システム・デバイス(それぞれ「FS」で表す)と、2つのロー・デバイス(それぞれ「R」で表す)とを含んでいる。
【0026】
実施形態は、以下を提供する:
・ データベース・カタログにおける拡張
・ データベースに対して発行されるステートメント(例えば、StructuredQuery Language(SQL)ステートメント)のステートメント構文の拡張
・ データベースI/Oレイヤにおける拡張
・ セキュリティ・ポリシー・システム
・ センシティブ情報検出器
・ これらの構成要素を統合して統一された、エンド・ツー・エンド(e2e)の強固に統合されたソリューションにすること
データベース・カタログにおける拡張
【0027】
データベース・カタログは、テーブルに関するメタデータを含んだテーブル(「OBJECT_TABLES」)と、インデックスに関するメタデータを含んだテーブル(「OBJECT_INDEX」)と、テーブルスペースについてのメタデータを含んだテーブル(「OBJECT_TABLESPACE」)とを含む。実施形態では、テーブル(「OBJECT_TABLES」、「OBJECT_INDEX」、および「OBJECT_TABLESPACE」)のそれぞれは、オブジェクトがセンシティブ情報を含んでいるかどうかを示す、各オブジェクト(例えばTABLE、INDEX、TABLESPACE)の安全な削除インジケータ(「indicator」)を格納する安全な削除の列を含んでいる。ある実施形態では、安全な削除インジケータは、Booleanフラグである。安全な削除インジケータの1つの設定(例えば、真または「1」に設定する)は、オブジェクトがセンシティブ情報を含んでいることを示し、安全な削除インジケータの別の設定(例えば、偽または「0」に設定する)は、オブジェクトがセンシティブ情報を含んでいないことを示す。
【0028】
また、実施形態では、テーブル(「OBJECT_TABLES」、「OBJECT_INDEX」、および「OBJECT_TABLESPACE」)のそれぞれは、関連する1つまたは複数のセキュリティ・ポリシーの位置を格納するセキュリティ・ポリシー列(すなわちフィールド)を含んでいる。ある実施形態では、(あるオブジェクトと関連する)セキュリティ・ポリシー列の各行が、そのオブジェクトの適用可能なセキュリティ・ポリシーへの1つまたは複数のポインタ(例えば、UniformResource Locator(URL))を含む。実施形態では、適用可能なセキュリティ・ポリシーへのポインタは、外部から管理することができる。このため、セキュリティ・ポリシーをいつでも変更し、実行時に実施することができる。
【0029】
様々な実施形態では、他のオブジェクト(テーブル、インデックス、およびテーブルスペース以外)が、データベース・カタログに、やはり安全な削除列およびセキュリティ・ポリシー列で拡張されたテーブルを有することができる。
【0030】
図3は、ある実施形態に従ったデータベース・カタログ中の例示的テーブル300を示している。テーブル300は、オブジェクト識別子310と、安全な削除列320と、セキュリティ・ポリシー列330とを含んでいる。省略符号は、テーブル300が他の列を含む場合があることを示している。
【0031】
図4は、ある実施形態に従ったデータベース・カタログにデータを格納するための操作を流れ図で示している。制御は、ブロック400から始まり、センシティブ情報検出器がセンシティブ情報を格納しているデータベース中の1つまたは複数のオブジェクトを識別する。ブロック402では、1つまたは複数のオブジェクトのそれぞれについて、センシティブ情報検出器は、オブジェクトがセンシティブ情報を含んでいることを示すように安全な削除インジケータを設定し、データベース・カタログでそのオブジェクトの1つまたは複数のセキュリティ・ポリシーを識別する。
【0032】
したがって、ある実施形態では、センシティブ情報検出器は、各データベースにおいて定期的監査を行って、センシティブ情報を含んでいるオブジェクトを検索し、見つかった場合、データベース・カタログにおいて安全な削除インジケータを設定して、オブジェクトがセンシティブ情報を含んでいることを示す。
ステートメント構文の拡張
【0033】
実施形態が、「DELETE SECURE LEVEL」をステートメントに追加することによってデータベースに対して発行されるステートメントの構文を拡張する。「DELETESECURE LEVEL」を使用することにより、安全な削除が行われるべきであることをデータベースに示し、「LEVEL」は、行われるべき安全な消去の度合いを示す。例えば、一部の標準は、ディスク上のデータを安全に削除するには、ランダム・データまたはゼロを用いたワンパスの上書きで十分であると考える。これは、レベル1とみなすことができる。他の標準は、異なるデータ・パターンを用い、複数の書込みを使用してデータを上書きすることができる。これは、レベル2とみなすことができる。例えば以下は、拡張構文を有する(例えばSQLの)例示的ステートメントを含むリストである。ただし、実施形態はこのような例に限定されない:
・DROP TABLE […] DELETE SECURE LEVEL<INT>
・DROP INDEX […] DELETE SECURE LEVEL<INT>
・DROP TABLESPACE […] DELETE SECURE LEVEL<INT>
・ALTER TABLESPACE […] DELETE SECURE LEVEL<INT>
・ADMIN_MOVE_TABLE […] DELETE SECURE LEVEL<INT>
【0034】
様々な実施形態では、センシティブ情報を含むデータベース中に他のオブジェクト(例えば、データベースが処理に使用することができる一時テーブルまたは一時テーブルスペース)がある場合がある。したがって、上記のリストは非網羅的であり、様々なデータベースの実行にわたって「DELETE SECURE LEVEL」を使用することを含めるために他のステートメントを拡張することができる。
【0035】
「DELETE SECURE」は、データベースにアクセスするステートメントのオプションの文節である。ステートメントにおいて「DELETESECURE」オプションが指定される場合、選択されるLEVELに応じて、センシティブ情報の安全な破棄は、複数の方法のうちの1つで行われる。以下は、センシティブ情報の安全な破棄の例である:
・ ロー・デバイスが解放される(例えば、DROP TABLESPACEまたはALTERTABLESPACEステートメント後)
・ ファイル・コンテナが解放される(例えば、DROP TABLESPACEまたはALTERTABLESPACEコマンドでファイル・システム上のファイルが解放されるとき)
・ ファイルの一部が解放される(例えば、DROP TABLEまたはADMIN_MOVE_TABLE後)
【0036】
異なるオペレーティング・システムのプラットフォームについては、センシティブ情報の安全な破棄に利用できる異なる実行が存在する場合がある。さらに、一連のすべての利用できる技術からセキュリティ・ポリシーによって略述される要件に応じて、一部の実施形態では、利用できる技術の一部が許容される場合がある。ある実施形態では、データベースは、各オペレーティング・システムのプラットフォームに少なくとも1つの実装を含み、追加の技術には追加のライブラリを提供する。
【0037】
図5は、ある実施形態に従って、センシティブ情報の安全な削除と共にステートメントを処理するための操作を流れ図で示す。安全な削除を行われるべきであることを示し、かつ安全な削除のレベルを識別する文節(例えば、「DELETE SECURE」節)を含むことができるステートメントをデータベースが受信して、ブロック500から制御が始まる。上述のように、「DELETESECURE」節はオプションであって、場合によってはステートメントの作成者は、「DELETE SECURE」節を入れ忘れる可能性がある。「DELETESECURE」節がステートメントに含まれているかどうかに関わらず、データベースはセンシティブ情報の安全な削除を行う。ブロック502において、データベースはステートメントを処理する。例えば、ステートメントがテーブルを削除することである場合、テーブルは削除される。ブロック504においてデータベースは、ステートメントによってアクセスされるオブジェクトを識別する。ブロック506においてデータベースは、データベース・カタログで各オブジェクトと関連する安全な削除インジケータを使用して、ある場合、識別されたオブジェクトのどれがセンシティブ情報を含むかを判断する。すなわち、データベースは識別されたオブジェクトのそれぞれについてデータベース・カタログをチェックし、オブジェクトがセンシティブ情報を含むことを示すように安全な削除インジケータが設定されているかどうかを判断する。
【0038】
ブロック508においてデータベースは、オブジェクトのいずれかがセンシティブ情報を含んでいると識別されたかどうかを判断する。このようなオブジェクトが識別された場合、処理はブロック510(
図6)へ進み、そうでない場合、処理は完了する。
【0039】
ブロック510において、データベースは、識別されたオブジェクトから、第1の識別されたオブジェクトから始まる、次の識別されたオブジェクトを選択する。ブロック512において、選択されたオブジェクトについてデータベースは、そのオブジェクトのデータベース・カタログから1つまたは複数のセキュリティ・ポリシーを取得する。ブロック512では、(ブロック500で受け取られた)ステートメントが、安全な削除が行われるべきであることを示し、安全な削除のレベルを識別する文節を含んでいた場合、この情報はデータベースによって、1つまたは複数のセキュリティ・ポリシーを選択するために使用される。ステートメントがこの文節を含んでいなかった場合、データベースはデフォルトのセキュリティ・ポリシーを選択する。ブロック514において、選択されたオブジェクトに対してデータベースは、1つまたは複数のセキュリティ・ポリシーを実行する。ブロック516においてデータベースは、識別されたオブジェクトのすべてが選択されたかどうかを判断する。すべてが選択された場合、処理は完了し、そうでない場合、処理はブロック510に進む。
【0040】
ある実施形態では、ブロック514の動作について、1つまたは複数のセキュリティ・ポリシーがどのように実施されるかは、ロー・ディスクに対するファイル・システム(ひいては関連するオペレーティング・システム)、および他の低レベル技術の詳細のような要素によって決まる。したがって、ブロック514のポリシー実施動作は、このような技術の詳細により異なる可能性がある。
【0041】
図7は、ある実施形態に従った1つまたは複数のセキュリティ・ポリシーを実行するための操作を流れ図で示す。ファイル・システムにオブジェクトが格納されているかどうかをデータベースが判断して、ブロック600から制御が始まる。格納されている場合、処理はブロック602に進み、そうでない場合、処理はブロック604に進む。ブロック602において、データベースは、ファイル・システムに対して1つまたは複数のセキュリティ・ポリシーを実行する。
【0042】
ブロック604において、データベースはオブジェクトが暗号化されたファイル・システムに格納されているかどうかを判断する。暗号化されたファイル・システムに格納されている場合、処理はブロック606に進み、そうでない場合、処理はブロック608に進む。ブロック606においてデータベースは、暗号化されたファイル・システムに対して1つまたは複数のセキュリティ・ポリシーを実行する。
【0043】
ブロック608において、データベースはオブジェクトがロー・ディスクに格納されているかどうかを判断する。ロー・ディスクに格納されている場合、処理はブロック610に進み、そうでない場合、処理はオブジェクトのストレージのタイプをチェックし続け、そのタイプのストレージに対して1つまたは複数のセキュリティ・ポリシーを実行する(これは、
図7では省略符号で表される)。ブロック610においてデータベースは、ロー・ディスクに対して1つまたは複数のセキュリティ・ポリシーを実行する。
【0044】
ある実施形態では、「DELETE SECURE」節は、次のように実行される:
・ センシティブ情報を有する各オブジェクトに対して、データベース・カタログでは、安全な削除インジケータが有効にされ、1つまたは複数のセキュリティ・ポリシーが識別される。セキュリティ・ポリシーは、SECURE_DELETE選択、ならびにデフォルト選択の許容範囲を定める。
・ 作成者が、(例えば、センシティブ情報を含んでいるテーブルを削除するとき)オブジェクトがセンシティブ情報を含んでいることを示すために安全な削除インジケータが設定される、センシティブ情報を含んでいる少なくとも1つのオブジェクトにアクセスするステートメントにDELETE SECUREオプション文節を忘れた場合、データベースは、デフォルトの選択を用いてオブジェクトは安全に削除されるべきであると判断する。
・ 作成者が明示的にDELETE SECURE節を設定し、レベルを識別する場合、レベルは(例えば一連の許容選択から)1つまたは複数のセキュリティ・ポリシーを示す。ある実施形態では、作成者はデータベース・カタログに問い合わせて、一連の許容選択を取得することができる。
データベースI/Oレイヤにおける拡張
【0045】
データベースI/Oレイヤは、安全な削除操作を行っているライブラリを呼び出して、適切な削除を確実にするために必要とされるハード・ディスク領域を上書きする。ある実施形態では、このような呼び出しは、トランザクションのデータベースの原子性(Atomicity)、一貫性(Consistency)、独立性(Isolation)、耐久性(Durability)(ACID)特性に準拠するものであり、バックグラウンドで行うことができ、停電に対して回復力があるものとすることができる。
セキュリティ・ポリシー・システム
【0046】
ある実施形態では、セキュリティ・ポリシー・システムは、データベースの管理者または他のユーザが1つまたは複数のセキュリティ・ポリシーを作成できるようにする。各セキュリティ・ポリシーは、セキュア情報を破棄するための特定の手段を定める。ある実施形態では、セキュリティ・ポリシーは、レベルに相当する。例えばセキュリティ・ポリシーが、セキュア情報は3回上書きされなければならないことを示すことができる。ある追加的実施形態では、1つまたは複数のセキュリティ・ポリシーは、関連セキュリティ標準の一部として取り込むことができる。
【0047】
図8は、ある実施形態に従った単一サーバを有するコンピューティング環境を示す。
図8では、サーバ700はデータベース710を含む。データベース710は、1つまたは複数のテーブルスペースを含んでおり、各テーブルスペースが1つまたは複数のテーブル712を格納している。データベース710はまた、データベース・カタログ714と、データベースI/Oレイヤ716と、センシティブ情報検出器740と、セキュリティ・アドミニストレータ742とを含む。セキュリティ・アドミニストレータ742は、セキュリティ・ポリシー・システム744を含む。
【0048】
サーバ700はストレージ・システム720b・・・720m(ここでbおよびmは正の整数を表す)に結合される。各ストレージ・システム720b・・・720mは、1つまたは複数のファイル・システム・デバイス722b・・・722mと、1つまたは複数のロー・ストレージ・デバイス724b・・・724mとを含む。
【0049】
図9は、ある代替的実施形態に従った単一サーバを有するコンピューティング環境を示す。
図9では、サーバ800が、4つのテーブルスペースに11のテーブル(T1〜T11)を有するデータベース810を含んでいる。またサーバ800は、ストレージ・システム820b、820mに結合され、それぞれのストレージ・システム820b、820mは4つのファイル・システム・デバイス(それぞれ「FS」で表す)と、2つのロー・デバイス(それぞれ「R」で表す)とを含んでいる。
【0050】
ある実施形態では、セキュリティ・アドミニストレータが、データベースのセキュリティ面を制御する。ある実施形態では、セキュリティ・アドミニストレータは、センシティブ情報の安全な破棄に関するポリシー概念で拡張される。このような実施形態では、センシティブ情報検出器162は、データベースに移される。その後、セキュリティ・アドミニストレータは、例えばセンシティブ情報検出器がデータベースでセンシティブ情報を検索する頻度、センシティブ情報検出器をトリガしてセンシティブ情報の検索を開始することができるデータベース・ユーザを制御することができる。
【0051】
ある実施形態では、各サーバ(例えば、100a・・・100n、200a、200n、300、400)が、コンピューティング・ノード910(
図10に示す)のアーキテクチャを有し、クラウド環境の一部である。ある代替的実施形態では、サーバはクラウド環境の一部ではない。
【0052】
実施形態は、センシティブ情報技術の安全な破棄をデータベース・システムに密接に統合させて、ハード・ディスク上の機微領域の削除を確実なものにする。
【0053】
実施形態は、データベースにおいてセンシティブ情報を発見し、センシティブ情報を含んでいるものとしてテーブルまたはテーブルスペースを、データベース・カタログにおいてマーク付けし、テーブルまたはテーブルスペースによって使用される空間を、下にある物理デバイスに結びつける。実施形態では、データベースは、ファイル・システムへの適切なインタフェースを用いて真の「破棄」操作をトリガする。実施形態では、データベースは、トランザクションのログ・ファイルにおいて真の「破棄」をトリガする。実施形態は、異なるレベルのセキュリティを指定することができるように、ポリシー言語を提供する。
【0054】
実施形態は、センシティブ情報がもはや必要とされなくなったとき、センシティブ情報の削除を確実にし、データベースと密接に統合することにより低運用コストで、センシティブ情報の漏洩の危険性を低減する。
【0055】
実施形態は、DROP TABLESPACE、ALTER TABLESPACE(例えば、このステートメントを使用してコンテナを削除することがある)、DROPTABLE、DROP INDEX(例えば、インデックス構造のフィールドがセンシティブ情報を含むことがある)、ONLINE TABLE MOVE、DROPDATABASEのようなデータベース操作に対して、データベースでセンシティブ情報の安全な破棄を行う。
【0056】
実施形態は、ハード・ディスク保存(persistency)も有するデータベースのトランザクション・ログにおけるセンシティブ情報の安全な破棄を提供する。実施形態は、いかなるファイル・システムも含まないロー・デバイスを使用するデータベースに対して、および、センシティブ情報を含むどの部分がテーブルスペースのテーブルに属するかをファイル・システムが認識していないとき、センシティブ情報の安全な破棄を行う。
【0057】
実施形態は、ハード・ディスク/ファイル・システムの暗号化またはデータベースの暗号化、あるいはその両方を使用することができないとき、センシティブ情報の適切な削除を確実なものにする。
【0058】
実施形態は、データベースが使用中(例えば、別のデータベース・システムへの移動が実行可能ではない監査中)になった後に、センシティブ情報が検出されるとき、センシティブ情報の安全な破棄を行う。このような場合、データはすでに暗号化されずに物理的に作成されてしまっているので、ハード・ディスク/ファイル・システムの暗号化も、データベースの暗号化も使用されない。
【0059】
実施形態は、ポリシーを作成できるようにしてセンシティブ情報の対処方法をデータベースに伝えること、およびデータベース・カタログ中のメタデータを使用して、センシティブ情報を含んでいるとしてテーブルまたはテーブルスペースをマーク付けすることによって、センシティブ情報の安全な破棄を行う。
【0060】
新しい規則により以前機微ではなかったものが機微になる可能性があるとき、会社が強固なデータ保護法を有する国に拡大する(例えば米国の会社が欧州諸国に拡大する)とき、データベース・システムがセンシティブ情報を含んでおり、より強力なセキュリティ制御に従うべきであることを監査が示すとき、実施形態を使用することができる。このようなシナリオでアクセスを制限することはできるが、実施形態はセンシティブ情報の安全な削除を行う。実施形態は、非暗号化ファイル・システムを使用したあるデータベースから、暗号化ファイル・システムを使用した別のデータベースにデータを移動させる必要(コストおよび時間の理由のため困難である可能性がある)がない。
【0061】
データベースによってセンシティブ情報の安全な削除を行わなければ、投棄されたハード・ディスクが依然としてセンシティブ情報を含んでいるかどうかを知ることは困難であり、会社をセキュリティの危険にさらすことになる。また、ファイル・システムのレイヤへのアクセス(ただし多くの企業は個々のオペレーティング・システムおよびデータベース管理チームを有するのでデータベースには必要ではない)を用いた内部攻撃が、データベースの観点からのデータがDROP操作で削除されたハード・ディスク上にセンシティブ情報を発見できる可能性がある。
【0062】
実施形態は、クラウド・サービス・プロバイダからのインフラストラクチャにデータベース・システムが配備されたクラウド・コンピューティングのインフラストラクチャにおいてセンシティブ情報の適切な削除を確実なものとする。
【0063】
実施形態は、データベースI/Oレイヤを強化して、SQL言語の強化に基づく様々な動作中にセンシティブ情報を破棄する。ある実施形態では、データベースは関係データベース管理システム(Relational Database Management System、RDBMS)である。
クラウド環境
【0064】
この開示は、クラウド・コンピューティングに関する詳細な説明を含んでいるが、本明細書で説明する教示内容の実施は、クラウド・コンピューティング環境に限定されないことをあらかじめ理解されたい。正確には、本発明の実施形態は、現在知られている、または将来開発される、他のいかなるタイプのコンピューティング環境とも関連して実施されることが可能である。
【0065】
クラウド・コンピューティングは、最小限の経営努力またはサービスのプロバイダとの対話で迅速にプロビジョンし、リリースすることができる構成可能なコンピューティング・リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの便利で、オンデマンドのネットワーク・アクセスを可能にするためのサービス配信のモデルである。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つの配備モデルを含むことができる。
【0067】
オンデマンドのセルフサービス:クラウドの消費者が、サービスのプロバイダとの人的対話を必要とせず、必要に応じて自動的に、サーバの時刻およびネットワーク・ストレージのようなコンピューティング機能を一方的に(unilaterally)プロビジョンすることができる。
【0068】
広範なネットワーク・アクセス:機能は、ネットワークを通じて利用でき、異種のシン・クライアントまたはシック・クライアントのプラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による利用を促進する標準的機構によりアクセスされる。
【0069】
リソースのプール:プロバイダのコンピューティング・リソースは、マルチテナント・モデルを使用する複数の消費者に、需要により動的に割当ておよび再割当てされる異なる物理リソースおよび仮想リソースを供給するためにプールされる。消費者は一般に、提供されるリソースの正確な位置に関する制御または知識を持たないという点において、位置の独立(location independence)の意味があるが、より高い抽象レベルで位置(例えば、国、州、またはデータセンタ)を指定することができる可能性がある。
【0070】
迅速な弾力性(Rapid elasticity):機能は、迅速にかつ弾性的にプロビジョンされて、場合によっては自動的に、すばやくスケール・アウトし、迅速にリリースされてすばやくスケール・インすることができる。消費者には、プロビジョニングに利用できる機能は無制限であるように見えることが多く、いつでもいかなる量でも購入することができる。
【0071】
従量に基づくサービス(Measured service):クラウド・システムは、サービスのタイプ(例えばストレージ、処理、帯域幅、およびアクティブ・ユーザ・アカウント)に適切なある抽象レベルで計測機能を活用することにより、リソースの利用を自動的に制御し、最適化する。利用されるサービスのプロバイダと消費者の両方に透明性(transparency)を提供して、リソースの利用を、監視、制御、および報告することができる。
【0073】
サービスとしてのソフトウェア(SaaS):消費者に提供される機能は、クラウド・インフラストラクチャ上で実行中のプロバイダのアプリケーションを使用することである。アプリケーションは、ウェブ・ブラウザのようなシン・クライアント・インタフェース(例えば、ウェブベースの電子メール)を介して様々なクライアント・デバイスからアクセス可能である。消費者は、限られたユーザ指定アプリケーションの構成設定の可能性を除いて、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能など、根底にあるクラウド・インフラストラクチャを管理または制御しない。
【0074】
サービスとしてのプラットフォーム(PaaS):消費者に提供される機能は、プロバイダがサポートするプログラミング言語およびツールを使用して作成された、消費者が作成したアプリケーションまたは取得アプリケーションをクラウド・インフラストラクチャに配備することである。消費者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージなど、根底にあるクラウド・インフラストラクチャを管理または制御しないが、配備されるアプリケーションおよび場合によってはアプリケーションホスト環境の設定を制御する。
【0075】
サービスとしてのインフラストラクチャ(IaaS):消費者に提供される機能は、処理、ストレージ、ネットワーク、ならびに消費者がオペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアを配備し、実行することができる他の基本的コンピューティング・リソースをプロビジョニングすることである。消費者は、根底にあるクラウド・インフラストラクチャを管理または制御しないが、オペレーティング・システム、ストレージ、配備されるアプリケーションの制御、および場合によっては選択ネットワーキング構成要素(例えばホスト・ファイヤウォール)の限られた制御を行う。
【0077】
プライベート・クラウド:クラウド・インフラストラクチャは、単にある組織のために運営される。クラウド・インフラストラクチャは、この組織または第三者が管理することができ、自社運用型(on-premise)または他社運用型(off-premise)で存在することができる。
【0078】
コミュニティ・クラウド:クラウド・インフラストラクチャはいくつかの組織によって共有され、問題(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスの考慮事項)を共有する特定のコミュニティをサポートする。クラウド・インフラストラクチャは、この組織または第三者が管理することができ、自社運用型または他社運用型で存在することができる。
【0079】
パブリック・クラウド:クラウド・インフラストラクチャは、一般の人々または大規模な企業団体に利用可能にされ、クラウド・サービスを販売する組織によって所有される。
【0080】
ハイブリッド・クラウド:クラウド・インフラストラクチャは、固有のエンティティのままでありながら、データおよびアプリケーションの移植性を有効にする標準化技術または独自技術(例えば、クラウド間の負荷バランシングのためのクラウド・バースティング(cloud bursting))によって結合された、2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の組合せである。
【0081】
クラウド・コンピューティング環境は、ステートレス性、疎結合性、モジュール性、および意味相互運用性(semantic interoperability)に重点を置いて適応されたサービスである。クラウド・コンピューティングの中心には、相互接続されたノードのネットワークを含むインフラストラクチャがある。
【0082】
次に
図10を参照すると、クラウド・コンピューティング・ノードの一例の概略図が示されている。クラウド・コンピューティング・ノード910は、好適なクラウド・コンピューティング・ノードの一例にすぎず、本明細書に記載する本発明の実施形態の使用または機能の範囲に関するいかなる制限を示唆することも意図していない。それとは関係なく、クラウド・コンピューティング・ノード910は、実装されること、または以上に示す機能のいずれかを行うこと、あるいはその両方が可能である。
【0083】
クラウド・コンピューティング・ノード910には、コンピュータ・システム/サーバ912があり、数多くの他の汎用または特殊用途コンピューティング・システム環境または構成で動作可能である。コンピュータ・システム/サーバ912と共に使用するのに適している可能性がある、よく知られているコンピューティング・システム、または環境、または構成、あるいはその組合せの例には、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドもしくはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサベースのシステム、セット・トップ・ボックス、プログラマブル家庭用電化製品、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記のシステムもしくはデバイスなどのいずれかを含む分散クラウド・コンピューティング環境が含まれるが、これらに限定しない。
【0084】
コンピュータ・システム/サーバ912は、コンピュータ・システムによって実行される、プログラム・モジュールのような、コンピュータ・システム実行可能命令の一般的な状況で説明することができる。一般に、プログラム・モジュールは、特定のタスクを実行するまたは特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、構成要素、論理、データ構造などを含むことができる。コンピュータ・システム/サーバ912は、通信ネットワークを介してリンクされたリモート処理装置によりタスクが実行される分散クラウド・コンピューティング環境で実行することができる。分散クラウド・コンピューティング環境では、プログラム・モジュールは、メモリ記憶装置を含んだローカルとリモートの両方のコンピュータ・システムの記憶媒体に置くことができる。
【0085】
図10に示すように、クラウド・コンピューティング・ノード910中のコンピュータ・システム/サーバ912が、汎用コンピューティング・デバイスの形で示される。コンピュータ・システム/サーバ912の構成要素は、1つもしくは複数のプロセッサまたは処理ユニット916と、システム・メモリ928と、システム・メモリ928を含む様々なシステム構成要素をプロセッサ916に結合するバス918とを含むことができるが、これらに限定しない。
【0086】
バス918は、メモリ・バスもしくはメモリ・コントローラ、周辺機器用バス、アクセラレーテッド・グラフィックス・ポート(accelerated graphics port)、および様々なバス・アーキテクチャのいずれかを使用するプロセッサもしくはローカル・バスを含む、いくつかのタイプのバス構造のいずれかの1つまたは複数を表す。例として、限定ではないが、このようなアーキテクチャには、IndustryStandard Architecture(ISA)バス、Micro Channel Architecture(MCA)バス、Enhanced ISA(EISA)バス、VideoElectronics Standards Association(VESA)ローカル・バス、およびPeripheral ComponentInterconnects(PCI)バスが含まれる。
【0087】
コンピュータ・システム/サーバ912は、一般に様々なコンピュータ・システム可読媒体を含んでいる。このような媒体は、コンピュータ・システム/サーバ912によってアクセス可能であるいかなる利用可能媒体とすることもでき、揮発媒体と不揮発媒体、取り外し可能な媒体と取り外し不可能な媒体を共に含む。
【0088】
システム・メモリ928は、ランダム・アクセス・メモリ(RAM)930、またはキャッシュ・メモリ932、あるいはその両方のような揮発メモリの形式のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ912は、他の取り外し可能/取り外し不可能、揮発性/不揮発性の、コンピュータ・システム記憶媒体をさらに含むことができる。単に例として、取り外し不可能な、不揮発性磁気媒体(図示せず、一般に「ハード・ドライブ」と呼ばれる)の読み書き操作を行うために、ストレージ・システム934を設けることができる。図示していないが、取り外し可能な不揮発性磁気ディスク(例えば、「フロッピー(R)・ディスク」)の読み書き操作を行うための磁気ディスク・ドライブ、およびCD−ROM、DVD−ROMもしくは他の光媒体のような取り外し可能な不揮発性光ディスクの読み書き操作を行うための光ディスク・ドライブを設けることができる。このような場合、1つまたは複数のデータ媒体のインタフェースによりそれぞれをバス918に接続することができる。以下にさらに示し、説明するように、メモリ928は、本発明の実施形態の機能を実行するように構成された一組(例えば少なくとも1つ)のプログラム・モジュールを有する少なくとも1つのプログラム製品を含むことができる。
【0089】
一組(少なくとも1つ)のプログラム・モジュール942を有するプログラム/ユーティリティ940は、限定ではなく例としてメモリ928に、ならびにオペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データに格納することができる。オペレーティング・システム、1つもしくは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データのそれぞれ、あるいはその何らかの組合せは、ネットワーキング環境の実装を含むことができる。プログラム・モジュール942は、一般に、本明細書に記載する本発明の実施形態の機能または方法、あるいはその両方を実行する。
【0090】
コンピュータ・システム/サーバ912は、キーボード、ポインティング・デバイス、ディスプレイ924などのような1つまたは複数の外部デバイス914、またはユーザがコンピュータ・システム/サーバ912と対話できるようにする1つまたは複数のデバイス、またはコンピュータ・システム/サーバ912が1つまたは複数の他のコンピューティング・デバイスと通信できるようにする任意のデバイス(例えばネットワーク・カード、モデムなど)、あるいはその組合せと通信することもできる。このような通信は、入力/出力(I/O)インタフェース922を介して行うことができる。さらにコンピュータ・システム/サーバ912は、ローカル・エリア・ネットワーク(LAN)、または一般的なワイド・エリア・ネットワーク(WAN)、またはパブリック・ネットワーク(例えばインターネット)、あるいはその組合せのような、1つまたは複数のネットワークと、ネットワーク・アダプタ920を介して通信することができる。図示するように、ネットワーク・アダプタ920は、コンピュータ・システム/サーバ912の他の構成要素とバス918を介して通信する。図示していないが、他のハードウェア構成要素またはソフトウェア構成要素、あるいはその両方を、コンピュータ・システム/サーバ912と併せて使用できることを理解されたい。例には、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが含まれるが、これらに限定されない。
【0091】
次に
図11を参照すると、例示的なクラウド・コンピューティング環境1050が示されている。図のように、クラウド・コンピューティング環境1050は、例えば携帯情報端末(PDA)もしくは携帯電話1054A、またはデスクトップ・コンピュータ1054B、またはラップトップ・コンピュータ1054C、または自動車コンピュータ・システム1054N、あるいはその組合せのような、クラウドの消費者によって使用されるローカル・コンピューティング・デバイスが通信することができる1つまたは複数のクラウド・コンピューティング・ノード910を備える。ノード910は、互いと通信することができる。ノードは、上述のようなプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、またはハイブリッド・クラウド、あるいはその組合せのような、1つまたは複数のネットワークにおいて、物理的にまたは仮想的にグループ分けすることができる(図示せず)。これにより、クラウド・コンピューティング環境1050は、クラウドの消費者がローカル・コンピューティング・デバイス上でリソースを維持する必要がないサービスとして、インフラストラクチャ、またはプラットフォーム、またはソフトウェア、あるいはその組合せを提供できる。
図11に示すコンピューティング・デバイス1054A〜Nのタイプは、単に例示となることを意図していること、コンピューティング・ノード910およびクラウド・コンピューティング環境1050は、任意のタイプのネットワークまたはネットワーク・アドレス可能接続、あるいはその両方を通じて(例えばウェブ・ブラウザを使用して)任意のタイプのコンピュータ化されたデバイスと通信できることを理解されたい。
【0092】
次に
図12を参照すると、クラウド・コンピューティング環境1050(
図11)によって提供される一組の機能抽象化レイヤが示されている。
図12に示す構成要素、レイヤ、および機能は、単に例示となることを意図しており、本発明の実施形態はこれに限定されないことを、あらかじめ理解されたい。図示するように、次のレイヤおよび対応する機能が提供される。
【0093】
ハードウェアおよびソフトウェア・レイヤ1160は、ハードウェアおよびソフトウェアの構成要素を含む。ハードウェア構成要素の例には、メインフレーム、一例ではIBM(R)のzSeries(R)システム、RISC(Reduced Instruction Set Computer、縮小命令セットコンピュータ)アーキテクチャに基づくサーバ、一例ではIBMのpSeries(R)システム、IBMのxSeries(R)システム、IBMのBladeCenter(R)システム、ストレージ・デバイス、ネットワークおよびネットワーキング構成要素が含まれる。ソフトウェア構成要素の例には、ネットワーク・アプリケーション・サーバ・ソフトウェア、一例ではIBMのWebSphere(R)アプリケーション・サーバ・ソフトウェア、およびデータベース・ソフトウェア、一例ではIBMのDB2(R)データベース・ソフトウェアが含まれる。(IBM、zSeries、pSeries、xSeries、BladeCenter、WebSphere、およびDB2は、世界中の多くの管轄において登録されたInternationalBusiness Machines Corporationの商標である。)
【0094】
仮想化レイヤ1162は、抽象化レイヤを提供し、そこから仮想エンティティの次の例を提供することができる:仮想サーバ、仮想ストレージ、仮想プライベート・ネットワークなどの仮想ネットワーク、仮想アプリケーションおよびオペレーティング・システム、ならびに仮想クライアント。
【0095】
1つの例では、管理レイヤ1164は、以下に記載する機能を提供することができる。リソース・プロビジョニングは、クラウド・コンピューティング環境内でタスクを行うために利用されるコンピューティング・リソースおよび他のリソースの動的な調達を行う。計測および価格決定は、クラウド・コンピューティング環境内でリソースが利用されるとき、コストの追跡を行い、これらのリソースの消費に対して請求を行うまたはインボイスを作る。1つの例では、これらのリソースは、アプリケーション・ソフトウェアのライセンスを含むことができる。セキュリティは、クラウドの消費者およびタスクの同一性確認、ならびにデータおよび他のリソースの保護を行う。ユーザ・ポータルは、消費者およびシステム管理者のためにクラウド・コンピューティング環境へアクセスできるようにする。サービス・レベル管理は、要求されるサービス・レベルに合うようなクラウド・コンピューティング・リソースの割当ておよび管理を提供する。サービス品質保証契約(Service Level Agreement、SLA)の計画および履行は、SLAに従って将来の要求が予想されるクラウド・コンピューティング・リソースの事前手配および調達を行う。
【0096】
作業負荷レイヤ1166は、クラウド・コンピューティング環境を利用することができる機能の例を提供する。このレイヤから提供することができる作業負荷および機能の例には、マッピングおよびナビゲーション、ソフトウェアの開発およびライフサイクルの管理、仮想教室の教育配信、データ分析処理、トランザクション処理、および安全な削除の処理が含まれる。
【0097】
したがって、ある実施形態では、本明細書に記載する実施形態に従ってセンシティブ情報の安全な削除を実行するソフトウェアまたはプログラムが、クラウド環境におけるサービスとして提供される。
さらなる実施形態の詳細
【0098】
当業者には理解されるように、本発明の諸態様は、システム、方法、またはコンピュータ・プログラム製品として具体化することができる。したがって、本発明の諸態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、またはソフトウェアの態様とハードウェアの態様を組み合わせた実施形態の形をとることができ、本明細書ではすべて一般的に「回路」、「モジュール」、または「システム」と呼ぶことができる。さらに、本発明の諸態様は、コンピュータ可読プログラム・コードを組み入れた1つまたは複数のコンピュータ可読媒体で具体化されるコンピュータ・プログラム製品の形をとることができる。
【0099】
1つまたは複数のコンピュータ可読媒体の任意の組合せを利用することができる。コンピュータ可読媒体は、コンピュータ可読信号媒体、またはコンピュータ可読記憶媒体であることが可能である。コンピュータ可読記憶媒体は、例えば電子、磁気、光、電磁気、赤外線、または半導体のシステム、装置、またはデバイス、あるいは上記の任意の好適な組合せであることが可能であるが、これらに限定されない。コンピュータ可読記憶媒体のさらなる具体例(非網羅的リスト)には、1つもしくは複数の配線を有する電気接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能なプログラマブル読み出し専用メモリ(EPROMもしくはフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク読み出し専用メモリ(CD−ROM)、光学式記憶装置、磁気記憶装置、ソリッド・ステート・メモリ、磁気テープ、または上記の任意の好適な組合せが含まれる。この文書の文脈においては、コンピュータ可読記憶媒体は、命令実行システム、装置、もしくはデバイスによって、またはこれらに接続して使用するためにプログラムを収容または格納することができる任意の有形媒体とすることができる。
【0100】
コンピュータ可読信号媒体は、例えばベースバンドに、または搬送波の一部としてコンピュータ可読プログラム・コードを組み入れた伝搬データ信号を含むことができる。このような伝搬信号は、電磁気、光、またはその任意の好適な組合せを含むが、これらに限定されない、様々な形態のいずれかをとることができる。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではないが、命令実行システム、装置、もしくはデバイスによって、またはこれらに接続して使用するためにプログラムを伝える、伝搬する、または伝送することができる任意のコンピュータ可読媒体とすることができる。
【0101】
コンピュータ可読媒体に組み込まれたプログラム・コードは、無線、有線、光ファイバ・ケーブル、RFなど、または上記の任意の好適な組合せを含むが、これらに限定されない、任意の適切な媒体を使用して送信することができる。
【0102】
本発明の諸態様のための動作を実行するためのコンピュータ・プログラム・コードは、Java(R)、Smalltalk、C++などのようなオブジェクト指向プログラミング言語、ならびに「C」プログラミング言語または同様のプログラミング言語のような従来の手続きプログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組合せで書くことができる。プログラム・コードは、スタンドアロン型ソフトウェア・パッケージとして、完全にユーザのコンピュータ上で、一部ユーザのコンピュータ上で、一部はユーザのコンピュータ上でかつ一部はリモート・コンピュータ上で、または完全にリモート・コンピュータもしくはサーバ上で、実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)などの、任意のタイプのネットワークを介してユーザのコンピュータに接続することができる、または(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに接続を行うことができる。
【0103】
本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図、あるいはその両方を参照して、本発明の実施形態の諸態様について以下に記載する。フローチャート図またはブロック図、あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図、あるいはその両方の中のブロックの組合せは、コンピュータ・プログラム命令によって実行できることを理解されるであろう。こうしたコンピュータ・プログラム命令は、汎用コンピュータ、専用コンピュータ、または機械を製造するための他のプログラマブル・データ処理装置のプロセッサに提供することができ、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサによって実行される命令が、フローチャートまたはブロック図、あるいはその両方の1つまたは複数のブロックに指定される機能/行動を実行するための手段を作り出すようにする。
【0104】
またこうしたコンピュータ・プログラム命令は、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスに、特定の方法で機能するように命令することができるコンピュータ可読媒体に格納することができ、したがってコンピュータ可読媒体に格納された命令が、フローチャートまたはブロック図、あるいはその両方の1つまたは複数のブロックで指定される機能/動作を実行する命令を内蔵した製品を生み出す。
【0105】
またコンピュータ・プログラム命令は、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードして、一連の演算処理(例えば、操作またはステップ)をコンピュータ、他のプログラマブル装置、または他のデバイス上で実行させてコンピュータ実行プロセスを作り出すことができ、したがってコンピュータまたは他のプログラマブル装置上で実行される命令が、フローチャートまたはブロック図、あるいはその両方の1つまたは複数のブロックに指定される機能/行動を実行するためのプロセスを提供する。
【0106】
記載した操作を実行するコードはさらに、ハードウェア論理または回路(例えば、集積回路チップ、プログラマブル・ゲート・アレイ(PGA)、特定用途向け集積回路(ASIC)など)で実行することもできる。ハードウェア論理は、プロセッサに結合して演算を行うことができる。
【0107】
互いと通信しているデバイスは、他に特に指定されない限り、互いと連続的に通信している必要はない。さらに、互いと通信しているデバイスは、直接的に通信する、または1つもしくは複数の媒介物を通して間接的に通信することができる。
【0108】
いくつかの構成要素が互いと通信している実施形態の説明は、このような構成要素のすべてが必要とされることを意味しない。むしろ、様々な任意選択の構成要素を記載して、本発明の多様な考えられる実施形態を示している。
【0109】
さらに、処理ステップ、方法ステップ、アルゴリズムなどは、一連の順序で説明することができるが、このようなプロセス、方法、およびアルゴリズムは、交互に動作するように構成することができる。言い換えれば、説明することができるステップのいかなる連続または順序も、必ずしもステップがその順序で行われる必要を示しているわけではない。本明細書に記載する処理のステップは、実際のいかなる順序でも行うことができる。さらに、一部のステップは、同時に行うことができる。
【0110】
本明細書で単一のデバイスまたは物について記載するとき、単一のデバイス/物の代わりに2つ以上のデバイス/物(協働するか否かを問わず)を使用する可能性があることは容易にわかるであろう。同様に、本明細書で(協働するか否かを問わず)2つ以上のデバイスまたは物について記載する場合、2つ以上のデバイスまたは物の代わりに単一のデバイス/物を使用する可能性がある、あるいは示した数のデバイスまたはプログラムに代えて異なる数のデバイス/物を使用する可能性があることは、容易にわかるであろう。デバイスの機能または特徴、あるいはその両方は、このような機能/特徴を有すると明示的に記載していない1つまたは複数の他のデバイスで代替的に具体化することができる。したがって、本発明の他の実施形態は、デバイス自体を含む必要がない。
【0111】
流れ図の例示の動作は、ある順序で発生するあるイベントを示す。代替的実施形態では、ある動作を異なる順序で行う、変更する、または削除することができる。さらに、上述の論理に動作を追加してもやはり記載の実施形態に従うことができる。さらにまた、本明細書に記載する動作は、逐次的に発生する可能性があり、またはある動作は、並行して処理することができる。さらにまた動作は、単一処理ユニットで行う、または分散された処理ユニットで行うことができる。
【0112】
本明細書で使用する用語は、特定の実施形態を説明するためだけであって、本発明を限定するものとなることを意図していない。本明細書で使用される単数形、「a」、「an」、および「the」は、文脈上明らかに他の意味を示す場合を除いて、複数形も含むものとする。「含む」または「含んでいる」、あるいはその両方の用語は、本明細書で使用されるとき、提示する特徴、または完全体、またはステップ、または動作、または要素、または構成要素、あるいはその組合せの存在を明記するが、1つもしくは複数の他の特徴、または完全体、またはステップ、または動作、または要素、または構成要素、またはそのグループ、あるいはその組合せの存在または追加を排除しないことを、さらに理解されたい。
【0113】
「一実施形態」、「実施形態」、「諸実施形態」、「1つの特定の実施形態」、「複数の特定の実施形態」、「1つまたは複数の実施形態」、「いくつかの実施形態」、および「1つの実施形態」という用語は、他に特に指定されない限り、「(1つまたは複数の)本発明の1つまたは複数の(ただしすべてとは限らない)実施形態」を意味する。
【0114】
「含む」、「備える」、「有する」、およびその変形は、他に特に指定されなければ、「含むがこれに限定されない」ことを意味する。
【0115】
項目の列挙されているリストは、他に特に指定されない限り、項目の一部または全部が相互排他的であることを意味しない。
【0116】
添付の特許請求の範囲中のあらゆる手段またはステップさらに機能要素の対応する構造、材料、行動、および等価物は、具体的に請求される他の請求要素と組み合わせて機能を行うためのいかなる構造、材料、または行動も含むものとする。本発明の実施形態の説明は、例示および説明のために提示したが、網羅的であること、または開示した形態の発明に限定されることを意図していない。本発明の範囲および趣旨を逸脱することなく、多くの変更形態および変形形態が当業者には明らかであろう。本発明の原理および実際の応用を最も良く説明するために、また当業者が予想される特定の利用に適した様々な変更形態と共に様々な実施形態について本発明を理解できるように、実施形態を選択して説明した。
【0117】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実行のアーキテクチャ、機能、および動作を示す。この関連で、フローチャートまたはブロック図の各ブロックは、コードのモジュール、セグメント、または一部を表すことができ、(1つまたは複数の)指定された論理機能を実行するための1つまたは複数の実行可能命令を含む。またいくつかの代替的な実施では、ブロックに示した機能が図に示した順序を外れて行われる場合があることに注意されたい。例えば、連続して示した2つのブロックは、実際には実質的に同時に行われる場合があり、またはブロックは、関与する機能に応じて、時には逆の順序で行われる場合がある。またブロック図またはフローチャート図、あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図、あるいはその両方におけるブロックの組合せは、指定された機能または行動を行う特殊用途ハードウェアベースのシステム、あるいは特殊用途ハードウェアおよびコンピュータ命令の組合せによって実行可能であることに注意されたい。
【0118】
本発明の実施形態の前述の説明を、例示および説明の目的で提示した。網羅的であること、または開示した正確な形に本実施形態を限定することを意図していない。上記の教示に照らして多くの変更形態および変形形態が考えられる。実施形態の範囲は、この詳細な説明によってではなく、正確にはこれに添付する特許請求の範囲によって限定されることを意図している。上記の明細書、例、およびデータは、実施形態の構成物の製作および使用についての完全な記述を提供する。本発明の趣旨および範囲を逸脱することなく多くの実施形態を作成することができるので、実施形態は、添付の特許請求の範囲または後の出願のすべての特許請求の範囲、およびその均等物に属する。