PostgreSQL暗号化設定

概要

このセクションでは、CentOS 8.2 と PostgreSQL 13 に対するいくつかの暗号化設定例を示します。

Zabbix Webインターフェースと PostgreSQL 間の接続は、Database host フィールドの値がスラッシュで始まる場合、またはそのフィールドが空の場合、暗号化できません(GUI のパラメータは無効になります)。

前提条件

公式リポジトリを使用して PostgreSQL データベースをインストールします。

PostgreSQL は、デフォルトでは TLS 接続を受け入れるように設定されていません。postgresql.conf による証明書の準備と、ph_hba.conf を通じたユーザーアクセス制御について、PostgreSQL のドキュメントの手順に従ってください。

デフォルトでは、PostgreSQL のソケットは localhost にバインドされています。ネットワーク経由のリモート接続を許可するには、実際のネットワークインターフェースで待ち受けるようにしてください。

すべての モード に対する PostgreSQL の設定は、次のようになります。

/var/lib/pgsql/13/data/postgresql.conf:

...
ssl = on
ssl_ca_file = 'root.crt'
ssl_cert_file = 'server.crt'
ssl_key_file = 'server.key'
ssl_ciphers = 'HIGH:MEDIUM:+3DES:!aNULL'
ssl_prefer_server_ciphers = on
ssl_min_protocol_version = 'TLSv1.3'
...

アクセス制御については、/var/lib/pgsql/13/data/pg_hba.conf を調整します。

...
### require
hostssl all all 0.0.0.0/0 md5

### verify CA
hostssl all all 0.0.0.0/0 md5 clientcert=verify-ca

### verify full
hostssl all all 0.0.0.0/0 md5 clientcert=verify-full
...

トランスポート層のみの暗号化

Webインターフェース

Zabbix Webインターフェースとデータベース間の接続で、転送時のみの暗号化を有効にするには:

  • Database TLS encryption を確認する
  • Verify database certificate はオフのままにする

サーバー

サーバーとデータベース間の接続でトランスポートのみの暗号化を有効にするには、サーバー設定ファイルを編集します。

...
DBHost=10.211.55.9
DBName=zabbix
DBUser=zbx_srv
DBPassword=<strong_password>
DBTLSConnect=required
...

証明機関の検証による暗号化

Webインターフェース

認証局の検証を使用して、Zabbix Webインターフェースとデータベース間の接続を暗号化するには、次の手順を実行します。

  • データベースのTLS暗号化データベース証明書の検証 をオンにします
  • データベースTLS CAファイル のパスを指定します

または、Webインターフェース設定ファイルzabbix.conf.php)で設定できます。

...
$DB['ENCRYPTION'] = true;
$DB['KEY_FILE'] = '';
$DB['CERT_FILE'] = '';
$DB['CA_FILE'] = '/etc/ssl/pgsql/root.crt';
$DB['VERIFY_HOST'] = false;
$DB['CIPHER_LIST'] = '';
...

サーバー

Zabbixサーバーとデータベース間の接続で、証明書検証による暗号化を有効にするには、サーバー設定ファイルを編集します。

...
DBHost=10.211.55.9
DBName=zabbix
DBUser=zbx_srv
DBPassword=<strong_password>
DBTLSConnect=verify_ca
DBTLSCAFile=/etc/ssl/pgsql/root.crt
...

完全検証付きの暗号化

Webインターフェース

Zabbix Webインターフェースとデータベース間の接続で、証明書による暗号化およびデータベースホストの識別情報の検証を有効にするには、次の手順を実行します。

  • Database TLS encryption にチェックを入れ、Verify database certificate にチェックを入れる
  • Database TLS key file のパスを指定する
  • Database TLS CA file のパスを指定する
  • Database TLS certificate file のパスを指定する
  • Database host verification にチェックを入れる

または、Webインターフェース設定ファイルzabbix.conf.php)で設定できます。

$DB['ENCRYPTION'] = true;
$DB['KEY_FILE'] = '';
$DB['CERT_FILE'] = '';
$DB['CA_FILE'] = '/etc/ssl/pgsql/root.crt';
$DB['VERIFY_HOST'] = true;
$DB['CIPHER_LIST'] = '';
...

サーバー

Zabbixサーバーとデータベース間の接続で、証明書およびデータベースホストの識別情報の検証による暗号化を有効にするには、サーバー設定ファイルを編集します。

...
DBHost=10.211.55.9
DBName=zabbix
DBUser=zbx_srv
DBPassword=<strong_password>
DBTLSConnect=verify_full
DBTLSCAFile=/etc/ssl/pgsql/root.crt
DBTLSCertFile=/etc/ssl/pgsql/client.crt
DBTLSKeyFile=/etc/ssl/pgsql/client.key
...