JP2023039218A - 計算機および制御方法 - Google Patents

計算機および制御方法 Download PDF

Info

Publication number
JP2023039218A
JP2023039218A JP2021146265A JP2021146265A JP2023039218A JP 2023039218 A JP2023039218 A JP 2023039218A JP 2021146265 A JP2021146265 A JP 2021146265A JP 2021146265 A JP2021146265 A JP 2021146265A JP 2023039218 A JP2023039218 A JP 2023039218A
Authority
JP
Japan
Prior art keywords
authorization information
request
information
unit
processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2021146265A
Other languages
English (en)
Inventor
丈士 石原
Takeshi Ishihara
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kioxia Corp
Original Assignee
Kioxia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kioxia Corp filed Critical Kioxia Corp
Priority to JP2021146265A priority Critical patent/JP2023039218A/ja
Priority to US17/549,667 priority patent/US11899960B2/en
Publication of JP2023039218A publication Critical patent/JP2023039218A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0637Permissions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

【課題】 情報記録装置への不正なアクセスを防止できる計算機を実現する。【解決手段】 実施形態によれば、計算機は、不揮発性記録部との間で情報を入出力する処理を含むアプリケーションプログラムを実行し、演算部と前記計算機の外部の装置と通信プロトコルに従って通信するための通信インタフェース部とを具備する。前記演算部は、前記アプリケーションプログラムとの間で前記不揮発性記録部に対する第1のI/O要求を受信し、前記第1のI/O要求に基づいて前記不揮発性記録部を制御するための一つ以上の第1制御コマンドを生成し、前記不揮発性記録部を制御するストレージプロトコル処理を実行する。前記演算部は、サーバ装置から認可情報を取得する認可情報取得処理を実行する。前記演算部は、前記第1のI/O要求または前記一つ以上の第1制御コマンドに、取得した前記認可情報を挿入するか、あるいは関連付ける認可情報挿入処理を実行する。【選択図】図2

Description

