OSS DBクラウドネイティブ時代に求められるOSS DBのセキュリティ対策

システムのクラウドシフトに伴い、オープンソースのデータベース(以後OSS DB)を活用する動きが増えています。従来、データベースといえばOracle Databaseを始めとする商用DBが主流でしたが、OSS DBの性能向上に伴いシェアは大きく変動しています。今では、クラウドファースト・クラウドネイティブを掲げる企業では当然のようにOSS DBが採用される傾向にあります。

しかし、ある程度経験を積んだ技術者であればこう思うはずです、「OSSは本当に安全なのか?」と。それが、高い信頼性・可用性・安定性が求められる「データベース」ならなおさらです。

そこで本記事では、OSS DBのセキュリティに焦点をあてながら、OSSのリスク、データベースの暗号化について解説していきます。

日本企業の98%がオープンソースソフトウェア(OSS)を活用

f:id:PentaSecurity:20220224113020p:plain

 

2021年5月発表、日本シノプシスOSSの利用状況等を調査した「2021年オープンソース・セキュリティ&リスク分析レポート」を発表しました。調査対象は計17の業種で、1500以上の商用ソフトウェアのコードベースを分析した結果が報告されています。

コードベース:アプリケーションやサービスを構成するコード、および関連するライブラリのこと。

レポートによると、調査対象のうち98%のコードベースに少なくとも1つのOSSが含まれており、また、全コードベースに占めるOSSの割合は75%に達するといいます。つまり国内企業のほとんどは、企業活動のどこかしらでOSSの恩恵を受けており、同時にOSS脆弱性の脅威にさらされている事になるのです。

8割以上のコードベースに脆弱性が存在

レポートでは、全コードベースのうち「公開済みのオープンソース脆弱性を少なくとも1つ含むもの」が84%も存在していることや、「コードベース1つあたりに含まれる脆弱性の平均数」が昨年の82から今年は158へ、ほぼ倍増していることが報告されています。

また、重大なインシデントを引き起こしかねない「高リスク脆弱性」を含むコードベースの割合も、昨年の49%から11ポイントも上昇し今年は60%に到達しています。

高リスク脆弱性:攻撃事例のある脆弱性、概念実証コードが存在する脆弱性RCI脆弱性のこと。

このように、OSSはソフトウェア開発の強力なパートナーですが、同時に多大なリスクを秘めていることも事実です。開発チームおよび経営層は改めて、その危険性を十分に考慮した対策を講じる必要があるでしょう。

クラウドネイティブとともに注目を集める「OSS DB」

クラウドの利活用が一般化し「クラウドネイティブ」の波が広がる昨今。DBの利活用においても、従来のオンプレミスからクラウドへ移行する企業が急激に増加しています。
そんな中、多くの企業の注目を集めているのが「OSS DB」の存在です。

OSS DBとは、その名の通りオープンソースソフトウェア(OSS)のデータベース(DB)のことで、ソースコードを自由に閲覧、ダウンロード、変更、再利用等を行えるため、既存のデータベース技術を使用し、自社に最適化したソフトウェアを自由に構築することが可能です。「Oracle Database」などの商用DBと対比されることが多く、代表的なものに「MySQL」や「PostgreSQL」といったものがあります。

OSS DBが注目される理由

OSS DBに関心が集まったきっかけは「商用DBのコストの高さ」です。商用DBの利用には、高い初期費用とその後のライセンス・保守費用などのコストがかさみ、これは商用DBをクラウドに移行する際にもネックとなります。一方、ライセンスフリーで初期費用要らずのOSS DBであれば、そのような心配はいりません。

一昔前のOSS DBでは、データベースに必要な「高い信頼性・可用性・安定性」の要件を満たせなかったために、商用DBが多くのシェアを獲得してきました。しかしながらOSS DBの性能は年々進化し、今では商用データベースと遜色ない性能を持ち合わせるまでになっています。

より高速かつスケーラブルで、運用コストも低く抑えられるDBMSを実現するためには、データベースの「クラウド化」および「OSS DB」の活用は、現状最も有力な選択肢といえるでしょう。

