このセクションでは、PostgreSQLデータベースを保護するためのベストプラクティスについて説明します。
基本的なセットアップについては、デフォルトのPostgreSQLデータベースの作成手順を参照してください。この手順には、Zabbixデータベースに対する完全な権限を持つ'zabbix'ユーザーの作成が含まれます。 このユーザーは、Zabbixをアップグレードするときにデータベース構造を変更するために必要な権限も持つデータベース所有者です。
セキュリティを強化するには、安全なスキーマ使用パターンを構成し、最小限の権限を持つ追加のデータベースロールとユーザーを作成することをお勧めします。 これらのロールとユーザーは、[最小権限の原則]((/manual/best_practices/security/access_control#principle-of-least-privilege)に基づいて、つまり、意図した機能を実行するために必要な権限のみを設定する必要があります。
データベース所有者となるユーザーを作成し、Zabbixデータベースを作成します。 データベースの所有者は、データベースの作成で指定されているユーザーです。
createuser -U postgres -h localhost --pwprompt usr_owner
createdb -U postgres -h localhost -O usr_owner -E Unicode -T template0 zabbix
データベースのクリーンなインストールまたはアップグレードは、データベース所有者が実行する必要があります。 これは、データベースオブジェクトをドロップする、あるいはその定義を変更する権限がデータベース所有者に固有の特権であり、許可または取り消されることができないためです。
このページの次のコマンドは、PostgreSQLへの接続がzabbix
データベースに作成されている間に実行する必要があります。
zabbix
スキーマを作成し、データベースの所有者(usr_owner
)をこのスキーマの所有者に設定します。
安全なスキーマ使用パターンを設定します。
REVOKE CREATE ON SCHEMA public FROM PUBLIC;
REVOKE ALL ON DATABASE zabbix FROM PUBLIC;
-- Note: search_path should point to the "zabbix" schema:
ALTER ROLE ALL IN DATABASE zabbix SET search_path = "zabbix";
データベースを設定した後、ユーザーロールの作成に進みます。
対応する権限を持つ次の役割を作成します。
CREATE ROLE zbx_srv;
GRANT CONNECT ON DATABASE zabbix TO zbx_srv;
GRANT USAGE ON SCHEMA zabbix TO zbx_srv;
ALTER DEFAULT PRIVILEGES FOR ROLE usr_owner IN SCHEMA zabbix GRANT DELETE, INSERT, SELECT, UPDATE ON TABLES TO zbx_srv;
ALTER DEFAULT PRIVILEGES FOR ROLE usr_owner IN SCHEMA zabbix GRANT SELECT, UPDATE, USAGE ON sequences TO zbx_srv;
CREATE ROLE zbx_web;
GRANT CONNECT ON DATABASE zabbix TO zbx_web;
GRANT USAGE ON SCHEMA zabbix TO zbx_web;
ALTER DEFAULT PRIVILEGES FOR ROLE usr_owner IN SCHEMA zabbix GRANT DELETE, INSERT, SELECT, UPDATE ON TABLES TO zbx_web;
ALTER DEFAULT PRIVILEGES FOR ROLE usr_owner IN SCHEMA zabbix GRANT SELECT, UPDATE, USAGE ON sequences TO zbx_web;
CREATE ROLE zbx_bckp;
GRANT CONNECT ON DATABASE zabbix TO zbx_bckp;
GRANT USAGE ON SCHEMA zabbix TO zbx_bckp;
ALTER DEFAULT PRIVILEGES FOR ROLE usr_owner IN SCHEMA zabbix GRANT SELECT ON TABLES TO zbx_bckp;
ALTER DEFAULT PRIVILEGES FOR ROLE usr_owner IN SCHEMA zabbix GRANT SELECT, UPDATE, USAGE ON sequences TO zbx_bckp;
テーブルの復元は、データベースの所有者によってのみ可能です。
役割を作成した後、ユーザーに割り当てることができます。
作成されたユーザーロールを割り当てるには、ユーザーを作成し関連するロールを割り当てます。 <user>
と<role>
、<password>
は適切に置き換えてください。
たとえば、Zabbixサーバーとプロキシを実行するロールを作成して割り当てるには、
データベースパーティショニングは、TimescaleDBによって促進されます。 TimescaleDBを利用するには、Zabbixサーバーにはデータベース所有者の権限が必要です。
PostgreSQL zabbix
スキーマが既にzabbix
データベースを作成していた場合、次のコマンドでTimescaleDB を有効にすることができます。