本発明の実施形態は、ハードディスクドライブ(HDD)やソリッドステートドライブ(SSD)のような情報記録装置にI/Oコマンドを送信する計算機および制御方法に関する。
ハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)といった情報記録装置は、ホスト装置と称される計算機からのI/Oコマンドに基づいて情報の読み書きを行うように構成されている。
また、最近では、ネットワークを介して情報記録装置にアクセスする技術も利用されている。
コンピュータのような計算機において実行されるソフトウェアに不正なプログラムが侵入すると、情報記録装置が不正にアクセスされ、これによってデータの破壊やデータの盗難が引き起こされる場合がある。
このため、情報記録装置への不正なアクセスを防止可能な新たな技術の実現が求められている。
特開2006-86907号公報
Charlie Kaufman、"Internet Key Exchange (IKEv2) Protocol"、[online]、RFC4306、2005年12月、[2021年7月19日検索]、インターネット<URL:https://datatracker.ietf.org/doc/html/rfc4306>
本発明の一実施形態が解決しようとする課題は、情報記録装置への不正なアクセスを防止できる計算機および制御方法を提供することである。
実施形態によれば、計算機は、不揮発性記録部との間で情報を入出力する処理を含むアプリケーションプログラムを実行する。この計算機は、演算部と、通信インタフェース部と、一時記録部とを具備する。前記通信インタフェース部は、前記計算機の外部の装置と通信プロトコルに従って通信する。前記一時記録部は、前記演算部が使用する情報を一時的に保存する。前記演算部は、前記アプリケーションプログラムを実行する。前記演算部は、前記アプリケーションプログラムから前記不揮発性記録部に対する第1のI/O要求を受信し、前記第1のI/O要求に基づいて前記不揮発性記録部を制御するための一つ以上の第1制御コマンドを生成し、前記不揮発性記録部を制御するストレージプロトコル処理を実行する。前記演算部は、前記第1のI/O要求または前記一つ以上の第1制御コマンドが、前記不揮発性記録部にアクセスするために認可情報を必要とするか否かを判断する認可情報要否判断処理を実行する。前記演算部は、前記第1のI/O要求または前記一つ以上の第1制御コマンドが、前記不揮発性記録部にアクセスするために認可情報を必要とすると判断した場合、外部のサーバ装置と前記通信インタフェース部を介して通信を行って、前記第1のI/O要求が発生した際の状況と理由の少なくとも一方を示すコンテキスト情報を前記サーバ装置に送信するとともに認可情報を要求し、前記サーバ装置から認可情報を取得する認可情報取得処理を実行する。前記演算部は、前記第1のI/O要求または前記一つ以上の第1制御コマンドに、取得した前記認可情報を挿入するか、あるいは関連付ける認可情報挿入処理を実行する。前記演算部は、前記認可情報取得処理で認可情報を要求する前に、前記サーバ装置に送信する前記コンテキスト情報を収集し、前記一時記録部に保存するコンテキスト収集処理を実行する。
第1実施形態に係る計算機を含むストレージシステムの構成例を示すブロック図。 第1実施形態に係る計算機の構成例を示すブロック図。 第1実施形態に係る計算機の動作シーケンスを示すフローチャート。 図3Aに後続する動作シーケンスを示すフローチャート。 第1実施形態に係る計算機における認可情報取得処理の動作シーケンスを示すフローチャート。 第1実施形態に係る計算機において揮発性記録部に保存される認可情報の構成例を示す図。 第1実施形態に係る計算機において揮発性記録部に保存されるコンテキスト情報の構成例を示す図。 第1実施形態に係る計算機によって管理される例外リストの例を示す図。 第1実施形態に係る計算機において揮発性記録部に保存される識別子対応関係の構成例を示す図。 第1実施形態に係る計算機において、Internet Protocol(IP)オプションまたはTransmission Control Protocol(TCP)オプションとして、認可情報をパケットに追加する例を示す図。 第1実施形態に係る計算機によって管理される送信したパケットに関する情報と認可情報との対応関係の例を示す図。 第2実施形態に係る計算機の構成例を示すブロック図。 第3実施形態に係る計算機の構成例を示すブロック図。 第3実施形態に係る計算機の動作シーケンスを示すフローチャート。 第4実施形態に係る計算機の構成例を示すブロック図。 第4実施形態に係る計算機の動作シーケンスを示すフローチャート。
以下に添付図面を参照して、幾つかの実施形態にかかる計算機および制御方法を説明する。
(第1実施形態)
図1は、第1実施形態に係る計算機100の構成例と計算機100を含む情報記録システムの構成例を示すブロック図である。第1実施形態に係る計算機100は、アプリケーションプログラム(以下、アプリケーションとも称する)などを実行する演算部101と、ダイナミックアクセスメモリ(DRAM)などの揮発性記録部102と、NAND型フラッシュメモリを使って情報を保存するソリッドステートドライブ(SSD)やハードディスクドライブ(HDD)で構成される不揮発性記録部103と、ネットワークに接続するための通信インタフェース部(通信I/F部)104とで構成される。計算機100は、ネットワーク130を介して認可サーバ110と接続している。また、計算機100は、ネットワーク130を介して情報の読み書きができる情報記録装置120に接続していてもよい。ここで示す各構成要素の接続方法や構成方法は一例であり、記載の方法に限定するわけではない。
(構成要素とその説明)
図1に示すように、本実施形態の計算機100は、演算部101、揮発性記録部102、不揮発性記録部103、および通信I/F部104を含む。揮発性記録部102は、演算部101が使用する情報を一時的に保存する。通信I/F部104はIEEE802.3などの通信規格を用いてネットワーク130に接続しており、そのネットワーク130には認可サーバ110や情報記録装置120が接続している。認可サーバ110は、本実施形態の計算機100内で発生する情報読み書き要求(すなわち、I/O要求)に対して実行許可もしくは実行不許可の認可判断を求める認可要求をネットワーク130経由で受信し、その結果を認可情報として応答することを特徴とするサーバ装置である。情報記録装置120は、iSCSIやNVM ExpressTM(NVMeTM) over Fabrics(NVMe-oF)、NVMe/TCPなどのストレージプロトコルおよび通信プロトコルを介して情報の読み書きができる情報記録装置である。情報記録装置120の内部は一つ以上のストレージドライブ(SSDやHDD)や、(ドライブという形状ではなく)不揮発性メモリやバッテリバックアップ付きの揮発性メモリで情報を長期間記録できるように構成された装置である。本実施形態では、認可サーバ110や情報記録装置120の構成や実現形態については問わない。
図2は演算部101上でソフトウェアを用いて実行する処理を示した機能ブロック図である。ここでは演算部101の内部に処理が存在するものとして記載しているが、実際には不揮発性記録部103上にプログラムとして保存されている処理を揮発性記録部102に読み出し、演算部101は揮発性記録部102を参照しながら各処理を実行している。
アプリケーション200は計算機100上で実行するアプリケーションであり、例えば、文書作成アプリケーションやプレゼンテーションソフトウェアなどを指す。アプリケーション200は、不揮発性記録部103や情報記録装置120に対して情報の読み書きを行う処理を含む。ストレージプロトコル処理201は、アプリケーション200が要求した情報の読み書き(すなわち、情報の入出力)を不揮発性記録部103との間で適切に仲介する処理を行う。例えば、計算機100に直接接続する不揮発性記録部103がNVMeで接続している場合には、Operating System(OS)が提供するPortable Operating System Interface for UNIXTM(POSIX)インタフェースの処理、ファイルシステムの処理、ブロックデバイスの処理、デバイスドライバの処理などが該当する。より具体的には、ストレージプロトコル処理201は、アプリケーション200が要求した情報の読み書きに基づいて、ストレージ制御コマンドを生成する。ストレージ制御コマンドは、例えば、リードコマンド、ライトコマンドである。認可情報挿入処理202は、ストレージプロトコル処理201の前・途中・後のいずれかのタイミングにて処理前・処理中・処理後のI/O要求に認可情報を付与する。通信プロトコル処理203は、通信I/F部104を介して情報を送受信するためのパケット生成・送信・受信処理を行う。
認可情報要求処理204は、認可情報挿入処理202で認可情報が必要になった際に認可サーバ110と通信を行って認可情報を取得し、認可情報一時保存部206に保存したうえで、認可情報挿入処理202に返す処理を行う。また、認可情報一時保存部206に対応する認可情報が保持されている場合には、認可サーバ110と通信を行うことなく、それを読み出して認可情報挿入処理202に返す。
コンテキスト情報収集処理205は、認可情報要求処理204が認可サーバ110に認可情報を要求する際に必要な情報を集める処理である。集めた情報は揮発性記録部102のコンテキスト情報保存部207に保存しておく。この保存されている情報は、認可情報要求処理204が適切に読み出して認可情報取得要求として認可サーバ110に送信する際に利用する。なお、コンテキスト情報収集処理205は認可情報要求処理204の指示に基づいて実行する場合と、何らかのイベントが発生した場合に実行する場合の二通りの動作パターンがある。後者の例は、通信I/F部104がネットワーク130に接続したとき、計算機100で実行しているOSへのログインが行われたとき、事前にセットしたタイマーが動作したとき、事前に設定された一定時間ごとの定期的な動作、などが考えられる。
識別子抽出処理209は、アプリケーション200が使用する情報を特定する識別子を認可情報要求処理204が認可を要求する際に利用できるようにする。例えば、次の二つの処理を行うことで実現する。一つはアプリケーション200の不揮発性記録部103に対する操作を監視して情報の第1の識別子(以下、この第1の識別子をアプリレベル識別子とも称する)を抽出する処理である。もう一つは、ストレージプロトコル処理201を監視して、アプリケーション200が発行した情報の読み書き要求に含まれるアプリレベル識別子が、不揮発性記録部103を制御するためのI/Oコマンド(ストレージ制御コマンド)に変換された後の第2の識別子(以下、この第2の識別子をストレージレベル識別子とも称する)を取得する処理である。取得したアプリレベル識別子とストレージレベル識別子は、揮発性記録部102の識別子対応関係保存部208に保持しておく。認可情報要求処理204は、この対応関係を参照して適切な識別子を認可情報の要求に含める。なお、アプリレベル識別子とストレージレベル識別子が同じ場合には、本処理は省略されうる。対応する識別子対応関係保存部208も省略されうる。
(動作シーケンス 全体)
図3Aおよび図3Bと図4は、計算機100の典型的な動作シーケンスを示すフローチャートである。これらの図を用いて計算機100の動作を述べる。図3Aに示すように、本計算機100の動作はアプリケーション200にてデータの読み書き要求が発生することで始まる(ステップS300、S301)。アプリケーション200はストレージプロトコル処理201に読み書き要求を渡し、ストレージプロトコル処理201によってストレージ制御コマンドが生成される(ステップS302)。生成されたストレージ制御コマンドは認可情報挿入処理202によって捕捉(インターセプト)され(ステップS304)、認可情報挿入処理202が認可の必要なストレージ制御コマンドか否かを判定する(ステップS305)。認可情報挿入処理202は、ストレージ制御コマンドが不揮発性記録部103または情報記録装置120にアクセスするために認可情報を必要とするか否かを判断する認可情報要否判断処理を含む。あるいは、認可情報挿入処理202とは別に設けられた認可情報要否判断処理が演算部101によって実行されてもよい。なお、ストレージ制御コマンドが不揮発性記録部103または情報記録装置120にアクセスするために認可情報を必要とするか否かを判断することは、ストレージ制御コマンドに対応する読み書き要求が不揮発性記録部103または情報記録装置120にアクセスするために認可情報を必要とするか否かを判断することであると云える。
認可が必要なストレージ制御コマンドだった場合(ステップS305-YES)、図3Bに示すように、認可情報挿入処理202は認可情報要求処理204を実行し、認可済みのストレージ制御コマンドか否かを判定する(ステップS307)。具体的には、認可情報要求処理204は認可情報一時保存部206を参照し、判断中のストレージ制御コマンドに含まれるストレージレベル識別子に対応する有効な認可情報を保持しているかを確認する。認可済みの場合、すなわち、対応する認可情報を保持している場合(ステップS307-YES)、対応する認可情報を読み出し(ステップS308)、認可情報挿入処理202に返す。
認可済みのストレージ制御コマンドではなかった場合(ステップS307-NO)、認可情報要求処理204は認可情報を取得する(ステップS317)。認可情報の取得処理の詳細については図4で詳細に述べる。
正常に認可情報を取得できた場合(ステップS318-YES)、当該認可情報を認可情報挿入処理202に返す。正常に認可情報を取得できなかった場合(ステップS318-NO)、認可情報挿入処理202はストレージ制御コマンドをエラーとして処理させるためのエラー応答を生成し、ストレージプロトコル処理201に返す(ステップS319)。その後、ストレージプロトコル処理201は読み書き要求がエラーとなったことをアプリケーション200に返す(ステップS320)。この場合は、以上で処理が終了する(ステップS321)。
ステップS308で認可情報を読み出した場合、あるいはステップS317で認可情報を正常に取得できた場合、ストレージプロトコル処理201は、認可情報の付与が必要なストレージ制御コマンドのアクセス先がローカル接続しているものか、ネットワークを介して接続しているものかを判断する(ステップS309)。つまり、ストレージプロトコル処理201は、認可情報の付与が必要なストレージ制御コマンドのアクセス先が、ローカルストレージであるか、それともネットワークストレージであるかを判断する。ローカル接続の場合(ステップS309-YES)、認可情報を受け取った認可情報挿入処理202は、受け取った認可情報を、対応するストレージ制御コマンドに付加する(ステップS310)。その後、ストレージ制御コマンドを不揮発性記録部103に向けて送信し(ステップS311)、処理を終了する(ステップS312)。
ネットワーク接続の場合(ステップS309-NO)、認可情報を受け取った認可情報挿入処理202は、受け取った認可情報を、対応するストレージ制御コマンドに付加し(ステップS313(1))、そのストレージ制御コマンドを通信プロトコル処理203に渡し、ネットワークに送信可能なパケットに加工する(ステップS314)。あるいは、ネットワーク接続の場合(ステップS309-NO)、対象となるストレージ制御コマンドを通信プロトコル処理203に渡し、ステップS314でネットワークに送信可能なパケットに加工した後もしくはパケットに加工する過程において、認可情報挿入処理202は、受け取った認可情報を、ストレージ制御コマンドに付加する(ステップS313(2))。その後、通信プロトコル処理203はパケットを通信I/F部104を介して情報記録装置120に向けて送信し(ステップS315)、処理を終了する(ステップS316)。
なお、図3Aに示すように、認可が必要なストレージ制御コマンドではなかった場合(ステップS305-NO)、ストレージプロトコル処理201は、ストレージ制御コマンドのアクセス先がローカル接続しているものか、ネットワークを介して接続しているものかを判断する(ステップS306)。
ローカル接続の場合(ステップS306-YES)、計算機100による動作はB1に接続する。すなわち、図3Bに示すステップS311に進む。
一方、ネットワーク接続の場合(ステップS306-NO)、計算機100による動作はB2に接続する。すなわち、図3Bに示すステップS314に進む。なお、この場合、認可が必要なストレージ制御コマンドではないので、認可情報をストレージ制御コマンドに付加するステップS313(2)の動作は行われない。
図3Aおよび図3Bの動作シーケンスではストレージ制御コマンドを不揮発性記録部103もしくは情報記録装置120に送信した後の応答処理については記載していないが、本実施形態を適用してない場合と同様の応答処理を行い、アプリケーション200に処理が戻るものとする。
(動作シーケンス 認可情報の取得)
続いて、図4を用いて認可情報要求処理204が行う認可情報取得処理の詳細を述べる。図3Aおよび図3Bで述べたように、認可情報取得処理は処理中のストレージ制御コマンドに対応する認可情報を保持していない場合に実行される(ステップS307-NO、S401)。本処理が実行されると、認可情報要求処理204は、最初に認可情報の要求に必要なコンテキスト情報が揃っていることを確認する(ステップS402)。つまり、認可情報要求処理204は、コンテキスト情報保存部207におけるコンテキスト情報の取得・保存状況を確認する。
コンテキスト情報が揃っていれば(ステップS403-YES)、認可情報要求処理204は、認可情報を要求する処理へと進む。コンテキスト情報が揃っていなければ(ステップS403-NO)、認可情報要求処理204は、コンテキスト情報収集処理205の実行を指示する(ステップS404)。
認可情報要求処理204の指示を受けてコンテキスト情報収集処理205が実行される。この処理は計算機100で実行されるOS(図示せず)や計算機100に実装されている様々なデバイス(図示せず)を介して得られる情報を集める処理である。集める情報は認可サーバ110のポリシーに依存するが、例えば、現在実行しているOSのバージョン、セキュリティパッチの適用状態、アンチウィルスソフトなどのセキュリティ対策の実施状況、使用しているユーザの識別子、実行しているアプリケーション200の識別子、ネットワークへの接続状態やIPアドレス、不揮発性記録部103や情報記録装置120に保存されている情報のうち参照している情報のアプリレベル識別子やストレージレベル識別子(なお、収集するタイミングで参照しているものでもよいし、前回の収集したタイミングから今回収集するタイミングまでの期間で参照されたものでもよい)、通信の通信相手(同様に、収集するタイミングで通信している相手だけでもよいし、前回の収集したタイミングから今回収集するタイミングまでの期間で実行された通信の相手全てであってもよい)、通信の内容(例えばアプリケーション200がウェブブラウザであった場合、参照したURLを含む。URLを集める期間の考え方については通信相手に対する期間と同様に扱う)などである。GPSや各種無線装置に基づく物理的な位置が取得できる仕組みを有している場合には、計算機100の現在位置を収集してもよい。照度センサや加速度センサなどを具備している場合には、使用位置の明るさ、計算機100が静止しているか動いているか、どのような向きで使用されているかなどの情報を収集しても良い。マイクが具備されている場合には、事前に設定された時間の音声を記録して収集してもよい。カメラが具備されている場合には、事前に設定されたタイミングで画像や動画を記録して収集してもよい。いずれにせよ、コンテキスト情報収集処理205は様々な情報を収集し、揮発性記録部102のコンテキスト情報保存部207に保存する。
認可情報要求処理204はコンテキスト情報収集処理205の実行を指示した後、一定時間待機してコンテキスト情報が保存されるのを待つ(ステップS405)。所定時間が経過するとコンテキスト情報保存部207の保存状態を確認する(ステップS406)。コンテキスト情報が保存されていれば(ステップS406-YES)、ステップS403に戻る。保存されていなければ(ステップS406-NO)、ステップS405に戻って再び一定時間待機する。
コンテキスト情報が揃っていた場合(ステップS403-YES)、認可情報要求処理204は、認可情報の要求に必要なコンテキスト情報をコンテキスト情報保存部207から読み出す(ステップS407)。認可情報の要求に必要なコンテキスト情報は、対応する読み書き要求が発生した際の状況と理由の少なくとも一方を示す。そして、認可情報要求処理204は、読み出したコンテキスト情報を含む認可要求メッセージを生成し、通信プロトコル処理203に渡す。通信プロトコル処理203は認可要求メッセージをネットワーク130で送受信可能なパケットの形に整形し、通信I/F部104を介して認可サーバ110に送信する(ステップS408)。
その後、認可情報要求処理204は認可サーバ110から応答を受信するまで待機する(ステップS409)。この間、一定時間間隔で応答の受信を確認するようにしてもよいし、通信I/F部104や通信プロトコル処理203からのトリガーによって処理が再開されるようにしてもよい。いずれにせよ、応答が受信できているかどうかを確認し(ステップS410)、受信できていなければ(ステップS410-NO)、ステップS409に戻って待機する。また、一定期間にわたって応答が得られない場合にはタイムアウトエラーとして扱う(図示せず)。
応答を受信できていた場合(ステップS410-YES)、認可情報要求処理204は、その内容を確認(検証)する(ステップS411)。正常な応答と確認できた場合(ステップS412-YES)、認可情報要求処理204は、応答に含まれていた認可情報を抽出し、揮発性記録部102の認可情報一時保存部206に保存する(ステップS413)。認可情報要求処理204は、これにより処理を終了する(ステップS414)が、正常に取得できた旨を呼び出し元である認可情報挿入処理202に通知してもよい。
正常な応答と確認できなかった場合(ステップS412-NO)、対応するストレージ制御コマンドをエラーとして扱うためのエラー応答を生成するよう認可情報挿入処理202に通知し(ステップS415)、処理を終了する(ステップS416)。
以上が本実施形態における計算機100の基本的な動作シーケンスである。
(認可情報一時保存部)
揮発性記録部102に構成される認可情報一時保存部206について補足する。図5に認可情報一時保存部206の構成例を示す。図5では表形式(表500)での構成例を示している。実際のデータ構造としてはリストや配列、ハッシュ表などで構成すればよい。表500では各エントリは、認可情報を特定する識別子501、対応する認可情報の有効期限502、コンテキスト情報ハッシュ値503、および認可情報そのもの504で構成されている。認可情報504は認可サーバ110から受信した認可情報そのものを保持してもよいし、認可情報を保持している揮発性記録部102の中の領域に対するアドレスを保持してもよい。ひとつの実装の中で一方だけを使ってもよいし、両方を同時に使ってもよい。ここでは説明のため、行510は前者を、行511は後者を使った場合の例である(行511・列504は認可情報が保持されている領域505のアドレスを示す)。
列501の識別子は認可情報を要求した際のコンテキスト情報に基づいて生成される識別子である。例えば、識別子抽出処理209が抽出するアプリケーションやストレージプロトコル処理201の中で使われる識別子や一部のコンテキスト情報の組み合わせに基づく情報に対して、ハッシュ関数などを適用して生成する。この時、ハッシュ関数の衝突に備えてより詳細な識別情報を別途保存しておいてもよいし、検索コストを抑えるためにBloom Filterなどの仕組みを用いてもよい。
列502の有効期限は、認可情報を認可サーバ110から取得した際に通知される、もしくは取得した認可情報に保持されている有効期限である。コンテキスト情報が同じ認可情報に対してはこの有効期限内であれば、認可情報を再取得する必要が無い期限を示す。認可情報挿入処理202は、コンテキスト情報のハッシュ値と有効期限とを確認し、認可情報が再利用できるかどうかを判断する。
列503のコンテキスト情報ハッシュ値は、認可情報を認可サーバ110に要求した際に送信したコンテキスト情報に対するハッシュ値である。この値が同じであれば状況が変わっていないものと判断する。つまり、コンテキスト情報ハッシュ値は、対応するコンテキスト情報の識別子として用いられる。なお、時刻など絶えず変化する値については、ハッシュ値を計算する際に除外する、適切な値に調整する(例えば、現在時刻であれは10分単位にまとめるなど)などをしてよい。なお、列501の識別子もコンテキスト情報から計算される値であるが、コンテキスト情報ハッシュ値は認可サーバ110に送信した(原則として)すべてのコンテキスト情報から算出する。一方、列501の識別子は認可情報の生成由来を区別しうる一部のコンテキスト情報から算出する(これにより、識別子算出のオーバヘッドが小さくなる)。
(コンテキスト情報保存部)
揮発性記録部102に構成されるコンテキスト情報保存部207について補足する。図4の説明で述べた通り、コンテキスト情報は継続的に収集し保存してよい。その保存方法の一例として、図6に示すように、収集する情報ごとにリスト構造を構成し、コンテキスト情報保存部207に保存する方法が考えられる。この例では、保存するコンテキスト情報ごとにリストを構成しており、かつ各々のリストもリストを構成している。なお、片方向リストで構成しているが双方向リストでもよい。
一つ目のリストは要素601(1)~605(1)、二つ目のリストは要素601(2)、三つ目のリストは要素601(3)~603(3)、四つ目のリストは要素601(N)~604(N)である。各リストは、一つの種類のコンテキスト情報を表す。また、各リストは、例えば、コンテキスト情報の種類を特定するインデックス(識別子)とその最新の値へのリンクを保持しており、インデックス要素600(1)、600(2)、600(3)、・・・、600(N)がそれにあたる。
各要素の詳細は図6の下部に示した通りであるが、全体の構成も含めて一例であり他の形態に構成してもよい。例えば、図6の下部の左側に示すように、インデックス要素600(N)は、対応するコンテキスト情報の種類を特定する識別子と、当該コンテキスト情報の最新の値を含む要素(例えば、要素601(N))へのリンク612と、別の種類のコンテキスト情報のインデックス要素へのリンク611を含む。また、例えば、図6の下部の右側に示すように、要素601(N)は、対応するコンテキスト情報の具体的な値620と、当該値が収集された時刻621と、当該値の一つ前に収集された値を含む要素(例えば、要素602(N))へのリンク622とを含む。
また、多様な情報を柔軟に保存できる仕組みとして、データベースソフトウェアを利用して構成してもよい。データベースの形式はKey-Value(KV)型データベース、時系列データベース、リレーショナル型データベースなどを任意の形式を利用すればよい。保存するコンテキスト情報に応じて変えてもよいし、全体を一種類のデータベースで構成してもよい。その際、データベースソフトウェア自体は演算部101で動作し、保存する情報や管理情報をコンテキスト情報保存部207に保存する。また、コンテキスト情報の保存先として揮発性記録部102のコンテキスト情報保存部207を対象としていたが、一部または全部を不揮発性記録部103に保存してもよい。
その際、データベースアプリケーションが不揮発性記録部103に情報を保存したり情報を読み出したりする際に発生するストレージ制御コマンドは、認可不要なストレージ制御コマンドとして処理するようにしておく。これには、図7に示すような例外リストとして保持してもよいし、認可情報挿入処理202に埋め込みルールとして固定的に設定しておいてもよい。
(例外リスト)
図3AのステップS305に示したように、認可情報挿入処理202は認可情報の挿入が必要なストレージ制御コマンドと不要なストレージ制御コマンドを識別する必要がある。この識別処理は何らかの識別アルゴリズムに基づいて実現してもよいし、単純にセーフリストとブロックリストを用いて判断してもよい。セーフリストは、認可情報の挿入を必要としない条件を記載したものであり、記載された条件に該当しない場合には(すなわちデフォルトでは)、ストレージ制御コマンドに対する認可情報の挿入が必要と判断される。また、ブロックリストは、認可情報の挿入が必要な条件を記載したものであり、記載された条件に該当しない場合には(すなわちデフォルトでは)、ストレージ制御コマンドに対する認可情報の挿入が不要と判断される。
図7はセーフリストの例である。挿入要否はコンテキスト情報を用いて設定する。一例として図7では、ストレージ制御コマンドの発行元アプリケーション701、ストレージ制御コマンドの発行元アプリケーションを使用しているユーザ702、何らかのコンテキスト情報1 703のようにコンテキスト情報を組み合わせている。一連のコンテキスト情報の組み合わせによって挿入が必要または不要なコマンド704を特定する。
図7の例では前述の認可情報挿入処理202で用いる条件のみ例示したが、他のケースに例外リストを利用してもよい。例えば保護を必要としないアプリケーションやOSによるプログラムの読込み、などが考えられる。
(識別子抽出処理と識別子対応関係保存部)
識別子抽出処理209は、前述の通り(1)アプリケーション200が情報を特定するアプリレベル識別子を抽出し、(2)ストレージプロトコル処理部201が不揮発性記録部103や情報記録装置120の情報を識別するためのストレージレベル識別子との対応関係を生成する、という二つの処理を行う。処理の詳細は各実装に依存するため省略するが、一例として、各々に対応する以下の方法を挙げることができる。
アプリケーション200が情報を特定するアプリレベル識別子の抽出は、ファイルとして情報を管理する場合にはopen()システムコールを監視することで抽出できる。例えば、
PID=11298
open(“/data/confidentiaal_info.dat”, O_RDONLY, …)というシステムコールの実行が抽出できたとすると、PID(プロセスID)として11298を持つプロセスがファイル“/data/confidentiaal_info.dat”を読み出そうとしていることが分かる。PIDとプロセス名の対応やPIDと実行プログラムの場所(例えば、PID=11298のプロセスは/usr/sbin/example_daemonであること)などはOSの機能を使って容易に把握できる。
一方、前述の手順で特定したアプリレベル識別子(この例ではファイル名)を、ストレージプロトコル処理201がストレージ制御コマンドに格納するストレージレベル識別子と対応づけるためには、ストレージプロトコル処理201の中で両者の変換を行っている部分に注目し、その対応関係を抽出すればよい。ファイルとして情報を管理する本例では、open()システムコールの後で実行されるファイルシステムの処理(これは前記open()ではなくread()やwrite()システムコールであっても構わない)にて“/data/confidentiaal_info.dat”を不揮発性記録部103上の保存位置を特定するLogical Block Address(LBA)に変換する部分で抽出すればよい。ただしファイルには長さがあるため、先頭を特定するアドレスと長さによって対応関係を表現する必要がある。なお、一つのファイルが複数の小断片に分かれて保存されている場合もある。そのようなケースでは変換のたびに対応関係を抽出していけばよい。
識別子抽出処理209は、抽出した対応関係を、図8のように揮発性記録部102の識別子対応関係保存部208に保存する。この関係保持のデータ構造には、ストレージレベル識別子と長さの組をキーとしてアプリレベル識別子を値とするKey-Value Store(KVS)形式、3つの情報の組からなるリンクリスト形式や配列形式などが考えられる。図8では表800にストレージレベル識別子801と長さ802、アプリレベル識別子803を保持している。行810はファイル名とアドレスが1対1に対応している例であり、対応するアドレスと長さを保持している。行820はファイルが小断片に分かれて保存されている例であり、複数のアドレスと長さを保持している。
認可情報要求処理204は図3のステップS307において認可情報の要求要否を判断する際に、認可情報挿入処理202からストレージプロトコル処理201が生成したストレージレベル識別子(および長さ)を受け取り、識別子対応関係保存部208を参照してストレージレベル識別子(および長さ)からアプリレベル識別子を特定する。その後、アプリレベル識別子とその他のコンテキスト情報を用いて認可情報一時保存部206の検索に必要な識別子を生成する。認可情報要求処理204は、例えば、アプリレベル識別子と少なくとも一部のコンテキスト情報とにハッシュ関数を適用して算出されるハッシュ値を、認可情報一時保存部206の検索に必要な識別子として生成する。
(認可情報の付加処理;ローカルストレージの場合)
認可情報挿入処理202は図3BのステップS310やステップS313(1)およびステップS313(2)で示したように、ストレージ制御コマンドに対して適切な認可情報を付与する処理を行う。認可情報挿入処理202は、ストレージ制御コマンドに対して適切な認可情報を付与するために、認可情報を、ストレージ制御コマンドに挿入するか、あるいは関連付ける。なお、認可情報挿入処理202は、ストレージ制御コマンドに対応する読み書き要求に対して、認可情報を挿入するか、あるいは関連付けてもよい。
はじめにローカルストレージ用のストレージ制御コマンドに認可情報を付与する場合を述べる。ここではNVMeを想定して説明するが、他のストレージプロトコルであってもよい。
第1の方法として専用コマンドを追加する方法が考えらえる。NVMeには管理用のAdminコマンドセット、I/Oを実行するI/Oコマンドセットなどが定義されているが、そのコマンドの一つとして認可情報を通知するコマンドを定義する方法である。この場合、認可情報とそれによって制御されるコマンドとの対応関係を定義して通知する必要がある。
関係を定義する方法の一つとしてFUSED Operation機能を利用してもよい。FUSED Operationは連続する二つのコマンドを一体のものとして扱って一つの効果を得る操作であるが、その一つ目のコマンドで認可情報を伝達し、二つ目のコマンドでI/Oコマンドを伝達するようにする。コマンドを受信した側では一つ目の認可情報を処理した段階で「不許可」であればエラー扱いになり、二つ目のI/Oコマンドは実行されない。これを実現するため、認可情報挿入処理202は挿入対象のストレージ制御コマンドを受け取るとそれを二つ目のコマンドとみなして、認可情報を含む一つ目のコマンドを生成する。両コマンドをFUSED Operationとしてマーキングし、不揮発性記録部103に伝達する。
関係を定義する別の方法として、専用コマンドの中に認可対象となるストレージ制御コマンドの識別子を格納しておく方法がある。認可情報挿入処理202は挿入対象のストレージ制御コマンドを受け取ると、対応する識別子を抽出もしくは生成し、当該ストレージ制御コマンドの送信を保留する。その後、認可情報を送信する専用コマンドを生成し、その内部情報として前記識別子と認可情報を含める。最終的に、専用コマンド、認可情報の挿入対象となったストレージ制御コマンドの順で不揮発性記録部103に伝達する。
第2の方法としてメタデータとして扱う方法が考えられる。NVMeのコマンドにはコマンドに付随する情報を伝えるためのメタデータを扱うフィールドが用意されており、対応するコマンドの後に配置されたメタデータの開始位置を指定したり、別バッファとして保存されているメタデータの場所を通知したりできるようになっている。この機能を用いる場合、認可情報挿入処理202は挿入対象のストレージ制御コマンドを受け取ると、そのメタ情報ポインタのフィールドに認可情報が保存されたバッファのアドレスを指定する。その後は通常通り、認可情報の挿入対象となったストレージ制御コマンドを不揮発性記録部103に伝達する。なお、認可情報を対象となるストレージ制御コマンドに連続するバッファに配置し直したうえで、その位置をメタ情報ポインタのフィールドに指定してもよい。
(認可情報の付加処理;ネットワークストレージの場合)
続いて、ネットワーク130を介して接続するストレージに対するストレージ制御コマンドに認可情報を付与する場合を述べる。例えば、通信I/F部104およびネットワーク130を介して通信可能な外部の情報記録装置120に設けられるストレージと接続していることを検出した際には、認可情報挿入処理202は、認可情報を、読み書き要求(I/O要求)、ストレージ制御コマンド、読み書き要求またはストレージ制御コマンドを含む通信プロトコルのヘッダ部またはデータ部、および読み書き要求またはストレージ制御コマンドを含む通信プロトコルの第1のパケットとは異なる第2のパケットのヘッダ部またはデータ部、のいずれかを用いる方法で情報記録装置120に通知する。第1のパケットとは異なる第2のパケットのヘッダ部またはデータ部を用いて認可情報を通知する場合、通信プロトコル処理203および通信I/F部104は、例えば、第1のパケットを送受信する物理接続または論理接続とは異なる物理接続または論理接続を用いる。
以下では、NVMe/TCPの場合を例に述べるが、他のネットワークストレージプロトコルでも同様の考え方で適用できる。
第1の方法は、認可情報をNVMe/TCPで運ぶNVMeプロトコルの部分に付与する方法である。この場合、前述のローカルストレージと同様に処理すればよい。パケットに加工する前に認可情報の付与ができるので、図3BのフローチャートではステップS313(1)で付与する場合に相当する。
ただし、同じNVMeであってもコマンドを送信する通信プロトコルによって制約が異なる場合がある(例えばNVMe/TCPではメタ情報を対象コマンドと分離した状態での送信はサポートされない)。このため、適用可能な方法のみを利用することになる。
第2の方法は、認可情報を通信プロトコルの部分に付与する方法である。この場合、パケットに加工した後もしくはパケットに加工する過程において認可情報を付与する。図3BのフローチャートではステップS313(2)で付与する場合に相当する。本方法の場合、例えばIPヘッダのオプション(IPv4 ヘッダオプション、IPv6 Destination Options Header)とする方法、TCPヘッダのオプションとする方法、新たなフィールドとして追加する方法の3つの可能性がある。
IPオプションやTCPオプションとして追加する場合、すでにパケットが形成されていればそれを走査して挿入場所を決め、その前後の領域に位置するフィールドに合わせて認可情報の前に付与するIPオプションヘッダ/TCPオプションヘッダを追加し、その後に認可情報を挿入する。パケットを生成する過程であれば、IPヘッダ(またはTCPヘッダ)を生成する段階で認可情報とそれに追加で付与するオプションヘッダのサイズに相当するバッファ領域を確保し、まとめてIPヘッダ(またはTCPヘッダ)として生成する。図9は、IPオプションまたはTCPオプションとして、認可情報をパケットに追加する例を示す。
IPオプションやTCPオプションとして追加する場合、パケットロスによる再送を考慮した認可情報の再付与の仕組みが必要になる。例えば、TCPヘッダのシーケンス番号と付与する認可情報との対応関係を維持しておき、受信確認ができるまで保持しておく必要がある。なお、IPオプションとして挿入する際にも再送はTCPが行うため、TCPオプションとして挿入する場合と同じ処理が必要になる。これを実現するため、例えば図10のように対応関係を揮発性記録部102に保持しておく。図10はTCPコネクションを識別する5タプル(宛先IPアドレス、送信元IPアドレス、宛先ポート番号、送信元ポート番号、プロトコル)1001、送信したパケット(=認可情報を付与したパケット)のシーケンス番号1002、対応する認可情報の識別子1003で構成しており、送信パケットごとに行のエントリを追加し、受信確認ができたら削除される。
なお、認可情報挿入処理202が再送を検出できる場合には、検出のたびに前述の情報を参照して対応する認可情報を埋め込む。これは、例えば、認可情報挿入処理202に複数の実行方法を設け、呼び出し側となる通信プロトコル処理203が通常送信で呼び出す場合と再送で呼び出す場合を区別することで実現できる。一方、認可情報挿入処理202が再送を検出できない場合は、挿入対象となるパケットを受け取った際に、都度シーケンス番号を確認して送信済みの認可情報を付与するべきか、新しく通知されてきた認可情報を付与するべきかを判断する。
新たなフィールドとして追加する場合、その挿入位置によって必要な処理が異なる。TCPヘッダの直後(TCPオプションと位置は同じだが、TCPデータとして扱うようにする)やNVMeデータの直後(すなわち、パケットの最後)に付与する場合にはTCPに対するデータとして扱われるため、前述の再送への対応は不要となる。一方、それ以外の位置に挿入する場合(例えば、IPヘッダの後でIPオプションとして扱わない場合、IPヘッダの前に挿入する場合)は再送への対応が必要となる。
NVMe/TCPでは、一つのTCPパケットに複数のNVMeパケットを格納する場合や、一つのNVMeパケットが複数のTCPパケットに分割されて格納される場合がある。本実施形態では認可情報をストレージ制御コマンドの単位で付与する必要があるため、複数のNVMeパケットを格納する場合はIPオプションやTCPオプションとして付与する方法は使用できない(つまり、NVMeのプロトコル部分に付与する方法しか採用できない)。また、複数のTCPパケットに分割される場合には、先頭のパケットにだけ認可情報を付与すればよい。
(認可情報の付加処理;ネットワークストレージで複数のコネクションを使う場合)
認可情報をパケットに付与する場合、NVMe/TCPの通信処理に影響を与えてしまう。それを避けるため、新たに確立したTCPコネクションを利用して認可情報を送信してもよい。受信側である情報記録装置120は、主たるTCPコネクションを用いたNVMeによるストレージ制御コマンドを含むパケットの受信に加え、第2のTCPコネクションで認可情報を含むパケットを受信して、ストレージ制御コマンドに対応づけたうえで、認可情報に基づいてストレージ制御コマンドを実行すればよい。例えば、NVMe/TCPでストレージとして利用を始めるTCPコネクション(第1のTCPコネクション)確立時に、追加で認可情報用の第2のTCPコネクションを確立する。ストレージ制御コマンドの送信時に、当該ストレージ制御コマンドを特定する識別子を生成し、識別子と認可情報をペアにして第2のTCPコネクションに送信する。なお、第1のTCPコネクションの確立に用いられる物理接続が、第2のTCPコネクションに用いられる物理接続と異なっていてもよい。
ストレージ制御コマンドと認可情報との送信順序は、ストレージ制御コマンドを先に送信して後から認可情報を送信する方法と、先に認可情報を送信して後からストレージ制御コマンドを送信する方法がある。認可情報のサイズが小さくてストレージ制御コマンド(およびそのデータ)が大きい場合には、先に認可情報を送るほうが良い。こうすることで受信側の情報記録装置120において、サイズが大きなストレージ制御コマンド(およびデータ)を長時間バッファする必要が無くなる。一方、READコマンドのようにストレージ制御コマンドの実行から応答を得るまでに時間かかる場合、先にストレージ制御コマンドを送信し、後から認可情報を送信するようにしてもよい。こうすることで受信側の情報記録装置120は投機的にストレージ制御コマンドを実行し、応答を返す直前に認可情報を判断して応答を返すか否かを判断することができる。これにより処理時間が隠蔽できる可能性がある。
なお、認可情報の送受信にはTCP以外の通信プロトコルを使ってもよい。例えばUser Datagram Protocol(UDP)を使ってもよいし、UDPベースで再送機能を備えるQuick UDP Internet Connections(QUIC)を使ってもよい。第2のTCPコネクションや別の通信プロトコルを使った送受信方法の維持管理は、認可情報挿入処理202が通信プロトコル処理203を制御して実現すればよい。
(認可情報の保護)
本実施形態で述べた認可情報は、認可サーバ110が生成する際に適切に暗号化もしくはメッセージダイジェストなどの暗号学的ハッシュ関数により生成されたハッシュ値が付与されているとする。これにより計算機100上で動作する不正なプログラムが認可情報を改変したとしても、それを受信する不揮発性記録部103や情報記録装置120は異常を検出することができる。
(第1実施形態 まとめ)
以上が第1実施形態である。計算機100では、ユーザもしくはアプリケーション200が要求するストレージ(例えば、不揮発性記録部103、情報記録装置120)へのアクセスに対して、ユーザもしくはアプリケーションの介在を排した状態でストレージアクセスに必要な認可を自動取得したうえで、ストレージ制御コマンドが発行される。これにより、不正な操作によってストレージに保存されている情報が読み出されたり、不正な情報をストレージに書き込まれたりする可能性を減らすことができる。
(第2実施形態)
第1実施形態に係る計算機100は、アプリケーション200などを実行する演算部101において第1実施形態の基本的な処理(認可情報挿入処理202、認可情報要求処理204、コンテキスト情報収集処理205)を実行している。そのため、もし特権ユーザに昇格できるユーザやプログラムが不正な行為を行うと、途中の処理が改変される恐れがある。例えば認可情報とストレージ制御コマンドの対応関係を意図的に変更する不正が考えられる。この場合、実行が許可されたストレージ制御コマンドの認可情報を実行が禁止されるべきストレージ制御コマンドに埋め込むことで、不正な読み出しや書き込みが実現できてしまう。また、不正な認可情報を挿入してすべてのストレージアクセスを妨害する攻撃も考えられる。
(構成要素とその説明)
このような課題に対応するため、演算部の一部処理が安全に実行されるように変更する。図11は本実施形態の構成例を示すブロック図である。第1実施形態と同じ構成要素には同じ番号を付している。
計算機1100は第1実施形態とほぼ同じ構成であるが、演算部1101の中にセキュア領域1102が設けられている。セキュア領域1102の中には認可情報挿入処理202、認可情報要求処理204が含まれている。また揮発性記録部1103の一部にもセキュア領域1104が設けられ、演算部1101のセキュア領域1102からだけ参照できるような制限が設けられている。つまり、セキュア領域1104は、演算部1101のセキュア領域1102からだけ利用可能な隔離領域である。セキュア領域1104には、例えば、認可情報一時保存部206が含まれている。セキュア領域1102の内部で動作する一つ以上の処理は、外部で動作する別の一つ以上の処理とは分離して実行され、特定の条件を満たした場合に、内部の一つ以上の処理を外部の一つ以上の処理との間で情報および制御のやり取りが可能になる。具体的には、セキュア領域1102の内部で動作する一つ以上の処理と外部で動作する一つ以上の処理は、所定の手続きに基づく情報および制御の送受が必要である。所定の手続きに基づく情報および制御の送受は、例えば、特定のApplication Programming Interface(API)を用いた情報の送受である。これにより、例えば、設計時に想定していない不正なプログラムが不正な認可情報の埋め込みを認可情報挿入処理202に依頼することはできなくなる。認可情報要求処理204が認可サーバ110から取得し、認可情報一時保存部206に保存されている認可情報も、不正なプログラムによる改変を受けたり読み出されたりしないようになる。
なお本実施形態を実現するにあたり、演算部1101の中に特定の処理を安全に実行するセキュア領域1102を設けて、そのセキュア領域1102内で実行される処理を安全とみなすようにしてもよいし(図11の場合はこの方法)、演算部1101全体を安全とした上で特定の処理(のプログラム)を揮発性記録部1103上のセキュア領域1104に保存して実行することで、その処理を安全とみなしてもよい。この場合、それ以外の処理(プログラム)は揮発性記録部1103のセキュア領域1104以外の場所に保存したうえで実行されることになる。例えば、図11と同様の構成を実現する場合、認可情報挿入処理202のプログラムと認可情報要求処理204のプログラムとがセキュア領域1104に保存され、それ以外の処理のプログラムがセキュア領域1104以外の場所に保存されて、実行される。
(動作シーケンス)
本実施形態の動作シーケンスは、第1実施形態と同じである。
(第2実施形態 まとめ)
以上が第2実施形態である。演算部1101にセキュア領域1102を設け、認可情報を扱う処理をその内部で実行することにより、より安全に認可情報を扱えるようになる。また、揮発性記録部1103にセキュア領域1104を設け、セキュア領域1104に認可情報一時保存部206を含めることで、認可情報一時保存部206に保存している認可情報に対する不正からも守ることができるようになる。
(第3実施形態)
これまでに述べた第1および第2実施形態では、計算機100、1100、特に演算部1101の内部で動作するソフトウェアとしてストレージ制御コマンドに認可情報を挿入して、ストレージに送信する実施形態だった。そのため、計算機100、1100に内蔵したローカルストレージとネットワークを介して利用するネットワークストレージとの双方に適用できた。第3実施形態ではネットワークを介して接続するストレージ装置に注目する。そして、通信I/F部に認可情報挿入処理とそれに必要な認可情報の一時保存処理をオフロードすることにより、演算部の負荷低減を図る。
(構成要素とその説明)
図12は本実施形態の構成例を示すブロック図である。図12の各構成要素は、これまでと同じ機能を具備する部分もあるが、改めて番号を振りなおしている。本実施形態の計算機1200は、演算部1201、揮発性記録部1208、通信I/F部1211、不揮発性記録部1215で構成される。不揮発性記録部1215は、演算部1201で実行されるプログラムやデータなどを保持する部分であり、第1実施形態もしくは第2実施形態による認可情報を伴ってアクセスを保護するように実装されていてもよい。
演算部1201は計算機1200で実行されるアプリケーション1202、ストレージプロトコル処理1203、通信プロトコル処理1206、認可情報要求処理1204、コンテキスト情報収集処理1205、識別子抽出処理1207などを実行する部分である。
揮発性記憶部1208は演算部1201が実行する処理のプログラムを一時的に保持したり、処理のデータを保持したりする機能を持つ。また、揮発性記憶部1208は、第1および第2実施形態と同様にコンテキスト情報を保持するコンテキスト情報保存部1209を具備する。また、揮発性記憶部1208は、アクセス対象の情報に対してアプリケーション1202が用いる識別子(アプリレベル識別子)とストレージプロトコルが用いる識別子(ストレージレベル識別子)の対応を保持する識別子対応関係保存部1210を具備していてもよい。
通信I/F部1211は、演算部1201で実行されるアプリケーション1202などが計算機1200の外部と通信する際にパケットを送受信する機能を具備するほか、ネットワーク130を介して接続するストレージ(例えば、情報記録装置120)にアクセスする際に、必要に応じて認可情報を挿入する機能(認可情報挿入処理1212)を具備する。演算部1201で実行される各処理が通信I/F部1211に対して認可情報の挿入を指示する処理は、ハードウェア制御で用いられる一般的なインタフェース(例えば、Memory-Mapped I/O(MMIO)やDirect Memory Access(DMA)転送など)で実現してよい。
なお、通信I/F部1211が適切なパケットに認可情報を挿入するために、通信I/F部1211は認可情報とパケットの対応関係を、ストレージプロトコル処理1203および通信プロトコル処理1206から受信する機能を具備する。この通知は例えば、パケットを識別するための情報(例えば、IPヘッダのIDフィールドの値やTCPヘッダのシーケンス番号フィールドの値、パケットの一部または全体にわたって計算されたハッシュ値など)と認可情報を、通信に先立って専用の制御コマンドで通知することで実現できる。さらに通知した認可情報を通信I/F部1211で一時保存可能か否かを指定してもよい。保存可能と通知された認可情報は、認可情報一時保存部1213で保持しておき、後続の関連するパケットに付加できる。その際、後続の関連するパケットを識別する条件(すなわち、後続の関連するパケットを識別するための情報)も前記通知に含めてよい。この場合、通信I/F部1211は、認可情報を、後続の関連するパケットを識別する条件に関連付けて、認可情報一時保存部1213で保存する。なお、TCPヘッダのシーケンス番号などから自明な繋がりで識別可能であれば、後続の関連するパケットを識別する条件を通知しなくてもよい。
また、通信I/F部1211が通知に基づいて認可情報の埋め込みを試みた際に、適切な認可情報が認可情報一時保存部1213に保存されていない場合、新たな認可情報の取得を促すために演算部1201に通知する機能も具備する。この通知は、例えば通信I/F部1211が所定のフラグをセットした状態で割り込みを発行して、ディスクリプタなどの適切な形で必要な認可情報の識別子を通知する等の方法で実現できる。
(動作シーケンス)
本実施形態の動作シーケンスを図13に示す。基本的には図3Aおよび図3Bを踏襲しているが、ネットワーク130を介したストレージ(例えば、情報記録装置120)を前提とする点および認可情報の挿入を通信I/F部1211で行う点に依存するステップが変更されている。
本動作シーケンスは、他の実施形態と同様にアプリケーション1202でデータの読み書き要求が発生することで始まる(ステップS1301、S1302)。アプリケーション1202の要求はストレージプロトコル処理1203でストレージ制御コマンドに変換され、通信プロトコル処理1206にてストレージ制御コマンドを含むパケットが生成される(ステップS1303)。その後、パケットは通信I/F部1211に通知される(ステップS1304)。
ストレージ制御コマンドを含むパケットを受信した通信I/F部1211は、通知されたパケットが認可の必要なストレージ制御コマンドを含んでいるかどうかを確認する(ステップS1305)。認可が不要なストレージ制御コマンドだった場合(ステップS1305-NO)、通信I/F部1211は、そのままパケットをネットワーク130に送信して処理を終了する(ステップS1308、S1309)。
認可が必要なストレージ制御コマンドだった場合(ステップS1305-YES)、通信I/F部1211は、対象のストレージ制御コマンド(またはパケット)が認可情報取得済みのストレージ制御コマンドかどうかを確認する(ステップS1306)。取得済みだった場合(ステップS1306-YES)、通信I/F部1211は、パケットを特定する識別子を抽出または算出したうえで、その識別子に対応する認可情報を認可情報一時保存部1213から読み出し、パケットに付加する(ステップ1307)。より具体的には、通信I/F部1211は、例えば、対象のストレージ制御コマンドを含むパケットが、認可情報一時保存部1213に保存された認可情報に対応する関連する後続パケットを識別する条件に該当する場合、その認可情報をパケットに付加する。その後、通信I/F部1211は、パケットをネットワーク130に送信して処理を終了する(ステップS1308、S1309)。
認可情報を取得できていないパケットだった場合(ステップS1306-NO)、通信I/F部1211は演算部1201に対して認可情報の取得を要求する(ステップS1310)。要求を受けた演算部1201(より詳しくは認可情報要求処理1204)では認可情報を認可サーバ110に要求し、取得する(ステップS1311)。ステップS1311の処理は図4で示した処理と同じであるため詳細は省略する。認可情報を正常に取得できなかった場合(ステップS1312-NO)、演算部1201は、認可情報の取得が必要となったストレージ制御コマンドに対するエラー応答を生成し(ステップS1314)、アプリケーション1202にエラー応答を返す(ステップS1315)。さらに、演算部1201は、通信I/F部1211で認可情報の取得を要求する契機となったパケットを破棄してエラー処理をするように通知する(ステップS1316)。この通知には、認可情報の通知で使うものと同じ仕組みを用いてよい。
認可情報を正常に取得できた場合(ステップS1312-YES)、演算部1201は、通信I/F部1211に認可情報を通知するとともに、認可情報の取得を要求する契機となったパケットとの対応関係を通知する(ステップS1313)。その後、通信I/F部1211はパケットに認可情報を付加する処理を再開し、パケットに認可情報を付加したうえで(ステップS1307)、パケットをネットワーク130に送信して(ステップS1308)、処理を終了する(ステップS1309)。
以上が本実施形態の動作シーケンスである。
(第3実施形態 まとめ)
以上が第3実施形態である。対象となるデータの保存先をネットワーク130越しに接続するストレージとした場合に、認可情報の挿入処理を演算部から通信I/F部にオフロードする構成とした。これにより、認可情報の付加に係る処理のオーバヘッドが削減でき、ストレージI/O処理の性能劣化を抑えて安全性を確保できるようになる。
(第4実施形態)
第4実施形態は第3実施形態の変形であり、認可情報挿入処理に加えてストレージプロトコル処理の一部と通信プロトコル処理も通信I/F部にオフロードする。
(構成要素とその説明)
図14は本実施形態の構成例を示すブロック図である。図12に示した第3実施形態との違いはストレージプロトコル処理がストレージプロトコル処理(前半)1403とストレージプロトコル処理(後半)1411に分割されていること、ストレージプロトコル処理(後半)1411と通信プロトコル処理1414が通信I/F部1410にオフロードされていることである。そのほかの構成要素については第3実施形態と同じである。
ストレージプロトコル処理は、ファイルシステムの処理などローカルストレージへのアクセスに必要な処理か否かで大きく分割する。ローカルストレージへのアクセスに必要な処理はストレージプロトコル処理(前半)1403に含まれ、ネットワークを介して接続するストレージに固有の処理をストレージプロトコル処理(後半)1411に含める。ストレージプロトコル処理(前半)1403は、通信プロトコル(例えばNVMe)に依存しない処理である。ストレージプロトコル処理(後半)1411は、通信プロトコルに依存する処理である。
(動作シーケンス)
図15に本実施形態の動作シーケンスを示す。このシーケンスは図13に示した第3実施形態とほぼ同じである。読み書きの要求がストレージ制御コマンドの状態で通信I/F部1410に通知されるため、それに対応する部分が変更されている(ステップS1503、S1504、S1507、S1508、S1509、S1515、S1518)。以下、変更があったステップについて述べる。
ステップS1503は、ストレージプロトコル処理がストレージプロトコル処理(前半)1403とストレージプロトコル処理(後半)1411に分割されたことによる変更である。このステップS1503ではストレージプロトコル処理(前半)1403で実行可能なストレージ制御コマンドの生成までを行う。そのうえで、ステップS1504にてストレージ制御コマンドを通信I/F部1410に通知する。
ステップS1507とステップS1509は認可情報をストレージ制御コマンドに埋め込む形態により実行する場合と、実行しない場合がある。ステップS1507は認可情報をストレージプロトコルのレベルでストレージ制御コマンドへ埋め込む場合に実行するステップである。一方、ステップS1509は認可情報を通信プロトコルのレベルでパケットへ埋め込む場合に実行するステップである。これらの処理に挟まれるステップS1508はストレージ制御コマンドをパケットに加工するステップであり、新たに通信I/F部1410にオフロードした通信プロトコル処理1414で行う。
ステップS1515は演算部1401と通信I/F部1410とが認可情報を付加する対象を識別する方法がストレージ制御コマンドに変わったことによる変更である。すなわち、通信I/F部1410から通知されたストレージ制御コマンドと新たに取得した認可情報の対応関係を、演算部1401から通信I/F部1410に通知するように変更している。S1518も同様の変更である。
(第4実施形態 まとめ)
以上が第4実施形態である。対象となるデータの保存先をネットワーク130越しに接続するストレージとした場合に、認可情報の挿入処理に加えてストレージプロトコル処理の一部(ストレージプロトコル処理(後半)1411)と通信プロトコル処理1414を演算部から通信I/F部にオフロードする構成とした。これにより、認可情報の付加に係る処理のオーバヘッドがさらに削減でき、ストレージI/O処理の性能劣化を抑えて安全性を確保できるようになる。
(第3・第4実施形態の補足)
第3・第4実施形態の構成は、第1実施形態を元に一部の処理を通信I/F部にオフロードした。これに加え、第2実施形態で述べたセキュア領域1102,1104の概念を適用してもよい。すなわち、通信I/F部1211,1410にオフロードする処理のうち、認可情報の埋め込みに関する部分および認可情報の一時保存に関する部分をセキュア領域として実装して保護してもよい。さらに、演算部1201,1401の認可情報要求処理1204,1404も演算部1201,1401内のセキュア領域内に実装し、演算部1201,1401と通信I/F部1211,1410のセキュア領域とが連携して動作するように実現してもよい。
以上説明したように、第1乃至第4実施形態によれば、情報記録装置への不正なアクセスを防止できる。演算部は、アプリケーションプログラムを実行する。演算部は、アプリケーションプログラムから不揮発性記録部に対する第1のI/O要求を受信し、第1のI/O要求に基づいて不揮発性記録部を制御するための一つ以上の第1制御コマンドを生成し、不揮発性記録部を制御するストレージプロトコル処理を実行する。演算部は、第1のI/O要求または一つ以上の第1制御コマンドが、不揮発性記録部にアクセスするために認可情報を必要とするか否かを判断する認可情報要否判断処理を実行する。演算部は、第1のI/O要求または一つ以上の第1制御コマンドが、不揮発性記録部にアクセスするために認可情報を必要とすると判断した場合、外部のサーバ装置と通信インタフェース部を介して通信を行って、第1のI/O要求が発生した際の状況と理由の少なくとも一方を示すコンテキスト情報をサーバ装置に送信するとともに認可情報を要求し、サーバ装置から認可情報を取得する認可情報取得処理を実行する。演算部は、第1のI/O要求または一つ以上の第1制御コマンドに、取得した認可情報を挿入するか、あるいは関連付ける認可情報挿入処理を実行する。演算部は、認可情報取得処理で認可情報を要求する前に、サーバ装置に送信するコンテキスト情報を収集し、一時記録部に保存するコンテキスト収集処理を実行する。
よって、計算機では、例えば、アプリケーションが生成するストレージ(例えば、不揮発性記録部103、情報記録装置120)へのI/O要求に対して、アプリケーションの介在を排した状態で、ストレージへのアクセスに必要な認可情報を自動取得したうえで、ストレージ制御コマンドを発行する。これにより、不正な操作によってストレージに保存されている情報が読み出されたり、不正な情報をストレージに書き込まれたりする可能性を減らすことができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
100…計算機、101…演算部、102…揮発性記録部、103…不揮発性記録部、104…通信インタフェース部、110…認可サーバ、120…情報記録装置、130…ネットワーク、200…アプリケーション、201…ストレージプロトコル処理、202…認可情報挿入処理、203…通信プロトコル処理、204…認可情報要求処理、205…コンテキスト情報収集処理、206…認可情報一時保存部、207…コンテキスト情報保存部、208…識別子対応関係保存部、209…識別子抽出処理。

