オープンソース活用研究所 | 基幹DBとしてPostgreSQLはどこまで使えるか?

基幹DBとしてPostgreSQLはどこまで使えるか?

オープンソース活用研究所

2016年07月04日
オープンソース活用研究所 所長 寺田雄一

2016年3月17日、TIS株式会社にて、「商用DBからの移行先としてPostgreSQLはどこまで使えるのか?~DBのセキュリティと暗号化~」セミナーが開催されました。

第二回目は、TIS株式会社IT基盤技術部OSS推進室・中西 剛紀によるセッション「基幹DBとして、PostgreSQLはどこまで使えるか?」のダイジェストをご紹介いたします。

※本稿は、同講演の内容をベースにTIS株式会社 OSS推進室倉持健史監修のもと、オープンソース活用研究所所長 寺田雄一が執筆しました。

PostgreSQLのセキュリティは、PCI DSSに準拠。

年々、主要システムの基幹DBとしてPostgreSQLを採用する企業が増えています。実のところRDBMSとしてのPostgreSQLは機能が充実し、性能も向上しています。

ただし標準で搭載されていない機能については、必要に応じてモジュールや商用製品を組み合わせる工夫も求められます。

今回は、基幹DBとしてPostgreSQLを活用するための運用時の工夫について解説します。

まず、セキュリティ検証についてです。

PostgreSQLを含めてDBのセキュリティを検証する際の基準として採用されているのが、PCI DSS(Payment Card Industry Data Security Standard)です。

PCI DSSは、クレジットカード業界がグローバルで統一したセキュリティ基準です。加盟店やサービスプロバイダにおいて会員データを安全に取り扱う事を目的として策定されており、DBのセキュリティを検証する際にも、この基準に準拠するのが一般的になってきています。

スライド-PCI DSS

PCI DSSに準拠するメリットとしては、クレジットカード情報漏洩のリスクが低減し、信頼性が向上する点が挙げられます。仮に情報流出が発生した際にも、ペナルティが免責される可能性もあります。

PCI DSSセキュリティガイドラインは、データベースセキュリティコンソーシアムによってまとめられ、公開されています。

PCI DSSセキュリティガイドラインのPostgreSQLにおける適用状況についてはPostgreSQLエンタープライズコンソーシアムが調査し、結果を公表しています。

PostgreSQL9.5のアクセス制御は、行単位での設定も可能。

次に、DBへのアクセス権限を設定するアクセス制御の運用についてご紹介します。

PostgreSQLにおけるアクセス制御は、リモートからのアクセスを受け付ける必要がなければ、まず、それを禁止する設定を行います。

リモートからのアクセスを受けつける場合にはホストベース認証で、接続方法、データベース・ユーザ、接続元ホストの組み合わせに応じて認証方法を設定します。あわせてtrust、 reject、md5、passwordなどの認証方法も設定します。

データベースに接続した後のアクセス権限はGRANT、REVOKEコマンドを使用してテーブル単位、列単位で設定します。なお、最新のPostgreSQL9.5からは行単位での制御も可能です。

PostgreSQL のアカウントポリシーはモジュールを活用。

データベースへの不正アクセスを抑止するために、PostgreSQL ではアカウントポリシーを複雑化するいくつかの手法があります。

たとえば、OpenLDAPなど外部に認証サーバを立て、OpenLDAPの機能でユーザに定期的にパスワード変更を求めるといった方法があります。

パスワードの強度を検査する方法としては「passwordcheck」というモジュールを組み込む方法があります。これによって、CREATE/ALTER ROLEコマンド実行時にパスワードが8文字以上か、アルファベットとそれ以外の文字を組み合わせて使用しているか、などをチェックすることができます。

不正アクセスには拡張モジュールで対応。

スライド-不正アクセスへの対処

PostgreSQLにおける不正アクセスへの対応については、工夫が必要です。

PostgreSQLには、不正アクセスの兆候をチェックし、定期的にセッション情報を分析し、不正アクセスが認められた時に接続を遮断するといった機能が、標準では備わっていません。

代替案としてはアクセスログをCSVで出力し、定期的にPostgreSQLのテーブルにロードし、認証失敗をSQLでカウントするという運用です。仮に、1分間に100回以上認証失敗がカウントされた場合、ユーザを特定した上で遮断することが可能です。

