Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

第21章 PostgreSQL

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

21.1. PostgreSQL および SELinux

PostgreSQL が有効になると、デフォルトで制限ありで実行されます。制限のあるプロセスは、独自のドメインで実行され、他の制限のあるプロセスから分離されます。制限のあるプロセスが攻撃者によって侵害された場合、SELinux ポリシーの設定に応じて、攻撃者のリソースへのアクセスと、攻撃者が行う可能性のある損害は制限されます。以下の例は、独自のドメインで実行している 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 です。文脈の最後の部分である postgresql_t はタイプです。タイプは、プロセスのドメインとファイルのタイプを定義します。この例では、postgresql プロセスが postgresql_t ドメインで実行しています。


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