Claims (14)

  1. 不揮発性記録部との間で情報を入出力する処理を含むアプリケーションプログラムを実行する計算機であって、
    演算部と、
    前記計算機の外部の装置と通信プロトコルに従って通信するための通信インタフェース部と、
    前記演算部が使用する情報を一時的に保存する一時記録部と、
    を備え、
    前記演算部は、
    前記アプリケーションプログラムと、
    前記アプリケーションプログラムから前記不揮発性記録部に対する第1のI/O要求を受信し、前記第1のI/O要求に基づいて前記不揮発性記録部を制御するための一つ以上の第1制御コマンドを生成し、前記不揮発性記録部を制御するストレージプロトコル処理と、
    前記第1のI/O要求または前記一つ以上の第1制御コマンドが、前記不揮発性記録部にアクセスするために認可情報を必要とするか否かを判断する認可情報要否判断処理と、
    前記第1のI/O要求または前記一つ以上の第1制御コマンドが、前記不揮発性記録部にアクセスするために認可情報を必要とすると判断した場合、外部のサーバ装置と前記通信インタフェース部を介して通信を行って、前記第1のI/O要求が発生した際の状況と理由の少なくとも一方を示すコンテキスト情報を前記サーバ装置に送信するとともに認可情報を要求し、前記サーバ装置から認可情報を取得する認可情報取得処理と、
    前記第1のI/O要求または前記一つ以上の第1制御コマンドに、取得した前記認可情報を挿入するか、あるいは関連付ける認可情報挿入処理と、
    前記認可情報取得処理で認可情報を要求する前に、前記サーバ装置に送信する前記コンテキスト情報を収集し、前記一時記録部に保存するコンテキスト収集処理と、
    を実行する、
    計算機。
  2. 前記演算部はさらに、
    前記アプリケーションプログラムが前記不揮発性記録部との間で第1情報を入出力する前記第1のI/O要求から、前記第1情報を特定するために用いる第1の識別子を抽出し、
    前記第1の識別子を含む前記不揮発性記録部への前記第1のI/O要求から前記ストレージプロトコル処理において前記不揮発性記録部を制御するために生成される前記一つ以上の第1制御コマンドから、前記第1情報を特定するために用いる一つ以上の第2の識別子を抽出し、
    前記第1の識別子と前記一つ以上の第2の識別子とを対応づけて前記一時記録部に保存する識別子抽出処理をさらに実行し、
    前記認可情報挿入処理は、前記一つ以上の第1制御コマンドに、取得した前記認可情報を挿入するか、あるいは関連付ける場合、前記識別子抽出処理により生成され、前記一時記録部に保存されている前記第1の識別子と前記一つ以上の第2の識別子の対応関係を用いて、取得した前記認可情報を挿入または関連付ける前記一つ以上の第1制御コマンドを特定する、
    請求項1に記載の計算機。
  3. 前記認可情報取得処理はさらに、取得した前記認可情報、および前記認可情報の有効期限を、前記第1の識別子と前記一つ以上の第2の識別子の少なくとも一方と、前記認可情報を取得するために用いた前記コンテキスト情報に対する識別子とに関連付けて、前記一時記録部に保存し、
    前記ストレージプロトコル処理はさらに、前記アプリケーションプログラムとの間で前記不揮発性記録部に対する第2のI/O要求を受信し、前記第2のI/O要求に基づいて前記不揮発性記録部を制御するための一つ以上の第2制御コマンドを生成し、前記不揮発性記録部を制御し、
    前記認可情報要否判断処理はさらに、前記第2のI/O要求または前記一つ以上の第2制御コマンドが、前記不揮発性記録部にアクセスするために認可情報を必要とするか否かを判断し、
    前記認可情報挿入処理は、前記第2のI/O要求または前記一つ以上の第2制御コマンドが、前記不揮発性記録部にアクセスするために認可情報を必要とすると判断され、且つ前記第2のI/O要求または前記一つ以上の第2制御コマンドに対応する有効期限内の認可情報が前記一時記録部に保存されている場合、前記第2のI/O要求または前記一つ以上の第2制御コマンドに対応する有効期限内の認可情報を、前記第2のI/O要求または前記一つ以上の第2制御コマンドに挿入するか、あるいは関連付ける
    請求項2に記載の計算機。
  4. 前記演算部はさらに、
    前記不揮発性記録部が前記通信インタフェース部を介して通信可能な外部装置を介して接続されていることを検出した場合に、I/O要求もしくは制御コマンドを通信プロトコルのデータとして扱って前記外部装置との間で通信を行う通信プロトコル処理
    を実行し、
    前記認可情報挿入処理は、前記不揮発性記録部が前記通信インタフェース部を介して通信可能な前記外部装置を介して接続していることを検出した際には、取得した前記認可情報を、I/O要求、制御コマンド、I/O要求または制御コマンドを含む通信プロトコルのヘッダ部またはデータ部、およびI/O要求または制御コマンドを含む通信プロトコルの第1のパケットとは異なる第2のパケットのヘッダ部またはデータ部、のいずれかを用いる方法で前記外部装置に通知する
    請求項3に記載の計算機。
  5. 前記認可情報挿入処理は、前記第1のパケットと異なる前記第2のパケットのヘッダ部またはデータ部を用いて、取得した前記認可情報を通知する場合、前記第1のパケットを送受信する物理接続または論理接続とは異なる物理接続または論理接続を用いる
    請求項4に記載の計算機。
  6. 前記演算部は、
    一つ以上の処理を別の一つ以上の処理とは分離して実行し、特定の条件を満たした場合に、前記一つ以上の処理を前記別の一つ以上の処理との間で情報および制御のやり取りが可能なセキュア領域を備え、
    前記認可情報取得処理と前記認可情報挿入処理とを前記セキュア領域で実行し、
    前記一時記録部は、
    前記演算部の前記セキュア領域から利用可能な隔離領域を有し、
    前記サーバ装置から取得した前記認可情報を前記隔離領域に一時的に保存する、
    請求項1乃至請求項5のいずれか一項に記載の計算機。
  7. 不揮発性記録部との間で情報を入出力する処理を含むアプリケーションプログラムを実行する計算機であって、
    演算部と、
    前記計算機の外部の装置と通信プロトコルに従って通信するための通信インタフェース部と、
    前記演算部が使用する情報を一時的に保存する第1の一時記録部と、
    を備え、
    前記演算部は、
    前記アプリケーションプログラムと、
    前記アプリケーションプログラムとの間で前記不揮発性記録部に対する第1のI/O要求を受信し、前記第1のI/O要求に基づいて前記不揮発性記録部を制御するための一つ以上の第1制御コマンドを生成し、前記不揮発性記録部を制御するストレージプロトコル処理と、
    を実行し、
    前記通信インタフェース部は、前記第1のI/O要求または前記一つ以上の第1制御コマンドが、前記不揮発性記録部にアクセスするために認可情報を必要とするか否かを判断する認可情報要否判断処理を実行し、
    前記演算部は、
    前記第1のI/O要求または前記一つ以上の第1制御コマンドが、前記不揮発性記録部にアクセスするために認可情報を必要とすると判断された場合、外部のサーバ装置と前記通信インタフェース部を介して通信を行って、前記第1のI/O要求が発生した際の状況と理由の少なくとも一方を示すコンテキスト情報を前記サーバ装置に送信するとともに認可情報を要求し、前記サーバ装置から認可情報を取得する認可情報取得処理と、
    前記認可情報取得処理で認可情報を要求する前に、前記サーバ装置に送信する前記コンテキスト情報を収集し、前記第1の一時記録部に保存するコンテキスト収集処理と、
    を実行し、
    前記通信インタフェース部は、
    前記第1のI/O要求または前記一つ以上の第1制御コマンドに、取得した前記認可情報を挿入するか、あるいは関連付ける認可情報挿入処理を実行し、
    取得した前記認可情報を、前記通信インタフェース部内の第2の一時記録部に保存する
    計算機。
  8. 前記演算部はさらに、
    前記アプリケーションプログラムが前記不揮発性記録部との間で第1情報を入出力する前記第1のI/O要求から、前記第1情報を特定するために用いる第1の識別子を抽出し、
    前記第1の識別子を含む前記不揮発性記録部への前記第1のI/O要求から前記ストレージプロトコル処理において前記不揮発性記録部を制御するために生成される前記一つ以上の第1制御コマンドから、前記第1情報を特定するために用いる一つ以上の第2の識別子を抽出し、
    前記第1の識別子と前記一つ以上の第2の識別子とを対応づけて前記第1の一時記録部に保存する識別子抽出処理をさらに実行し、
    前記認可情報挿入処理は、前記一つ以上の第1制御コマンドに、取得した前記認可情報を挿入するか、あるいは関連付ける場合、前記識別子抽出処理により生成され、前記第1の一時記録部に保存されている前記第1の識別子と前記一つ以上の第2の識別子の対応関係を用いて、取得した前記認可情報を挿入または関連付ける前記一つ以上の第1制御コマンドを特定する、
    請求項7に記載の計算機。
  9. 前記通信インタフェース部はさらに、取得した前記認可情報を、当該認可情報を付与するパケットを識別するための情報に関連付けて、前記第2の一時記録部に保存し、
    前記ストレージプロトコル処理はさらに、前記アプリケーションプログラムとの間で前記不揮発性記録部に対する第2のI/O要求を受信し、前記第2のI/O要求に基づいて前記不揮発性記録部を制御するための一つ以上の第2制御コマンドを生成し、前記不揮発性記録部を制御し、
    前記認可情報要否判断処理はさらに、前記第2のI/O要求または前記一つ以上の第2制御コマンドが、前記不揮発性記録部にアクセスするために認可情報を必要とするか否かを判断し、
    前記認可情報挿入処理は、前記第2のI/O要求または前記一つ以上の第2制御コマンドが、前記不揮発性記録部にアクセスするために認可情報を必要とすると判断され、且つ前記第2のI/O要求または前記一つ以上の第2制御コマンドを含むパケットに対応する認可情報が前記第2の一時記録部に保存されている場合、前記第2のI/O要求または前記一つ以上の第2制御コマンドに対応する認可情報を、前記第2のI/O要求または前記一つ以上の第2制御コマンドに挿入するか、あるいは関連付ける
    請求項8に記載の計算機。
  10. 前記演算部はさらに、
    前記不揮発性記録部が前記通信インタフェース部を介して通信可能な外部装置を介して接続されていることを検出した場合に、I/O要求もしくは制御コマンドを通信プロトコルのデータとして扱って前記外部装置との間で通信を行う通信プロトコル処理
    を実行し、
    前記認可情報挿入処理は、前記不揮発性記録部が前記通信インタフェース部を介して通信可能な前記外部装置を介して接続していることを検出した際には、取得した前記認可情報を、I/O要求、制御コマンド、I/O要求または制御コマンドを含む通信プロトコルのヘッダ部またはデータ部、およびI/O要求または制御コマンドを含む通信プロトコルの第1のパケットとは異なる第2のパケットのヘッダ部またはデータ部、のいずれかを用いる方法で前記外部装置に通知する
    請求項9に記載の計算機。
  11. 前記通信インタフェース部はさらに、
    前記不揮発性記録部が前記通信インタフェース部を介して通信可能な外部装置を介して接続されていることを検出した場合に、I/O要求もしくは制御コマンドを通信プロトコルのデータとして扱って前記外部装置との間で通信を行う通信プロトコル処理
    を実行し、
    前記認可情報挿入処理は、前記不揮発性記録部が前記通信インタフェース部を介して通信可能な前記外部装置を介して接続していることを検出した際には、取得した前記認可情報を、I/O要求、制御コマンド、I/O要求または制御コマンドを含む通信プロトコルのヘッダ部またはデータ部、およびI/O要求または制御コマンドを含む通信プロトコルの第1のパケットとは異なる第2のパケットのヘッダ部またはデータ部、のいずれかを用いる方法で前記外部装置に通知する
    請求項9に記載の計算機。
  12. 前記認可情報挿入処理は、前記第1のパケットと異なる前記第2のパケットを用いて、取得した前記認可情報を通知する場合、前記第1のパケットを送受信する物理接続または論理接続とは異なる物理接続または論理接続を用いる
    請求項10または請求項11に記載の計算機。
  13. 前記通信インタフェース部は、
    一つ以上の処理を別の一つ以上の処理とは分離して実行し、特定の条件を満たした場合に、前記一つ以上の処理を前記別の一つ以上の処理との間で情報および制御のやり取りが可能なセキュア領域を備え、
    前記認可情報挿入処理を前記セキュア領域で実行し、
    前記通信インタフェース部内の前記第2の一時記録部は、
    前記通信インタフェース部の前記セキュア領域から利用可能な隔離領域を有し、
    前記サーバ装置から取得した前記認可情報を前記隔離領域に一時的に保存する、
    請求項7乃至請求項12のいずれか一項に記載の計算機。
  14. 不揮発性記録部との間で情報を入出力する処理を含むアプリケーションプログラムを実行する計算機の制御方法であって、
    前記計算機は、
    前記計算機の外部の装置と通信プロトコルに従って通信するための通信インタフェース部と、
    情報を一時的に保存する一時記録部と、
    を備え、
    前記制御方法は、
    前記アプリケーションプログラムを実行し、
    前記アプリケーションプログラムから前記不揮発性記録部に対する第1のI/O要求を受信し、前記第1のI/O要求に基づいて前記不揮発性記録部を制御するための一つ以上の第1制御コマンドを生成し、前記不揮発性記録部を制御し、
    前記第1のI/O要求または前記一つ以上の第1制御コマンドが、前記不揮発性記録部にアクセスするために認可情報を必要とするか否かを判断し、
    前記第1のI/O要求または前記一つ以上の第1制御コマンドが、前記不揮発性記録部にアクセスするために認可情報を必要とすると判断した場合、外部のサーバ装置と前記通信インタフェース部を介して通信を行って、前記第1のI/O要求が発生した際の状況と理由の少なくとも一方を示すコンテキスト情報を前記サーバ装置に送信するとともに認可情報を要求し、前記サーバ装置から認可情報を取得し、
    前記第1のI/O要求または前記一つ以上の第1制御コマンドに、取得した前記認可情報を挿入するか、あるいは関連付け、
    前記認可情報を要求する前に、前記サーバ装置に送信する前記コンテキスト情報を収集し、前記一時記録部に保存する、
    制御方法。
