第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 パッケージがインストールされていることを前提としています。
  1. getenforce を実行して、SELinux が enforcing モードで実行しているか確認します。
    $ getenforce
    Enforcing
    
    SELinux が enforcing モードで実行している場合は、getenforce コマンドを実行すると Enforcing が返されます。
  2. root ユーザーで service postgresql start を実行し、postgresql を起動します。
    service postgresql start
    Starting postgresql service:                               [  OK  ]
    
  3. 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 ドメイン内で実行しています。