代表的なOSS DBの種類と特徴

DBの種類には、リレーショナル型(Oracle, MySQL etc...)やドキュメント型(MongoDB etc…)などがありますが、DB-Engines Rankingを見るとリレーショナル型のDBが圧倒的なシェアを獲得していることが分かります。

よってここでは、リレーショナル型のOSS DB(OSS RDBMS)に焦点をあてて、主要なソフトウェアを解説していきます。

Oracle Databaseもリレーショナル型ですが、OSS DBではなく商用DBですので今回は除外しています。

MySQL

MySQLは世界で最も多く利用されているOSS RDBMSです。開発主体はOracle社で、44名のContributorと2800名近くのOCA(Oracle Contributor Agreement)によって日夜開発が進められています。

世界最大シェアを誇るOSS RDBMSなだけに、コミュニティサポートやサポート企業が充実しているほか、その高速性と堅牢性から政府公共機関を始めとしてメディア、製造、リテールなど、多種多様な企業・サービスで幅広く採用されています。

MySQLOSS RDBMSデファクトスタンダードですので、様々なシーンで利用可能ですが、特に「一定数のデータを取得し表示する」といったシンプルなアプリケーションでの利用に適しているとされています。(例:LINE、Twitterなど)

また、JavaPHPPythonなどの様々な言語でアクセスでき、Webサービスとの親和性が高い点も人気の理由です。

SQLite

SQLiteは、軽量コンパクトなライブラリ型組み込みRDBMSです。MySQLPostgreSQLとの違いは「組み込み方式」という点です。MySQLを始めとする一般的なRDBMSは「クライアントサーバ方式」と呼ばれ、RDBMSの処理はサーバー側で行い、DBを利用したいアプリケーションはクライアントとして接続する必要があります。この方式であれば、複数のアプリケーションが1つのRDBMSを共有したり、アクセスを分散することが可能です。

一方SQLiteは「組み込み方式」とよばれ、これは各アプリケーション内に1つのSQLiteを組み込み、それを当該アプリケーションの専用データベースとして機能させる方法です。よってRDBMSの共有やアクセスの分散には不向きですが、サーバー・クライアント間の通信コストが削減されるため、桁違いの高速処理を実現しています。

なお、SQLiteは組み込み用途のデータベースとしては世界一のシェアを誇り、組み込み機器、IoT機器等で広く利用されています。Android端末の標準ライブラリとしても知られています。

MariaDB

MariaDBは、MySQLから派生したOSS RDBMSとして知られています。2010年にOracle社が、当時競合だったMySQLを買収した際、MySQLの創設者たちが「OracleMySQLを廃止した場合に備え代替品として機能するDBを作ろう」と、動き出したのが始まりです。

そのためMariaDBもまた完全なOSSであり、MariaDB社が主体となり、178名のContributorと700名以上が在籍するMaria developers teamによって日夜開発が進められています。元はMySQLから派生した言語ということもあり、MySQLとの互換性を保ちながらも、性能向上のための独自機能が多数備わっています。

上記の理由から、MySQLからMariaDBへ移行するケースも珍しくなく、WikipediaGoogleなどはその最たる例です。

PostgreSQL

PostgreSQLは、MySQLと人気を二分する代表的なOSS RDBMSの1つです。エンタープライズ向けのオブジェクト指向RDBMSですので、Oracle DBと機能が近いこともあり、企業情報システムのデータベースなどでの採用が目立ちます。Oracle DBからの移行先として選ばれることも多いです。

また、PostgreSQLの最大の特徴である「多機能性」が活きるSIer系企業や分析系のシステムで使われていたり、JSON型でのアクセス速度の速さからSPAやモバイルアプリ開発に利用される傾向が強いです。

OSS DBに最も必要な「暗号化」について

データベースのセキュリティ対策において、最も必要とされるのは「暗号化」だと言っていいでしょう。もちろん懸念すべきセキュリティリスクは多岐にわたるため、暗号化は万能のソリューションとはいえませんが、情報資産保護の最後の砦であることは間違いありません。

