第11章 PostgreSQL
PostgreSQL プロジェクトページより抜粋:
原文: "PostgreSQL is a powerful, open source object-relational database system. It has more than 15 years of active development and a proven architecture that has earned it a strong reputation for reliability, data integrity, and correctness." (訳文: PostgreSQL はオープンソースでありパワフルなオブジェクト関係データベースシステムになります。15年以上に渡り活発な開発が行なわれ、信頼性、データ整合性、正確性に強化な評判を得ている実績のあるアーキテクチャを提供しています。)
Red Hat Enterprise Linux 6 では、PostgreSQL は postgresql-server パッケージで提供されます。
rpm -q postgresql-server
を実行して、postgresql-server パッケージがインストールされているか確認してください。インストールされていない場合は、root ユーザーで次のコマンドを実行してインストールを行ないます。
yum install postgresql-server
11.1. PostgreSQL と SELinux
PostgreSQL を有効にすると、デフォルトで制限のあるサービスとして実行されます。制限のあるプロセスはそれ自体のドメイン内で実行され、他の制限のあるプロセスとは分離されます。制限のあるプロセスが攻撃を受けると、SELinux ポリシー設定に応じて、攻撃側がリソースにアクセスして加えることができる被害は限定されます。以下に、PostgreSQL 自体のドメイン内で実行している PostgreSQL プロセスの例を示します。 ここでは postgresql-server パッケージがインストールされていることを前提としています。
getenforce
を実行して、SELinux が enforcing モードで実行しているか確認します。$ getenforce Enforcing
SELinux が enforcing モードで実行している場合は、getenforce
コマンドを実行するとEnforcing
が返されます。- root ユーザーで
service postgresql start
を実行し、postgresql
を起動します。service postgresql start Starting postgresql service: [ OK ]
ps -eZ | grep postgres
を実行して、postgresql
プロセスを表示させます。ps -eZ | grep postgres unconfined_u:system_r:postgresql_t:s0 395 ? 00:00:00 postmaster unconfined_u:system_r:postgresql_t:s0 397 ? 00:00:00 postmaster unconfined_u:system_r:postgresql_t:s0 399 ? 00:00:00 postmaster unconfined_u:system_r:postgresql_t:s0 400 ? 00:00:00 postmaster unconfined_u:system_r:postgresql_t:s0 401 ? 00:00:00 postmaster unconfined_u:system_r:postgresql_t:s0 402 ? 00:00:00 postmaster
postgresql
プロセスに関連する SELinux コンテキストはunconfined_u:system_r:postgresql_t:s0
です。コンテキストの最後から 2 番目の部分、postgresql_t
がタイプになります。プロセスのドメインやファイルのタイプを定義するのがタイプです。この例の場合、postgresql
プロセスはpostgresql_t
ドメイン内で実行しています。