また、想定外のSQL実行、いわゆるSQLインジェクションを防止する機能もPostgreSQLには標準では備わっていません。この場合は拡張モジュール「sql_firewall」で制御します。

モジュールや商用製品との組み合わせで監査機能を強化。

PostgreSQLの監査機能は、DBへのログイン・ログアウト、または実行したSQLなどのログ出力機能になります。

ただし出力する対象をテーブル単位、列単位ごとに設定することができず、「SELECT文が打たれた時点でログを出力する」といった詳細設定の機能もありません。

こういった課題には、PostgreSQLの拡張モジュール「pgaudit」を追加することで、より細かい出力対象の設定が可能になります。

あるいは、米EnterpriseDB社が開発した「Postgres Plus」などの商用版を利用する方法もあります。「Postgres Plus」は標準のPostgreSQLよりも細かい粒度での設定が可能で、サーバログとは別の出力先を設定することもできます。この機能によって、ログの改ざんを抑止できます。

PostgreSQLには監査の主要課題ともいえるログの保全や改ざん防止機能が標準では備わっていないため、OSのauditdなどでサーバログへのアクセスを監視したり、OpenSSLなどで電子署名を生成し、ログの信憑性を担保したりすることで、機能を強化する必要があります。

ツールを組み合わせることで堅牢な暗号化を実現。

DBの格納するデータを暗号化する

PostgreSQLの暗号化には「Pgcrypto」、「Transparent Data Encryption for PostgreSQL(TDE)」、「PowerGres Plus」といったツールを組み合わせるのが一般的です。

暗号化は、一般的にはアプリケーション側で暗号化するよりも、データベースで透過的に行う傾向がありますが、PostgreSQLにはその機能は標準では備わっていないためです。ただし、上記のツールを組み合わせることで、同等機能を実現することが可能です。

たとえばモジュールである「Pgcrypto」は、特定のテーブル・カラムを暗号化することが可能ですが、透過的な暗号化には向きません。

「TDE」は「Pgcrypto」の利便性を追求したツールで、有償版と無償版があります。暗号化カラムを専用のデータ型で設定し、CREATE_TABLEすることで暗号化を自動化します。セッション開始時に特定の関数を実行するため、100%透過型であるとは言えませんが、「Pgcrypto」と比べて透過度はかなり上がっています。また、インデックスは完全一致のみサポートで、範囲検索用には復号した情報で作成する必要があります。

「PowerGres Plus」はSRA OSS社の商用製品であり、透過的な暗号化をPostgreSQLの機能を制限することなく実現できます。

次回は、SRA OSS, Inc.日本支社マーケティング部部長 稲葉 香理氏によるセッション「透過的DB暗号化で、個人情報管理システムでの採用事例」の概要をご紹介します。

まとめ

  • ・PostgreSQLはRDBMSとしての機能は充実し性能も向上しており、運用面の不足は拡張モジュールにより対応
  • ・セキュリティについても、標準機能を補うためOSやツールの機能を組み合わせる工夫が重要
  • ・監査、暗号化など、求める要件によって商用製品との組み合わせも可能

OSSNEWSに広告を掲載しませんか?

著者プロフィール

オープンソース活用研究所 所長 寺田雄一

1993年、株式会社野村総合研究所(NRI)入社。 インフラ系エンジニア、ITアーキテクトとして、証券会社基幹系システム、証券オンライントレードシステム、損保代理店システム、大手流通業基幹系システムなど、大規模システムのアーキテクチャ設計、基盤構築に従事。 2003年、NRI社内に、オープンソースの専門組織の設立を企画、10月に日本初となるオープンソース・ソリューションセンター設立。 2006年、社内ベンチャー制度にて、オープンソース・ワンストップサービス 「OpenStandia(オープンスタンディア)」事業を開始。オープンソースを活用した、企業情報ポータル、情報分析、シングルサインオン、統合ID管理、ドキュメント管理、統合業務システム(ERP)などの事業を次々と展開。 オープンソースビジネス推進協議会(OBCI),OpenAMコンソーシアムなどの業界団体も設立。同会の理事、会長や、NPO法人日本ADempiereの理事などを歴任。 2013年、NRIを退社し、株式会社オープンソース活用研究所を設立。

最新TOPICS

