1 MySQL/MariaDBのセキュリティ保護

概要

このセクションでは、MySQL/MariaDBデータベースを保護するためのベストプラクティスについて説明します。

基本的なセットアップについては、デフォルトのMySQL/MariaDBデータベースの作成手順を参照してください。この手順には、Zabbixデータベースに対する完全な権限を持つ'zabbix'ユーザーの作成が含まれます。 このユーザーは、Zabbixをアップグレードするときにデータベース構造を変更するために必要な権限も持つデータベース所有者です。

セキュリティを強化するには、最小限の権限を持つ追加のデータベースロールとユーザーを作成することをお勧めします。 これらのロールとユーザーは、最小権限の原則に基づいて、つまり、意図した機能を実行するために必要な権限のみを設定する必要があります。

ユーザーロールの作成

対応する権限を持つ次のロールを作成します。

  • zbx_srv - Zabbixサーバーとプロキシを実行するためのロール
CREATE ROLE 'zbx_srv';
       GRANT DELETE, INSERT, SELECT, UPDATE ON zabbix.* TO 'zbx_srv';
       FLUSH PRIVILEGES;
Copy
✔ Copied
  • zbx_web - ZabbixフロントエンドとAPIを実行するためのロール。
CREATE ROLE 'zbx_web';
       GRANT DELETE, INSERT, SELECT, UPDATE ON zabbix.* TO 'zbx_web';
       FLUSH PRIVILEGES;
Copy
✔ Copied
  • zbx_bckp - テーブルバックアップのロール
CREATE ROLE 'zbx_bckp';
       GRANT LOCK TABLES, TRIGGER, SELECT ON zabbix.* TO 'zbx_bckp';
       GRANT process ON *.* TO 'zbx_bckp';
       FLUSH PRIVILEGES;
Copy
✔ Copied

テーブルの復元とアップグレードはデータベース所有者が実行する必要があります。

  • zbx_part - データベースのパーティション化に対する権限セットが制限されたロール。 このロールは特定のデータベーステーブルに対する権限を付与するため、データベースの作成後にのみ作成できることに注意してください。
CREATE ROLE 'zbx_part';
       GRANT SELECT, ALTER, DROP ON zabbix.history TO 'zbx_part';
       GRANT SELECT, ALTER, DROP ON zabbix.history_uint TO 'zbx_part';
       GRANT SELECT, ALTER, DROP ON zabbix.history_str TO 'zbx_part';
       GRANT SELECT, ALTER, DROP ON zabbix.history_text TO 'zbx_part';
       GRANT SELECT, ALTER, DROP ON zabbix.history_log TO 'zbx_part';
       GRANT SELECT, ALTER, DROP ON zabbix.trends TO 'zbx_part';
       GRANT SELECT, ALTER, DROP ON zabbix.trends_uint TO 'zbx_part';
       -- For MariaDB: skip the next line (GRANT session_variables_admin ON *.* TO 'zbx_part';)
       GRANT session_variables_admin ON *.* TO 'zbx_part';
       GRANT SELECT ON zabbix.dbversion TO 'zbx_part';
       GRANT SELECT, DELETE ON zabbix.housekeeper TO 'zbx_part';
       FLUSH PRIVILEGES;
Copy
✔ Copied

ロールを作成した後、ユーザーに割り当てることができます。

ユーザーロールの割り当て

To assign the created user roles, create users and assign the relevant roles to them. 作成したユーザーロールを割り当てるには、ユーザーを作成し、関連するロールをユーザーに割り当てます。 <user><host><role><password>は必要に応じて置き換えてください。

CREATE USER '<user>'@'<host>' IDENTIFIED BY '<password>';
       GRANT '<role>' TO '<user>'@'<host>';
       SET DEFAULT ROLE '<role>' TO '<user>'@'<host>';
       -- For MariaDB: SET DEFAULT ROLE '<role>' FOR '<user>'@'<host>'
       FLUSH PRIVILEGES;
Copy
✔ Copied

たとえば、Zabbixサーバーとプロキシを実行するためのロールを作成して割り当てるには、次のようにします。

CREATE USER 'usr_srv'@'localhost' IDENTIFIED BY 'password';
       GRANT 'zbx_srv' TO 'usr_srv'@'localhost';
       SET DEFAULT ROLE ALL TO 'usr_srv'@'localhost';
       FLUSH PRIVILEGES;
Copy
✔ Copied
To toggle search highlight, press Ctrl+Alt+H
Have an improvement suggestion for this page? Select the text that could be improved and press Ctrl+Enter to send it to the editors.