データベースへの安全な接続
概要
このセクションでは、以下の間で安全な TLS 接続を確立するための Zabbix のセットアップ手順と設定例を示します。
| Database | Zabbix components |
|---|---|
| MySQL | Zabbix Webインターフェース, Zabbix サーバー, Zabbix プロキシ |
| PostgreSQL | Zabbix Webインターフェース, Zabbix サーバー, Zabbix プロキシ |
DBMS 内で接続の暗号化を設定する方法については、詳細を各ベンダーの公式ドキュメントで確認してください。
- MySQL: ソースおよびレプリカのレプリケーションデータベースサーバー。
- MySQL: グループレプリケーションなどのデータベースサーバー。
- PostgreSQL 暗号化オプション。
すべての例は、CentOS 8 を使用し、公式リポジトリから入手できる MySQL CE (8.0) および PgSQL (13) の GA リリースを基にしています。
要件
暗号化を設定するには、以下が必要です。
- 開発元がサポートするオペレーティングシステムで、OpenSSL >=1.1.X または 代替手段が利用できること。
特に新規インストールの場合は、OS がサポート終了状態であることは 避けることを推奨します。
- 開発元が提供する公式リポジトリからインストールされ、保守されている データベースエンジン(RDBMS)。オペレーティングシステムには、暗号化 サポートが実装されていない古いデータベースソフトウェアのバージョンが 同梱されていることがよくあります。たとえば、RHEL 7 ベースのシステムや、 暗号化サポートのない PostgreSQL 9.2、MariaDB 5.5 などです。
用語
このオプションを設定すると、Zabbix サーバー/プロキシおよび Webインターフェース からデータベースへの接続に TLS 接続を使用することが強制されます。
required- アイデンティティ確認なしで、TLS を転送モードとして使用して接続しますverify_ca- TLS を使用して接続し、証明書を検証しますverify_full- TLS を使用して接続し、証明書を検証し、DBHost で指定されたデータベースのアイデンティティ (CN) がその証明書と一致することを検証します
Zabbix設定
Webインターフェースからデータベースへ
Webインターフェースのインストール時に、データベースへの安全な接続を設定できます。
- DB接続の設定 ステップで Database TLS encryption チェックボックスをオンにして、転送暗号化を有効にします。
- TLS encryption フィールドがチェックされているときに表示される Verify database certificate チェックボックスをオンにして、証明書を使用した暗号化を有効にします。
MySQL では、Database host が localhost に設定されている場合、Database TLS encryption チェックボックスは無効になります。これは、ソケットファイル(Unix)または共有メモリ(Windows)を使用する接続は暗号化できないためです。
PostgreSQL では、Database host フィールドの値がスラッシュで始まる場合、またはフィールドが空の場合、TLS encryption チェックボックスは無効になります。
両方のチェックボックスがオンの場合、証明書モードでの TLS 暗号化で次のパラメータが利用可能になります。
| Parameter | Description |
|---|---|
| Database TLS CA file | 有効な TLS 証明書認証局(CA)ファイルへのフルパスを指定します。 |
| Database TLS key file | 有効な TLS キーファイルへのフルパスを指定します。 |
| Database TLS certificate file | 有効な TLS 証明書ファイルへのフルパスを指定します。 |
| Database host verification | このチェックボックスをオンにすると、ホスト検証が有効になります。 PHP の MySQL ライブラリではピア証明書の検証ステップを省略できないため、MYSQL では無効です。 |
| Database TLS cipher list | 有効な暗号スイートのカスタムリストを指定します。暗号スイートリストの形式は OpenSSL 標準に準拠している必要があります。 MySQL でのみ利用可能です。 |
TLS パラメータは有効なファイルを指している必要があります。存在しないファイルや無効なファイルを指している場合、認証エラーが発生します。
証明書ファイルが書き込み可能な場合、Webインターフェースは システム情報 レポートに「TLS certificate files must be read-only.」という警告を生成します。(これは PHP ユーザーが証明書の所有者である場合にのみ表示されます。)
パスワードで保護された証明書はサポートされていません。
使用例
Zabbix Webインターフェースでは、GUI を使用して次のオプションを定義します: required、
verify_ca、verify_full。インストールウィザードの Configure DB connections ステップで必要なオプションを指定します。これらのオプションは、次のように設定ファイル (zabbix.conf.php) にマッピングされます。
| GUI settings | Configuration file | Description | Result |
|---|---|---|---|
![]() |
... // TLS 接続に使用します。 $DB['ENCRYPTION'] = true;$DB['KEY_FILE'] = '';$DB['CERT_FILE'] = '';$DB['CA_FILE'] = '';$DB['VERIFY_HOST'] = false;$DB['CIPHER_LIST'] = '';... |
Database TLS encryption をチェックする Verify database certificate はチェックしない |
required モードを有効にします。 |
![]() |
...$DB['ENCRYPTION'] = true;$DB['KEY_FILE'] = '';$DB['CERT_FILE'] = '';$DB['CA_FILE'] = '/etc/ssl/mysql/ca.pem';$DB['VERIFY_HOST'] = false;$DB['CIPHER_LIST'] = '';... |
1. Database TLS encryption と Verify database certificate をチェックする 2. Database TLS CA file へのパスを指定する |
verify_ca モードを有効にします。 |
![]() |
... // 厳密に定義された Cipher list を使用する TLS 接続に使用します。 $DB['ENCRYPTION'] = true;$DB['KEY_FILE'] = '<key_file_path>';$DB['CERT_FILE'] = '<key_file_path>';$DB['CA_FILE'] = '<key_file_path>';$DB['VERIFY_HOST'] = true;$DB['CIPHER_LIST'] = '<cipher_list>';... または: ... // Cipher list を定義せずに TLS 接続に使用します - MySQL サーバーによって選択されます $DB['ENCRYPTION'] = true;$DB['KEY_FILE'] = '<key_file_path>';$DB['CERT_FILE'] = '<key_file_path>';$DB['CA_FILE'] = '<key_file_path>';$DB['VERIFY_HOST'] = true;$DB['CIPHER_LIST'] = '';... |
1. Database TLS encryption と Verify database certificate をチェックする 2. Database TLS key file へのパスを指定する 3. Database TLS CA file へのパスを指定する 4. Database TLS certificate file へのパスを指定する 5. Database TLS cipher list を指定する(任意) |
MySQL で verify_full モードを有効にします。 |
![]() |
...$DB['ENCRYPTION'] = true;$DB['KEY_FILE'] = '<key_file_path>';$DB['CERT_FILE'] = '<key_file_path>';$DB['CA_FILE'] = '<key_file_path>';$DB['VERIFY_HOST'] = true;$DB['CIPHER_LIST'] = ' ';... |
1. Database TLS encryption と Verify database certificate をチェックする 2. Database TLS key file へのパスを指定する 3. Database TLS CA file へのパスを指定する 4. Database TLS certificate file へのパスを指定する 5. Database host verification をチェックする |
PostgreSQL で verify_full モードを有効にします。 |
参照: MySQL の暗号化設定例, PostgreSQL の暗号化設定例。
Zabbix server/proxy configuration
データベースへの安全な接続は、Zabbix server および/または proxy の設定ファイル内の各パラメータで構成できます。
| Configuration | Result |
|---|---|
| None | データベースへの接続は暗号化されません。 |
1. DBTLSConnect=required を設定 |
サーバー/proxy はデータベースへ TLS 接続を行います。暗号化されていない接続は許可されません。 |
1. DBTLSConnect=verify_ca を設定2. DBTLSCAFile を設定 - TLS 証明書認証局ファイルを指定 |
サーバー/proxy は、データベース証明書を検証した後にデータベースへ TLS 接続を行います。 |
1. DBTLSConnect=verify_full を設定2. DBTLSCAFile を設定 - TLS 証明書認証局ファイルを指定 |
サーバー/proxy は、データベース証明書とデータベースホストの識別情報を検証した後にデータベースへ TLS 接続を行います。 |
1. DBTLSCAFile を設定 - TLS 証明書認証局ファイルを指定2. DBTLSCertFile を設定 - クライアント公開鍵証明書ファイルを指定3. DBTLSKeyFile を設定 - クライアント秘密鍵ファイルを指定 |
サーバー/proxy は、データベースへ接続する際にクライアント証明書を提供します。 |
1. DBTLSCipher を設定 - TLS 1.2 までの TLS プロトコルを使用する接続でクライアントが許可する暗号スイートの一覧または DBTLSCipher13 - TLS 1.3 プロトコルを使用する接続でクライアントが許可する暗号スイートの一覧 |
(MySQL) 提供された一覧の中から暗号スイートを使用して TLS 接続が行われます。 (PostgreSQL) このオプションを設定するとエラーとして扱われます。 |



