(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023107825
(43)【公開日】2023-08-03
(54)【発明の名称】ブロックチェーンを利用するシステム
(51)【国際特許分類】
G06Q 10/00 20230101AFI20230727BHJP
G06F 21/64 20130101ALI20230727BHJP
【FI】
G06Q10/00
G06F21/64
【審査請求】有
【請求項の数】3
【出願形態】OL
(21)【出願番号】P 2023090985
(22)【出願日】2023-06-01
(62)【分割の表示】P 2019112105の分割
【原出願日】2019-06-17
(71)【出願人】
【識別番号】000155469
【氏名又は名称】株式会社野村総合研究所
(74)【代理人】
【識別番号】100076428
【弁理士】
【氏名又は名称】大塚 康徳
(74)【代理人】
【識別番号】100115071
【弁理士】
【氏名又は名称】大塚 康弘
(74)【代理人】
【識別番号】100112508
【弁理士】
【氏名又は名称】高柳 司郎
(74)【代理人】
【識別番号】100116894
【弁理士】
【氏名又は名称】木村 秀二
(74)【代理人】
【識別番号】100130409
【弁理士】
【氏名又は名称】下山 治
(74)【代理人】
【識別番号】100134175
【弁理士】
【氏名又は名称】永川 行光
(74)【代理人】
【識別番号】100177390
【弁理士】
【氏名又は名称】大出 純哉
(72)【発明者】
【氏名】大塚 紳一郎
(57)【要約】
【課題】ライブラリアンに代表される業務ワークフローベースの仕事を担う事務担当者の機能を、ブロックチェーンを用いたシステムで実現することにより省人化を図りつつ、悪意の開発者による改ざん行為を抑制または除去する。
【解決手段】システムは、開発されたプログラムの本番環境へのリリースを管理するシステムであって、ブロックチェーンが実装された複数のサーバと、プログラムのリリースに関するイベントを検出する手段と、イベントを検出したときのプログラムの一意性を担保する一意性情報と、検出されたイベントを特定する特定情報と、を含む、ブロックチェーンのブロックを生成する手段と、を備える。
【選択図】
図1
【特許請求の範囲】
【請求項1】
ブロックチェーンが実装された複数の仮想サーバを備えるシステムであって、
複数の仮想サーバによる多数決を用いた判定結果に応じて、前記システムの稼働の状況を示す情報を含む、ブロックチェーンのブロックを生成する手段を備えるシステム。
【請求項2】
前記生成する手段は、前記多数決の結果を利用して仮想サーバの障害またはリソースの過不足を検出した場合にブロックを生成する請求項1に記載のシステム。
【請求項3】
前記システムは監査用のシステムであり、
前記システムは、
前記システムで実行される監査関連プログラムの正当性を示す情報を含む、ブロックチェーンのブロックを生成する手段をさらに備える請求項1または2に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ブロックチェーンを利用するシステムに関する。
【背景技術】
【0002】
大規模システムの開発においては、完成した多数のプログラムモジュールを本番環境に移設する作業が不可欠であり、これに多くの手間と時間を取られることはもちろんであるが、新旧バージョンの取り違い等、様々な人為的ミスの温床ともなっていた。このような状況を改善するために、本出願人は特許文献1に記載されるプログラムリリース管理システムを提案した。
【0003】
特許文献1に記載のプログラムリリース管理システムでは、承認者は承認者端末からネットワーク接続ストレージの開発側領域にアクセスし、開発済みのプログラムファイルに不正なロジックが混入されていないこと等を確認し、ライブラリアンにプログラムファイルの移送に関し承認を与える。この際、承認者はプログラムファイルのファイル名やファイルサイズ、タイムスタンプ等の特定情報をライブラリアンに伝達する。
【0004】
これを受けたライブラリアンは転送サーバにアクセスし、開発側領域に格納されているプログラムファイルの一覧情報をライブラリアン端末のディスプレイ上でチェックし、ファイル名やファイルサイズ、タイムスタンプに基づいて承認の下りたプログラムファイルを特定し、その移送を求めるコマンドを発行する。
【0005】
このように、承認者が開発側領域に格納されたプログラムファイルの特定情報をライブラリアンに伝達し、ライブラリアンがこの情報に基づいて転送対象となるプログラムファイルを選択することにより、承認者による承認直後から本番側領域への転送完了までの僅かな間に、開発側領域に格納されたプログラムファイルに対し、開発者がファイルサイズやタイムスタンプの変更を伴う改ざん行為を行うことを牽制することができる。
【0006】
ここでライブラリアンとは、開発者や承認者の属する部署からは完全に独立した、利害関係の無い第三者機関に属する専門職を意味している。特許文献1に記載のプログラムリリース管理システムでは、組織内にライブラリアンを確保し、プログラムの改ざんチェックや、本番環境への適用により内部統制を担保している。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特許第5253336号
【特許文献2】特開2019-029019号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
近年、システムの大規模化、複雑化が進み、またモジュール更新の頻度も高まっており、それに伴ってライブラリアンの作業量が増大している。書類確認においては複数のライブラリアンでの複眼チェックが行われるので人員が必要となり、その人員稼動率を向上させるためのチーム化がなされるなど、ライブラリアン組織の構成も大きくなってきている。監査時には監査人が企業を訪問し、機密部屋に入って紙面で証跡を確認する。この監査人への対応、紙面の提供などもライブラリアンの仕事である。そして、ライブラリアンの仕事内容は比較的単純であるが、ミスは許されないといったことから、人員のモチベーション維持も一苦労である。
【0009】
そこで、ライブラリアンをシステム化することが検討されている。特許文献1には、ライブラリアンによる書類の突き合わせ及び転送依頼コマンドの発行を自動化することが記載されているが、結局最終の確認はライブラリアンによりなされるので、ライブラリアンの支援に留まっている。ライブラリアンをシステムで置き換えるという概念は、特許文献1には記載されていない。
【0010】
ライブラリアンをシステムで置き換えた場合、人の目による監視が無くなる分、事前であれ事後であれ、セキュリティを強化する施策を講じる必要がある。例えば、承認者による承認直後からシステムによる本番側領域への転送完了までの間に、開発側領域に格納されたプログラムに対し悪意の開発者が改ざん行為を行う可能性があることへの対応が必要である。
【0011】
システムが転送を指示する前に、転送対象のプログラムのファイルサイズやハッシュ値を、ログに残されている当該ファイルの開発完了時または承認時のファイルサイズやハッシュ値と比較することによりセキュリティを担保することが考えられる。しかしながら、悪意の開発者がログまでも書き換えてしまうと、上記の改ざん行為をシステムが検知することは困難である。
【0012】
本発明はこうした課題に鑑みてなされたものであり、その目的は、ライブラリアンの機能をシステムで実現することにより省人化を図りつつ、悪意の開発者による改ざん行為を抑制または除去できるプログラムリリース管理技術の提供にある。
【課題を解決するための手段】
【0013】
本発明のある態様は、システムに関する。このシステムは、ブロックチェーンが実装された複数の仮想サーバを備えるシステムであって、複数の仮想サーバによる多数決を用いた判定結果に応じて、前記システムの稼働の状況を示す情報を含む、ブロックチェーンのブロックを生成する手段を備える。
【0014】
なお、以上の構成要素の任意の組み合わせや、本発明の構成要素や表現を装置、方法、システム、コンピュータプログラム、コンピュータプログラムを格納した記録媒体などの間で相互に置換したものもまた、本発明の態様として有効である。
【発明の効果】
【0015】
本発明によれば、ライブラリアンに代表される業務ワークフローベースの仕事を担う事務担当者の機能を、ブロックチェーンを用いたシステムで実現することにより省人化を図りつつ、悪意の開発者による改ざん行為を抑制または除去できる。
【図面の簡単な説明】
【0016】
【
図1】第1の実施の形態に係るライブラリアンシステムを含むプログラム管理システムの全体構成を示す模式図である。
【
図2】
図1の内部サーバのハードウエア構成図である。
【
図3】
図1の内部サーバの機能および構成を示すブロック図である。
【
図4】
図3の台帳保持部の一例を示すデータ構造図である。
【
図5】
図3のユーザ情報保持部の一例を示すデータ構造図である。
【
図6】
図1のライブラリアンシステムにおける一連の処理の流れを示すチャートである。
【
図7】開発者端末のディスプレイに表示される登録画面の代表画面図である。
【
図10】監査支援部により提供される選択画面の代表画面図である。
【
図11】リリース申請回数確認画面の代表画面図である。
【
図12】本番適用遅延回数確認画面の代表画面図である。
【
図13】開発者変更回数確認画面の代表画面図である。
【
図15】第2の実施の形態に係る監査システムの模式図である。
【
図16】サーバダウン時に不正な作業が行われていないことの証明(要件1)に関する処理の流れを示すチャートである。
【
図18】CPU高騰によるリソース不足の解消の正当性担保(要件1)に関する処理の流れを示すチャートである。
【
図19】CPU高騰によるリソース不足の解消後の縮退の正当性担保(要件1)に関する処理の流れを示すチャートである。
【
図20】
図15の稼働証明台帳の一例を示すデータ構造図である。
【
図21】監査に関連するプログラムが稼働中に不正に改ざんされていないことの証明(要件2)に関する処理の流れを示すチャートである。
【
図22】
図15の正当性証明台帳の一例を示すデータ構造図である。
【発明を実施するための形態】
【0017】
以下、各図面に示される同一または同等の構成要素、部材、処理には、同一の符号を付するものとし、適宜重複した説明は省略する。また、各図面において説明上重要ではない部材の一部は省略して表示する。
【0018】
ブロックチェーンとも呼ばれる分散管理台帳技術が知られている。ブロックチェーンは、ノードにデータをブロックという単位でまとめて記録し、同じブロック情報を分散して管理する技術である。ブロックが時系列でつながっていることから、「ブロックチェーン」と呼ばれる。
【0019】
ブロックチェーンには主に以下の5つの特徴がある。
1.全員で情報共有
ブロックチェーンでつながっている、すべてのノードは、同じデータを保存する仕組みになっている。ブロックチェーンにデータが投入されると、初めにどのノードがブロックを追加するか、が決まる。どのように決まるかは、ブロックチェーンの設計によるが、一般的に、計算力に応じて決めるproof of work(PoW)、特定の管理者グループによって決めるPBFT等がある。次にブロックを追加したノードが、他のすべてのノードにブロックを送る。全ノードがブロックの内容を検証したうえで、問題なければ、それぞれのノードにブロックが追加される。その結果、全ノードに同じデータが保存されることとなる。問題があれば、ブロックは消え、最終的に問題のないブロックのみが追加される仕組みになっている。つまり、検証された正しいデータのみがブロックとして保存されることになる。2.無停止(ゼロダウンタイム)
従来のシステムでは、リーダの役割を持つコンピュータが存在したが、ブロックチェーンには、中央集権的なノードがないことが多い。ただし、一部のブロックチェーンでは、中心的役割を持ったノードが存在する。すべてのノードが平等につながっていて、全く同じ機能を有している。したがって、一部のノードが故障しても、他のノードが正常であれば、ブロックチェーン全体が停止することがなく、すべての処理が続行される。
3.改ざん不可能
ブロックチェーンでは、ブロックは時系列順に追加される。そして、過去のデータを改ざん(変更)すると、後に続く全データを変更しないと改ざんが成立しない。やりとりの妥当性が全ノードによって検証される。すなわち、ブロックには1つ前のブロックの情報を含んだハッシュ値が格納される。少しでもデータが異なると、ハッシュ値は全く異なる値となり、以降のブロックすべてを改ざんしないと整合性が取れない仕組みとなっている。また、51%以上のノードが協調して改ざんを実施しない限り、改ざんしたデータが正しいブロックとして保存されない。このようなことから事実上、改ざんは不可能である。
4.トレーサビリティ
ブロックチェーンでは、全ノードによって正しいと認められた、改ざん(変更)が不可能なデータがブロックとして保存されている。また、冗長化によりデータが失われることもない。加えて、時系列順に格納されているため、過去にさかのぼってデータを参照することができ、高いトレーサビリティがある。
5.低コスト
データベース製品やクラスタ製品が不要であり、低コストで構築が可能である。
【0020】
本発明者は、上記のブロックチェーンの特徴に鑑み、ライブラリアンを置き換えるためのシステムとブロックチェーンとの親和性が高いことを独自に見出した。特に、本発明者は、開発されたプログラムの本番環境へのリリースに係る監査の記録をブロックチェーンで管理することにより、当該システムに求められる、より高度なセキュリティを実現できることを見出した。監査の記録がブロックチェーンで残されることにより、悪意の開発者はその記録を改ざんすることができない。したがって、仮に承認後に改ざんが行われたとしても、システムはブロックチェーン上の記録を参照することで、その改ざんを容易に検知することができる。
【0021】
(第1の実施の形態)
図1は、第1の実施の形態に係るライブラリアンシステム100を含むプログラム管理システム10の全体構成を示す模式図である。プログラム管理システム10は、ライブラリアンシステム100と、開発者が操作する開発者端末12と、承認者が操作する承認者端末14と、開発者が操作するリリース端末18と、開発中の業務プログラムを保持、管理する開発機20と、代理サーバ(プロキシサーバ)22と、転送サーバ24と、ネットワーク接続ストレージ(NAS)26と、アクセス監視サーバ28と、ファイアウォール30と、リリースサーバ32と、開発済の業務プログラムがインストールされる本番機34とを備える。リリース端末18はガラス張りのリリース端末室49内に設置されている。
【0022】
ネットワーク接続ストレージ26は、制御部36と、開発側領域38と、本番側領域40と、を備える。制御部36は、ネットワーク接続ストレージ26のCPUが、ROMやRAMに格納されたOS及び制御プログラムに従って動作することにより、実現される。開発側領域38及び本番側領域40は、ネットワーク接続ストレージ26に搭載されたハードディスクや揮発性メモリや不揮発性メモリなどからなり、制御部36によって論理的に仕切られている。開発側領域38は、制御部36を介して開発セグメント42と接続される。また、本番側領域40は、制御部36を介してDMZ(DeMilitarized Zone/非武装地帯)セグメント44されている。
【0023】
ライブラリアンシステム100はライブラリアンセグメント41上に設置されている。
開発者端末12、承認者端末14、および開発機20は、開発セグメント42上に設置されている。
代理サーバ22、転送サーバ24、およびアクセス監視サーバ28は、DMZセグメント44上に設置されている。
リリース端末18は、本番アクセスセグメント48上に設置されている。
リリースサーバ32及び本番機34は、本番セグメント51上に設置されている。
【0024】
業務プログラムの開発者は、開発者端末12を用いて業務プログラムのコーディングを行い、開発機20上で単体テストや結合テストを完了する。開発者は、テスト等が完了した業務プログラムのオブジェクトファイルを、ライブラリアンシステム100とのやりとりを介してネットワーク接続ストレージ26の開発側領域38に格納する。
【0025】
つぎに開発者は、ライブラリアンシステム100とのやりとりを介して、直属の上司等である承認者に対して、開発済の業務プログラムをネットワーク接続ストレージ26の開発側領域38に格納した事実を伝達する。これを受けた承認者は、承認者端末14からネットワーク接続ストレージ26にアクセスし、開発側領域38に格納された業務プログラムを読み出す。
【0026】
つぎに承認者は、この業務プログラムの中身をチェックし、仕様書通りの機能を備えていることや、規定のテスト項目を全てクリアしていること、不正なモジュールが含まれていないことを確認する。この結果、問題がないと判断した承認者は、ライブラリアンシステム100とのやりとりを介して開発者に対して承認した旨を伝達する。
【0027】
ライブラリアンシステム100は、業務プログラムの登録や承認などのイベントが発生するたびに、そのときの業務プログラムのハッシュ値や位置やパスなどのスナップショットデータを取得し、取得したデータをブロックチェーンで管理する。
【0028】
ライブラリアンシステム100は周期的に、例えば5分に1回などの所定の時間間隔で、承認されたが移動されていない業務プログラムを特定する。ライブラリアンシステム100は、特定された業務プログラムの現在のハッシュ値と、ブロックチェーンに保持されている当該業務プログラムのハッシュ値と、が一致していることを確認した後、業務プログラムの転送依頼を行う。
【0029】
ライブラリアンシステム100は代理サーバ22にアクセスし、転送依頼コマンドを発行する。この転送依頼コマンドには、ライブラリアンシステム100のIPアドレス、転送対象となる業務プログラムのファイル名、格納場所が含まれる。
【0030】
これを受けた代理サーバ22は、転送依頼コマンドに含まれるIPアドレスが、予め設定されたライブラリアンシステム100のIPアドレスと一致することをチェックした後、転送依頼コマンドを転送サーバ24に転送する。
【0031】
代理サーバ22に対しては、ライブラリアンシステム100のみが認証可能となり、承認者端末14および承認者端末14からアクセスしても代理サーバ22によって認証不可と判定される。
【0032】
転送依頼コマンドを受け取った転送サーバ24は、転送依頼コマンドに含まれるIPアドレスが、予め設定された代理サーバ22のIPアドレスと一致することをチェックした後、転送依頼コマンドをネットワーク接続ストレージ26に発行する。
【0033】
これを受けたネットワーク接続ストレージ26の制御部36は、この転送コマンドに含まれるIPアドレスが、予め設定された転送サーバ24のIPアドレスと一致することをチェックした後、該当の業務プログラムを開発側領域38から本番側領域40に転送する。転送完了後、転送完了通知がネットワーク接続ストレージ26→転送サーバ24→代理サーバ22→ライブラリアンシステム100へと送信される。
【0034】
本番側領域40に一旦転送された業務プログラムに対しては、後述のようにリリースサーバ32からの転送コマンド以外は受け付けられず、開発者端末12や承認者端末14、ライブラリアンシステム100からのアクセスは制御部36によって一切拒絶される。このため、悪意の開発者が本番側領域40に保持されるリリース前の業務プログラムに不正なモジュールを組み込むことはできない。
【0035】
プログラム管理システム10における業務プログラムのリリース手順を説明する。
開発者は、リリース端末室49に移動し、そこに設置されたリリース端末18からアクセス監視サーバ28にアクセスし、リリース依頼コマンドを発行する。これを受けたアクセス監視サーバ28は、リリース依頼コマンドに含まれるIPアドレスが予め設定されたリリース端末18のIPアドレスと一致することをチェックした後、リリース依頼コマンドをリリースサーバ32に転送する。アクセス監視サーバ28はリリース端末18との間におけるデータのやり取りを、ログファイルに記録する。
【0036】
アクセス監視サーバ28からのリリース依頼コマンドを受けたリリースサーバ32は、リリース依頼コマンドに含まれるIPアドレスが、予め設定されたアクセス監視サーバ28のIPアドレスと一致することをチェックした後、該当の業務プログラムの転送依頼をネットワーク接続ストレージ26に送信する。
【0037】
これを受けたネットワーク接続ストレージ26の制御部36は、プログラム転送依頼に含まれるIPアドレスが予め設定されたリリースサーバ32のIPアドレスと一致することをチェックした後、該当の業務プログラムを本番側領域40から取り出し、リリースサーバ32に転送する。
【0038】
これを受けたリリースサーバ32は、本番機34の予め決められたディレクトリに、業務プログラムを転送する。この結果、本番機34に対する業務プログラムのリリースが完了する。この後、リリースサーバ32からライブラリアンシステム100に、リリース完了通知が送信される。
【0039】
ファイアウォール30のフィルタリング機能により、リリース端末18はアクセス監視サーバ28経由でのみ、リリースサーバ32にリリース依頼コマンドを送信でき、直接送ることはできない。そして、アクセス監視サーバ28においてアクセスログが逐一記録されるため、悪意の開発者がリリース端末18を介して不正なプログラムを本番機34にリリースさせることを防ぐことができる。
【0040】
ライブラリアンシステム100は、開発された業務プログラムの本番環境へのリリースを管理するシステムであり、ブロックチェーンが実装された複数(
図1の例では5つ)のサーバを備える。サーバは物理的なサーバ装置であってもよいし、物理的なサーバ装置上に構築された仮想サーバであってもよい。あるいはまた、5つのサーバのうちの少なくともひとつが仮想サーバであり、残りが物理的に別個のサーバであってもよい。
【0041】
5つのサーバのうちの4つのサーバ(以下、内部サーバ102と呼ぶ)は、プログラム管理システム10を管理する主体によって管理され、残りの1つのサーバ(以下、監査サーバ104と呼ぶ)は監査法人、監査人などの監査体により管理される。4つの内部サーバ102と監査サーバ106との間にはファイアウォール106が設けられる。監査法人により行われる監査は、内部統制の監査を含む。このように、監査法人もブロックチェーンに参加することにより、監査法人も同じ監査の記録の台帳を共有することとなるので、いつでも履歴を確認することが可能となる。これにより、監査の労力が軽減される。
【0042】
ライブラリアンシステム100では、ブロックチェーンに参加する5つのサーバはインターネット、イントラネットなどのネットワークを介して互いに通信可能に構成される。さらに、4つの内部サーバ102はネットワークを介して開発者端末12および承認者端末14と通信可能に構成される。
【0043】
ライブラリアンシステム100は、ブロックチェーンを生成し保持することができるスケーラブルな分散型ピアツーピアシステムである。ブロックチェーンを構成し、管理するための技術は公知であるから、本明細書では詳述しない(例えば特許文献2参照)。本実施の形態では、ブロックチェーンのブロックに記録するデータを工夫することにより、ライブラリアンを自動化した場合のセキュリティを担保する。
【0044】
図2は、
図1の内部サーバ102のハードウエア構成図である。監査サーバ104、承認者端末14、開発者端末12、リリース端末18、開発機20、代理サーバ22、転送サーバ24、アクセス監視サーバ28、リリースサーバ32、本番機34はそれぞれ
図2に示されるハードウエア構成と同様のハードウエア構成を備えてもよい。内部サーバ102は、メモリ110と、プロセッサ112と、通信インタフェース114と、ディスプレイ116と、入力インタフェース1118と、を備える。これらの要素はそれぞれバス120に接続され、バス120を介して互いに通信する。
【0045】
メモリ110は、データやプログラムを記憶するための記憶領域である。データやプログラムは、メモリ110に恒久的に記憶されてもよいし、一時的に記憶されてもよい。プロセッサ112は、メモリ110に記憶されているプログラムを実行することにより、内部サーバ102の各種機能を実現する。通信インタフェース114は、内部サーバ102の外部との間でデータの送受信を行うためのインタフェースである。通信インタフェース114はネットワークと接続され、ネットワークを介して、他の内部サーバ102や監査サーバ104や承認者端末14や開発者端末12や代理サーバ22とデータをやりとりする。ディスプレイ116は、各種情報を表示するためのデバイスである。入力インタフェース118は、本サービスの管理者からの入力を受け付けるためのデバイスである。
【0046】
図3は、
図1の内部サーバ102の機能および構成を示すブロック図である。ここに示す各ブロックは、ハードウエア的には、コンピュータのCPUをはじめとする素子や機械装置で実現でき、ソフトウエア的にはコンピュータプログラム等によって実現されるが、ここでは、それらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックはハードウエア、ソフトウエアの組合せによっていろいろなかたちで実現できることは、本明細書に触れた当業者には理解されるところである。
【0047】
内部サーバ102は、台帳保持部130と、ユーザ情報保持部132と、ブロックチェーン機能部134と、ライブラリアン機能部136と、を備える。ブロックチェーン機能部134はブロックチェーンに関する機能を実現する。ブロックチェーン機能部134は、イベント検出部138と、スナップショット取得部140と、ブロック生成部142と、表示制御部144と、監査支援部146と、を含む。ライブラリアン機能部136は、ライブラリアンとしての動作を自動化するための機能を実現する。ライブラリアン機能部136は、開発者インタフェース部148と、承認者インタフェース部150と、転送対象特定部152と、転送依頼部154と、を含む。
【0048】
図1に示される4つの内部サーバ102のそれぞれは、
図3に示される構成を有する。他の実施の形態では、4つの内部サーバ102のうちの特定の(1つ以上の)内部サーバ102のみが
図3に示される構成を有し、他の内部サーバ102は台帳保持部130およびブロックチェーンを管理する機能を有する。さらに別の実施の形態では、
図3に示される構成のうちブロックチェーン機能部134およびライブラリアン機能部136は、4つの内部サーバ102により協働的に実現される。すなわち、一例では、ある内部サーバ102がブロックチェーン機能部134を有し、他の内部サーバ102がライブラリアン機能部136を有する。監査サーバ104は基本的に台帳保持部130およびブロックチェーンを管理する機能を有し、ライブラリアン機能部136を有さないが、他の実施の形態では、監査サーバ104が
図3に示される構成を有してもよい。いずれにせよ、ライブラリアンシステム100のブロックチェーンに参加する全てのサーバ(内部サーバ102、監査サーバ104)は同じ台帳保持部130を有する。
【0049】
図4は、
図3の台帳保持部130の一例を示すデータ構造図である。台帳保持部130は、ブロックチェーンのブロックを保持する。台帳保持部130では、起源ブロック(不図示)から時系列に並んだ複数のブロック302、304、306、308、310、312、314、316が保持されている。ブロック302は、前のブロックのハッシュ値318と、業務プログラムのスナップショットデータ320と、を含む。他のブロックも同様の構成を有する。
【0050】
業務プログラムのスナップショットデータ320は、業務プログラムを特定する番号と、業務プログラムの名称と、検出されたイベントの行為者(主体)と、イベントを検出したときの業務プログラムのハッシュ値と、検出されたイベントを特定するステータスフラグと、業務プログラムが移動したまたはイベントが発生した時刻と、イベントを検出したときの業務プログラムの位置と、イベントを検出したときの業務プログラムのファイルパスと、を対応付けて保持する。
【0051】
行為者は、行為者のユーザIDにより記録される。業務プログラムの位置は、ネットワーク接続ストレージ26の開発側領域38を示す「開発」と、ネットワーク接続ストレージ26の本番側領域40を示す「DMZ」と、本番機34を示す「本番」と、のうちのいずれかに設定される。業務プログラムのハッシュ値は、イベントを検出したときの業務プログラムの一意性を担保する一意性情報である。他の実施の形態では、一意性情報としてハッシュ値に加えてまたはその代わりに、業務プログラムのサイズや行数を用いてもよい。
【0052】
図1に関連して上述した通り、プログラム管理システム10における業務プログラムの開発からリリースまでのフローにおいて、開発された業務プログラムは開発者によるアクセスが可能な開発側領域38から開発者によるアクセスが制限または禁止される本番側領域40に移され、さらに本番側領域40から本番環境の本番機34に移されることによってリリースされる。イベントは、このような業務プログラムのリリースに関するイベントであり、本実施の形態では以下の4つのイベントが定義される。
(1)開発者による、開発が完了した業務プログラムの登録。ステータスフラグは「登録済み」。以下、登録イベントという。
(2)承認者による、開発が完了し開発側領域38に保持されている業務プログラムの承認。ステータスフラグは「承認済み」。以下、承認イベントという。
(3)ライブラリアン機能部136により自動で行われる、開発側領域38から本番側領域40への業務プログラムの転送。ステータスフラグは「移動済み」。以下、転送イベントという。
(4)開発者による、本番側領域40から本番機34への業務プログラムの転送。ステータスフラグは「リリース済み」。以下、リリースイベントという。
【0053】
登録イベントに関して、
図4のブロック302は、開発者(NRI_001)が作成の完了した業務プログラム(KAIKEI_01)の登録を後述の登録画面で行ったときのスナップショットデータ320を含む。
承認イベントに関して、
図4のブロック308は、承認者(NRI_011)が開発者の依頼を受け、同じ業務プログラム(KAIKEI_01)の承認を後述の承認画面で行ったときのスナップショットデータ322を含む。
転送イベントに関して、
図4のブロック312は、ライブラリアン機能部136がステータスフラグ=「承認済み」の同じ業務プログラム(KAIKEI_01)を発見し、それを本番側領域40(DMZ)に移動させたときのスナップショットデータ324を含む。
リリースイベントに関して、
図4のブロック316は、開発者(NRI_001)が本番機34に同じ業務プログラム(KAIKEI_01)をデプロイ(移動)させたときのスナップショットデータ326を含む。
【0054】
図5は、
図3のユーザ情報保持部132の一例を示すデータ構造図である。ユーザ情報保持部132は、プログラム管理システム10におけるユーザを特定するユーザIDと、ユーザの名前と、ユーザの電子メールアドレスと、ユーザの役職と、を対応付けて保持する。本実施の形態では、役職は開発者、承認者、ライブラリアン(システム)のいずれかである。
【0055】
図5では、各ブロックにひとつのスナップショットデータが含まれているが、他の実施の形態では、ひとつのブロックに複数のスナップショットデータが含まれてもよい。例えば、5分に1回の業務プログラムの転送において複数の業務プログラムが転送された場合、そのように転送された複数の業務プログラムのスナップショットデータをまとめてひとつのブロックに格納してもよい。
【0056】
図3に戻り、イベント検出部138はイベントを検出する。イベント検出部138は、イベントが発生したときにライブラリアン機能部136から提供されるイベント通知に基づいてイベントを検出する。あるいはまた、イベント検出部138はライブラリアン機能部136を監視することでイベントの発生を検出してもよい。
【0057】
スナップショット取得部140は、イベント検出部138がイベントを検出すると、該イベントを検出したときの該イベントの対象となっている業務プログラムのスナップショットデータを取得する。例えば、スナップショットデータに含まれるデータ項目の全てを含むようにイベント通知を構成することができ、この場合、スナップショット取得部140はイベント通知を参照してスナップショットデータを取得する。あるいはまた、イベント通知は最低限、イベントの対象となった業務プログラムの番号とイベントの種類とを含めばよく、その場合、スナップショット取得部140は足りない要素をプログラム管理システム10の各構成要素から取得する。例えば、イベント通知に業務プログラムのハッシュ値が含まれていない場合は、スナップショット取得部140は業務プログラムのハッシュ値を算出する。あるいはまた、例えば、イベント通知に行為者の名前が含まれている場合、スナップショット取得部140はユーザ情報保持部132を参照することで行為者のユーザIDを特定してもよい。
【0058】
ブロック生成部142は、スナップショット取得部140によって取得されたスナップショットデータを含む、ブロックチェーンのブロックを生成する。ブロック生成部142は、所定のブロックチェーンのプロトコルにしたがい、取得されたスナップショットデータを含むブロックを台帳保持部130に追加すると共に、ブロックチェーンに参加する他のサーバに同じブロックを追加するよう要請する。ブロックチェーンへの新たなブロックの生成または追加は、例えば特許文献2に記載される公知のブロックチェーン技術を用いて実現されてもよい。
【0059】
表示制御部144および監査支援部146の機能については、代表画面図を参照しながら後述する。
【0060】
開発者インタフェース部148は、開発者端末12とのインタフェースとして機能する。開発者インタフェース部148は開発者端末12に後述の登録画面を提供し、該画面への入力を通じて開発者から業務プログラムの登録を受け付ける。開発者インタフェース部148は、登録を受け付けると登録イベントの発生を示すイベント通知を生成し、イベント検出部138に送信する。開発者インタフェース部148は、ユーザ情報保持部132を参照することで、開発者端末12で操作を行っている者が開発者であることを確認してもよい。
【0061】
承認者インタフェース部150は、承認者端末14とのインタフェースとして機能する。承認者インタフェース部150は承認者端末14に後述の承認画面を提供し、該画面への入力を通じて承認者から業務プログラムの承認を受け付ける。承認者インタフェース部150は、承認を受け付けると承認イベントの発生を示すイベント通知を生成し、イベント検出部138に送信する。承認者インタフェース部150は、ユーザ情報保持部132を参照することで、承認者端末14で操作を行っている者が承認者であることを確認してもよい。
【0062】
転送対象特定部152は、台帳保持部130に保持されるブロックに含まれているステータスフラグを参照することによって、周期的に、例えば5分に1回などの所定の時間間隔で、承認されたが移動されていない業務プログラムを特定する。転送対象特定部152は、台帳保持部130を参照し、最新のステータスフラグが「承認済み」となっている業務プログラムを特定する。転送対象特定部152は、特定された業務プログラムのそれぞれについて、ファイルパスを用いて業務プログラムにアクセスし、そのハッシュ値を算出する。転送対象特定部152は、算出されたハッシュ値すなわち特定された業務プログラムの現在のハッシュ値と、台帳保持部130に保持される当該業務プログラムの最新のハッシュ値とを比較し、一致する場合は当該業務プログラムを転送対象として特定し、相違する場合は当該業務プログラムを特定せずに所定の警告処理を行う。
【0063】
転送依頼部154は、転送対象特定部152によって転送対象として特定された業務プログラムを開発側領域38から本番側領域40へ転送するまたは移動させるための指示を自動で生成する。転送依頼部154は、生成された指示を代理サーバ22に送信することによって、業務プログラムの転送依頼を行う。
【0064】
以上の構成によるライブラリアンシステム100の動作を説明する。
図6は、
図1のライブラリアンシステム100における一連の処理の流れを示すチャートである。ライブラリアン機能部136は、開発者端末12を介して開発者から、業務プログラムの登録を受け付ける(S602)。ライブラリアン機能部136は、登録イベントの発生を示すイベント通知を生成し、ブロックチェーン機能部134に送信する(S604)。ブロックチェーン機能部134は、ステップS604のイベント通知を受けて業務プログラムの登録イベントを検出する(S606)。ブロックチェーン機能部134は、スナップショットデータを含むブロックをブロックチェーンに追加する(S608)。
【0065】
ライブラリアン機能部136は、承認者端末14を介して承認者から、業務プログラムの承認を受け付ける(S610)。ライブラリアン機能部136は、承認イベントの発生を示すイベント通知を生成し、ブロックチェーン機能部134に送信する(S612)。ブロックチェーン機能部134は、ステップS612のイベント通知を受けて業務プログラムの承認イベントを検出する(S614)。ブロックチェーン機能部134は、スナップショットデータを含むブロックをブロックチェーンに追加する(S616)。
【0066】
ライブラリアン機能部136は、所定の時間間隔で承認済み業務プログラムの開発セグメントからDMZセグメントへの転送処理を行う(S618)。ライブラリアン機能部136は転送処理が完了すると、転送イベントの発生を示すイベント通知を生成し、ブロックチェーン機能部134に送信する(S620)。ブロックチェーン機能部134は、ステップS620のイベント通知を受けて業務プログラムの転送イベントを検出する(S622)。ブロックチェーン機能部134は、スナップショットデータを含むブロックをブロックチェーンに追加する(S624)。
【0067】
ライブラリアン機能部136は、リリースサーバ32から業務プログラムのリリースが完了したことを示すリリース完了通知を受信する(S626)。ライブラリアン機能部136は、リリースイベントの発生を示すイベント通知を生成し、ブロックチェーン機能部134に送信する(S628)。ブロックチェーン機能部134は、ステップS628のイベント通知を受けて業務プログラムのリリースイベントを検出する(S630)。ブロックチェーン機能部134は、スナップショットデータを含むブロックをブロックチェーンに追加する(S632)。
【0068】
図7は、開発者端末12のディスプレイに表示される登録画面500の代表画面図である。
図6のステップS602において、ライブラリアン機能部136の開発者インタフェース部148は、登録画面500の画面情報を生成して開発者端末12に送信する。開発者端末12は受信した画面情報に基づいてディスプレイに登録画面500を表示させる。開発者は、登録画面500の入力フィールド502に業務プログラムの番号、名前およびファイルパスを入力し、登録ボタン504を押し下げる。開発者インタフェース部148は入力フィールド502に入力された情報を受信する。開発者インタフェース部148は、登録画面500が表示されているときに開発者端末12にログインしているユーザを行為者として特定する。開発者インタフェース部148は、受信した業務プログラムのファイルパスにしたがって業務プログラムにアクセスし、そのハッシュ値を算出する。開発者インタフェース部148は、ステータスフラグとして「登録済み」を選択する。開発者インタフェース部148は、登録ボタン504が押し下げられた時刻を、登録イベントが発生した時刻として特定する。開発者インタフェース部148は、これらの情報を含むイベント通知を生成し、
図6のステップS604にあるようにブロックチェーン機能部134に送信する。
【0069】
承認者インタフェース部150は、登録された業務プログラムの承認を求める承認画面506を生成し、そのURLを開発者に電子メールで通知する。開発者は、受信したURLを元に、承認者に承認を依頼する。承認者が承認者端末14においてそのURLをクリックすると、承認者端末14のディスプレイに承認画面506が表示される。
【0070】
図8は、承認画面506の代表画面図である。承認者は、承認画面506に表示されている情報に基づいて、開発者に業務プログラムのソースコードや仕様書の提示を求めるなどして業務プログラムの正当性を確認する。確認が終わると、承認者は承認画面506の承認ボタン508を押し下げる。承認者インタフェース部150は、承認ボタン508の押し下げを検出すると、承認画面506が表示されているときに承認者端末14にログインしているユーザを行為者として特定する。承認者インタフェース部150は、承認画面506に表示されていた業務プログラムのファイルパスにしたがって業務プログラムにアクセスし、そのハッシュ値を算出する。承認者インタフェース部150は、ステータスフラグとして「承認済み」を選択する。承認者インタフェース部150は、承認ボタン508が押し下げられた時刻を、承認イベントが発生した時刻として特定する。承認者インタフェース部150は、これらの情報を含むイベント通知を生成し、
図6のステップS612にあるようにブロックチェーン機能部134に送信する。
【0071】
ブロックチェーン機能部134の表示制御部144は、開発者端末12、承認者端末14またはライブラリアンシステム100のいずれかのサーバから、管理画面510の表示要求を受信する。表示制御部144は、当該要求を受信すると、台帳保持部130に保持されるブロックを参照することによって、所定の業務プログラムについて発生したイベントと、該イベントを検出したときのハッシュ値と、を対応付けて表示する管理画面510を生成し、生成された管理画面510をディスプレイに表示させる。
【0072】
図9は、管理画面510の代表画面図である。管理画面510は、業務プログラムの番号および名前が表示されるプログラム特定情報表示領域512と、業務プログラムのステータスが表示されるステータス表示領域514と、を有する。ステータス表示領域514には、イベントごとに、イベントを検出したか否か、イベントを検出した時刻、行為者、イベントを検出したときの業務プログラムのハッシュ値、が表示される。
図9の例では、承認イベントを検出したときのハッシュ値と転送イベントを検出したときのハッシュ値とが異なることから、承認完了から転送が発生するまでの期間に業務プログラムが書き換えられたことを検知することができる。
【0073】
監査においては、ある業務プログラムについて、登録、承認、転送、リリースのフローに抜けが無いことがひとつの重要な監査指標である。ライブラリアンシステム100ではブロックチェーンのトレーサビリティを活かして
図9のような一覧性の高い画面を提供できるので、監査を効率化できる。さらに、監査サーバ104がライブラリアンシステム100に含まれる場合は、監査人が企業(プログラム管理システム10を管理する主体)を訪問しなくても、
図9に示されるような管理画面510を自己の端末のディスプレイに表示できるので、さらなる効率化が図られる。
【0074】
上記の通り、監査サーバ104を含むライブラリアンシステム100により、監査人が監査対象の企業へ来社する必要が無くなり、監査の負荷低減を行うことができる。さらに、監査支援部146が、台帳保持部130に保持されるブロックを参照することによって、業務プログラムのリリースに関する統計情報を表示する各種画面を生成し、監査サーバ104のディスプレイに表示させることによって、さらに効率的かつ効果的な監査を実現できる。
【0075】
従来、監査は、何万本となる監査対象プログラムの中から抜き打ちで、その内部統制が確保できているかどうか確認を行う場合が多い。しかしながら、これでは統制が担保されているかどうかの確認確度を一定のレベルに保つことは難しい。内部統制の場合、統制が懸念されるのは以下のような業務プログラム(またはモジュール)である。
●一定期間内に、同一開発者からの申請回数が非常に多い場合。
●本番適用が滞りがち(例えば、1週間以上経過しても、稼動しない。もしくは本番稼動する前に再度のリリース申請)。
●同一業務プログラムであるにも関わらず、一定期間内に開発者がたびたび変更される。
【0076】
ライブラリアンシステム100では、ブロックチェーンのトレーサビリティを用いることで、上述のような特性を統計的な数字として記録することができる。具体的には、監査支援部146は、1日おきに、上記の統計的な数字を業務プログラムごとに積算する。この積算は、1年間を通して行われる。監査は毎年行われるからである。監査時においては、監査支援部146が監査人のPCにその情報を含む支援画面を表示することで、統制が担保されているかどうかの確認確度を一定のレベルに保つことができる。
【0077】
図10は、監査支援部146により提供される選択画面516の代表画面図である。選択画面516は、監査人に、表示する支援画面を選択させるための画面であり、リリース申請回数確認ボタン518と、本番適用遅延回数確認ボタン520と、開発者変更回数確認ボタン522と、を有する。
【0078】
選択画面516においてリリース申請回数確認ボタン518が押し下げられると、監査支援部146は、監査人のPCのディスプレイにリリース申請回数確認画面524を表示させる。
図11は、リリース申請回数確認画面524の代表画面図である。
【0079】
選択画面516において本番適用遅延回数確認ボタン520が押し下げられると、監査支援部146は、監査人のPCのディスプレイに本番適用遅延回数確認画面526を表示させる。
図12は、本番適用遅延回数確認画面526の代表画面図である。
【0080】
選択画面516において開発者変更回数確認ボタン522が押し下げられると、監査支援部146は、監査人のPCのディスプレイに開発者変更回数確認画面528を表示させる。
図13は、開発者変更回数確認画面528の代表画面図である。
【0081】
上述の実施の形態において、保持部の例は、ハードディスクや半導体メモリである。また、本明細書の記載に基づき、各部を、図示しないCPUや、インストールされたアプリケーションプログラムのモジュールや、システムプログラムのモジュールや、ハードディスクから読み出したデータの内容を一時的に記憶する半導体メモリなどにより実現できることは本明細書に触れた当業者には理解される。
【0082】
本実施の形態に係るライブラリアンシステム100によると、これまでライブラリアンが人手で行っていた作業をライブラリアン機能部136が自動で行うので、省人化を図ることができる。そして、セキュリティの担保に関しては、イベントごとに生成されるスナップショットデータをブロックチェーンで管理することで、非改ざん性およびトレーサビリティを併せ持つ証跡を提供することができる。そして、監査人もブロックチェーンに参加することで、監査を効率化することができる。
【0083】
図14は、省人化の効果を表すイメージ図である。特許文献1に記載されるシステムを用いる場合、
図14の左側に示すように比較的大きなライブラリアン組織が必要であった。これに対して、本実施の形態に係るライブラリアンシステム100を採用した場合、ライブラリアンシステム100の管理者が1名いればよく(
図14の右側)、後はライブラリアンとしての業務、セキュリティの担保、監査人への対応など全てライブラリアンシステム100が自動で対応する。
【0084】
第1の実施の形態では、ライブラリアンシステム100において、イベントごとに業務プログラムのスナップショットデータを取得して、そのスナップショットデータのフローをブロックチェーン化する場合を説明した。この技術的思想はJ-SOX法対応のプログラムリリース管理システムに適用可能であり、さらには、業務ワークフローベースで仕事をしている事務処理全般にも適用可能である。
【0085】
(第2の実施の形態)
第1の実施の形態では、ブロックチェーンのトレーサビリティを利用して監査への対応を効率化することを説明した。第2の実施の形態では、監査システムとしての完全性を担保する機能の実装を説明する。
【0086】
第1の実施の形態のライブラリアンシステム100は監査システムとも言いうるものである。このように監査をシステム化する際の重要な要件は以下の2つである。
要件1.サーバダウン時に不正な作業が行われていないことの証明
障害等により、サーバが停止した際に、復旧作業にあわせて不正な操作をしていないかなどの証明が必要である。従来では、作業者を、利害関係の無い第三者組織にするなど、組織面での統制をふまえた担保をしていた。
要件2.監査に関連するプログラムが稼働中に不正に改ざんされていないことの証明
監査を統括するプログラムが稼働中に不正に書き換えられていないかといった証明が必要である。従来では、定期的にプログラムコードを印刷して監査時に証明していた。
【0087】
従来では、上記2つの要件を充たすことの証明は基本的に書面の提出により行われており、多くの手間がかかっている。そこで、本実施の形態では、ブロックチェーンを採用する監査システムが自らの正常稼働記録を自らのブロックチェーンの台帳に記録することで、これらを証明する。すなわち、自らの正常稼働記録を改ざん不可能なブロックチェーンで証明する。
【0088】
図15は、第2の実施の形態に係る監査システム800の模式図である。監査システム800は、第1の実施の形態で説明した業務プログラムのリリース作業の監査などの監査を行い、その記録を管理するシステムである。監査システム800は、ブロックチェーンが実装された複数(
図15の例では5つ)のサーバ802、804、806、808、810を備える。
【0089】
第2の実施の形態では、ブロックチェーンにおいて複数の台帳の管理が可能であることを利用する。監査システム800は、それぞれがブロックチェーンのプロトコルにしたがい管理される3つの台帳を備える。3つの台帳は、(1)メインの台帳である監査記録の台帳(監査台帳812という)と、(2)サーバの稼働証明記録の台帳(稼働証明台帳814という)と、(3)監査関連プログラムの正当性証明記録の台帳(正当性証明台帳816という)と、からなる。監査台帳812は、例えばJ-SOX法に準拠するための情報を保持する台帳であり、第1の実施の形態の台帳保持部130に対応してもよい。稼働証明台帳814は、監査システム800自らの稼働の正常性証明情報を保持する。正当性証明台帳816は、主要機能の非改ざん証明情報を保持する。
【0090】
監査システム800は一台のサーバ装置上に構築される複数の仮想サーバにより構成される。すなわち、複数のサーバ802、804、806、808、810のそれぞれは仮想サーバである。監査システム800では後述の通りサーバ間の多数決を用いるので、監査システム800のブロックチェーンに参加する仮想サーバの数は3を最小とし奇数とする。
図15の例では5である。サーバの仮想化は、コンピュータのリソース(CPU、メモリ、ネットワークインタフェース、記録装置など)を抽象化、プール化して、1つの物理サーバ上で複数の仮想サーバを動作可能とする公知の技術である。監査システム800の仮想サーバはこの公知のサーバ仮想化技術を用いて実現される。
【0091】
サーバの仮想化において、物理リソースはハイパーバイザによって管理され、抽象化される。仮想サーバの各OSには仮想リソースが割り当てられる。したがって、ソフトウエアにより実行される比較的簡単な作業により、仮想サーバを削除したり複製したりすることができる。
【0092】
図16は、サーバダウン時に不正な作業が行われていないことの証明(要件1)に関する処理の流れを示すチャートである。監査システム800のサーバ810は、所定の発砲タイミングで、他のサーバ802、804、806、808に対して生死の確認を行う(Step1)。発砲タイミングの具体例については後述する。「発砲」は複数のサーバに情報を実質的に同時にまたは順番に送信することである。
【0093】
他のサーバ802、804、806、808の全てが正常に応答した場合、確認元のサーバ810は次のサーバ802に処理を渡す。次のサーバ802はStep1の生死確認を行う。このように生死確認を順番に行い、全て正常のまま一周すると、監査システム800はそのサイクルが終了した時点で監査システム800の正常性を稼働証明台帳814に記録し、次のサイクルに移行する。
【0094】
Step1の生死の確認に対して応答しないサーバ804があった場合、または所定時間(例えば3秒)まっても返事が無い場合、確認元のサーバ810は生死監視プログラムを停止し、他のサーバ802、804、806、808のうち応答が無かったサーバ804以外のサーバ802、806、808に対してサーバ回復依頼を発砲する(Step2)。
【0095】
Step2で送信されたサーバ回復依頼を受信したサーバ802は、自分以外のサーバ804、806、808、810に対して生死の確認を行う(Step3)。当該確認に対して全てのサーバ804、806、808、810が応答した場合(応答が無いサーバが無い場合)、サーバ802は回復作業の否決を依頼元のサーバ810に返却または送信する。当該確認に対して応答が無いサーバ804を発見した場合、サーバ802は、回復作業承認と応答が無いサーバ804のサーバ名とを依頼元のサーバ810に返却する。「返却」は、返送、送信とも言い換えることができる。
【0096】
依頼元のサーバ810は、依頼先のサーバ802、806、808からの返事を集計する(Step4)。この集計の際の集計対象は、依頼元のサーバ810が発見した障害の疑われる(応答が無かった)サーバ804のみとする。集計の結果、多数決で否決された場合、依頼元のサーバ810は回復作業を取りやめ、誤検知として扱い、生死監視プログラムを再開する。集計の結果、多数決で可決された場合、依頼元のサーバ810は回復作業を開始する。
【0097】
Step5の回復作業は以下のフローで行われる。
(1)依頼元のサーバ810は、特定した障害の疑われるサーバ804をブロックチェーンから切り離し、削除する。依頼元のサーバ810は、切り離し時刻と構成サーバ台数と切り離したサーバ名と理由(=障害切り離し)と状態(=異常)とを含むブロックを稼働証明台帳814に追加する。
(2)依頼元のサーバ810は、自ら(サーバ810)の仮想マシンの複製を生成し、生成されたサーバ818のサーバ名を削除したサーバ804のサーバ名とする。
(3)サーバの複製が完了すると、依頼元のサーバ810は、生成されたサーバ818をブロックチェーンのネットワークに参加させる。依頼元のサーバ810は、回復時刻と構成サーバ台数と生成されたサーバ名(=切り離したサーバ名)と理由(=回復完了)と状態(=異常)とを含むブロックを稼働証明台帳814に追加する。
(4)依頼元のサーバ810は、生死監視プログラムを、現在時刻に最も近い時刻から再開させる。
【0098】
図17は、発砲タイミングの一例を示す図である。構成サーバ数に応じて1分間に繰り返すサイクル数が異なる。例えば、構成サーバ数が3のときは1分間に3サイクル繰り返すが、構成サーバ数が7のときは1分間に1サイクルとなる。
【0099】
図18は、CPU高騰によるリソース不足の解消の正当性担保(要件1)に関する処理の流れを示すチャートである。監査システム800のサーバ810は、毎秒自らのCPUおよびメモリの利用率を確認する(Step1)。他のサーバ802、804、806、808も同様な確認を行う。全てのサーバ802、804、806、808、810において、CPUの利用率がしきい値すなわち90%未満であり、かつメモリの利用率が90%未満である状態が1分間継続した場合、監査システム800はその1分間のサイクルが終了した時点で監査システム800の正常性を稼働証明台帳814に記録し、次のサイクルに移行することで繰り返し確認を継続する。
【0100】
サーバ810のCPUの利用率およびメモリの利用率の少なくともひとつが90%以上である状態が2分間継続した場合、サーバ810は生死監視プログラムおよびリソース監視プログラムを停止する。サーバ810は、他のサーバ802、804、806、808に対して、リソース増強依頼を発砲する(Step2)。
【0101】
Step2のリソース増強依頼を受信したサーバ802、804、806、808は、依頼元のサーバ810のCPUの利用率およびメモリの利用率を確認する(Step3)。確認の結果、CPUの利用率もメモリの利用率も90%未満の場合、依頼先のサーバ802、804、806、808はリソース増強作業の否決を依頼元のサーバ810に返却する。確認の結果、CPUの利用率およびメモリの利用率の少なくともひとつが90%以上の場合、依頼先のサーバ802、804、806、808は依頼元のサーバ810にリソース増強承認を返却する。
【0102】
依頼元のサーバ810は、依頼先のサーバ802、806、808からの返事を集計する(Step4)。集計の結果、多数決で否決された場合、依頼元のサーバ810はリリース増強作業を取りやめ、誤検知として扱い、生死監視プログラムおよびリソース監視プログラムを再開する。集計の結果、多数決で可決された場合、依頼元のサーバ810はリソース増強作業を開始する。
【0103】
Step5のリソース増強作業は以下のフローで行われる。
(1)依頼元のサーバ810は、現在の構成サーバ台数を稼働証明台帳814から取得する。構成サーバ台数が最大数の11台に達していなければ、依頼元のサーバ810は2台ずつ増強すると決定する。なお、物理的なサーバ装置の性能や増強の見込みなどにより、最大数の11台は可変であってもよい。
(2)依頼元のサーバ810は、自らを複製することで、2台の仮想サーバ820、822を生成する。ここで、サーバの名称には連続番号を設定する。監査システム800では多数決方式を採用しているので、多数決が成立するために合計して奇数の台数を維持する。
(3)サーバの複製が完了すると、依頼元のサーバ810は、生成された2台のサーバ820、822をブロックチェーンのネットワークに参加させる。依頼元のサーバ810は、増強時刻と増強後の構成サーバ台数と生成されたサーバ名と理由(=ノード追加)と状態(=異常)とを含むブロックを稼働証明台帳814に追加する。
(4)依頼元のサーバ810は、生死監視プログラムおよびリソース監視プログラムを、現在時刻に最も近い時刻から再開させる。
【0104】
図19は、CPU高騰によるリソース不足の解消後の縮退の正当性担保(要件1)に関する処理の流れを示すチャートである。監査システム800のサーバ810は、毎秒自らのCPUおよびメモリの利用率を確認する(Step1)。他のサーバ802、804、806、808も同様な確認を行う。全てのサーバ802、804、806、808、810において、CPUの利用率が5%より大きく90%未満であり、かつメモリの利用率が5%より大きく90%未満である状態が1分間継続した場合、監査システム800はその1分間のサイクルが終了した時点で監査システム800の正常性を稼働証明台帳814に記録し、次のサイクルに移行することで繰り返し確認を継続する。
【0105】
サーバ810のCPUの利用率およびメモリの利用率の少なくともひとつが5%以下である状態が2分間継続した場合、かつ、構成サーバ台数が5以上である場合、サーバ810は生死監視プログラムおよびリソース監視プログラムを停止する。サーバ810は、他のサーバ802、804、806、808に対して、リソース縮退依頼を発砲する(Step2)。
【0106】
Step2のリソース縮退依頼を受信したサーバ802、804、806、808は、依頼元のサーバ810のCPUの利用率およびメモリの利用率を確認する(Step3)。確認の結果、CPUの利用率もメモリの利用率も5%より大きく90%未満の場合、依頼先のサーバ802、804、806、808はリソース縮退作業の否決を依頼元のサーバ810に返却する。確認の結果、CPUの利用率およびメモリの利用率の少なくともひとつが5%以下の場合、依頼先のサーバ802、804、806、808は依頼元のサーバ810にリソース縮退承認を返却する。
【0107】
依頼元のサーバ810は、依頼先のサーバ802、806、808からの返事を集計する(Step4)。集計の結果、多数決で否決された場合、依頼元のサーバ810はリリース縮退作業を取りやめ、誤検知として扱い、生死監視プログラムおよびリソース監視プログラムを再開する。集計の結果、多数決で可決された場合、依頼元のサーバ810はリソース縮退作業を開始する。
【0108】
Step5のリソース縮退作業は以下のフローで行われる。
(1)依頼元のサーバ810は、現在の構成サーバ台数を稼働証明台帳814から取得する。構成サーバ台数が最小数の3台に達していなければ、依頼元のサーバ810は2台ずつ削除すると決定する。
(2)依頼元のサーバ810は、サーバ名称の番号の数字が大きいものから2台を削除の対象として特定し、特定されたサーバ804、806を削除する。監査システム800では多数決方式を採用しているので、多数決が成立するために合計して奇数の台数を維持する。
(3)サーバの削除が完了すると、依頼元のサーバ810は、削除時刻と削除後の構成サーバ台数と削除されたサーバ名と理由(=ノード削除)と状態(=異常)とを含むブロックを稼働証明台帳814に追加する。
(4)依頼元のサーバ810は、生死監視プログラムおよびリソース監視プログラムを、現在時刻に最も近い時刻から再開させる。
【0109】
図20は、
図15の稼働証明台帳814の一例を示すデータ構造図である。稼働証明台帳814は、ブロックチェーンのブロックを保持する。稼働証明台帳814では、起源ブロック(不図示)から時系列に並んだ複数のブロック830、832、834、836、838が保持されている。ブロック830は、前のブロックのハッシュ値840と、監査システム800の稼働の状況を示す稼働データ842と、を含む。他のブロックも同様の構成を有する。
【0110】
図21は、監査に関連するプログラムが稼働中に不正に改ざんされていないことの証明(要件2)に関する処理の流れを示すチャートである。監査システム800のサーバ810は、毎秒、他のサーバ802、804、806、808に対して監査関連プログラムの行数およびファイルサイズ(バイト数)の比較確認を要求する(Step1)。なお、行数およびファイルサイズはいずれか一方でもよく、これに代えてまたは加えて、監査関連プログラムのハッシュ値が用いられてもよい。監査関連プログラムの行数およびファイルサイズに差分が無い状態が1分間継続した場合、監査システム800はその1分間のサイクルが終了した時点で監査関連プログラムの正常性を正当性証明台帳816に記録し、次のサイクルに移行することで繰り返し確認を継続する。
【0111】
差分があった場合(ここで、返事が無い場合は前述の障害/リソース過不足対応で対処済みであるから想定しない)、サーバ810は、他のサーバ802、804、806、808のそれぞれから返信されてきた監査関連プログラムの行数およびファイルサイズを確認する。サーバ810は、自己の監査関連プログラムの行数およびファイルサイズと、他のサーバの監査関連プログラムの行数およびファイルサイズと、を比較し、それらに相違が生じている監査関連プログラムを有するサーバ804を改ざん可能性のあるサーバとして特定する。サーバ810は、他のサーバ802、804、806、808のうち改ざん可能性のあるサーバ804以外のサーバに対してプログラム改ざん対応依頼を発砲する。サーバ810は、生死監視プログラム、リソース監視プログラムおよび改ざん監視プログラムを停止する(Step2)。
【0112】
Step2のプログラム改ざん対応依頼を受信したサーバ802は、他のサーバ804、806、808、810に対して監査関連プログラムの行数およびファイルサイズの比較確認を要求する(Step3)。改ざん可能性のあるサーバが無い場合は、サーバ802はプログラム改ざん対応作業の否決を依頼元のサーバ810に返却する。改ざん可能性のあるサーバを発見した場合、サーバ802はプログラム改ざん対応作業の承認と、発見したサーバ名と、を依頼元のサーバ810に返却する。
【0113】
依頼元のサーバ810は、依頼先のサーバ802、806、808からの返事を集計する(Step4)。この集計の際の集計対象は、依頼元のサーバ810が発見した改ざん可能性のあるサーバ804のみとする。集計の結果、多数決で否決された場合、依頼元のサーバ810はプログラム改ざん対応作業を取りやめ、誤検知として扱い、生死監視プログラム、リソース監視プログラムおよび改ざん監視プログラムを再開する。集計の結果、多数決で可決された場合、依頼元のサーバ810はプログラム改ざん対応作業を開始する。
【0114】
Step5のプログラム改ざん対応作業は以下のフローで行われる。
(1)依頼元のサーバ810は、特定した改ざん可能性のあるサーバ804をブロックチェーンから切り離し、削除する。依頼元のサーバ810は、切り離し時刻と構成サーバ台数と切り離したサーバ名と理由(=改ざん検知)と状態(=異常)とを含むブロックを正当性証明台帳816に追加する。
(2)依頼元のサーバ810は、自ら(サーバ810)の仮想マシンの複製を生成し、生成されたサーバ844のサーバ名を削除したサーバ804のサーバ名とする。
(3)サーバの複製が完了すると、依頼元のサーバ810は、生成されたサーバ844をブロックチェーンのネットワークに参加させる。依頼元のサーバ810は、回復時刻と構成サーバ台数と生成されたサーバ名(=切り離したサーバ名)と理由(=回復完了)と状態(=異常)とを含むブロックを正当性証明台帳816に追加する。
(4)依頼元のサーバ810は、生死監視プログラム、リソース監視プログラムおよび改ざん監視プログラムを、現在時刻に最も近い時刻から再開させる。
【0115】
図22は、
図15の正当性証明台帳816の一例を示すデータ構造図である。正当性証明台帳816は、ブロックチェーンのブロックを保持する。正当性証明台帳816では、起源ブロック(不図示)から時系列に並んだ複数のブロック846、848、850、852が保持されている。ブロック846は、前のブロックのハッシュ値854と、監査関連プログラムの状況を示す状況データ856と、を含む。他のブロックも同様の構成を有する。
【0116】
本実施の形態に係る監査システム800によると、監査台帳812の他に稼働証明台帳814および正当性証明台帳816を有することで、自らの正常稼働の記録および監査関連プログラムの正当性の記録を改ざん不可能なブロックチェーンで証明することができる。さらに、監査人のサーバをブロックチェーンに参加させることにより、稼働証明台帳814および正当性証明台帳816を監査人と共有することができる。これにより、監査人の側でいつでも稼働証明台帳814および正当性証明台帳816を参照できるので、監査を効率化できる。
【0117】
以上、実施の形態に係るシステムの構成と動作について説明した。これらの実施の形態は例示であり、各構成要素や各処理の組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解される。
【0118】
第1の実施の形態では、業務プログラムのハッシュ値の検査を開発側領域38から本番側領域40への移動時に行う場合について説明したが、これに限られず、例えば承認画面を生成する際にハッシュ値の検査を行ってもよいし、リリース完了後にハッシュ値の検査を行ってもよい。
【0119】
第1の実施の形態では、業務プログラムを開発してリリースする場合を説明したが、これに限られず、プログラムは任意のプログラムであってもよく、プログラムのモジュールであってもよい。
【0120】
第1および第2の実施の形態では、ブロックが前のブロックのハッシュ値を保持するタイプのブロックチェーンを説明したが、これに限られず、ブロックが前のブロックの一部のハッシュ値を保持するタイプなどの他のタイプのブロックチェーンが用いられてもよい。
【0121】
第2の実施の形態では監査システム800の稼働証明および監査関連プログラムの正当性証明をブロックチェーンにより行う場合を説明したが、これに限られず、第2の実施の形態に係る技術的思想は、ブロックチェーンを用いる任意のシステム、例えばブロックチェーンを用いる(仮想)暗号通過システムやトレーサビリティシステム、事務処理全般の業務ワークフローをブロックチェーンにより管理するシステムなどにも適用可能である。
【0122】
第2の実施の形態の技術的思想を第1の実施の形態のライブラリアンシステム100に導入してもよい。この変形例では、ライブラリアンシステム100は、台帳保持部130に加えて、稼働証明台帳814に対応する台帳および正当性証明台帳816に対応する台帳を備える。
【符号の説明】
【0123】
10 プログラム管理システム、 12 開発者端末、 14 承認者端末、 18 リリース端末、 100 ライブラリアンシステム。