もし貴社がデータベースの暗号化ソリューションの導入を検討しているのなら、「導入コストと利便性」「セキュリティレベル」という2つの側面に気を配る必要があるでしょう。

導入コストと利便性

データベースの暗号化に際し、最初に直面する課題が「導入コスト」です。主な暗号化手法には「アプリケーションAPI」「データベースAPI」「暗号化プラグイン」などがありますが、どれも導入時にアプリケーションやデータベースの修正が必要なためハードルが高いとされています。

最も楽な手法は「エンジンレベルの暗号化」で、これはデータベース内に暗号化エンジンを挿入するだけで完了するシンプルなものです。商用DBが主だったこれまでは、エンジンレベルで暗号化を施せるのはそのDBMSを提供する企業だけでしたが、ソースを自由に閲覧・改変できるOSS DBの利用が進んだ現在では、高度な技術さえあれば、外部の企業でもエンジンレベルの暗号化を実現できるようになりました。

また、「暗号化の単位」は利便性やパフォーマンスに大きく影響します。
暗号化の単位には主に「ディスク単位」「ファイル単位」「カラム単位」があり、記載の順で、より細かな範囲のデータを選択的に暗号化できます。データ単位は小さいほど扱いやすく、細かなアクセス制御・ログ監査等も実現できるため、利便性・セキュリティ双方の観点から有利です。

さらに、データ単位が小さければ暗号・復号化のシステム負荷も最小限で済み、パフォーマンスの劣化を防ぐことも可能です。

つまり、データベースの暗号化を利便性の観点から検討するならば、「カラム単位の選択的暗号化をエンジンレベルで施せる」ことが、重要なポイントといえるでしょう。

セキュリティレベル

実のところ、データベースを暗号化しただけではセキュアとは言えません。例えば、暗号化したものを誰でも復号出来てしまっては意味がないため、復号鍵を暗号化することも非常に重要です。加えてデータおよび鍵へのアクセス制御、アクセスログの取得と分析、セキュリティシステムの監視、、、以上を包括的に対策できてこそ、ようやく「セキュアなデータベース」と呼ぶことができます。

なお、上記はあくまでも「基本的なセキュリティ対策」として必ず施すべき要項であり、HIPAAやPCI-DSS等のセキュリティ規格に対応するためにはさらに多くの施策を施す必要があります。

OSS DBを導入した開発者が上述したすべてのセキュリティ対策を独自に施すことは、不可能ではないものの、費用対効果の側面から見れば最良の選択肢とはいえません。

では最良の選択肢とはなんでしょうか?それは、セキュリティの専門企業によって開発され、必要な機能とセキュリティ要項がもれなく盛り込まれた、トータル暗号化ソリューションを導入することです。

OSS DB向けデータベース暗号化ソリューション「MyDiamo」の紹介

MyDiamoは、オープンソース環境におけるデータ保護のために開発された、統合的なデータベース暗号化ソリューションです。

たった数分のインストールで「MySQL」「MariaDB」「Percona DB」といったOSS DB上に強力なセキュリティ基盤を構築できます。既存のシステムに後付けで導入可能なうえ、アプリケーションやデータベース等のコード修正も不要な、エンジニアにやさしいツールです。

我々の開発チームは利便性とセキュリティ性を追求し、エンジンレベル暗号化、カラム単位、選択的暗号化、暗号鍵管理、アクセス制御、ログ監査といったあらゆるセキュリティ要項を満たしました。ゆえにMyDiamoは、EU一般データ保護規則GDPR)、PCI DSS、HIPAA/HITECHなどの、国際的なデータ保護規格にも適合しています。

OSS利用率98%の日本で、そのセキュリティ対策にしっかり取り組めている企業はどれほどあるでしょうか?貴社のOSS DBは大丈夫でしょうか?

データベースに保管している情報が「何もせずとも安全に守られる」なんてことは決してありません。少しでも不安を覚えた方はぜひ導入をご検討下さい。

MyDiamoの詳細は下記サイトで確認できます。