以下、本発明の実施の形態について、図面を参照して詳細に説明する。
(第1の実施の形態)
本発明の第1の実施の形態としてのコンピュータ装置100の機能ブロック構成を図1に示す。図1において、コンピュータ装置100は、設定値管理装置1と、BIOS部8とを含む。設定値管理装置1は、BIOS(Basic Input / Output System)の設定値を管理する装置である。BIOS部8は、設定値管理装置1によって管理されるBIOSの設定値に基づき動作するBIOSのプログラムを実行する。なお、設定値管理装置1は、BIOS部8によって実行されるBIOSのプログラムの一部によって実現されてもよい。
設定値管理装置1は、設定値記憶部11と、ポリシー記憶部12と、条件記憶部13と、要求データ格納部14と、検証部15と、更新部16とを備える。
ここで、コンピュータ装置100は、図2に示すようなハードウェア要素によって構成可能である。図2において、コンピュータ装置100は、CPU(Central Processing Unit)1001と、メモリ1002と、出力装置1003と、入力装置1004と、ネットワークインタフェース1005とを含む。メモリ1002は、RAM(Random Access Memory)、ROM(Read Only Memory)、ハードディスク等の補助記憶装置等によって構成される。また、出力装置1003は、ディスプレイ装置やプリンタ等のように、情報を出力する装置によって構成される。入力装置1004は、キーボードやマウス等のように、ユーザ操作の入力を受け付ける装置によって構成される。ネットワークインタフェース1005は、ネットワークに接続するインタフェースである。
この場合、設定値記憶部11、ポリシー記憶部12、条件記憶部13および要求データ格納部14は、メモリ1002によって構成される。また、検証部15、更新部16およびBIOS部8は、メモリ1002に格納されるBIOSのプログラムを読み込んで実行し、出力装置1003と、入力装置1004と、ネットワークインタフェース1005とを制御するCPU1001によって構成される。なお、設定値管理装置1およびその各機能ブロックのハードウェア構成は、上述の構成に限定されない。
次に、各機能ブロックの詳細について説明する。
設定値記憶部11は、BIOSの設定値を記憶する。BIOSの設定値は、BIOSにおいて設定可能な項目の値である。以降、BIOSにおいて設定可能な項目を、設定項目とも記載する。
ポリシー記憶部12は、BIOSの設定値を更新可能な各インタフェースについて、更新を許可するためのポリシーを記憶する。例えば、ポリシー記憶部12は、BIOSの設定値の更新を許可する1つのインタフェースを表す情報を記憶していてもよい。ポリシーが示すインタフェース以外のインタフェースからの更新は、後述の検証部15によって、許可されない。
ここで、BIOSの設定値を更新可能なインタフェースの一例としては、例えば、BIOSセットアップユーティリティがある。BIOSセットアップユーティリティは、BIOSに組み込まれ、設定値を設定するユーザインタフェースを提供するアプリケーションである。
また、インタフェースの他の一例としては、オンライン中のOSがある。背景技術で述べたように、オンライン中とは、OSが起動中であることをいう。OSには、オンライン中にBIOSの設定値を更新する機能を提供するものがある。
また、インタフェースの他の一例として、アウトオブバンド管理機能がある。背景技術で述べたように、アウトオブバンド管理とは、通常の管理ができない状態の装置において、代替えに提供されるリモート管理の機能である。そのようなアウトオブ管理機能では、例えば、SMASHサーバ管理コマンドラインプロトコルにより、BIOSの設定値を直接書き込む機能が提供される。
なお、ポリシー記憶部12に記憶されるポリシーは、BIOSセットアップユーティリティ等によって設定可能となっていてもよい。
条件記憶部13は、更新データが有効であるための条件を記憶する。ここで、更新データは、更新の対象となるBIOSの設定項目およびその更新値を含む情報である。
要求データ格納部14は、上述したようなインタフェースから、更新データを含む要求データを受信して格納する。
検証部15は、要求データおよびその要求元のインタフェースについて、有効であるか否かの検証処理を行う。具体的には、検証部15は、要求データの要求元のインタフェースについて、ポリシー記憶部12に記憶されたポリシーに基づいて、更新を許可するか否かを検証する。また、検証部15は、要求データに含まれる更新データについて、条件記憶部13に記憶された条件に基づいて有効であるか否かを検証する。
更新部16は、検証部15によって、要求データおよびその要求元のインタフェースが有効であると判断された場合に、更新データを用いて、設定値記憶部11の設定値を更新する。すなわち、更新部16は、要求データの要求元のインタフェースについて更新が許可され、且つ、要求データに含まれる更新データが有効であると判断された場合に、設定値を更新する処理を行う。具体的には、更新部16は、設定値記憶部11の設定値のうち、更新データが表す更新の対象となる設定項目の設定値を、更新データが表す更新値に書き換える。
以上のように構成された設定値管理装置1の動作について、図3を参照して説明する。
まず、要求データ格納部14は、設定値の更新を要求するいずれかのインタフェースから、要求データを受信し格納する(ステップS1)。
次に、検証部15は、要求データ格納部14に格納される要求データの要求元のインタフェースについて、ポリシー記憶部12に記憶されたポリシーに基づいて、更新を許可するか否かを判断する(ステップS2)。
ここで、更新を許可しないと判断された場合、設定値管理装置1は、BIOSの設定値を更新せずに動作を終了する。
一方、更新を許可すると判断された場合、設定値管理装置1は、受信された要求データに含まれる更新データについて、条件記憶部13に記憶された条件に基づいて有効であるか否かを判断する(ステップS3)。
ここで、有効でないと判断された場合、設定値管理装置1は、BIOSの設定値を更新せずに動作を終了する。
一方、有効であると判断された場合、更新部16は、更新データを用いて、設定値記憶部11の設定値を更新する(ステップS4)。
以上で、設定値管理装置1は、動作を終了する。
次に、本発明の第1の実施の形態の効果について述べる。
本発明の第1の実施の形態としての設定値管理装置は、BIOSの設定値を書き込む様々な方法が提供されている場合に、BIOSの設定値の更新によるシステムストールや意図しないシステム動作を防止することができる。
その理由について説明する。本実施の形態では、ポリシー記憶部が、設定値記憶部に記憶されるBIOSの設定値を更新可能な各インタフェースについて、更新を許可するためのポリシーを記憶しておく。また、条件記憶部が、更新データが有効であるための条件を記憶しておく。そして、要求データ格納部が、設定値の更新を要求するいずれかのインタフェースから、要求データを受信して格納すると、検証部が、要求データの要求元のインタフェースについて、ポリシー記憶部のポリシーに基づいて更新を許可するか否かを検証する。また、検証部が、要求データに含まれる更新データについて、条件記憶部の条件に基づいて有効であるか否かを検証する。そして、要求データの要求元のインタフェースについて更新が許可され、且つ、更新データが有効であると判断された場合に、更新部が、更新データを用いて設定値記憶部のBIOSの設定値を更新するからである。
これにより、本実施の形態は、あらかじめ定められたポリシーに従わないインタフェースからの更新を防止する。このため、本実施の形態は、BIOSの設定値が管理者の意図しない値に更新されることがなく、意図しないシステム動作を回避できる。また、本実施の形態は、あらかじめ定められた条件を満たさない有効でないデータによる更新を防止する。このため、本実施の形態は、更新データの検証が不十分なインタフェースから更新の要求があった場合でも、BIOSの設定値が不正な設定値に更新されることがなく、システムストールや意図しないシステム動作を誘発するリスクを回避できる。
(第2の実施の形態)
次に、本発明の第2の実施の形態について図面を参照して詳細に説明する。なお、本実施の形態の説明において参照する各図面において、本発明の第1の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
まず、本発明の第2の実施の形態としてのコンピュータ装置200の構成を図4に示す。
図4において、コンピュータ装置200は、本発明の第1の実施の形態としてのコンピュータ装置100に対して、設定値管理装置1に替えて設定値管理装置2を備える点が異なる。設定値管理装置2は、本発明の第1の実施の形態としての設定値管理装置1に対して、ポリシー記憶部12に替えてポリシー記憶部22と、条件記憶部13に替えて条件記憶部23とを備える点が異なる。また、設定値管理装置2は、設定値管理装置1に対して、要求データ格納部14に替えて要求データ格納部24と、検証部15に替えて検証部25と、更新部16に替えて更新部26とを備える点がさらに異なる。
なお、コンピュータ装置200およびその各機能ブロックは、図2を参照して説明した本発明の第1の実施の形態と同様のハードウェア要素によって構成可能である。ただし、コンピュータ装置200およびその各機能ブロックのハードウェア構成は、上述の構成に限定されない。
次に、各機能ブロックの詳細について説明する。
ポリシー記憶部22は、更新を許可する1つ以上のインタフェースについて、それぞれを識別するインタフェース識別情報を記憶する。もし、複数のインタフェースを記憶する場合、ポリシー記憶部22は、それらのインタフェース間の優先順位を表す情報を併せて記憶してもよい。また、ポリシー記憶部22は、BIOSの設定項目毎に、更新を許可する1つ以上のインタフェース識別情報を記憶してもよい。また、ポリシー記憶部22は、バックアップからの更新を識別する識別情報を、ポリシーに含めて記憶してもよい。
条件記憶部23は、条件として、更新の対象となる設定項目に関連する他の設定項目に関する条件を記憶する。また、条件記憶部23は、条件として、更新の対象となる設定項目に関連する装置構成に関する条件を記憶する。
ここで、条件記憶部23に記憶される情報の一例を図5に示す。図5において、条件記憶部23には、条件データフォーマットと、BIOS設定データマップと、システム情報データマップとが記憶される。条件データフォーマットにおける各行は、本実施の形態における条件を表す。また、BIOS設定データマップおよびシステム情報データマップには、条件の適用時に参照される情報が格納される。
まず、BIOS設定データマップについて説明する。図5では、「MenuID」は、BIOSの設定項目の識別情報を表している。また、「MenuName」は、設定項目の名称を表している。また、「Value」は、その設定項目について現在設定されている設定値を表している。つまり、図5においてBIOS設定データマップの各行は、BIOSの設定項目についての現在の設定値を表している。BIOS設定データマップは、例えば、コンピュータ装置200の起動時に、設定値記憶部11に記憶されている設定値の内容に応じて書き込まれる。
次に、システム情報データマップについて説明する。図5では、「SystemID」は、コンピュータ装置200のハードウェア構成に関する項目の識別情報を表している。また、「SystemInformation」は、その項目を説明する情報を表している。また、「Value」は、その項目の値を表している。つまり、図5においてシステム情報データマップの各行は、コンピュータ装置200の現在のハードウェア構成を表している。システム情報データマップは、例えば、コンピュータ装置200の起動時に、装置構成に応じて書き込まれる。
次に、条件データフォーマットについて説明する。図5の条件データフォーマットにおいて、各行は、該当するMenuIDの設定項目が変更可能となる条件を表している。すなわち、該当するMenuIDの設定項目は、条件1、条件2、・・・、および、条件nの真偽についてANDやORなどの論理演算結果が真となった場合に変更可能である。
例えば、1行目の条件は、MenuID.1の設定項目“CPU Core Count”は、「SystemID.1のハードウェア構成 “CPU Core Count”が6以上」という条件1が満たされる場合に、更新可能であることを表している。つまり、1行目の条件は、更新の対象となる設定項目に関連する装置構成に関する条件である。
また、2行目の条件は、MenuID.3の設定項目“UEFI Boot Order#1”は、「MenuID.2の設定項目“Boot Mode”の設定値がUEFIである」という条件1が満たされる場合に、更新可能であることを表している。つまり、2行目の条件は、更新の対象となる設定項目に関連する他の設定項目に関する条件である。
また、条件データフォーマットにおいて、各条件は、更新の対象となる設定項目に関連する他の設定項目に関する条件と、更新の対象となる設定項目に関連する装置構成に関する条件との組合せによって構成されていてもよい。
なお、条件データフォーマットに含まれる情報は、事前に定められる。例えば、条件データフォーマットに含まれる情報は、BIOS部8の設計時や出荷時等に定められたものであってもよい。また、条件データフォーマットに含まれる情報は、BIOS部8の更新時に更新されるものであってもよい。
要求データ格納部24は、図6に示すように、第1領域、第2領域、第3領域および第4領域からなる。
ここで、本実施の形態では、要求データ格納部24に格納される要求データの詳細が、本発明の第1の実施の形態における要求データに対して異なる。要求データは、まず、本発明の第1の実施の形態と同様に、更新データを含む。さらに、要求データは、要求元のインタフェースを識別するインタフェース識別情報を含む。さらに、要求データは、更新データについて算出されたハッシュ値を含む。さらに、要求データは、要求時点でのBIOSのバージョンを表すバージョン情報を含む。
第1領域は、要求データに含まれる更新データを格納する。また、第2領域は、要求データに含まれるハッシュ値を格納する。また、第3領域は、要求データに含まれるインタフェース識別情報を格納する。このインタフェース識別情報は、要求元のインタフェースを表す。また、第4領域は、要求データに含まれるバージョン情報を格納する。このバージョン情報は、各インタフェースにより要求データが生成された時点でのBIOSのバージョン情報である。
また、本実施の形態では、要求データ格納部24に格納される要求データは、バックアップからの更新を指示する情報を含む場合がある。例えば、第3領域に、インタフェース識別情報の代わりに、バックアップからの更新を識別する情報が格納されていてもよい。例えば、BIOSセットアップユーティリティには、バックアップからの更新を指示する機能が含まれるものがある。この場合、BIOSセットアップユーティリティは、要求データ格納部24の第3領域に、当該インタフェース識別情報の代わりに、バックアップからの更新を識別する情報を書き込んでもよい。
検証部25は、要求データに含まれるインタフェース識別情報と、ポリシーが示すインタフェース識別情報とを比較することにより、要求元のインタフェースについて更新が許可されるか否かを検証する。ここで、前述したように、要求データに含まれるインタフェース識別情報は、第3領域に格納されている。
例えば、ポリシーが示すインタフェース識別情報が1つの場合について説明する。この場合、検証部25は、第3領域のインタフェース識別情報と、ポリシーが示すインタフェース識別情報とが一致した場合に、更新を許可すると判断すればよい。
また、ポリシーが示すインタフェース識別情報が複数の場合について説明する。この場合、検証部25は、第3領域のインタフェース識別情報が、ポリシーが示すインタフェース識別情報のいずれかに一致した場合に、更新を許可すると判断すればよい。
また、ポリシーが示す複数のインタフェース識別情報間に優先順位が設定されている場合について説明する。例えば、いずれかのインタフェースからの要求により前回BIOSの設定値を更新してから所定時間内に、他のインタフェースから要求データが受信されたとする。この場合、検証部25は、前回のインタフェースと今回のインタフェースとの間の優先順位に基づいて、更新を許可するか否かを判断してもよい。つまり、例えば、検証部25は、今回のインタフェースの優先順位が前回のインタフェースより高ければ、今回のインタフェースについて更新を許可すると判断する。また、例えば、検証部25は、今回のインタフェースの優先順位が前回のインタフェースより低ければ、今回のインタフェースについて更新を許可しないと判断する。
また、ポリシーとして、設定項目毎に更新を許可するインタフェース識別情報が記憶されている場合について説明する。この場合、検証部25は、第1領域の更新データに基づいて、更新の対象となる設定項目を特定し、特定した設定項目に関するポリシーを参照する。そして、検証部25は、第3領域のインタフェース識別情報が、該当するポリシーが示すインタフェース識別情報のいずれかに一致した場合に、更新を許可すると判断すればよい。
また、検証部25は、要求データに含まれる更新データについて、条件記憶部23に記憶されている条件に基づいて有効であるか否かを判断する。ここで、要求データに含まれている更新データは、第1領域に格納されている。そこで、検証部25は、第1領域の更新データに基づいて、更新の対象となる設定項目を特定する。そして、検証部25は、特定した設定項目に関連する設定項目の設定値に関する条件や、特定した設定項目に関連する装置構成に関する条件を、条件記憶部23から取得する。そして、検証部25は、取得した条件が満たされる場合に、更新データが有効であると判断すればよい。
例えば、図5に示した例のように、条件記憶部23に、条件データフォーマット、BIOS設定データマップ、および、システム情報データマップが記憶されているとする。この場合、検証部25は、更新の対象となる設定項目に関する条件を、条件データフォーマットから検索する。そして、検証部25は、検索した条件によって参照されているBIOSの現在の設定値または装置構成に関する情報を、BIOS設定データマップまたはシステム情報データマップから取得する。そして、検証部25は、取得した情報に基づいて、該当する条件が満たされる場合に、要求データに含まれる更新データが有効であると判断すればよい。
また、検証部25は、要求データに含まれる更新データに関して算出したハッシュ値が、要求データに含まれるハッシュ値と一致するか否かを検証する。前述したように、要求データに含まれる更新データは、第1領域に格納されている。また、そのハッシュ値は、第2領域に格納されている。第2領域のハッシュ値は、要求元のインタフェース側において算出されたものである。そこで、検証部25は、第1領域の更新データのハッシュ値を算出する。そして、検証部25は、算出したハッシュ値と、第2領域のハッシュ値とが一致する場合に、ハッシュ値に関する検証に成功したと判断すればよい。
また、検証部25は、要求データに含まれるバージョン情報と、現在のBIOSのバージョン情報とが一致するか否かを検証する。ここで、要求データに含まれるバージョン情報は、第4領域に格納されている。また、現在のBIOSのバージョン情報は、現在のバージョン情報を格納する領域に格納されており、BIOSの更新時に更新されるものとする。そこで、検証部25は、第4領域のバージョン情報と、現在のバージョン情報を格納する領域の情報とが一致した場合に、バージョン情報に関する検証に成功したと判断すればよい。
なお、後述の更新部26により、要求データ格納部24に、BIOSの設定値のコピーを含むバックアップ情報が格納されている場合がある。この場合、要求データがバックアップからの更新を表していれば、検証部25は、要求データ格納部24に格納されているバックアップ情報について、上述の各種の検証を行えばよい。すなわち、検証部25は、バックアップ情報の一部として第1領域に格納されている全ての設定項目およびそれらの更新値を更新データとして、条件記憶部23の条件に基づき更新データが有効であるか否かを検証する。また、検証部25は、バックアップ情報の一部として第1領域に格納されている全ての設定項目およびそれらの更新値を更新データとして、そのハッシュ値を算出する。そして、検証部25は、算出したハッシュ値と、バックアップ情報の一部として第2領域に格納されているハッシュ値とが一致するか否かを検証する。また、検証部25は、第3領域に格納されているバックアップからの更新を識別する情報と、ポリシー記憶部22に記憶されたポリシーとを比較することにより、バックアップからの更新が許可されているか否かを検証する。また、検証部25は、第4領域に格納されているバージョン情報(すなわち、バックアップ処理が行われた時点でのバージョン情報)と、現在のバージョン情報とが一致するか否かを検証する。
更新部26は、要求元のインタフェースについてポリシーに基づき更新が許可され、且つ、要求データに含まれる更新データについて、条件、ハッシュ値およびバージョン情報に基づく各検証に成功した場合に、設定値記憶部11の設定値を更新データで更新する。
また、更新部26は、設定値記憶部11に記憶された設定値を更新した後に、設定値記憶部11の全ての設定項目についてそれらの設定値のコピーを含むバックアップ情報を、要求データ格納部24に格納する。以降、バックアップ情報を要求データ格納部24に格納する処理を、バックアップ処理とも記載する。
バックアップ処理では、更新部26は、設定値記憶部11の全ての設定項目についてそれらの設定値のコピーを、要求データ格納部24の第1領域に格納する。また、更新部26は、第1領域に書き込む情報のハッシュ値を算出し、算出したハッシュ値を第2領域に格納する。また、更新部26は、インタフェース識別情報およびバックアップからの更新を識別する情報のいずれにも該当しない情報(例えば、“None”を表す「0」)を、第3領域に格納する。また、更新部26は、バックアップ処理時点でのBIOSのバージョン情報を第4領域に格納する。
また、更新部26は、要求データにバックアップからの更新を指示する情報が含まれる場合、要求データ格納部24に格納されているバックアップ情報についての検証部25による上述の各種検証が成功していれば、次のように動作するよう構成される。この場合、更新部26は、バックアップ情報に基づいて、設定値記憶部11の設定値を更新する。具体的には、更新部26は、バックアップ情報の一部として要求データ格納部24の第1領域に格納されている全ての設定項目の設定値を用いて、設定値記憶部11の設定値を更新する。
以上のように構成された設定値管理装置2の動作について、図面を参照して説明する。なお、ここでは、ポリシー記憶部22には、更新を許可する1つ以上のインタフェース識別情報が、ポリシーとして記憶されているものとする。また、BIOSの設定値を更新可能なインタフェースとして、オンライン中のOSには、インタフェース識別情報として1が付与されているものとする。また、アウトオブバンド管理機能には、インタフェース識別情報として2が付与されているものとする。また、BIOSセットユーティリティには、インタフェース識別情報として3が付与されているものとする。また、バックアップからの更新を識別する情報として4が付与されているものとする。また、条件記憶部23には、図5に一例を示した情報が記憶されているものとする。
まず、設定値管理装置2の動作の概要を図7に示す。以下の動作は、コンピュータ装置200の起動時のPOST(Power On Self Test)処理の一環として実行される。
まず、検証部25は、条件記憶部23に記憶される情報を更新する処理を行う(ステップS11)。このステップの詳細については後述する。
次に、検証部25は、要求データ格納部24の初期化処理が必要であるか否かを判断する(ステップS12)。
例えば、検証部25は、要求データ格納部24の第3領域が不正な値であるか否かによって、初期化処理が必要であるか否かを判断可能である。上述の例では、第3領域は、インタフェース識別情報またはバックアップからの更新を識別する情報として1から4のいずれかの情報を格納し得る。また、第3領域は、バックアップ処理後には、0を格納する。この場合、検証部25は、第3領域が0〜4のいずれでもなければ不正な値であるとして、初期化処理が必要であると判断してもよい。例えば、設定値管理装置2が搭載された装置が初めて起動される場合には、第3領域は不正な値を格納しており、初期化処理が必要であると判断されることになる。
ここで、初期化処理が必要であると判断された場合、更新部26は、BIOSの設定値のバックアップ処理を行う(ステップS13)。このステップの詳細については後述する。
そして、この場合、設定値管理装置2は、バックアップ処理後に、動作を終了する。
一方、初期化処理が必要でないと判断された場合、検証部25は、BIOSの設定値の更新が要求されているか否かを判断する(ステップS14)。
例えば、検証部25は、要求データ格納部24の第3領域が、インタフェース識別情報またはバックアップからの更新を識別する情報を格納しているか否かによって、BIOSの設定値の更新が要求されているか否かを判断可能である。具体的には、検証部25は、要求データ格納部24の第3領域が0でなければ、BIOSの設定値の更新が要求されていると判断し、0であれば、更新が要求されていないと判断してもよい。
ここで、BIOSの設定値の更新が要求されていないと判断された場合、設定値管理装置2は、動作を終了する。
一方、BIOSの設定値の更新が要求されていると判断した場合、検証部25は、要求データの要求元のインタフェースについて、更新を許可するか否かを判断する(ステップS15)。
具体的には、検証部25は、要求データ格納部24の第3領域に格納された識別情報が、ポリシーが示す識別情報のいずれかと一致するか否かを判断すればよい。
ここで、要求元のインタフェースについて更新を許可しないと判断された場合、更新部26は、BIOSの設定値のバックアップ処理を行う(ステップS13)。
そして、この場合、設定値管理装置2は、バックアップ処理後に、動作を終了する。
一方、要求元のインタフェースについて更新を許可すると判断された場合、検証部25は、要求データについて、有効であるか否かの検証を行う(ステップS16)。このステップの詳細については後述する。
ここで、検証に成功しなかった場合(ステップS17でNo)、更新部26は、BIOSの設定値のバックアップ処理を行う(ステップS13)。
そして、この場合、設定値管理装置2は、バックアップ処理後に、動作を終了する。
一方、検証に成功した場合(ステップS17でYes)、更新部26は、要求データに含まれる更新データを用いて、設定値記憶部11の設定値を更新する(ステップS18)。
具体的には、更新部26は、要求データ格納部24の第1領域の情報が表す設定項目について、第1領域の情報が表す更新値を用いて、設定値記憶部11の設定値を更新すればよい。そして、この場合、更新部26は、更新後の設定値記憶部11の情報に基づいて、条件記憶部23のBIOS設定データマップを更新しておいてもよい。これにより、設定値管理装置2は、コンピュータ装置200においてOSが起動した後、オンライン中にBIOSの設定値を更新する要求があった場合にも、対応可能となる。
そして、この場合、更新部26は、BIOSの設定値のバックアップ処理を行った後(ステップS19)、コンピュータ装置200を再起動するよう制御して(ステップS20)、動作を終了する。
なお、上述した動作は、POST処理の一環として実行されるものとして説明した。その他、例えば、オンライン中のOSからBIOSの設定値を更新する要求があった場合には、設定値管理装置2は、ステップS15〜S20を実行すればよい。
次に、ステップS11における条件記憶部23の情報を更新する動作について、図8を参照して説明する。
ここでは、まず、検証部25は、設定値記憶部11の各設定項目についての設定値を、条件記憶部23におけるBIOS設定データマップに書き込む(ステップA1)。
次に、検証部25は、コンピュータ装置200のハードウェア構成に関する情報を取得して、条件記憶部23におけるシステム情報データマップに書き込む(ステップA2)。
以上で、条件記憶部23の情報を更新する動作の説明を終了する。
次に、ステップS13、S19におけるBIOSの設定値のバックアップ処理について、図9を参照して説明する。
ここでは、まず、更新部26は、設定値記憶部11に記憶された全ての設定項目の設定値についてハッシュ値を算出し、要求データ格納部24の第2領域に格納する(ステップB1)。
次に、更新部26は、設定値記憶部11に記憶された全ての設定項目の設定値のコピーを、要求データ格納部24の第1領域に格納する(ステップB2)。
次に、更新部26は、この時点でのBIOSのバージョン情報を、要求データ格納部24の第4領域に格納する(ステップB3)。
次に、更新部26は、要求データ格納部24の第3領域に、BIOSの設定値の更新が要求されていないことを表す情報(ここでは、0)を格納する(ステップB4)。
以上で、BIOSの設定値のバックアップ処理の説明を終了する。
次に、ステップS16における要求データの検証処理について、図10を参照して説明する。
ここでは、まず、検証部25は、要求データに含まれるバージョン情報が、現在のBIOSのバージョン情報と一致するか否かを判断する(ステップC1)。
具体的には、検証部25は、要求データ格納部24の第4領域の情報と、現在のBIOSのバージョン情報を格納する領域の情報とが一致するか否かを判断すればよい。
ここで、BIOSのバージョン情報が一致しない場合、設定値管理装置2は、検証に失敗したことを表す情報を呼び出し元に返却して(ステップC5)、動作を終了する。
一方、BIOSのバージョン情報が一致する場合、検証部25は、要求データに含まれる更新データについて、条件記憶部23に記憶された条件に基づいて、有効であるか否かを判断する(ステップC2)。
具体的には、検証部25は、要求データ格納部24の第1領域の情報に基づいて、更新の対象となる設定項目を特定する。そして、検証部25は、更新の対象となる設定項目に関する条件を、条件データフォーマットから検索する。そして、検証部25は、検索した条件で参照されているBIOSの設定値またはハードウェア構成に関する項目の値を、BIOS設定データマップまたはシステム情報データマップから取得する。そして、検証部25は、取得したBIOSの設定値またはハードウェア構成に関する項目の値を適用して、検索した条件が満たされるか否かを判断すればよい。
ここで、更新データが有効でないと判断された場合、設定値管理装置2は、検証に失敗したことを表す情報を呼び出し元に返却して(ステップC5)、動作を終了する。
一方、更新データが有効であると判断された場合、検証部25は、要求データに含まれる更新データのハッシュ値を算出し、算出したハッシュ値が、要求データに含まれるハッシュ値と一致するか否かを判断する(ステップC3)。
具体的には、検証部25は、要求データ格納部24の第1領域の情報についてハッシュ値を算出し、算出したハッシュ値が、要求データ格納部24の第2領域の情報と一致するか否かを判断すればよい。
ここで、ハッシュ値が一致しない場合、設定値管理装置2は、検証に失敗したことを表す情報を呼び出し元に返却して(ステップC5)、動作を終了する。
一方、ハッシュ値が一致する場合、設定値管理装置2は、検証に成功したことを表す情報を呼び出し元に返却して(ステップC4)、動作を終了する。
以上で、要求データの検証処理の説明を終了する。
次に、本発明の第2の実施の形態の効果について述べる。
本発明の第2の実施の形態としての設定値管理装置は、BIOSの設定値を書き込む様々な方法が提供されている場合に、BIOSの設定値の更新によるシステムストールや意図しないシステム動作を、より確実に防止することができる。
その理由について説明する。本実施の形態では、本発明の第1の実施の形態と同様の構成に加えて、ポリシー記憶部が、更新を許可する1つ以上のインタフェースを表す情報を記憶している。また、条件記憶部が、更新の対象となる設定項目に関連する他の設定項目に関する条件を記憶している。また、条件記憶部が、更新の対象となる設定項目に関連する装置構成に関する条件を記憶している。そして、要求データ格納部には、更新データと、そのハッシュ値と、インタフェース識別情報と、BIOSのバージョン情報とからなる要求データが格納される。そして、検証部は、要求元のインタフェースについてポリシーに基づいて更新を許可するか否かを判断するとともに、要求データについて、条件に基づくことに加えて、ハッシュ値およびバージョン情報に基づいて、有効であるか否かを検証する。そして、更新部は、検証部による要求データおよびその要求元のインタフェースに関する各種検証に成功した場合に、更新データを用いて、設定値記憶部の設定値を更新するからである。
この構成により、本実施の形態は、更新を許可するインタフェースを、より柔軟に設定することができ、意図しないインタフェースによりBIOSの設定値が更新されることをより精度よく防止できる。
また、上述の構成により、本実施の形態は、更新データについてハッシュ値に基づく検証を行うことで、壊れた更新データによってBIOSの設定値が更新されること防止できる。
また、上述の構成により、本実施の形態は、コンピュータ装置の出荷後にBIOSのバージョンが更新された場合に、更新後のバージョンのBIOSに対応しない更新データによってBIOSの設定値が更新されること防止できる。
また、上述の構成により、本実施の形態は、BIOSのある設定項目が、他の設定項目に依存している場合に対応することができ、更新により他の設定項目との整合性がとれなくなることを防止できる。
また、上述の構成により、本実施の形態は、BIOSのある設定項目が、装置構成に依存している場合に対応することができ、装置構成で許容されない値に更新されることを防止できる。
さらに、本実施の形態では、ポリシー記憶部が、ポリシーとして、バックアップからの更新を識別する情報を記憶する。また、その場合、更新部が、BIOSの設定値の更新後等に、BIOSの設定値のコピーを含むバックアップ情報を、要求データ格納部に格納する。そして、この場合、検証部が、要求データ格納部に格納されているバックアップ情報を要求データとして各種検証を行う。そして、更新部が、要求データに、バックアップからの更新を指示する情報が含まれている場合、要求データ格納部に格納されたバックアップ情報を用いて、設定値記憶部の各設定値を更新する。
この構成により、本実施の形態は、BIOSの設定値が意図せず更新された場合にも元の設定値に復帰させることができる。また、本実施の形態は、バックアップ情報についても同様に検証を行うので、BIOSの設定値が、壊れたバックアップ情報に基づいて更新されることを防止できる。また、本実施の形態は、BIOSの設定値が、装置構成の更新等により現在の装置構成で許容されないバックアップ情報に基づいて更新されることを防止できる。
このように、本実施の形態は、BIOSの設定値が不正な値に更新されることを、より様々な要因に対応して防止することができ、システムストールや意図しないシステム動作を誘発するリスクをより確実に回避できる。
なお、本実施の形態において、条件記憶部が、条件データフォーマット、BIOS設定データマップおよびシステム情報データマップによって構成される例を中心に説明したが、条件記憶部に記憶される情報のデータ構成は限定されない。このようなデータ構成に限らず、条件記憶部は、更新の対象となる設定項目に関連する他の設定項目に関する条件、または、更新の対象となる設定項目に関連する装置構成に関する条件を表すことができれば、どのようなデータ構成の条件を格納してもよい。
また、本実施の形態において、ポリシー記憶部が、更新を許可する1つ以上のインタフェースを表すポリシーを記憶する例について説明した。その他、ポリシー記憶部が、設定項目毎にポリシーを記憶する例や、インタフェース間の優先順位を含むポリシーを記憶する例についても説明した。ただし、ポリシーの内容は、これらに限定されない。例えば、ポリシーは、時間帯やその他の要素に基づきインタフェースについて更新を許可するか否かを表すものであってもよい。ポリシーは、要求元のインタフェースについて更新を許可するか否かを判断可能な内容であればよい。
また、本実施の形態において、検証部が、要求データに含まれる更新データが有効であるか否かを判断するために、条件記憶部の条件を満たすか否かに加えて、ハッシュ値およびバージョン情報による検証を行う例について説明した。ただし、検証部が更新データの有効性を判断するための検証処理は、これらに限定されない。検証部は、更新データが条件記憶部の条件を満たすか否かに加えて、その他の検証処理を行ってもよい。
また、本実施の形態において、要求データが、更新データと、ハッシュ値と、インタフェース識別情報と、バージョン情報とを含む例について説明した。ただし、各インタフェースから受信する要求データの構成は限定されない。要求データは、検証部によって行われる検証に必要な各種の情報を含む構成であればよい。
また、上述した各実施の形態において、BIOSの設定値を更新可能なインタフェースとして、BIOSセットアップユーティリティ、オンライン中のOS、および、アウトオブバンド管理機能を挙げたが、インタフェースは、これらに限定されない。各実施の形態は、BIOSの設定値を更新可能なその他各種のインタフェースに適用可能である。
また、上述した本発明の各実施の形態において、設定値管理装置の各機能ブロックが、記憶装置またはROMに記憶されたコンピュータ・プログラムを実行するCPUによって実現される例を中心に説明した。これに限らず、各機能ブロックの一部、全部、または、それらの組み合わせが専用のハードウェアにより実現されていてもよい。
また、上述した本発明の各実施の形態において、各フローチャートを参照して説明した設定管理装置の動作は、本発明のコンピュータ・プログラムとしてコンピュータ装置の記憶装置(記憶媒体)に格納される。係るコンピュータ・プログラムは、当該CPUにより読み出されて実行される。このような場合において、本発明は、係るコンピュータ・プログラムのコードあるいは記憶媒体によって構成される。
また、上述した各実施の形態は、適宜組み合わせて実施されることが可能である。
また、本発明は、上述した各実施の形態に限定されず、様々な態様で実施されることが可能である。