OSS(Open Source Software)データベースは安全なのか?
「オープンソース」は哲学であります。ソースコードに対する全てのユーザのアクセスを許可することで、自主参加や協力によって最高の技術を生み出すことができるという信頼です。それはまるでジョン・レノンの「Imagine」のように、存在そのものを超越したロマンチックな魅力を持っています。
「オープン・ソース・ソフトウェア(Open Source Software、以下OSSと言う)」は、従来当たり前とされてきた「クローズド・ソース・ソフトウェア(Closed Source Software、以下CSSと言う)」の私有独占ポリシーに対立する概念として、人々の純粋な善意を引き付ける力を持っています。人々はその哲学に共感し、開発や配布、修正の作業に積極的に参加します。ひいては、「イノベーション」とまでいいます。
OSSの定義及びメリット・デメリット
正確に言うと、「オープンソース」とは、ただ単に、ソースコードを公開するということだけを意味します。オープンソースを無料と認識している人も多いですが、それは「フリーウェア(Freeware)」とその意味が区別できないことから生まれた誤解です。
「オープンソース」とは、ソースをオープンすることであり、価格をオープンすることではありませんので、明白にライセンスポリシーを持っているソフトウェアであれば、導入時に費用が発生する場合もあります。ほとんどのOSSが無料でダウンロードできますが、あるOSSは、当該ソースを修正したソフトウェアも無料で配布することをポリシーとして厳しく求める場合もあります。したがって、企業が保有している知的財産権の管理ポリシーと使用しているOSSのライセンスポリシーが一致しているかを予め厳密に調査する必要があります。
OSS使用のメリットは明確です。まず、個人ユーザはほとんどのOSSを無料でダウンロードし使用できるため、学習用としてよく使われます。そのため、企業にとっては、人材確保が容易になり、システムの導入コストも削減できます。しかし、CSSに比べレファレンスの文書化が整っていないため、開発プロセスを遅らせる原因にもなっていますが、視点を変えれば、自らこまめに勉強しなければなりませんので、担当者の技術的力量が強化されるとも言えます。
また、同じ哲学の「オープンフォーマット」とプロトコルを主に使うため、異種ソフトウェア間の相互連動性が高いという特性がります。それは異種機器間の異種ネットワーク連携が強く求められるユビキタス時代、最近の用語としてはIoT時代に欠かせない要素として高く評価されています。そのため、MSウィンドウズ基盤のGUIに使い慣れている一般ユーザにとっては、少数のハードコア開発者の趣味であると軽視さることもあります。
そして、OSSでは、ダウンロードしてインストールするだけの導入手続きで必要な演算機能を適時適切に使用可能となるため、開発プロセスの柔軟性やアーキテクチャ構築の実効性が高くなります。多くの人々が自主的かつ積極的に開発に入り込むOSSならではの環境のおかげで、最新技術の速い適用や、課題と解決策を皆がともに共有していく形で運用される開発環境のため、CSSに比べ、技術の進歩が速いのも大きなメリットです。積極的なコミュニティによる迅速な問題解決も、その効果が明らかです。
それで最近は、OSSの使用理由の断然トップであった「コスト削減の効果」以外に、クラウド、モビリティなど第3のプラットフォームに対する開発の利便性や、ビックデータ、ソーシャル技術といった新技術に対する高い活用性を挙げる企業も増えています。新しいビジネスやサービスを生み出す際に、OSSの特長は確かにプラス効果をもたらします。
その反面、営利を追い求める会社で厳しいスケジュール下で開発されるのではなく、100%個人の参加意志によって開発が行われるため、CSSの提供する確実で具体的なロードマップは期待できないことがマイナス要素となっています。それは、常に熱く議論されている「OSSは安全なのか?」という問題と共に、企業がOSSの使用をためらう大きな理由でもあります。
OSSは安全なのか?
OSSの安全性問題に対しては、常に熱い論争が起きています。独占的ソフトウェアに比べ「安全である/安全ではない」という意見が鋭く対立しています。主観的な意見は排除し、客観的に事実だけを探ってみましょう。
OSSは、世界数多くの開発者が、直接開発および配布し、デバッギングに参加します。そのため、閉鎖的な組織の中で開発され独占的ソフトウェアに比べ、比較的安定的に動作します。しかし、そのようなOSSの信頼性と安定性は、非常に多くの開発者が積極的に参加する場合に限って確保できることなので、そのOSSの開発状況や評判を注意深く検討する必要があります。導入した後にはもう遅いですので、導入する前に長い時間をかけて十分に検討する必要があります。しかし、検討そのものがあまりにも長くなり、「早くて迅速な開発」というOSSの大きなメリットを活かせない場合もあります。
また、OSSは営利を追い求める独占的ソフトウェアに比べ、不確実で不明確なロードマップを持つ運命にあります。ある日、突然使用が停止されたり、アップデートが停止されたりする場合もあり、ライセンス関連の法的イシューが発生してポリシーが変更される場合もあります。そうなると、たとえ当該OSSが高い安全性を持っているとしても、そもそも何の意味もなかったことになってしまいます。
決定的にOSSは開発プロセスにおけるその特性のため、「破片」になる危険性があります。主要機能を整えると、公開され、それ以降、ユーザのそれぞれのフィードバックに断片的に対応していく過程の中で、一つ一つ仕様を積み重ね、全体仕様を整えていく場合が普通です。特に注目すべきなのは、アーキテクチャ全体を検討するプロセスは省略される場合が多いということです。問題が存在し、その解決策があるという状態のままで総合的な検討は不在な状態であるということです。それは「セキュリティ性」にかかわります。
OSSの各部分は大体安全です。各機能は最高のセキュリティ性を持っている技術、広く認められているセキュリティ標準などを受け入れている場合が多数です。問題が発生すれば、全世界の数多くの開発者が問題の解決に当たるため、それぞれの部分に限ってはほぼ完璧に安全だといえます。しかし、ソフトウェアの仕組から見ると、各部分が安全だからと言ってその全体が安全だとは言えません。それとこれとは全く違う問題であります。セキュリティ性の核心を一文章にまとめると、下記のように表現できます。
「鎖の強さはその環のいちばん弱いところどまり」
開発および配布環境のため、おおよそ破片的な方法で問題を解決するしかないOSSのセキュリティにおける最大のリスクは、上記のようにまとめられます。
セキュリティ性は、総合的な体系を通じてのみ、確保できます。
全体ICTシステムの各階層や各部分を縦横問わず全体的に検討し、総合的に完成するべきなのが「セキュリティの体系」です。他の企業や組織で使われているセキュリティ体系やセキュリティソリューションが自分の会社や組織では抜け穴ばかりなのもそのためです。
ただし、暗号化したデータと暗号化・復号の鍵まで持って行かれたら暗号化自体根本的に意味がなくなるため、暗号化をするなら、「鍵管理」を想定しないと行けない。
基本的に各部分は安全であり、システムが構築できたら、全体の体系やユーザシナリオからセキュリティ性を再度点検し、それを踏まえて設計すべきなのがセキュリティです。各機能が安全だからと言って、全体のセキュリティまで担保できるわけではありません。
OSSを利用してシステムを構成する場合にも、各構成を整えた最終の全体構成図を基に、セキュリティを設計および点検する必要があります。そうでなければ、OSSの自由度を積極的に活用すると同時に十分なセキュリティ性を確保することはできません。
OSSデータベースの暗号化
代表的なOSSである「MySQL」を見てみましょう。企業が使用するOSSの3割以上を占めるほど、圧倒的なシェアを誇ります。それでは、MySQLは安全なのでしょうか?
部分的には安全だと言えます。安全ではないところを探すのはかなり難しいです。それほど、全世界の無数の開発者がMySQLの問題解決に努力しているということです。データ暗号化のためのツールも多く、ほぼ全ての暗号化方法論をサポートしています。事実上、解決すべきことはやっています。
それでも再度言わせてもらいます。MySQLは安全なのでしょうか?
安全かもしれません。
MySQLにおける総合的な安全性を確保するため、MySQLに関わる全てのセキュリティ要素を総合的に検討し、適切な方法を採用して「セキュリティの体系」を構築するのであれば、安全です。性能も考慮しなければいけないので、MySQLデータベースをエンジンレベルで暗号化するシステムの構築も必要であり、場合によってはAESのような国際標準暗号アルゴリズムもサポートできるようにする必要があります。また、パスワード暗号化のためには一方向暗号化を、インデックスカラムのためには部分暗号化を、PCI-DSS準拠のためにはクレジットカード番号のマスキング機能など全てが行われていれば、安全であるといえます。
勿論、そうすれば問題はありません。できないことでもありません。しかし、それはデータベースのセキュリティ専門家の仕事です。その全てを直接しようとするなら、ただ無料のデータベースを手軽に早く安く利用したかっただけなのに、完璧な情報セキュリティ専門家にならなければいけないことになるわけです。それでも、チャレンジしてみますか?
真剣に受け止めて下さい。貴方は貴方の仕事をするべきです。その仕事に集中してください。つまり、データベースを使いたければ、データベースを使えばよいのです。データベースのセキュリティのためには、データベースのセキュリティソリューションを利用すればよいのです。
OSSであるため、専用のセキュリティソリューションがなくて仕方がない?そうではありません。探せばあります。