このセクションでは、以下の組み合わせでの安全なTLS接続のため、Zabbixセットアップ手順と構成例を提供します。
データベース | Zabbixコンポーネント |
---|---|
MySQL | Zabbix Webインターフェース、Zabbixサーバー、Zabbixプロキシ |
PostgreSQL | Zabbix Webインターフェース、Zabbixサーバー、Zabbixプロキシ |
DBMS内で接続暗号化を設定するには、詳細について以下のベンダー公式ドキュメントを参照してください:
すべての例は、AlmaLinux 8の公式リポジトリから入手できるMySQL CE(8.0)およびPgSQL(13)のGAリリースに基づいています。
暗号化を設定するには、次が必要です。
特に新規インストールの場合は、サポート終了したOSは避けることをお勧めします。
このオプションを設定すると、Zabbixサーバー/プロキシやフロントエンドからのデータベース接続にはTLS接続を使用します。
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の設定 | 設定ファイル | 説明 | 結果 |
---|---|---|---|
... // Used for TLS connection. $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.データベースTLSCAファイルへのパスを指定します。 |
'verify_ca'モードが有効 | |
... // Used for TLS connection with strictly defined Cipher list. $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>'; ... Or: ... // Used for TLS connection without Cipher list defined - selected by MySQL server $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.データベースTLSCAファイルへのパスを指定します。 4.データベースTLS証明書ファイルへのパスを指定します 6. 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.データベースTLSCAファイルへのパスを指定します 4.データベースTLS証明書ファイルへのパスを指定します 6.データベースホストの検証をチェックします |
PostgreSQLで 'verify_full' モードが有効 |
関連項目: Encryption configuration examples for MySQL, Encryption configuration examples for PostgreSQL.
データベースへの安全な接続は、Zabbixサーバーやプロキシの設定ファイルそれぞれのパラメータで設定できます。
設定 | 結果 |
---|---|
無し | 暗号化せずにデータベースに接続します。 |
1. DBTLSConnect=requiredをセット | サーバー/プロキシはデータベースへTLS接続します。暗号化されていない接続は許可されていません。 |
1. DBTLSConnect=verify_caをセット 2.DBTLSCAFileにTLS認証局ファイルを指定 |
サーバー/プロキシは、データベース証明書を確認した後、データベースへTLS接続します。 |
1. DBTLSConnect=verify_fullをセット 2. DBTLSCAFileにTLS認証局ファイルを指定 |
サーバー/プロキシは、データベース証明書とデータベースホストIDを確認した後、データベースへTLS接続します。 |
1. DBTLSCAFileにTLS認証局ファイルを指定 2. DBTLSCertFileにクライアントの公開鍵証明書ファイルを指定 3. DBTLSKeyFileに クライアントの秘密鍵ファイルを指定 |
サーバー/プロキシは、データベースへの接続中にクライアント証明書を提供します。 |
1.1.DBTLSCipherにクライアントがTLS1.2までのTLSプロトコルを使用した接続を許可する暗号化暗号のリストをセット または |
|
DBTLSCipher13にクライアントがTLS1.3プロトコルを使用した接続に許可する暗号化暗号のリストをセット | (MySQL)TLS接続は、提供されたリストの暗号を使用して行われます。 (PostgreSQL)このオプションを設定すると、エラーと見なされます。 |