3 Oracleのセキュリティ保護

概要

このセクションでは、Oracleデータベースを安全に保護するためのベストプラクティスを説明します。

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

セキュリティを向上させるため、最小限の権限を持つ追加のデータベースユーザーを作成することを推奨します。 これらのユーザーは、最小権限の原則に基づいて設定する必要があります。 つまり、意図された機能を実行するために不可欠な権限のみを付与する必要があります。

Oracle DBのサポートは、Zabbix 7.0以降で非推奨です。

ユーザーの作成

プラガブルデータベース(PDB)の所有者が usr_owner であると仮定すると、対応する権限を持つ追加のユーザーを2つ作成することを推奨します(通常運用向け):

  • usr_srv - Zabbixサーバーを実行するためのユーザー
  • usr_web - Zabbix WebインターフェースおよびAPIを実行するためのユーザー

これらのユーザーは、以下のコマンドを使用してPDB所有者(usr_owner)が作成する必要があります:

CREATE USER usr_srv IDENTIFIED BY "usr_srv" DEFAULT TABLESPACE "usr_owner" TEMPORARY TABLESPACE temp;
CREATE USER usr_web IDENTIFIED BY "usr_web" DEFAULT TABLESPACE "usr_owner" TEMPORARY TABLESPACE temp;

GRANT CREATE SESSION, DELETE ANY TABLE, INSERT ANY TABLE, SELECT ANY TABLE, UPDATE ANY TABLE, SELECT ANY SEQUENCE TO usr_srv;
GRANT CREATE SESSION, DELETE ANY TABLE, INSERT ANY TABLE, SELECT ANY TABLE, UPDATE ANY TABLE, SELECT ANY SEQUENCE TO usr_web;

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

ユーザーを作成した後、シノニムの作成に進んでください。

シノニムの生成

以下のスクリプトはシノニムを作成し、usr_srvusr_web がスキーマを明示的に指定しなくても usr_owner スキーマ内のテーブルにアクセスできるようにします。

BEGIN
FOR x IN (SELECT owner,table_name FROM all_tables WHERE owner ='usr_owner')
LOOP
  EXECUTE IMMEDIATE 'CREATE OR REPLACE SYNONYM usr_srv.'|| x.table_name ||' FOR '||x.owner||'.'|| x.table_name;
  EXECUTE IMMEDIATE 'CREATE OR REPLACE SYNONYM usr_web.'|| x.table_name ||' FOR '||x.owner||'.'|| x.table_name;
END LOOP;
END;
/

このスクリプトは、Zabbixデータベース構造の作成後または変更後に毎回実行する必要があります(たとえば、Zabbixのアップグレード後に一部のテーブルが作成または名前変更された場合)。