【OSS】「OSS鳥瞰図2017年α版」解説シリーズ第4回---「Web/APサーバー」「データベース」「開発支援」編(2017年05月22日 11:03)

「OSS鳥瞰図2017年α版」解説シリーズ第4回は、 「Web/AP サーバー」「データベース」「開発支援」カテゴリを解説。 【テーマ】 ・Web/AP サーバー、データベース   ・Web/APサーバー   ・リレーショナルデータベース   ・KVSとNoSQLのサブカテゴリ ・開発言語、開発支援ツール   >統合開発環境/ビルド支援   >バージョン管理   >プログラ...

関連オープンソース

UltraMonkey-L7(ウルトラモンキーエルセブン)

  • クラスタリング

UltraMonkey-L7(ウルトラモンキーエルセブン)とは、Linux向けの負荷分散/高可用化ソリューションです。OSI第7層(Layer7)にまで対応するロードバランサー機能を提供します。

SQLite(エスキューライト)

  • データベース

SQLite(エスキューライト)とは、軽量コンパクトなリレーショナルデータベースシステムです。主に組み込み用途や、小規模システムのデータストアとして利用されます。

Apache Hbase(アパッチ エイチベース)

  • データベース

Apache Hbase(アパッチ エイチベース)とは、大規模分散データベース管理システムです。「Hadoopベース」「NoSQL」「スケーラブル」などの特徴があります。

Apache Cassandra(アパッチ カサンドラ)

  • データベース

Apache Cassandra(アパッチ カサンドラ)とは、オープンソースの分散データベース管理システムです。構造化キーバリュー型データストアを提供します。「単一障害点を持たない」「スケーラブル」「高速性」などの特徴があります。

WSO2 Enterprise Service Bus(ダブルエスオーツー エンタープライズ サービス バス)

  • SOA

WSO2 Enterprise Service Bus(ダブルエスオーツー エンタープライズ サービス バス)とは、アプリケーション統合/連携用ソリューションです。異なるアプリケーション間の通信を包括的にサポートします。

Apache Traffic Server(アパッチ トラフィック サーバ)

  • プロキシサーバ

Apache Traffic Server(アパッチ トラフィック サーバ)とは、高性能HTTPキャッシュプロキシサーバです。静的Webコンテンツをキャッシュすることで、ネットワーク効率化とパフォーマンス改善を行います。

Apache CouchDB(アパッチカウチデービー)

  • データベース

Apache CouchDB(アパッチカウチデービー)。ドキュメント指向データベースです。「RESTful HTTP/JSON API」「スキーマレス(NoSQL)」「分散型」「スケーラブル」「耐障害性」などの特徴があります。

PowerDNS(パワーディーエヌエス)

  • DNS

PowerDNS(パワーディーエヌエス)。オープンソースのDNSサーバです。RDBMSなどの豊富なバックエンドを利用でき、管理サポート機能が豊富に用意されています。

memcached(メムキャッシュディー)

  • クラスタリング

memcached(メムキャッシュディー)。高性能分散メモリキャッシュサーバです。既存システムに導入してシステムレスポンスの高速化を図れます。

Redis(レディス)

  • データベース

Redis(レディス)。インメモリベースのキーバリューモデル型NoSQLデータベースです。非常に高速な読み書き/アクセスが可能で、データ永続化機能も備えています。

Apache Mesos(アパッチメソス)

  • クラスタリング

Apache Mesos(アパッチメソス)。クラスタリソースマネージャです。分散アプリケーション/分散フレームワークを複数のノード上で稼働させ、効率的なリソース分離/共有機能を提供します。

WildFly(ワイルドフライ)

  • APサーバ

WildFly(ワイルドフライ)。オープンソースJavaEEアプリケーションサーバです。JBossコミュニティで開発されています。「JBoss Application Server」から「WildFly」に改名されました。

MySQL MHA(マイエスキューエルエムエイチエー)

  • クラスタリング

MySQL MHA(マイエスキューエル エムエイチエー)。MySQLマスタ障害発生時に、MySQLマスタの自動フェイルオーバーを行い高可用性を実現するオープンソースツールです。

MariaDB MaxScale(マリアディービーマックススケール)

  • プロキシサーバ

MariaDB MaxScale(マリアディービーマックススケール)。オープンソースのデータベース向けプロキシソフトウェアです。「MariaDB」「MySQL」の性能向上に対して大きな効果を発揮します。アプリケーションとデータベースの分離を実現して、データベース管理プロセス作業を簡素化できます。

