このセクションでは、以下の間で安全なTLS接続を行うためのZabbixのセットアップ手順と設定例を提供します。
| データベース | Zabbixコンポーネント |
|---|---|
| MySQL | Zabbixフロントエンド、Zabbixサーバー、Zabbixプロキシ |
| PostgreSQL | Zabbixフロントエンド、Zabbixサーバー、Zabbixプロキシ |
DBMS内での接続暗号化の設定については、詳細は公式ベンダーのドキュメントを参照してください。
すべての例は、CentOS 8の公式リポジトリで利用可能なMySQL CE(8.0)およびPgSQL(13)のGAリリースに基づいています。
暗号化を設定するには、次が必要です。
特に新規インストールの場合は、サポート終了したOSは避けることをお勧めします。
このオプションを設定すると、Zabbixサーバー/プロキシおよびフロントエンドからデータベースへのTLS接続が強制されます。
required - アイデンティティチェックなしでTLSをトランスポートモードとして接続verify_ca - TLSで接続し、証明書を検証verify_full - TLSで接続し、証明書を検証し、DBHostで指定されたデータベースのアイデンティティ(CN)が証明書と一致することを検証Webインターフェースのインストール中に、データベースへの安全な接続を設定できます。
MySQLの場合、データベースホストがlocalhostに設定されていると、ソケットファイル(Unixの場合)または共有メモリ(Windowsの場合)を使用する接続を暗号化できないため、データベースのTLS暗号化チェックボックスが無効になります。 PostgreSQLの場合、データベースホストフィールドの値がスラッシュで始まるか、フィールドが空の場合、TLS暗号化チェックボックスは無効になります。
次のパラメータは、証明書モードのTLS暗号化で使用可能になります。(両方のチェックボックスがマークされている場合)
| パラメータ | 説明 |
|---|---|
| データベースのTLS CAファイル | 有効なTLS認証局(CA)ファイルへのフルパスを指定します。 |
| データベースのTLSキーファイル | 有効なTLSキーファイルへのフルパスを指定します。 |
| データベースのTLS証明書ファイル | 有効なTLS証明書ファイルへのフルパスを指定します。 |
| データベースのホスト検証 | このチェックボックスをオンにすると、ホスト検証がアクティブになります。 PHP MySQLライブラリではピア証明書の検証手順をスキップできないため、MySQLでは無効になっています。 |
| データベースのTLS暗号化方式リスト | 有効な暗号のカスタムリストを指定します。暗号リストの形式は、OpenSSL標準に準拠している必要があります。 MySQLでのみ使用できます。 |
TLSパラメータは有効なファイルを指している必要があります。存在しないファイルまたは無効なファイルを指している場合は、認証エラーが発生します。 証明書ファイルが書き込み可能である場合、Webインターフェースはシステム情報レポートに「データベースのTLS証明書ファイルは読み込み専用にしてください」という警告を表示します。 (PHPユーザーが証明書の所有者である場合にのみ表示されます)。
パスワードで保護された証明書はサポートされていません。
Zabbixフロントエンドは、GUIインターフェースを使用して可能なオプションを定義します: required、verify_ca、verify_full。インストールウィザードのDB接続の設定ステップで必要なオプションを指定します。これらのオプションは、設定ファイル(zabbix.conf.php)に次のようにマッピングされます:
| GUI設定 | 設定ファイル | 説明 | 結果 |
|---|---|---|---|
![]() |
... // TLS接続に使用。 $DB['ENCRYPTION'] = true; $DB['KEY_FILE'] = ''; $DB['CERT_FILE'] = ''; $DB['CA_FILE'] = ''; $DB['VERIFY_HOST'] = false; $DB['CIPHER_LIST'] = ''; ... |
データベースTLS暗号化をチェック データベース証明書の検証はチェックしない |
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. データベースTLS暗号化とデータベース証明書の検証をチェック 2. データベースTLS CAファイルのパスを指定 |
verify_caモードを有効化 |
![]() |
... // 厳密に定義されたCipherリストで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リストが定義されていない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. データベースTLS暗号化とデータベース証明書の検証をチェック 2. データベースTLSキー・ファイルのパスを指定 3. データベースTLS CAファイルのパスを指定 4. データベースTLS証明書ファイルのパスを指定 5. データベースTLS暗号スイートリストを指定(任意) |
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. データベースTLS暗号化とデータベース証明書の検証をチェック 2. データベースTLSキー・ファイルのパスを指定 3. データベースTLS CAファイルのパスを指定 4. データベースTLS証明書ファイルのパスを指定 5. データベースホストの検証をチェック |
PostgreSQLのverify_fullモードを有効化 |
関連情報: MySQLの暗号化設定例、PostgreSQLの暗号化設定例
データベースへの安全な接続は、Zabbixのサーバーおよび/またはプロキシの設定ファイルで、それぞれのパラメータを使用して設定できます。
| 設定 | 結果 |
|---|---|
| なし | 暗号化なしでデータベースに接続します。 |
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までのプロトコルでの接続に許可する暗号スイートのリストまたは DBTLSCipher13 - クライアントがTLS 1.3プロトコルでの接続に許可する暗号スイートのリスト |
(MySQL) 提供されたリストから暗号スイートを使用してTLS接続が行われます。 (PostgreSQL) このオプションを設定するとエラーとみなされます。 |