JP2021146265A 2021-09-08 2021-09-08 計算機および制御方法 Pending JP2023039218A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2021146265A JP2023039218A (ja) 2021-09-08 2021-09-08 計算機および制御方法
US17/549,667 US11899960B2 (en) 2021-09-08 2021-12-13 Computing device and control method for transmitting I/O command to storage device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021146265A JP2023039218A (ja) 2021-09-08 2021-09-08 計算機および制御方法

Publications (1)

Publication Number Publication Date
JP2023039218A true JP2023039218A (ja) 2023-03-20

Family

ID=85386701

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021146265A Pending JP2023039218A (ja) 2021-09-08 2021-09-08 計算機および制御方法

Country Status (2)

Country Link
US (1) US11899960B2 (ja)
JP (1) JP2023039218A (ja)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1634421A1 (en) 2003-06-18 2006-03-15 Telefonaktiebolaget LM Ericsson (publ) Method, system and apparatus to support mobile ip version 6 services
JP2006086907A (ja) 2004-09-17 2006-03-30 Fujitsu Ltd 設定情報配布装置、方法、プログラム、媒体、及び設定情報受信プログラム
KR100964350B1 (ko) 2007-09-14 2010-06-17 성균관대학교산학협력단 IPv6 환경에서의 SEND와 IPSec 협업 기법 및시스템
US20110167479A1 (en) * 2010-01-07 2011-07-07 Oracle International Corporation Enforcement of policies on context-based authorization
US10372373B1 (en) * 2018-01-29 2019-08-06 Western Digital Technologies, Inc. Adaptive power balancing for memory device operations
JP2022135641A (ja) 2021-03-05 2022-09-15 キオクシア株式会社 I/oコマンド制御装置およびストレージシステム

