第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 がインストールされていることを前提としています。
- getenforce コマンドを実行して、SELinux が Enforcing モードで実行されていることを確認します。
~]$ getenforce Enforcing
SELinux が Enforcing モードで実行されていると、このコマンドはEnforcing
を返します。 - 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
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
ドメインで実行しています。