第22章 PostgreSQL

PostgreSQL は、オブジェクト関係データベース管理システム (DBMS) です[19]
Red Hat Enterprise Linux では、PostgreSQL は postgresql-server パッケージで提供されます。以下のコマンドを実行して、postgresql-server パッケージがインストールされているかどうかを確認してください。
~]# rpm -q postgresql-server
このパッケージがインストールされていない場合は、root で yum ユーティリティーを使用してインストールします。
~]# yum install postgresql-server

22.1. PostgreSQL と SELinux

PostgreSQL を有効にすると、デフォルトで制限のあるサービスとして実行されます。制限のあるプロセスはそれ自体のドメイン内で実行され、他の制限のあるプロセスとは分離されます。制限のあるプロセスが攻撃を受けると、SELinux ポリシー設定に応じて、攻撃側がリソースにアクセスして加えることができる被害は制限されます。以下に、PostgreSQL 自体のドメイン内で実行している PostgreSQL プロセスの例を示します。ここでは postgresql-server パッケージがインストールされていることを前提としています。
  1. getenforce コマンドを実行して、SELinux が enforcing モードで実行していることを確認します。
    ~]$ getenforce
    Enforcing
    SELinux が enforcing モードで実行している場合は、Enforcing が返されます。
  2. root で以下のコマンドを実行し、postgresql を起動します。
    ~]# systemctl start postgresql.service
    サービスが稼働していることを確認します。出力は以下のようになり、タイムスタンプのみが異なります。
    ~]# systemctl start postgresql.service
    postgresql.service - PostgreSQL database server
       Loaded: loaded (/usr/lib/systemd/system/postgresql.service; disabled)
       Active: active (running) since Mon 2013-08-05 14:57:49 CEST; 12s
  3. 以下のコマンドを実行して、postgresql プロセスを表示します。
    ~]$ ps -eZ | grep postgres
    system_u:system_r:postgresql_t:s0 395 ?    00:00:00 postmaster
    system_u:system_r:postgresql_t:s0 397 ?    00:00:00 postmaster
    system_u:system_r:postgresql_t:s0 399 ?    00:00:00 postmaster
    system_u:system_r:postgresql_t:s0 400 ?    00:00:00 postmaster
    system_u:system_r:postgresql_t:s0 401 ?    00:00:00 postmaster
    system_u:system_r:postgresql_t:s0 402 ?    00:00:00 postmaster
    postgresql プロセスに関連する SELinux コンテキストは system_u:system_r:postgresql_t:s0 です。このコンテキストの最後から 2 番目の部分、postgresql_t がタイプになります。タイプは、プロセスのドメインやファイルのタイプを定義します。この例の場合、postgresql プロセスは postgresql_t ドメイン内で実行しています。


[19] 詳細情報は、PostgreSQL プロジェクトページを参照してください。

このページには機械翻訳が使用されている場合があります (詳細はこちら)。