メニューボタン

セキュリティ・リスクと応用技術

これまで見てきたように、単一レベル記憶はパフォーマンス改善とストレージの管理作業負荷軽減といったメリットをもたらしますが、そのままでは構造的なセキュリティ・リスクを内包しています。単一で広大なストレージ空間の中に、複数のプログラム稼働環境が同居していることが有利に働く反面、何も手を打たなければ他の領域に無断でアクセスできてしまう可能性があるためです。これを放置したままでは基幹業務用サーバーとして利用することはできません。ちなみに通常のシステムのストレージ空間は、プログラムごとに割り当てられ切り替えられるので、このような懸念はありません。それぞれの空間は互いに「異次元」の存在であり、オペレーティング・システムの力を借りない限りアクセスすることはできないためです。この章では単一レベル記憶がもたらすセキュリティ懸念の解決策と、応用技術について紹介したいと思います。

さてIBM i 上のプログラムは稼動する際に、各種のデータや他のプログラム、言い換えると広大なストレージ空間内に点在する様々なファイル(IBM i 用語ではオブジェクト)にアクセスします。ライブラリ名とオブジェクト名とを指定することでその対象を特定するわけですが、その際には必ずマイクロコード相当のSLICが生成するポインタを利用します。ポインタとは広大な単一レベル記憶空間において、該当オブジェクトが存在する場所を指し示す変数です。

ポインタとは言え単なる変数に過ぎないので、やろうと思えば通常のプログラムでも生成することはできてしまいます。そこでIBM i においては、「由緒正しく」SLICに依頼して生成されたポインタのみが有効であり、それ以外のあらゆるケースにおいて生成されたポインタは無効扱いされます。ポインタには、常にこの有効・無効を識別するための付加的情報が伴っており、荷物に付いたタグのようなものであることから、タグビットと呼ばれています。セキュリティを維持することが目的ですので、通常のプログラムがこれにアクセスしたり、修正したりすることはできません。そして、オブジェクトにアクセスする際には、ポインタだけでなく、その有効性を判断するためにタグビットも同時に参照されなければなりません。IBM i を稼動させるプロセッサには、効率良くタグビットを参照するための、特殊なレジスターと命令セットが備わっています。すなわちパフォーマンスへの悪影響を最小化するために、ソフトウェアではなくハードウェアのレベルでポインタの有効性を判断しています。

1995年にかつてのAS/400は、それまでの48ビットCISCプロセッサからPowerPC ASと呼ばれる新たな64ビットRISCプロセッサに移行しました。PowerPCというIBM、Apple、モトローラが共同開発したプロセッサがありましたが、これの派生製品です。当時の新プロセッサが処理するデータは現在同様64ビット長の大きさを持っていましたが、同時にタグビットを参照する仕組みが追加されたので、正確な表現ではないと思うのですが、俗に65ビット・プロセッサとも言われていました。オリジナルのPowerPCはタグビット参照機能なし、PowerPC ASはタグビット参照機能あり、だったわけです。

話が脇にそれますが、IBM i がXeonプロセッサ上で稼動する可能性はありますか、という質問をいただいたことがあります。Xeonはこのタグビットを処理する仕組みを備えていないので、少なくとも現状のままでは技術的に不可能でしょう、と答えることにしています。ソフトウェアによってタグビットを参照することは不可能ではないのかもしれませんが、パフォーマンス面において大きなハンディキャップを抱えることにあるはずです。

さて、単一レベル記憶のストレージ空間は極めて広大ですので、異種のアプリケーション実行環境を内部に包含する余力があります。これはIBM i の無償オプションであるPASE(Portable Application Solutions Environment)、すなわちAIXアプリケーション実行環境として実現されています。直訳するならば「可搬性のあるアプリケーション・ソリューション環境」といったところでしょうか。当初はAIX用アプリケーション・パッケージを早期にIBM i 上で稼動させるために考えられた仕組みであり、実際にいくつかのAIX由来のパッケージはPASE上で稼動します。さらに現在では各種機能に加えて、Java、PHP、Pythonなどのオープンなプログラム言語が稼動する、IBM i にとって無くてはならないテクノロジーとなっています。

IBM i のバージョン毎にPASEが対応するAIXバージョンが異なっています。例えばIBM i 7.5の場合はAIX 7.2 TL5、IBM i 7.4はAIX 7.2 TL2、IBM i 7.3はAIX 7.1 TL3の派生です。TLとはテクノロジー・レベルであり、IBM i で言うところのTR(テクノロジー・リフレッシュ)、またはWindowsのアップデートに相当するものだと考えれば良いでしょう。そしてデフォルトのKorn、さらにBourne、Cという3つのシェルをサポートしています。シェルとはIBM i ユーザーには耳慣れない言葉ですが、UNIXのコマンド・インタープリタ、すなわちユーザーが入力したコマンドを解釈・実行するプログラムです。念のためですが、PASEはあくまでもAIXプログラム実行環境でありカーネルは含まれておりませんので、AIXそのものではありませんし、ましてやUNIXを名乗ることはありません。

さて、IBM i の通常のアプリケーションはタグビットを参照しながら稼働しますが、AIXアプリケーションは単一レベル記憶を前提とはしませんので、タグビットは無用の存在です。アクセスする必要があるのは、テラスペースと呼ばれる単一レベル記憶とは異なる空間です。通常のIBM i においては、プロセッサはタグビットを参照するモードで稼動しますが、PASEにその制御が移るとタグビットを参照しないモードに自動的に切り替わります。ユーザーはこのようなシステム内部の複雑さを意識する必要は全くありません。IBM i はその内側で、ごく自然に各種のテクノロジーを統合しながら進化しています。これはまさにIBM i の製品戦略を明らかにするドキュメント、2023年8月29日付けホワイトペーパーが言うところの「Integrate and Innovate」、すなわち「統合し革新する」を地で行くものだと言えるのではないでしょうか。



前章「効果とメカニズムを探る」へ 「IBM i とは」TOP
PAGE TOP