このセクションでは、MySQL/MariaDBデータベースを保護するためのベストプラクティスについて説明します。
基本的なセットアップについては、デフォルトのMySQL/MariaDBデータベースの作成手順を参照してください。この手順には、Zabbixデータベースに対する完全な権限を持つ'zabbix'ユーザーの作成が含まれます。 このユーザーは、Zabbixをアップグレードするときにデータベース構造を変更するために必要な権限も持つデータベース所有者です。
セキュリティを強化するには、最小限の権限を持つ追加のデータベースロールとユーザーを作成することをお勧めします。 これらのロールとユーザーは、最小権限の原則に基づいて、つまり、意図した機能を実行するために必要な権限のみを設定する必要があります。
対応する権限を持つ次のロールを作成します。
CREATE ROLE 'zbx_srv';
GRANT DELETE, INSERT, SELECT, UPDATE ON zabbix.* TO 'zbx_srv';
FLUSH PRIVILEGES;
CREATE ROLE 'zbx_web';
GRANT DELETE, INSERT, SELECT, UPDATE ON zabbix.* TO 'zbx_web';
FLUSH PRIVILEGES;
CREATE ROLE 'zbx_bckp';
GRANT LOCK TABLES, TRIGGER, SELECT ON zabbix.* TO 'zbx_bckp';
GRANT process ON *.* TO 'zbx_bckp';
FLUSH PRIVILEGES;
テーブルの復元とアップグレードはデータベース所有者が実行する必要があります。
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;
ロールを作成した後、ユーザーに割り当てることができます。
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;
たとえば、Zabbixサーバーとプロキシを実行するためのロールを作成して割り当てるには、次のようにします。