5 データベースへの安全な接続
概要
このセクションでは、以下の間で安全なTLS接続を行うためのZabbixのセットアップ手順と設定例を提供します。
| データベース | Zabbixコンポーネント |
|---|---|
| MySQL | Zabbixフロントエンド、Zabbixサーバー、Zabbixプロキシ |
| PostgreSQL | Zabbixフロントエンド、Zabbixサーバー、Zabbixプロキシ |
DBMS内での接続暗号化の設定については、詳細は公式ベンダーのドキュメントを参照してください。
- MySQL: ソースおよびレプリカのレプリケーションデータベースサーバー。
- MySQL: グループレプリケーションなどのデータベースサーバー。
- PostgreSQL 暗号化オプション。
すべての例は、CentOS 8の公式リポジトリで利用可能なMySQL CE(8.0)およびPgSQL(13)のGAリリースに基づいています。
要件
暗号化を設定するには、以下が必要です。
- OpenSSL >=1.1.X または代替手段を備えた、開発元がサポートするオペレーティングシステム
サポート終了(EOL)状態のOSは、特に新規インストールの場合、使用を避けることを推奨します。
- 開発元が提供する公式リポジトリからインストールされ、保守されているデータベースエンジン(RDBMS)。オペレーティングシステムには、暗号化サポートが実装されていない古いバージョンのデータベースソフトウェアが同梱されていることが多く、たとえば RHEL 7 ベースのシステムや、暗号化をサポートしない PostgreSQL 9.2、MariaDB 5.5 などがあります。
用語
このオプションを設定すると、Zabbixサーバー/プロキシおよびフロントエンドからデータベースへのTLS接続が強制されます。
required- アイデンティティチェックなしでTLSをトランスポートモードとして接続verify_ca- TLSで接続し、証明書を検証verify_full- TLSで接続し、証明書を検証し、DBHostで指定されたデータベースのアイデンティティ(CN)が証明書と一致することを検証
Zabbixの設定
Webインターフェースからデータベースへの接続
データベースへの安全な接続は、Webインターフェースのインストール時に設定できます。
- Configure DB connection ステップで 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インターフェースは System information レポートに「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 サーバー/プロキシ設定
データベースへのセキュアな接続は、Zabbix の server および/または proxy 設定ファイル内の соответствするパラメータで設定できます。
| Configuration | Result |
|---|---|
| None | データベースへの接続は暗号化されません。 |
1. DBTLSConnect=required を設定 |
サーバー/プロキシはデータベースへ TLS 接続を行います。暗号化されていない接続は許可されません。 |
1. DBTLSConnect=verify_ca を設定2. DBTLSCAFile を設定 - TLS 証明書認証局ファイルを指定 |
サーバー/プロキシは、データベース証明書を検証した後にデータベースへ TLS 接続を行います。 |
1. DBTLSConnect=verify_full を設定2. DBTLSCAFile を設定 - TLS 証明書認証局ファイルを指定 |
サーバー/プロキシは、データベース証明書とデータベースホストの識別情報を検証した後にデータベースへ TLS 接続を行います。 |
1. DBTLSCAFile を設定 - TLS 証明書認証局ファイルを指定2. DBTLSCertFile を設定 - クライアント公開鍵証明書ファイルを指定3. DBTLSKeyFile を設定 - クライアント秘密鍵ファイルを指定 |
サーバー/プロキシは、データベースへ接続する際にクライアント証明書を提供します。 |
1. DBTLSCipher を設定 - TLS 1.2 までの TLS プロトコルを使用する接続でクライアントが許可する暗号スイートの一覧または DBTLSCipher13 - TLS 1.3 プロトコルを使用する接続でクライアントが許可する暗号スイートの一覧 |
(MySQL) 提供された一覧の中から暗号スイートを使用して TLS 接続が行われます。 (PostgreSQL) このオプションを設定するとエラーとして扱われます。 |



