2. Redactionを体験する
このページでは、HRユーザーとSALES_APPユーザーでの実行結果の違いを確認します。
- HRユーザーで接続しデータ取得
- SALES_APPユーザーで接続しデータ取得
HRユーザーで接続
Section titled “HRユーザーで接続”まず、HRユーザーとしてデータベースに接続し、 EMPLOYEES テーブルの first_name 、 salary 、 commission_pct 列を取得します。(実行結果は一部を抜粋しています)
$ sql hr/<password>@localhost:1521/freepdb1
SQL> show con_name userCON_NAME------------------------------FREEPDB1USER is "HR"
-- salary列とcommission_pct列のデータがそのまま表示されるselect first_name, salary, commission_pct from hr.employees;
SQL> exitSQL> select first_name, salary, commission_pct from hr.employees;
FIRST_NAME SALARY COMMISSION_PCT______________ _________ _________________Steven 24000Neena 17000Lex 17000Alexander 9000Bruce 6000David 4800Valli 4800...Peter 2500John 14000 0.4Karen 13500 0.3Alberto 12000 0.3Gerald 11000 0.3Eleni 10500 0.2Sean 10000 0.3David 9500 0.25Peter 9000 0.25Christopher 8000 0.2Nanette 7500 0.2Oliver 7000 0.15Janette 10000 0.35Patrick 9500 0.35Allan 9000 0.35Lindsey 8000 0.3...Susan 6500Hermann 10000Shelley 12008William 8300
107 rows selected.salary 列と commission_pct 列のデータがそのまま表示され、HR ユーザーは元のデータにアクセスできていることがわかります。
SALES_APPユーザーで接続
Section titled “SALES_APPユーザーで接続”次に、SALES_APPユーザーとしてデータベースに接続し、同じクエリを実行します。 このユーザーにはリダクションポリシーが適用されているため、マスキングされたデータが返るはずです。
$ sqlplus sales_app/<password>@localhost:1521/freepdb1select first_name, salary, commission_pct from hr.employees;-- salary列とcommission_pct列の値が全て0で表示されるsql sales_app/Welcome1#Welcome1#@localhost:1521/freepdb1
SQL> show con_name userCON_NAME------------------------------FREEPDB1USER is "SALES_APP"
SQL> select first_name, salary, commission_pct from hr.employees;
FIRST_NAME SALARY COMMISSION_PCT______________ _________ _________________Steven 0Neena 0Lex 0Alexander 0Bruce 0David 0Valli 0...Peter 0John 0 0Karen 0 0Alberto 0 0Gerald 0 0Eleni 0 0Sean 0 0David 0 0Peter 0 0Christopher 0 0Nanette 0 0Oliver 0 0Janette 0 0Patrick 0 0Allan 0 0Lindsey 0 0...Susan 0Hermann 0Shelley 0William 0
107 rows selected.SALES_APPユーザーでは、 salary 列と commission_pct 列の値が全て 0 で表示されており、リダクションポリシーが正しく適用されていることが確認できます。 これにより、SALES_APPユーザーは給与や手数料の値を閲覧することができなくなっています。
最後に作成したRedactionポリシーを削除します。
Redactionポリシーの削除
Section titled “Redactionポリシーの削除”BEGIN DBMS_REDACT.DROP_POLICY ( object_schema => 'HR', object_name => 'EMPLOYEES', policy_name => 'POL_REDCT_EMPLOYEES_SALARY' );END;/SQL> SELECT * FROM redaction_policies;
no rows selectedSQL> SELECT object_owner, object_name, column_name, function_type FROM redaction_columns;
no rows selected以上で、Dara Redaction は終了です。