2 PostgreSQLの暗号化設定
概要
このセクションでは、CentOS8.2およびPostgreSQL13の暗号化設定例をいくつか示します。
Database hostフィールドの値がスラッシュで始まるか、空の場合、ZabbixフロントエンドとPostgreSQL間の接続を暗号化できません(GUIのパラメーターが無効になっています)
前提条件
公式リポジトリを使用して PostgreSQL データベースをインストールします。
PostgreSQL は、デフォルトでは TLS 接続を受け入れるように設定されていません。PostgreSQL のドキュメントにある postgresql.conf を使用した証明書の準備 と、ph_hba.conf を通じた ユーザーアクセス制御 の手順に従ってください。
デフォルトでは、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
...
トランスポートのみの暗号化
フロントエンド
Zabbixフロントエンドとデータベース間の接続でトランスポートのみの暗号化を有効にするには:
- データベースのTLS暗号化をチェックします
- データベース証明書の確認はチェックしません

サーバー
サーバーとデータベース間の接続で転送のみの暗号化を有効にするには、/etc/zabbix/zabbix_server.conf を設定します:
...
DBHost=10.211.55.9
DBName=zabbix
DBUser=zbx_srv
DBPassword=<strong_password>
DBTLSConnect=required
...
認証局検証による暗号化
Webインターフェース
Zabbix Webインターフェースとデータベース間の接続で、認証局の検証を伴う暗号化を有効にするには、次の操作を行います。
- Database TLS encryption と Verify database certificate をチェックする
- Database TLS CA file のパスを指定する

または、/etc/zabbix/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サーバーとデータベース間の接続で証明書検証を伴う暗号化を有効にするには、/etc/zabbix/zabbix_server.conf を設定します:
...
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インターフェースとデータベース間の接続で、証明書とデータベースホストIDの検証による暗号化を有効にするには、次の設定を行います。
- Database TLS encryption と Verify database certificate をチェックする
- Database TLS key file のパスを指定する
- Database TLS CA file のパスを指定する
- Database TLS certificate file のパスを指定する
- Database host verification をチェックする

または、/etc/zabbix/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 サーバーとデータベース間の接続で、証明書による暗号化とデータベースホスト ID の検証を有効にするには、/etc/zabbix/zabbix_server.conf を設定します:
...
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
...