- データベース管理者のための主要20c新機能の学習
- データベース管理者のための主要20c新機能の学習
- セキュリティ・ソリューション
- セキュリティ
- 現在のユーザーに強制される統合監査ポリシー
- 演習: 現在のユーザーへの統合監査ポリシーの強制
演習: 現在のユーザーへの統合監査ポリシーの強制
この演習では、統合監査ポリシーがSQL文を実行する現在のユーザーにどのように強制されるかを示します。
- 新しい演習を開始する前に、演習の環境の推奨事項を参照してください。
/home/oracle/labs/M104781GC10/setup_audit_policies.sh
シェル・スクリプトを使用して、PDB20
にU1.PROCEMP
プロシージャを作成します。このスクリプトでは、ユーザーU1
およびU2
も作成します。$ cd /home/oracle/labs/M104781GC10 $ /home/oracle/labs/M104781GC10/setup_audit_policies.sh ... SQL*Plus: Release 20.0.0.0.0 - Production on Fri Dec 13 05:55:55 2019 Version 20.2.0.0.0 Copyright (c) 1982, 2019, Oracle. All rights reserved. Connected to: Oracle Database 20c Enterprise Edition Release 20.0.0.0.0 - Production Version 20.2.0.0.0 SQL> drop user u1 cascade; drop user u1 cascade * ERROR at line 1: ORA-01918: user 'U1' does not exist SQL> drop user u2 cascade; drop user u2 cascade * ERROR at line 1: ORA-01918: user 'U2' does not exist SQL> create user u1 identified by password; User created. SQL> grant create session, create procedure to u1; Grant succeeded. SQL> create user u2 identified by password; User created. SQL> grant select on hr.employees to u1, u2; Grant succeeded. SQL> grant create session to u2; Grant succeeded. SQL> grant select on unified_audit_trail to u1,u2; Grant succeeded. SQL> SQL> CREATE OR REPLACE PROCEDURE u1.procemp (employee_id IN NUMBER) 2 AS 3 v_emp_id NUMBER:=employee_id; 4 v_sal NUMBER; 5 BEGIN 6 SELECT salary INTO v_sal FROM hr.employees WHERE employee_id=v_emp_id; 7 dbms_output.put_line('Salary is : '||v_sal || ' for Employee ID: '||v_emp_id); 8 END procemp; 9 / Procedure created. SQL> SQL> grant execute on u1.procemp to u2; Grant succeeded. SQL> SQL> exit Disconnected from Oracle Database 20c Enterprise Edition Release 20.0.0.0.0 - Production Version 20.2.0.0.0 $
PDB20
で、ログイン・ユーザーU2
が実行したHR.EMPLOYEES
表に対する問合せを監査するために、監査ポリシーを作成して有効にします。$ sqlplus system@PDB20 SQL*Plus: Release 20.0.0.0.0 - Production on Fri Apr 3 14:44:59 2020 Version 20.2.0.0.0 Copyright (c) 1982, 2019, Oracle. All rights reserved. Enter password: password Oracle Database 20c Enterprise Edition Release 20.0.0.0.0 - Production Version 20.2.0.0.0 SQL> CREATE AUDIT POLICY pol_emp ACTIONS select on hr.employees; Audit policy created. SQL> AUDIT POLICY pol_emp BY u2; Audit succeeded. SQL>
- ユーザー
U2
としてPDB20
に接続し、U1.PROCEMP
プロシージャを実行します。SQL> CONNECT u2@PDB20 Enter password: password SQL> SET SERVEROUTPUT ON SQL> EXECUTE u1.procemp(206) Salary is : 8300 for Employee ID: 206 PL/SQL procedure successfully completed. SQL>
DBUSERNAME
(ログイン・ユーザー)およびプロシージャを実行したユーザーであるCURRENT_USER
を統合監査証跡から表示します。SQL> SELECT dbusername, current_user, action_name FROM unified_audit_trail WHERE unified_audit_policies = 'POL_EMP'; no rows selected SQL> EXIT $
注意:
統合監査ポリシーがSQL文を実行した現在のユーザーU1
に強制されていることに注目します。U2
のみが監査され、U1
は問合せを実行している現在のユーザーであるため、トップレベルのユーザー・セッションを所有しているユーザーが文を実行しているという印象を監査者に与える監査レコードは生成されません。
親トピック: 現在のユーザーに強制される統合監査ポリシー