※ 本記事は2017年1月30日に公開されたものです。

Oracle Databaseでは論理バックアップを取得するためにエクスポート/インポートの仕組みを提供しています。
ユーザーが自分のスキーマのオブジェクトをエクスポートする際にはダンプファイルを出力するディレクトリへの書込み権限以外データにアクセスする権限を特に追加する必要はありませんが、他スキーマのオブジェクトを含めてエクスポートを実行する際に、EXP_FULL_DATABASEロールを付与することがあると思います。

実はこのEXP_FULL_DATABASEロールには強力な権限が付与されているため注意が必要です。

SQL> select privilege from dba_sys_privs where grantee='EXP_FULL_DATABASE';
PRIVILEGE
----------------------------------------
CREATE TABLE
RESUMABLE
EXECUTE ANY PROCEDURE
EXEMPT REDACTION POLICY
ADMINISTER SQL MANAGEMENT OBJECT
BACKUP ANY TABLE
READ ANY FILE GROUP
ADMINISTER RESOURCE MANAGER
EXECUTE ANY TYPE
SELECT ANY SEQUENCE
SELECT ANY TABLE
CREATE SESSION
12行が選択されました。

全てのユーザーの表を参照できるSELECT ANY TABLEシステム権限に加えて、全てのユーザーのストアドプロシージャを実行できるEXECUTE ANY PROCEDURE、さらにはData RedactionのセキュリティポリシーをバイパスできるEXEMPT REDACTION POLICYが付与されます。

同様にIMP_FULL_DATABASEにも、さらに強力な権限が付与されています。

SQL> select privilege from dba_sys_privs where grantee='IMP_FULL_DATABASE';
PRIVILEGE
----------------------------------------
GRANT ANY OBJECT PRIVILEGE
DROP ANY DIMENSION
CREATE ANY LIBRARY
DROP ANY DIRECTORY
DROP ANY MATERIALIZED VIEW
DROP PROFILE
DROP ANY PROCEDURE
DROP PUBLIC DATABASE LINK
DROP ANY CLUSTER
ALTER ANY TABLE
AUDIT SYSTEM
RESUMABLE
GLOBAL QUERY REWRITE
ALTER ANY TYPE
ALTER PROFILE
EXECUTE ANY PROCEDURE
CREATE ANY CLUSTER
DROP ROLLBACK SEGMENT
BECOME USER
DROP TABLESPACE
DROP ANY OPERATOR
CREATE ANY OPERATOR
ANALYZE ANY
ALTER ANY PROCEDURE
CREATE ANY SEQUENCE
COMMENT ANY TABLE
ADMINISTER SQL MANAGEMENT OBJECT
CREATE ANY SQL PROFILE
DROP ANY SQL PROFILE
ALTER ANY TRIGGER
AUDIT ANY
CREATE ROLE
DROP ANY SYNONYM
DROP ANY INDEX
ALTER USER
MANAGE ANY QUEUE
EXECUTE ANY OPERATOR
DROP ANY TRIGGER
DROP ANY SEQUENCE
DELETE ANY TABLE
UPDATE ANY TABLE
INSERT ANY TABLE
DROP ANY TABLE
CREATE ANY TABLE
ADMINISTER RESOURCE MANAGER
CREATE ANY DIMENSION
DROP ANY INDEXTYPE
DROP ANY LIBRARY
EXECUTE ANY TYPE
DROP ANY TYPE
CREATE ANY DIRECTORY
GRANT ANY PRIVILEGE
ALTER RESOURCE COST
CREATE PROFILE
CREATE ANY PROCEDURE
CREATE ANY SYNONYM
CREATE ROLLBACK SEGMENT
CREATE TABLESPACE
DROP ANY CONTEXT
CREATE ANY TYPE
CREATE ANY TRIGGER
ALTER DATABASE
CREATE PUBLIC SYNONYM
CREATE ANY INDEX
SELECT ANY TABLE
CREATE USER
CREATE SESSION
ADMINISTER DATABASE TRIGGER
DROP ANY OUTLINE
CREATE ANY CONTEXT
CREATE ANY INDEXTYPE
CREATE ANY MATERIALIZED VIEW
GRANT ANY ROLE
DROP ANY ROLE
CREATE PUBLIC DATABASE LINK
CREATE DATABASE LINK
DROP ANY VIEW
CREATE ANY VIEW
DROP PUBLIC SYNONYM
DROP USER
80行が選択されました。

 

ユーザーの作成・削除といったアカウント管理から、全てのスキーマへの表の作成・削除・参照・更新・削除といったほぼデータベース管理者に近いデータ操作権限が割り当てられてしまいます。

もちろん業務上これらの操作が必要であればロールは割り振らなくてはいけないのですが、必要な時に付与し作業が終わったら剥奪する、付与したユーザーの操作を監査する、エクスポート/インポートバッチ専用ユーザーに付与しバッチの中に処理をコーディングし運用ツールからバッチを呼び出す形で定形処理しかできないようにするなど、このロールを付与されたユーザーが自由にアドホックな処理ができないような仕組みを作るような工夫をするように考慮して下さい。

「もくじ」にもどる