Also Published As

Publication number Publication date
US20230072444A1 (en) 2023-03-09
US11899960B2 (en) 2024-02-13

Similar Documents

Publication Publication Date Title
JP7046111B2 (ja) マルウェアのランタイム中の自動検出
CN108733455B (zh) 基于ARM TrustZone的容器隔离性增强系统
CN110998582B (zh) 安全存储装置与计算机安全性方法
US10440111B2 (en) Application execution program, application execution method, and information processing terminal device that executes application
US20170206353A1 (en) Method and system for preventing malicious alteration of data in computer system
CN104008330B (zh) 基于文件集中存储及隔离技术的数据防泄漏系统及其方法
US20130125125A1 (en) Computer system and offloading method in computer system
KR101483839B1 (ko) 가상화를 이용한 비디오 컨텐츠 보호
CN109344631B (zh) 区块链的数据修改及区块验证方法、装置、设备和介质
US9438629B2 (en) Sensitive information leakage prevention system, sensitive information leakage prevention method, and computer-readable recording medium
JP2001337864A (ja) アクセス制御システム
JP2009098719A (ja) 格納データ暗号化機能内蔵ストレージ装置の暗号鍵をバックアップ及びリストアする計算機システム
WO2022028289A1 (zh) 数据加密方法、数据解密方法、装置、终端和存储介质
JP2011525653A (ja) 安全なメモリ管理システム及び方法
WO2012081114A1 (ja) 仮想計算機管理方法、計算機システム及び計算機
CN108229190B (zh) 透明加解密的控制方法、装置、程序、存储介质和电子设备
JP2017228136A (ja) 処理制御装置、処理制御方法、及び、処理制御プログラム
CN105183799A (zh) 一种权限管理的方法及客户端
JP2023039218A (ja) 計算機および制御方法
US20230132559A1 (en) I/o command control apparatus and storage system
JP2021196987A (ja) 情報処理システム及び情報処理方法
US9122504B2 (en) Apparatus and method for encryption in virtualized environment using auxiliary medium
JP4853671B2 (ja) アクセス権限判定システム、アクセス権限判定方法及びアクセス権限判定プログラム
KR101875863B1 (ko) 암호화된 해시값에 기반하여 클라우드 접속 허가를 결정하는 클라우드 시스템, 및 클라우드 접속 방법과 클라우드 단말에 설치된 소켓 데몬 장치
WO2021164167A1 (zh) 一种密钥存取方法、装置、系统、设备和存储介质