Neo4j(ネオフォージェイ)

  • データベース

Neo4j(ネオフォージェイ)。オープンソースNoSQL型グラフデータベースです。いくつかの基本的なデータ構造を理解し、SQLライク言語(Cypher)を覚えれば、グラフ理論に基づいたデータ処理機能を利用できます。

Node.js(ノードジェイエス)

  • APサーバ

Node.js(ノードジェイエス)。サーバサイドJavaScriptアプリケーションプラットフォームです。軽量高性能で、1万同時アクセス(C10K)問題に対応できる性能を持ち、JavaScriptでサーバサイド機能を実装できる点が特徴です。

GridDB(グリッドデービー)

  • データベース

GridDB(グリッドデービー)。ビッグデータ向けNoSQL型インメモリデータベースです。ミッションクリティカルなビッグデータアプリケーションに、スピードとスケールを提供します。

MariaDB(マリアディービー)

  • データベース

MariaDB(マリアディービー)。「MySQL」から派生したオープンソースリレーショナルデータベースシステムです。拡張性/処理性能/高品質が評価され、世界中で急速にシェアを拡大しており、Googleや数多くのLinuxディストリビューションでも、「MySQL」に代わって「MariaDB」が採用されています。

Corosync(コロシンク)

  • クラスタリング

Corosync(コロシンク)。高可用性クラスタ構成の中でクラスタ通信層制御を担当するオープンソースクラスタ基盤ソフトです。「Heartbeat」の後継として、クラスタ通信フレームワークを提供し、クラスタ構成サーバ間でノードの死活監視を行います。

Messasy(メザシ)

  • メールサーバ

Messasy(メザシ)。メールを保存しておくためのメールアーカイブソフトです。メールサーバを通過するすべてのメールを、規定のメールボックスとは別の領域に保存できます。

ILUKA(イルカ)

  • クラスタリング

ILUKA(イルカ)。Linux向け負荷分散機能「LVS(Linux Virtual Server)」と連携動作する「keepalived」の管理用ツールです。WebGUIを使って設定/管理を行えます。

SaMMA(サンマ)

  • メールサーバ

SaMMA(サンマ)。メール添付ファイルを自動的に安全化するソフトウェアです。「添付ファイル自動暗号化機能」と「添付ファイル自動削除機能」により、メールセキュリティを強化し、標的型メール対策が可能です。

Sympa(サンパ)

  • メールサーバ

Sympa (サンパ。SYstème de Multi-Postage Automatique) はメーリングリスト管理システムです。

Asterisk(アスタリスク)

  • IP-PBX

Asterisk(アスタリスク)は、オープンソースのIP-PBXソフトウェアです。

pgpool-II(ピージープールツー)

  • クラスタリング

pgpool-II(ピージープールツー)は、オープンソースのRDBMSであるPostgreSQLについて、冗長化(クラスター構成)や負荷分散を可能にするためのミドルウェアです。

postLDAPadmin(ポストエルダップアドミン)

  • メールサーバ

postLDAPadmin(ぽすとえるだっぷあどみん)は、メールサーバのアカウント情報を管理するためのウェブアプリケーションです。

Vyatta(ヴィアッタ)

  • ネットワーク系ツール

Vyatta(ヴィアッタ)。既製のx86サーバにインストールするだけでルータとして利用できる、高機能、高性能なオープンソースのソフトウェアルータ

Pacemaker(ペースメーカー)

  • クラスタリング

Pacemaker(ペースメーカー)。最も利用実績の多い「Heartbeat」後継のHAクラスタリング製品です。

Heartbeat(ハートビート)

  • クラスタリング

Heartbeat(ハートビート)。システム障害を検出した場合にバックアップシステムに切り替えて、サービスを継続させるためのシステムノード状態監視ミドルウェアです。

DRBD(ディーアールビーディー)

  • クラスタリング

DRBD(ディーアールビーディー)。Linuxプラットフォームにおいて、ネットワークを通じて、ハードディスクなどのストレージデバイスをリアルタイムに複製同期するエンタープライズ向けストレージソリューションです。

Dovecot(ダブコット)

  • メールサーバ

Dovecot(ダヴコット)。UNIX系やLinux系OS上で動作し、セキュアなシステムを意識した設計方針で開発されている、POP3とIMAPをサポートするメールサーバです。

Courier-IMAP(クーリエアイマップ)

  • メールサーバ

Courier-IMAP(クーリエアイマップ)。オープンソースのIMAPメールサーバソフトウェアです。

sendmail(センドメール)

  • メールサーバ

sendmail(センドメール)。UNIXで古くから使われてきたオープンソースのメールを送受信するためのサーバ用ソフトウェアです。メールサーバ用ソフトウェアの実質的標準の地位を占めています。

Postfix(ポストフィックス)

  • メールサーバ

Postfix(ポストフィックス)。フリーソフトウェア・オープンソースソフトウェアのメール転送エージェント

Samba(サンバ)

  • ドキュメント管理

Samba(サンバ)。UNIX系/Linux系コンピュータを、Windows互換のファイルサーバ/プリントサーバ/ドメインコントローラーとして使用するためのオープンソースソフトウェアです。

BIND(バインド)

  • DNS

BIND(バインド)は、世界で最も多く利用されているDNSサーバです。

Apache Axis(アパッチ アクシス)

  • SOAP

Apache Axis(アパッチ アクシス)。JavaとXML技術に基づいたWebサービスのフレームワーク

Apache Tomcat(アパッチトムキャット)

  • APサーバ

Apache Tomcat(アパッチトムキャット)。JavaサーブレットやJSP(JavaServer Pages)を処理するWebコンテナアプリケーションサーバ。

GlassFish(グラスフィッシュ)

  • APサーバ

GlassFish(グラスフィッシュ)。オープンソースのアプリケーションサーバ。サンによるJ2EE準拠のアプリケーションサーバ実装プロジェクトの名称

Apache Geronimo/WAS CE(アパッチ ジェロニモ/ワズ シーイー)

  • APサーバ

Apache Geronimo/WAS CE(アパッチ ジェロニモ/ワズ シーイー)。Apache Foundationが開発したJ2EEサーバ。

Squid(スクイッド)

  • プロキシサーバ

Squid(スクイッド)。インターネットなどのTCP/IPネットワークにおけるクライアント/サーバ間通信を中継するオープンソースハイパフォーマンスプロキシサーバソフトです。リバースプロキシやキャッシュサーバとしても利用できます。長い開発期間によって完成度/信頼度が高く、階層化キャッシュなどのWebアクセスを効率化するための機能が充実しています。

Nginx(エンジンエックス)

  • Webサーバ

Nginx(エンジンエックス)。処理性能・並行処理・メモリ使用量削減にフォーカスして開発され、高い処理能力などの理由により大規模サイトを中心に急速にシェアを拡大している、軽快なオープンソースWebサーバ/リバースプロキシです。

Apache HTTP Server(アパッチエイチティーティーサーバ)

  • Webサーバ

Apache HTTP Server(アパッチエイチティーティーサーバ)。世界中で高い人気を誇るWebサーバソフトウェア。

JBoss(ジェイボス)

  • APサーバ

JBoss(ジェイボス)。J2EE準拠アプリケーションサーバを中心としたWebアプリケーション開発フレームワークです。

PostgreSQL(ポストグレエスキューエル)

  • データベース

PostgreSQL(ポストグレエスキューエル)。商用製品と同等の機能/性能を誇る、オープンソースのオブジェクトリレーショナルデータベース管理システム(ORDBMS)です。

MySQL Cluster(マイエスキューエルクラスター)

  • データベース

MySQL Cluster(マイエスキューエルクラスター)。MySQL Serverのストレージエンジンの1つ。負荷分散型・高可用性という特徴を持つリアルタイムデータベース

MongoDB(モンゴデービー)

  • データベース

MongoDB(モンゴデービー)。データを非定型のデータ構造の集合体としてJSON形式のデータで蓄える、NoSQL型ドキュメント指向データベース管理システムです。

MySQL(マイエスキューエル)

  • データベース

MySQL(マイエスキューエル)。高速性と堅牢性を追及したマルチユーザ・マルチスレッドのオープンソースリレーショナルデータベース管理システム(RDBMS)です。世界中で最もよく利用されており、Oracle社が開発を行っています。

バックナンバー

関連記事

  • オープソース書籍(サイド)

OSS×Cloud ACCESS RANKING

facebook

twitter