Upgrade to Pro — share decks privately, control downloads, hide ads and more …

データベースの機能を活用してデータを守ろう! - ハンズオン手順

データベースの機能を活用してデータを守ろう! - ハンズオン手順

Lab 1:権限による保護
Lab 2:テスト用アプリケーションの作成
Lab 3:統合監査(Unified Auditing)
Lab 4:ファイングレイン監査
(Fine-Grained Auditing)
Lab 5:権限分析(Privilege Analysis)
Lab 6:仮想プライベート・データベース
Lab 7:Real Application Security
Lab 8:Data Redaction
Lab 9:透過的機密データ保護
Lab 10: Database Vault

oracle4engineer

April 11, 2025
Tweet

More Decks by oracle4engineer

Other Decks in Programming

Transcript

  1. アジェンダ 1. ハンズオンに使用する環境の準備 Lab 1:権限による保護 Lab 2:テスト用アプリケーションの作成 Lab 3:統合監査(Unified Auditing)

    Lab 4:ファイングレイン監査 (Fine-Grained Auditing) Lab 5:権限分析(Privilege Analysis) Lab 6:仮想プライベート・データベース Lab 7:Real Application Security Lab 8:Data Redaction Lab 9:透過的機密データ保護 Lab 10: Database Vault Copyright © 2025, Oracle and/or its affiliates 2
  2. Oracle Autonomous Database Free Container Image Oracle Container Registryに登録されている Oracle

    Autonomous Database Freeのコンテナ・イ メージから、ハンズオンに使用する環境を作成します。 https://container- registry.oracle.com/ords/ocr/ba/database/adb-free Copyright © 2025, Oracle and/or its affiliates 4
  3. コンテナadb-freeを作成します 各OS(Linux, Windows, macOSなど)上でコンテナを実行できるように、podman(またはdocker)を準備しま す。 以下のコマンドまたは相当するコマンドを実行し、latest-23aiのadb-freeのコンテナを作成し実行します。 https://container-registry.oracle.com/ords/ocr/ba/database/adb-free Starting and ADB

    Free container • 新しい19cのContainer Imageでは統合監査が正常に動作しません。そのため23aiのContainer Imageを使用 しますが、ハンズオンの操作は19cの機能の範囲で実施します。Always FreeのAutonomous Databaseでは 19cで問題なく実施できます。
  4. Oracle REST Data Servicesのランディング・ページを開きます 以下のURLにアクセスします。 https://localhost:8443/ords/ 初回接続時、この接続ではプライバシーが保護されませ ん(Chrome)、接続がプライベートではありません (Edge)と表示されます。 1.

    詳細情報を表示します。 2. localhostにアクセスする(安全ではありません) をクリックし、接続先を信頼した上で接続します。 3. Oracle REST Data Servicesのランディング・ペー ジが開きます。Oracle APEXを実行します。 7 Copyright © 2025, Oracle and/or its affiliates 1 2 3
  5. 制限: Lab 10はadb-freeでは実施できません • Oracle Autonomous Database Free Container Imageの環境では、Lab

    10:Database Vaultは実施で きません。 • Oracle CloudのAlways FreeのAutonomous DatabaseではLab 1からLab 10まで実施できます。 • ハンズオンの手順自体はContainer Imageから作成した環境とAlways Freeの環境に違いはありません。 Always Freeでは操作画面に日本語を選択できます。
  6. APEXの管理サービスにサインインします Oracle Autonomous Database Free Container Imageから作成したOracle APEX環境は英語のみで す。 1.

    ワークスペースへのサインイン画面が表示されたときは、 Administration Services(管理サービス)を クリックし、管理サービスのサインインに移動します。 2. コンテナ作成時に設定した管理者のパスワードを入 力します。 3. Sign In to Administration(管理にサインイ ン)をクリックします。 10 Copyright © 2025, Oracle and/or its affiliates 1 2 3
  7. ワークスペースを作成します 作成済みのワークスペースが無いため、ワークスペース の作成が促されます。または、新しいContainer ImageではAdministration Servicesの画面が 表示されます。 1. どちらの画面でもCreate Workspace(ワー クスペースの作成)をクリックします。

    ワークスペースを作成する際に、ワークスペースに紐づ くデータベースのスキーマを、新規に作成するか既存 のスキーマを選択するかを選びます。選択できるス キーマは無いため、新規にスキーマを作成します。 2. New Schema(新規のスキーマ)を選択し ます。 1 Copyright © 2025, Oracle and/or its affiliates 11 2
  8. 注意:Autonomous DatabaseでのWorkspace Passwordについて Workspace Usernameとして指定したユーザーは、作成するAPEX ワークスペースの管理者ユーザーになります。 1. Autonomous Databaseでは、APEXの管理サービスおよび開発 ツールのサインインは、データベースのユーザー名とパスワードによって

    認証します(デフォルトの場合 – 開発ツールに関してはシングル・サ インオンによる認証を構成することも可能です)。 2. APEXアプリケーションのデフォルトの認証スキームOracle APEX認 証は、ワークスペース・ユーザーを対象としています。 3. Workspace Usernameに指定したユーザーがデータベースに存 在する場合、データベース・ユーザーは作成されず、指定したユーザー はワークスペース・ユーザーとしてのみ作成されます。 4. Workspace Usernameに指定したユーザーがデータベースに存 在しない場合、データベース・ユーザーとワークスペース・ユーザーの両 方が作成されます。 5. Autonomous Databaseでは管理者と開発者であるユーザーは、 データベース・ユーザーとワークスペース・ユーザーの両方が存在します。 そのため、管理サービスや開発ツールにサインインする場合とAPEXア プリケーションにサインインする場合で、パスワードが異なることがありま す。 13 Copyright © 2025, Oracle and/or its affiliates
  9. Real Application Securityを許可します 1. Allow Real Application Security(Real Application Securityの許可)をYes(はい)に

    変更します。 2. Apply Changes(変更の適用)をクリックします。 16 Copyright © 2025, Oracle and/or its affiliates 1 2
  10. SQL Developer Webにサインインします ORDSのランディング・ページに戻ります。 https://localhost:8443/ords/ 1. SQL Developer Webを実行します。 2.

    言語セレクタでEnglish – Englishを選択します。 SQL Developer Web自体は日本語で操作できま すが、日本語で出力されるデータベースのメッセージが 表示できません。 3. Username(ユーザー名)にadminを入力しま す。 4. Password(パスワード)コンテナ作成時に設定し た管理者のパスワードを入力します。 5. Sign in(サインイン)をクリックします。 18 Copyright © 2025, Oracle and/or its affiliates 1 3 4 5 2
  11. スキーマHRを作成します スキーマHRを作成します。 1. 以下の3行のSQLを記述します。 2. SQLスクリプトとして実行します。 APEXワークスペースに紐づくスキーマにパスワードは不要 です。SQLPlusやSQLclで直接スキーマに接続する場合 に、パスワードを設定します。 20

    Copyright © 2025, Oracle and/or its affiliates 1 2 create user hr default tablespace data temporary tablespace temp no authentication; alter user hr quota unlimited on data; grant create table, create view, create sequence, create trigger to hr;
  12. データを保持するAPEXワークスペースHRを作成します データを保持するAPEXワークスペースをHRとして作成し ます。 1. Database User(データベース・ユーザー)はHR を選択します。 2. Workspace Name(ワークスペース名)はHRと

    します。 3. Workspace Username(ワークスペース・ユー ザー名)はadminとします。 4. Workspace Password(ワークスペース・パス ワード)を入力します。 5. Create Workspace(ワークスペースの作成)を クリックします。 23 Copyright © 2025, Oracle and/or its affiliates 3 4 5 2 1
  13. APEXワークスペースHRにサインインします 24 Copyright © 2025, Oracle and/or its affiliates APEXワークスペースHRが作成されました。

    サンプル・データセットのEMP/DEPT(表EMPとDEPTと ビューEMP_DEPT_V)をスキーマHRにインストールする ため、ワークスペースHRにサインインします。 1. 成功メッセージに含まれるリンクHRをクリックします。 2. ワークスペースのサインイン画面が開くので、管理ユー ザーadminのパスワードを入力します。これはコンテ ナadb-freeを作成した時に設定したパスワード (データベース・ユーザーADMINのパスワード)です。 ワークスペースの作成時に指定したワークスペース・パ スワードではありません。 3. Sign In(サインイン)をクリックします。 2 1 3
  14. 表EMPをアクセスします SQLコマンドでページ下部のSELECT文を実行します。 1. SELECT文を記述します。 2. Runをクリックします。 以下のエラーが発生します。 ORA-00942: 表またはビュー"HR.EMP"は存在しませ ん。

    APEXから実行されるSQLは、割り当てられたスキーマが 持つ権限の元に実行されます。SQLコマンドでは左上の Schemaの指定です。 今はWKSP_APEXDEVになっています。 スキーマWKSP_APEXDEVは、スキーマHRにある表お よびビューにアクセスする権限を持っていません。 32 Copyright © 2025, Oracle and/or its affiliates 1 2 select * from hr.emp;
  15. 行の表示を制限したクラシック・レポートを作成します 故意にSQLインジェクションに脆弱になるように、置換文 字列&P1_ENAME.を使った条件を、レポートのソース となるSELECT文に与えます。 1. 新規にリージョンを作成します。 2. Identification(識別)のName(名前)は 従業員一覧 –

    行の制限、Type(タイプ)は Classic Report(クラシック・レポート)とします。 3. Source(ソース)のType(タイプ)にSQL Query(SQL問合せ)を選択し、以下のSELECT 文をSQL Query(SQL問合せ)に記述します。 43 Copyright © 2025, Oracle and/or its affiliates 1 2 3 SELECT * FROM EMP WHERE ENAME = '&P1_ENAME.'
  16. 列の表示を制限したクラシック・レポートを作成します レポートのソースとなるSELECT文より、列SALとCOMM (給与と手当)をレポート列から除外します。 1. 新規にリージョンを作成します。 2. Identification(識別)のName(名前)は 従業員一覧 – 列の制限、Type(タイプ)は

    Classic Report(クラシック・レポート)とします。 3. Source(ソース)のType(タイプ)にSQL Query(SQL問合せ)を選択し、以下のSELECT 文をSQL Query(SQL問合せ)に記述します。 4. 保存と実行を行います。 44 Copyright © 2025, Oracle and/or its affiliates 1 2 3 4 SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, DEPTNO FROM EMP WHERE ENAME = '&P1_ENAME.'
  17. 給与と手当の列を表示します 1. 従業員名として以下を入力し、Enterを入力します。 表示対象から外している列SALとCOMMが列Enameに 表示されます。 以下のSELECT文がレポートのソースとして実行されてい ます。 48 Copyright ©

    2025, Oracle and/or its affiliates SELECT * FROM EMP WHERE ENAME = 'SCOTT' UNION SELECT EMPNO, ENAME || ' - ' || SAL || ' - ' || COMM ENAME, JOB, MGR, HIREDATE, DEPTNO FROM EMP WHERE '1'='1' 1 SCOTT' UNION SELECT EMPNO, ENAME || ' - ' || SAL || ' - ' || COMM ENAME, JOB, MGR, HIREDATE, DEPTNO FROM EMP WHERE '1'='1
  18. 対話グリッドのページを作成します 1. Page Number(ページ番号)は2、Name (名前)は従業員編集とします。 2. Data Source(データ・ソース)のSource Type(ソース・タイプ)としてSQL Query(SQL問

    合せ)を選択し、Enter a SQL SELECT statement(SQL SELECT文を入力)にページ 下部にあるSELECT文を記述します。 3. Editing Enabled(編集が有効)をオンにします。 4. Navigation(ナビゲーション)のUse Breadcrumb(ブレッドクラムの使用)、Use Navigation(ナビゲーションの使用)ともにオンに します。 5. Next(次)をクリックします。 50 Copyright © 2025, Oracle and/or its affiliates 2 2 3 1 1 4 4 5 SELECT ROWID, EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO FROM EMP
  19. 統合監査ポリシーAPEX_HR_EMPを作成します CREATE AUDIT POLICY文を実行し、統合監査ポ リシーAPEX_HR_EMPを作成します。 • スキーマHRにある表EMPに対する、すべての操作を 監査対象とします。 • 監査対象は、指定したアプリケーションIDのAPEXア

    プリケーションから発行された操作に限定します。 • WHEN条件はSQL文の実行毎に評価します。 56 Copyright © 2025, Oracle and/or its affiliates SQL Developer Web ユーザADMIN にて作業します。 create audit policy apex_hr_emp actions all on hr.emp when q'~SYS_CONTEXT('APEX$SESSION','APP_ID') = '100'~' evaluate per statement; 100の部分は作成した アプリケーションのIDに 合わせて変更します。
  20. 実行したSELECT文が監査ログに書かれているか確認します select event_timestamp -- , audit_type -- , dbusername --

    , dbproxy_username -- , client_program_name -- , action_name -- , return_code , sql_text , sql_binds -- , application_contexts , client_identifier from UNIFIED_AUDIT_TRAIL where object_schema = 'HR' and object_name = 'EMP' and action_name = 'SELECT' and audit_type = 'Standard' and sql_text like q'~%1' = '1%~' order by event_timestamp
  21. データ・ソースの定義は最も内側のSELECT文として現れます 確認したSELECT文を見やすいように成形して表示します。 データ・ソースの定義は最も内側のSELECT文として現れます。 SQLインジェクションの脆弱性を突かれたSELECT文が記録されていることが確認できます。 select /*+ qb_name(apex$100_1)*/ * from( select

    a.*,row_number()over(order by null) apx$rownum from( select i.* from ( select "EMPNO","ENAME","JOB","MGR","HIREDATE","DEPTNO” from( select /*+ qb_name(apex$inner) */ d."EMPNO",d."ENAME",d."JOB",d."MGR",d."HIREDATE",d."DEPTNO" from( SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, DEPTNO FROM EMP WHERE ENAME = 'ALLEN' or '1' = '1' )d )i )i where 1=1 order by "EMPNO" asc nulls last )a )where apx$rownum<=:p$_max_rows
  22. 監査ログをすべてパージします 今後の作業で確認間違いをしないように、今までの作業 で発生した監査ログをすべてパージします。 67 Copyright © 2025, Oracle and/or its

    affiliates begin dbms_audit_mgmt.clean_audit_trail( audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED ,use_last_arch_timestamp => FALSE ,container => DBMS_AUDIT_MGMT.CONTAINER_CURRENT); end; SQL Developer Web ユーザADMIN にて作業します。
  23. このテーマについて学習を進める Oracle Database セキュリティ・ガイド Release 19 第VI部 監査を使用したデータベース・アクティビティの管理 27 監査ポリシーの構成

    https://docs.oracle.com/cd/F19136_01/dbseg/configuring-audit-policies.html Oracle Database リファレンス Release 19 AUDIT_UNIFIED_POLICIES https://docs.oracle.com/cd/F19136_01/refrn/AUDIT_UNIFIED_POLICIES.html UNIFIED_AUDIT_TRAIL https://docs.oracle.com/cd/F19136_01/refrn/UNIFIED_AUDIT_TRAIL.html
  24. このテーマについて学習を進める – 続き Oracle Database PL/SQLパッケージおよびタイプ・リファレンス Release 19 DBMS_AUDIT_MGMT https://docs.oracle.com/cd/F19136_01/arpls/DBMS_AUDIT_MGMT.html

    Oracle APEX アプリケーション・ビルダー・ユーザーズ・ガイド Release 23.1 3 アプリケーション・ビルダーの概念 3.10.4 組込み置換文字列の使用 https://docs.oracle.com/cd/F86785_01/htmdb/using-substitution-strings.html
  25. 監査ポリシーEMP_DEPTNO_30を作成します 1. audit_conditionにDEPTNO = 30を指定して います。 2. audit_columnにSAL,COMMを指定しています。 3. statement_typesにSELECT,UPDATEを指

    定してます。 73 Copyright © 2025, Oracle and/or its affiliates SQL Developer Web ユーザADMIN にて作業します。 begin dbms_fga.add_policy( object_schema => 'HR' , object_name => 'EMP' , policy_name => 'EMP_DEPTNO_30' , audit_condition => 'DEPTNO = 30' , audit_column => 'SAL,COMM' , handler_schema => NULL , handler_module => NULL , enable => FALSE , statement_types => 'SELECT,UPDATE' , audit_column_opts => DBMS_FGA.ANY_COLUMNS ); end;
  26. 監査ポリシー EMP_DEPTNO_30を有効にします DBMS_FGA.ENABLE_POLICYを実行し、監査ポ リシーEMP_DEPTNO_30を有効にします。 74 Copyright © 2025, Oracle and/or

    its affiliates begin dbms_fga.enable_policy( object_schema => 'HR' , object_name => 'EMP' , policy_name => 'EMP_DEPTNO_30' , enable => TRUE ); end; SQL Developer Web ユーザADMIN にて作業します。
  27. 対話グリッドの操作が監査ログに書かれているか確認します select audit_type -- , dbusername -- , dbproxy_username --

    , client_program_name , event_timestamp , action_name -- , return_code , sql_text , sql_binds , application_contexts , client_identifier from UNIFIED_AUDIT_TRAIL where object_schema = 'HR' and object_name = 'EMP' and audit_type = 'FineGrainedAudit' order by event_timestamp
  28. 監査ポリシーEMP_DEPTNO_30を無効にします DBMS_FGA.DISABLE_POLICYを実行し、監査 ポリシーEMP_DEPTNO_30を無効にします。 87 Copyright © 2025, Oracle and/or its

    affiliates SQL Developer Webから 実行します。 begin dbms_fga.disable_policy( object_schema => 'HR' , object_name => 'EMP' , policy_name => 'EMP_DEPTNO_30' ); end;
  29. 監査ポリシーEMP_DEPTNO_30を削除します DBMS_FGA.DROP_POLICYを実行し、監査ポリ シーEMP_DEPTNO_30を削除します。 88 Copyright © 2025, Oracle and/or its

    affiliates SQL Developer Webから 実行します。 begin dbms_fga.drop_policy( object_schema => 'HR' , object_name => 'EMP' , policy_name => 'EMP_DEPTNO_30' ); end;
  30. このテーマについて学習を進める Oracle Database セキュリティ・ガイド Release 19c 第VI部 監査を使用したデータベース・アクティビティの管理 27.4 ファイングレイン監査を使用した特定のアクティビティの監査

    https://docs.oracle.com/cd/F19136_01/dbseg/configuring-audit-policies.html Oracle Database PL/SQLパッケージおよびタイプ・リファレンス Release 19 DBMS_FGA https://docs.oracle.com/cd/F19136_01/arpls/DBMS_FGA.html
  31. 権限分析ポリシーapex_captureを作成します DBMS_PRIVILEGE_CAPTURE.CREATE_CA PTUREを実行し、権限分析ポリシーapex_capture を作成します。 Typeには使用状況が最も包括的に収集される G_DATABASEを指定します。 93 Copyright © 2025,

    Oracle and/or its affiliates begin dbms_privilege_capture.create_capture( name => 'apex_capture' , description => 'APEX Capture' , type => dbms_privilege_capture.g_database ); end; SQL Developer Webから 実行します。
  32. 権限分析を行うためキャプチャを開始します DBMS_PRIVILEGE_CAPTURE.ENABLE_CA PTUREを実行し、キャプチャを開始します。 95 Copyright © 2025, Oracle and/or its

    affiliates begin dbms_privilege_capture.enable_capture( name => 'apex_capture' , run_name => 'RUN_FOR_HANDSON' ); end; SQL Developer Webから 実行します。
  33. キャプチャを停止します DBMS_PRIVILEGE_CAPTURE.DISABLE_C APTUREを実行し、キャプチャを停止します。 97 Copyright © 2025, Oracle and/or its

    affiliates begin dbms_privilege_capture.disable_capture( name => 'apex_capture' ); end; SQL Developer Webから 実行します。
  34. 権限分析レポートを生成します DBMS_PRIVILEGE_CAPTURE. GENERATE_RESULTを実行し、権限分析レポート を生成します。 98 Copyright © 2025, Oracle and/or

    its affiliates begin dbms_privilege_capture.generate_result( name => 'apex_capture' , run_name => 'RUN_FOR_HANDSON' ); end; SQL Developer Webから 実行します。
  35. 使用された権限を確認します ビューDBA_USED_PRIVSを検索し、今回の操作で 使用された権限を一覧します。 99 Copyright © 2025, Oracle and/or its

    affiliates select module ,used_role ,obj_priv ,object_name ,object_type ,path from dba_used_privs where username = 'WKSP_APEXDEV' and object_owner = 'HR' and capture = 'apex_capture' and run_name = 'RUN_FOR_HANDSON'
  36. 使用されなかった権限を確認します ビューDBA_UNUSED_PRIVSを検索し、今回の操 作で使用なかった権限を一覧します。 100 Copyright © 2025, Oracle and/or its

    affiliates select rolename ,obj_priv ,object_name ,object_type ,path from dba_unused_privs where username = 'WKSP_APEXDEV' and object_owner = 'HR' and capture = 'apex_capture' and run_name = 'RUN_FOR_HANDSON'
  37. このテーマについて学習を進める Oracle Database セキュリティ・ガイド Release 19c 第I部 ユーザー認証および認可の管理 5 権限分析の実行による権限使用の特定

    https://docs.oracle.com/cd/F19136_01/dbseg/performing-privilege-analysis-identify-privilege- use.html Oracle Database PL/SQLパッケージおよびタイプ・リファレンス Release 19 DBMS_PRIVILEGE_CAPTURE https://docs.oracle.com/cd/F19136_01/arpls/DBMS_PRIVILEGE_CAPTURE.html
  38. このテーマについて学習を進める – 続き Oracle Database リファレンス Release 19 DBA_PRIV_CAPTURES https://docs.oracle.com/cd/F19136_01/refrn/DBA_PRIV_CAPTURES.html

    DBA_USED_PRIVS https://docs.oracle.com/cd/F19136_01/refrn/DBA_USED_PRIVS.html DBA_UNUSED_PRIVS https://docs.oracle.com/cd/F19136_01/refrn/DBA_UNUSED_PRIVS.html
  39. サインインユーザーを保存する表AUTH_USERSを作成します 表AUTH_USERSを作成します。 サインイン時に与えるユーザー名を大文字、小文字に関 係なく一致させます。 109 Copyright © 2025, Oracle and/or

    its affiliates create table auth_users as select empno, ename, deptno from hr.emp; alter table auth_users modify (ename collate binary_ci); APEXのSQL Commandから 1行ずつ実行します。
  40. 作成方法を選択します 1. Create Scheme(スキームの作成)はBased on a pre-configured scheme from the

    gallery(ギャラリからの事前構成済みスキームに基 づく)を選びます。 2. Next(次)をクリックします。 113 Copyright © 2025, Oracle and/or its affiliates 2 1
  41. 従業員による認証ファンクションauth_by_ename function auth_by_ename ( p_username in varchar2, p_password in varchar2

    ) return boolean is l number; begin select 1 into l from auth_users where ename = p_username; return true; exception when others then return false; end;
  42. 認証スキーム従業員による認証を作成します 1. Name(名前)は従業員による認証とします。 2. Scheme TypeにCustomを選択します。 3. Settings(設定)のAuthentication Function Name(認証ファンクション名)は

    auth_by_enameとします。 4. Source(ソース)のPL/SQL Code(PL/SQL Code)に、ファンクションauth_by_enameの本 文を記述します。 5. チェック・アイコンをクリックし、PL/SQLコードの検証 を行います。Validation Successful(検証成 功)と表示されることを確認します。 6. Create Authentication Scheme(認証ス キームの作成)をクリックします。 115 Copyright © 2025, Oracle and/or its affiliates 1 3 4 5 6 2
  43. 作成した認証スキームを使用します 認証スキームとして従業員による認証が作成されます。 Oracle APEX 23.2以降は、新規に作成された認証ス キームは、自動的にカレントの認証スキームになりません。 1. 作成した認証スキーム従業員による認証を開きます。 2. Make

    Current Scheme(カレント・スキームに する)をクリックし、カレント・スキームとして設定します。 以上で、認証スキーム従業員による認証の作成と適用 が完了しました。 116 Copyright © 2025, Oracle and/or its affiliates 1 2
  44. ユーザーVPDADMINを作成します 1. User Name(ユーザー名)はVPDADMINとし ます。 2. Password(パスワード)を設定します。 Confirm Password(パスワードの確認)に同 じパスワードを入力します。

    3. Web Access(Webアクセス)をオンにします。 4. Create User(ユーザーの作成)をクリックします。 121 Copyright © 2025, Oracle and/or its affiliates 1 2 3 4
  45. ユーザーVPDADMINに必要な権限を与えます ユーザーVPDADMINに仮想プライベート・データベースを 構成するために必要な権限を与えます。 23aiでは権限Administer row level security policyも必要です。 123 Copyright

    © 2025, Oracle and/or its affiliates SQL Developer Webから 実行します。 grant create any context to vpdadmin; grant execute on dbms_rls to vpdadmin; grant execute on dbms_session to vpdadmin; grant create procedure to vpdadmin; grant select on wksp_apexdev.auth_users to vpdadmin; -- Required only on 23ai grant administer row level security policy to vpdadmin;
  46. パッケージEMP_DEPT_CTX_PKGを作成します パッケージEMP_DEPT_CTX_PKGを作成します。 パッケージEMP_DEPT_CTX_PKGはプロシージャ INITとCLEARを持ちます。 この作業はユーザーVPDADMINに戻って実施します。 127 Copyright © 2025, Oracle

    and/or its affiliates SQL Developer Webから 実行します。 create or replace package emp_dept_ctx_pkg is C_CTXNAME constant varchar2(80) := 'emp_dept_ctx'; procedure init; procedure clear; end;
  47. パッケージ本体を作成します サインインしたユーザーAPP_USERの従 業員番号と部門番号を表 AUTH_USERSから検索します。 プロシージャINITでは、 DBMS_SESSION.SET_CONTEXTを 呼び出し、アプリケーション・コンテキスト emp_dept_ctxに従業員番号 (empno)と部門番号(deptno)を 設定します。

    プロシージャCLEARでは、 DBMS_SESSION.CLEAR_CONTEX Tを呼び出し、設定を消去します。 128 Copyright © 2025, Oracle and/or its affiliates create or replace package body emp_dept_ctx_pkg is procedure init is l_empno wksp_apexdev.auth_users.empno%type; l_deptno wksp_apexdev.auth_users.deptno%type; begin select empno, deptno into l_empno, l_deptno from wksp_apexdev.auth_users where ename = sys_context('APEX$SESSION', 'APP_USER'); dbms_session.set_context(C_CTXNAME,'empno', l_empno); dbms_session.set_context(C_CTXNAME,'deptno',l_deptno); exception when no_data_found then -- no user is assigned before the session is authenticated. null; end init; procedure clear is begin dbms_session.clear_context(C_CTXNAME); end clear; end emp_dept_ctx_pkg;
  48. create or replace function pred_emp_in_same_dept ( schema_p in varchar2 ,table_p

    in varchar2 ) return varchar2 as pred varchar2(80); begin pred := q'~deptno = SYS_CONTEXT('emp_dept_ctx','deptno')~'; return pred; end; ポリシー・ファンクションPRED_EMP_IN_SAME_DEPTを作成します 表EMPの検索範囲をサインインしたユーザーと同じ部門 に制限するポリシーEMP_IN_SAME_DEPTを作成しま す。 このポリシーを作成するにあたって、検索条件を生成する ファンクション(ポリシー・ファンクション)として PRED_EMP_IN_SAME_DEPTを作成します 130 Copyright © 2025, Oracle and/or its affiliates SQL Developer Webから 実行します。
  49. ポリシーEMP_IN_SAME_DEPTを作成します DBMS_RLS.ADD_POLICYを呼び出し、仮想プライ ベート・データベースのポリシー EMP_IN_SAME_DEPTを作成します。 表HR.EMPへのSELECT文は、APEXアプリケーションに サインインした従業員と同じ部門の従業員だけが検索さ れるように制限されます。 131 Copyright ©

    2025, Oracle and/or its affiliates begin dbms_rls.add_policy( object_schema => 'hr' , object_name => 'emp' , policy_name => 'emp_in_same_dept' , function_schema => 'vpdadmin' , policy_function => 'pred_emp_in_same_dept' , statement_types => 'select' , policy_type => DBMS_RLS.CONTEXT_SENSITIVE , namespace => 'emp_dept_ctx' , attribute => 'deptno' ); end; SQL Developer Webから 実行します。
  50. create or replace function pred_emp_is_mgr ( schema_p in varchar2 ,table_p

    in varchar2 ) return varchar2 as pred varchar2(80); begin pred := q'~mgr = SYS_CONTEXT('emp_dept_ctx','empno')~'; return pred; end; ポリシー・ファンクションPRED_EMP_IS_MGRを作成します サインしたユーザーがマネージャである従業員の列SALと COMMのみ参照できるように制限するポリシー EMP_IS_MGRを作成します。 このポリシーを作成するにあたって、検索条件を生成する ファンクション(ポリシー・ファンクション)として PRED_EMP_IS_MGRを作成します 132 Copyright © 2025, Oracle and/or its affiliates SQL Developer Webから 実行します。
  51. ポリシーEMP_IS_MGRを作成します DBMS_RLS.ADD_POLICYを呼び出し、仮想プライ ベート・データベースのポリシーEMP_IS_MGRを作成し ます。 表HR.EMPの列SAL、COMMへのSELECTは、APEX アプリケーションにサインインした従業員がマネージャである 従業員のみに制限されます。 133 Copyright ©

    2025, Oracle and/or its affiliates begin dbms_rls.add_policy( object_schema => 'hr' , object_name => 'emp' , policy_name => 'emp_is_mgr' , function_schema => 'vpdadmin' , policy_function => 'pred_emp_is_mgr' , statement_types => 'select' , policy_type => DBMS_RLS.CONTEXT_SENSITIVE , sec_relevant_cols => 'sal,comm' , sec_relevant_cols_opt => DBMS_RLS.ALL_ROWS , namespace => 'emp_dept_ctx' , attribute => 'empno' ); end; SQL Developer Webから 実行します。
  52. APEXアプリケーションを変更します アプリケーション定義を開きます。 1. Security(セキュリティ)タブを開きます。 2. Database Session(データベース・セッション) のセクションに移動します。 3. Initialization

    PL/SQL Code(初期化 PL/SQLコード)とし以下を呼び出します。 vpdadmin.emp_dept_ctx_pkg.init; 4. Cleanup PL/SQL Code(PL/SQLコードのク リーンアップ)として以下を呼び出します。 vpdadmin.emp_dept_ctx_pkg.clear; 5. Apply Changes(変更の適用)をクリックします。 この作業はワークスペースAPEXDEVで実施します。 135 Copyright © 2025, Oracle and/or its affiliates 1 2 3 4 5
  53. 列の制限を確認します 従業員名として以下を入力します。 SCOTT' UNION SELECT EMPNO, ENAME || ' -

    ' || SAL || ' - ' || COMM ENAME, JOB, MGR, HIREDATE, DEPTNO FROM HR.EMP WHERE '1'='1 Enameに列SALが表示されているは、ADAMSのみであ ることを確認します。 138 Copyright © 2025, Oracle and/or its affiliates 1
  54. ポリシーを削除します 後続の作業に支障が出るため、ポリシーを削除します。 139 Copyright © 2025, Oracle and/or its affiliates

    SQL Developer Webから 実行します。 begin dbms_rls.drop_policy( object_schema => 'hr' ,object_name => 'emp' ,policy_name => 'emp_in_same_dept' ); dbms_rls.drop_policy( object_schema => 'hr' ,object_name => 'emp' ,policy_name => 'emp_is_mgr' ); end;
  55. このテーマについて学習を進める Oracle Database セキュリティ・ガイド Release 19c 第III部 データへのアクセス制御 13 アプリケーション・コンテキストを使用したユーザー情報の取得

    https://docs.oracle.com/cd/F19136_01/dbseg/using-application-contexts-to-retrieve-user- information.html 14 Oracle Virtual Private Databaseを使用したデータ・アクセスの制御 https://docs.oracle.com/cd/F19136_01/dbseg/using-oracle-vpd-to-control-data-access.html Oracle Database PL/SQLパッケージおよびタイプ・リファレンス Release 19 DBMS_SESSION https://docs.oracle.com/cd/F19136_01/arpls/DBMS_SESSION.html DBMS_RLS https://docs.oracle.com/cd/F19136_01/arpls/DBMS_RLS.html
  56. このテーマについて学習を進める – 続き Oracle Database リファレンス Release 19 DBA_CONTEXT https://docs.oracle.com/cd/F19136_01/refrn/DBA_CONTEXT.html

    ALL_POLICIES https://docs.oracle.com/cd/F19136_01/refrn/ALL_POLICIES.html Oracle Database SQL言語リファレンス Release 19 CREATE CONTEXT https://docs.oracle.com/cd/F19136_01/sqlrf/CREATE-CONTEXT.html
  57. Real Application Securityを構成します Lab 6で実装した仮想プライベート・データベースによる表HR.EMPの保護と同じ保護を、Real Application Security により実装します。 Oracle APEXにはReal

    Application Securityの対応が組み込まれているため、仮想プライベート・データベースでの 保護で必要だったデータベース・セッションの初期化処理とクリーンアップ処理が不要になっています。 Real Application Securityの設定は仮想プライベート・データベースと比較すると複雑ですが、設定可能なオプション が多様になっています。
  58. 管理ユーザーRASADMINを作成します Real Application Securityの構成や管理を行うデー タベース・ユーザーとして、RASADMINを作成します。 1. SQL Developer WebにユーザーADMINでサイン インし、

    Administration(管理)を開きます。 2. Database Users(データベース・ユーザー)を開 きます。 ユーザーADMINにて作業します。 144 Copyright © 2025, Oracle and/or its affiliates 1 2
  59. ユーザーVPDADMINを作成します 1. User Name(ユーザー名)はRASADMINとし ます。 2. Password(パスワード)を設定します。 Confirm Password(パスワードの確認)に同 じパスワードを入力します。

    3. Web Access(Webアクセス)をオンにします。 4. Create User(ユーザーの作成)をクリックします。 146 Copyright © 2025, Oracle and/or its affiliates 1 2 3 4
  60. ユーザーRASADMINに必要な権限を与えます 148 Copyright © 2025, Oracle and/or its affiliates SQL

    Developer Webから 実行します。 begin sys.xs_admin_cloud_util.grant_system_privilege( 'PROVISION' ,'RASADMIN' ); sys.xs_admin_cloud_util.grant_system_privilege( 'ADMIN_ANY_SEC_POLICY' ,'RASADMIN' ); end; XS_ADMIN_CLOUD_UTIL.GRANT_SYSTE M_PRIVILEGE(オンプレミス環境ではパッケージ XS_ADMIN_UTIL)を呼び出し、ポリシーやACLを構 成する権限ADMIN_ANY_SEC_POLICYとユー ザーやロールを構成する権限PROVISIONを与えます。
  61. アプリケーション・ロールEMPLOYEEを作成します XS_PRINCIPAL.CREATE_DYNAMIC_ROLE を呼び出し、アプリケーション・ロールEMPLOYEEを作成 します。 今回はReal Application Securityのユーザーを外部 ユーザーとして作成します。外部ユーザーの場合、APEX アプリケーションでのサインインが成功したときにReal Application

    Securityのユーザーが作成されます。アプ リケーション・ロールEMPLOYEEは作成されたRASユー ザーに割り当てます。 RASユーザーが作成された後(つまりAPEXアプリケーショ ンでのユーザー認証に成功した後)に割り当てるために、 アプリケーション・ロールは動的ロールとして作成します。 152 Copyright © 2025, Oracle and/or its affiliates SQL Developer Webから 実行します。 begin sys.xs_principal.create_dynamic_role( name => 'EMPLOYEE' , scope => XS_PRINCIPAL.SESSION_SCOPE ); end;
  62. declare attrlist XS$NS_ATTRIBUTE_LIST; begin attrlist := XS$NS_ATTRIBUTE_LIST(); attrlist.extend(2); attrlist(1) :=

    XS$NS_ATTRIBUTE('empno','0'); attrlist(2) := XS$NS_ATTRIBUTE('deptno','0'); sys.xs_namespace.create_template( name => 'HREMP' ,attr_list => attrlist ,acl => 'SYS.NS_UNRESTRICTED_ACL' ); end; ネームスペース・テンプレートHREMPを作成します ネームスペース・テンプレートとしてHREMPを作成します。 仮想プライベート・データベースでのアプリケーション・コンテ キストと同じ用途で使用します。 サインインしたユーザーの従業員番号をempno、部門 番号をdeptnoとして保持します。 XS_NAMESPACE.CREATE_TEMPLATEを呼び 出します。 この作業は、ユーザーRASADMINで実施します。 156 Copyright © 2025, Oracle and/or its affiliates SQL Developer Webから 実行します。
  63. 認証スキームのRASモードを外部ユーザーにします 1. Real Application Securityのセクションへ移動 します。 2. RAS Mode(RASモード)をExternal Users

    (外部ユーザー)に変更します。 3. Dynamic Roles(動的ロール)のEMPLOYEE を有効にします。 4. Namespaces(ネームスペース)のHREMPを有 効にします。 160 Copyright © 2025, Oracle and/or its affiliates 1 2 3 4
  64. procedure postauth is l_empno number; l_deptno number; begin select empno,

    deptno into l_empno, l_deptno from auth_users where ename = :APP_USER; dbms_xs_sessions.set_attribute('HREMP','empno',l_empno); dbms_xs_sessions.set_attribute('HREMP','deptno',l_deptno); end; ネームスペースHREMPに属性を設定するコードを追加します 1. Source(ソース)のセクションに移動します。 2. ファンクションpostauthをソースに追記します。 3. Validate(検証)をクリックします 161 Copyright © 2025, Oracle and/or its affiliates 2 3 1
  65. ロールまたはグループ・スキームのソースを認証スキームに変更します アプリケーション定義を開きます。 1. Security(セキュリティ)を開きます。 2. Source for Role or Group

    Scheme(ロー ルまたはグループ・スキームのソース)を Authentication Scheme(認証スキーム)に 変更します。 163 Copyright © 2025, Oracle and/or its affiliates 1 2
  66. データベース・セッションの設定を削除します 仮想プライベート・データベースの構成で使った設定を削 除します。 1. Database Session(データベース・セッション) のセクションに移動します。 2. Initialization PL/SQL

    Code(初期化 PL/SQLコード)を空白に戻します。 3. Cleanup PL/SQL Code(PL/SQLコードのク リーンアップ)を空白に戻します。 4. Apply Changes(変更の適用)をクリックします。 164 Copyright © 2025, Oracle and/or its affiliates 1 2 3 4
  67. セキュリティ・クラスemp_privを作成します XS_SECURITY_CLASS.CREATE_SECURITY_C LASSを呼び出し、セキュリティ・クラスemp_privを作成 します。 parent_listとしてsys.dmlを指定することにより、標準 で定義されている権限のリストselect, update, insert, deleteを引き継ぎます。 セキュリティ・クラスemp_privが持つ固有の権限として

    view_salを含めます。これは列SALとCOMMへのアクセ スを制御します。 この作業は、ユーザーRASADMINで実施します。 167 Copyright © 2025, Oracle and/or its affiliates begin sys.xs_security_class.create_security_class( name => 'emp_priv' , parent_list => xs$name_list('sys.dml') , priv_list => xs$privilege_list(xs$privilege('view_sal')) ); end; SQL Developer Webから 実行します。
  68. ACL emp_aclを作成します XS_ACL.CREATE_ACLを呼び出し、ACLを作成しま す。 ACL emp_aclは、サインインしたユーザーと同じ部門に アクセスを限定します。 169 Copyright ©

    2025, Oracle and/or its affiliates declare aces xs$ace_list := xs$ace_list(); begin aces.extend(1); aces(1) := xs$ace_type( privilege_list => xs$name_list('select','insert','update','delete') , principal_name => 'employee' -- application role ); sys.xs_acl.create_acl( name => 'emp_acl' , ace_list => aces , sec_class => 'emp_priv' -- security class ); end; SQL Developer Webから 実行します。
  69. ACL mgr_aclを作成します XS_ACL.CREATE_ACLを呼び出し、ACLを作成しま す。 ACL mgr_aclは、サインインしたユーザーがマネージャで ある従業員の列SALとCOMMにアクセスを限定します。 170 Copyright ©

    2025, Oracle and/or its affiliates SQL Developer Webから 実行します。 declare aces xs$ace_list := xs$ace_list(); begin aces.extend(1); aces(1) := xs$ace_type( privilege_list => xs$name_list('select','insert','update','delete','view_sal') , principal_name => 'employee' -- application role ); sys.xs_acl.create_acl( name => 'mgr_acl' , ace_list => aces , sec_class => 'emp_priv' -- security class ); end;
  70. ACLに紐づいているACEを確認します ビューUSER_XS_ACESを検索します 172 Copyright © 2025, Oracle and/or its affiliates

    select acl, ace_order, grant_type, principal, privilege, security_class from user_xs_aces order by acl,ace_order, privilege
  71. declare realms xs$realm_constraint_list := xs$realm_constraint_list(); cols xs$column_constraint_list := xs$column_constraint_list(); begin

    realms.extend(2); realms(1) := xs$realm_constraint_type( realm => q'~deptno = xs_sys_context('HREMP','deptno')~' ,acl_list => xs$name_list('emp_acl') ); realms(2) := xs$realm_constraint_type( realm => q'~mgr = xs_sys_context('HREMP','empno')~' ,acl_list => xs$name_list('mgr_acl') ); cols.extend(1); cols(1) := xs$column_constraint_type( column_list => xs$list('SAL','COMM') ,privilege => 'view_sal' ); sys.xs_data_security.create_policy( name => 'employees_ds' ,realm_constraint_list => realms ,column_constraint_list => cols ); end; データ・セキュリティ・ポリシーemployee_dsを作成します SQL Developer Web から 実行します。 173 Copyright © 2025, Oracle and/or its affiliates 今まで作成してきたセキュリティ要件を、デー タ・セキュリティ・ポリシーemployee_dsとして まとめます。
  72. 設定を検証します XS_DIAG.VALIDATE_WORKSPACEを呼び出し、 今までに適用したReal Application Securityの設定 を検証します。 All Configurations are correct.と表示されれば、設

    定に問題はありません。 179 Copyright © 2025, Oracle and/or its affiliates begin if (sys.xs_diag.validate_workspace()) then dbms_output.put_line('All Configurations are correct.'); else dbms_output.put_line('Some configurations are incorrect.'); end if; end;
  73. SQLインジェクションの脆弱性を確認します 従業員名に以下を入力して、RASによる保護を確認し ます。 183 Copyright © 2025, Oracle and/or its

    affiliates 1 SCOTT' UNION SELECT EMPNO, ENAME || ' - ' || SAL || ' - ' || COMM ENAME, JOB, MGR, HIREDATE, DEPTNO FROM EMP WHERE '1'='1
  74. データ・セキュリティ・ポリシーを削除します 今後の作業に影響があるため、Real Application Securityの設定を削除します。 184 Copyright © 2025, Oracle and/or

    its affiliates begin sys.xs_data_security.remove_object_policy( policy => 'employees_ds' , schema => 'hr' , object => 'emp' ); sys.xs_data_security.delete_policy( policy => 'employees_ds' ,delete_option => xs_admin_util.cascade_option ); end;
  75. ACLを削除します Copyright © 2025, Oracle and/or its affiliates 185 begin

    sys.xs_acl.delete_acl( acl => 'emp_acl' , delete_option => xs_admin_util.cascade_option ); sys.xs_acl.delete_acl( acl => 'mgr_acl' , delete_option => xs_admin_util.cascade_option ); end;
  76. セキュリティ・クラスを削除します Copyright © 2025, Oracle and/or its affiliates 186 begin

    sys.xs_security_class.delete_security_class( sec_class => 'emp_priv' ,delete_option => xs_admin_util.cascade_option ); end;
  77. 設定を再度検証します XS_DIAG.VALIDATE_WORKSPACEを呼び出し、 設定に問題がないことを確認します。 187 Copyright © 2025, Oracle and/or its

    affiliates begin if (sys.xs_diag.validate_workspace()) then dbms_output.put_line('All Configurations are correct.'); else dbms_output.put_line('Some configurations are incorrect.'); end if; end;
  78. このテーマについて学習を進める Real Application Securityは独立したドキュメントになっています。 Oracle Database Real Application Security管理者および開発者ガイド Release

    19c https://docs.oracle.com/cd/F19136_01/dbfsg/index.html Oracle Cloud Infrastructureドキュメント Oracle Real Application Security https://docs.oracle.com/ja-jp/iaas/autonomous-database-serverless/doc/autonomous-real- application-security.html
  79. このテーマについて学習を進める – 続き Oracle APEX 管理ガイド Release 24.2 3.4.3 Real

    Application Securityの有効化 https://docs.oracle.com/cd/G13834_01/aeadm/enabling-real-application-security.html
  80. ポリシーを作成します DBMS_REDACT.ADD_POLICYを呼び出し、Data Redactionポリシーを作成します。 192 Copyright © 2025, Oracle and/or its

    affiliates begin dbms_redact.add_policy( object_schema => 'HR' ,object_name => 'EMP' ,column_name => 'SAL' ,policy_name => 'redact_sal' ,function_type => DBMS_REDACT.PARTIAL ,function_parameters => '9,1,3' ,expression => '1=1' ,policy_description => 'redact first 3 digit of each salary' ,column_description => 'redact by number 9' ); end; SQL Developer Webから 実行します。
  81. このテーマについて学習を進める Oracle Database Advanced Securityガイド Release 19c 第II部 Oracle Data

    Redactionの使用 https://docs.oracle.com/cd/F19136_01/asoag/asopart2.html Oracle Database PL/SQLパッケージおよびタイプ・リファレンス Release 19 DBMS_REDACT https://docs.oracle.com/cd/F19136_01/arpls/DBMS_REDACT.html Oracle Database リファレンス Release 19 REDACTION_POLICIES https://docs.oracle.com/cd/F19136_01/refrn/REDACTION_POLICIES.html REDACTION_COLUMNS https://docs.oracle.com/cd/F19136_01/refrn/REDACTION_COLUMNS.html
  82. ポリシーを作成します DBMS_TDSP_MANAGE.ADD_SENSITIVE_TYP Eを呼び出し、機密タイプsalary_typeを作成します。 この機密タイプを、伏字処理を適用するタイプとします。 200 Copyright © 2025, Oracle and/or

    its affiliates SQL Developer Webから 実行します。 begin DBMS_TSDP_MANAGE.ADD_SENSITIVE_TYPE( sensitive_type => 'salary_type' ,user_comment => 'Type for salary columns using a number data type'); end;
  83. 機密タイプに列を追加します 作成した機密タイプsalary_typeに表HR.EMPの列 SALを追加します。 DBMS_TDSP_MANAGE.ADD_SENSITIVE_COL UMNを呼び出します。 202 Copyright © 2025, Oracle

    and/or its affiliates SQL Developer Webから 実行します。 begin DBMS_TSDP_MANAGE.ADD_SENSITIVE_COLUMN( schema_name => 'HR' ,table_name => 'EMP' ,column_name => 'SAL' ,sensitive_type => 'salary_type' ,user_comment => 'Sensitive column addition of salary_type' ); end;
  84. ポリシーを作成します 203 Copyright © 2025, Oracle and/or its affiliates SQL

    Developer Webから 実行します。 DECLARE redact_feature_options DBMS_TSDP_PROTECT.FEATURE_OPTIONS; policy_conditions DBMS_TSDP_PROTECT.POLICY_CONDITIONS; BEGIN redact_feature_options('expression') := '1=1'; redact_feature_options('function_type') := 'DBMS_REDACT.PARTIAL'; redact_feature_options('function_parameters') := '9,1,3'; policy_conditions(DBMS_TSDP_PROTECT.DATATYPE) := 'NUMBER'; policy_conditions(DBMS_TSDP_PROTECT.LENGTH) := '16'; DBMS_TSDP_PROTECT.ADD_POLICY( 'redact_sal' ,DBMS_TSDP_PROTECT.REDACT ,redact_feature_options ,policy_conditions ); END; 伏字処理を行うポリシーredact_salを作成します。 DBMS_TSDP_PROTECT.ADD_POLICYを呼び出 します。
  85. 機密タイプとポリシーを関連づけます 機密タイプsalary_typeとポリシーredact_salを関連づ けます。 DBMS_TDSP_PROTECT.ASSOSICATE_POLICY を呼び出します。 207 Copyright © 2025, Oracle

    and/or its affiliates SQL Developer Webから 実行します。 begin DBMS_TSDP_PROTECT.ASSOCIATE_POLICY( policy_name => 'redact_sal' ,sensitive_type => 'salary_type' ,associate => true ); end;
  86. 保護を無効にします DBMS_TDSP_PROTECT.DISABLE_PROTECTIO N_TYPEを呼び出し、保護を無効にします。 211 Copyright © 2025, Oracle and/or its

    affiliates begin DBMS_TSDP_PROTECT.DISABLE_PROTECTION_TYPE( sensitive_type => 'salary_type' ); end; SQL Developer Webから 実行します。
  87. 機密タイプより列を除きます 212 Copyright © 2025, Oracle and/or its affiliates begin

    DBMS_TSDP_MANAGE.DROP_SENSITIVE_COLUMN( schema_name => 'HR' ,table_name => 'EMP' ,column_name => 'SAL' ); end; SQL Developer Webから 実行します。
  88. 機密タイプsalary_typeを削除します 機密タイプsalary_typeを削除します。 DBMS_TSDP_MANAGE.DROP_SENSITIVE_TY PEを呼び出します。 213 Copyright © 2025, Oracle and/or

    its affiliates begin DBMS_TSDP_MANAGE.DROP_SENSITIVE_TYPE( sensitive_type => 'salary_type' ); end; SQL Developer Webから 実行します。
  89. 機密タイプsalary_typeを削除します 機密ポリシーredact_salを削除します。 DBMS_TSDP_MANAGE.DROP_POLICYを呼び出 します。 214 Copyright © 2025, Oracle and/or

    its affiliates begin DBMS_TSDP_PROTECT.DROP_POLICY( policy_name => 'redact_sal' ); end; SQL Developer Webから 実行します。
  90. このテーマについて学習を進める Oracle Database セキュリティ・ガイド Release 19c 第III部 データへのアクセス制御 15 透過的機密データ保護の使用

    https://docs.oracle.com/cd/F19136_01/dbseg/using-transparent-sensitive-data- protection.html Oracle Database PL/SQLパッケージおよびタイプ・リファレンス Release 19 DBMS_TSDP_MANAGE https://docs.oracle.com/cd/F19136_01/arpls/DBMS_TSDP_MANAGE.html DBMS_TSDP_PROTECT https://docs.oracle.com/cd/F19136_01/arpls/DBMS_TSDP_PROTECT.html
  91. このテーマについて学習を進める – 続き Oracle Database リファレンス Release 19 DBA_TSDP_POLICY_PROTECTION https://docs.oracle.com/cd/F19136_01/refrn/DBA_TSDP_POLICY_PROTECTION.html

    DBA_TSDP_POLICY_PARAMETER https://docs.oracle.com/cd/F19136_01/refrn/DBA_TSDP_POLICY_PARAMETER.html DBA_TSDP_POLICY_CONDITION https://docs.oracle.com/cd/F19136_01/refrn/DBA_TSDP_POLICY_CONDITION.html DBA_TSDP_POLICY_FEATURE https://docs.oracle.com/cd/F19136_01/refrn/DBA_TSDP_POLICY_FEATURE.html
  92. Database Vault所有者ADB_DBV_OWNERを作成します 1. User Name(ユーザー名)は ADB_DBV_OWNERとします。 2. Password(パスワード)を設定します。 3. Web

    Access(Webアクセス)をオンにします。 4. Create User(ユーザーの作成)を実行します。 222 Copyright © 2025, Oracle and/or its affiliates 1 3 4 2
  93. Database Vaultアカウント管理者ADB_DBV_ACCTMGRを作成します 1. User Name(ユーザー名)は ADB_DBV_ACCTMGRとします。 2. Password(パスワード)を設定します。 3. Create

    User(ユーザーの作成)を実行します。 今回の作業ではユーザーADB_DBV_ACCTMGRでは サインインしないため、Web Accessは不要です。 223 Copyright © 2025, Oracle and/or its affiliates 1 3 2
  94. Database Vaultを構成します DBA_CLOUD_MACADM.CONFIGURE_DATABA SE_VAULTを呼び出し、Database Vaultを構成しま す。 225 Copyright © 2025,

    Oracle and/or its affiliates begin DBMS_CLOUD_MACADM.CONFIGURE_DATABASE_VAULT( dvowner_uname => 'ADB_DBV_OWNER' ,dvacctmgr_uname => 'ADB_DBV_ACCTMGR' ); end; SQL Developer Webから 実行します。
  95. レルムHuman Resourceを作成します DBA_MACADM.CREATE_REALMを呼び出し、レル ムHuman Resourceを作成します。 230 Copyright © 2025, Oracle

    and/or its affiliates begin dbms_macadm.create_realm( realm_name => 'Human Resource' , description => 'Protect HR Data from ADMIN' , enabled => DBMS_MACUTL.G_YES , audit_options => DBMS_MACUTL.G_REALM_AUDIT_FAIL + DBMS_MACUTL.G_REALM_AUDIT_SUCCESS , realm_type => 1 , realm_scope => DBMS_MACUTL.G_SCOPE_LOCAL ); end; SQL Developer Webから 実行します。
  96. スキーマHRにあるすべてのオブジェクトを保護の対象にします 作成したレルムHuman Resourceに保護対象とするオ ブジェクトを追加します。スキーマHRにあるすべてのオブ ジェクトを保護の対象とします。 231 Copyright © 2025, Oracle

    and/or its affiliates begin dbms_macadm.add_object_to_realm( realm_name => 'Human Resource' , object_owner => 'HR' , object_name => '%' , object_type => '%' ); end; SQL Developer Webから 実行します。
  97. Database Vaultを無効にします SQL Developer Webにユーザー ADB_DBV_OWNERで接続し、 DBMS_CLOUD_MACADM.DISABLE_DATABAS E_VAULTを実行します。 データベースの再起動後にDatabase Vaultが無効にな

    ります。 240 Copyright © 2025, Oracle and/or its affiliates begin dbms_cloud_macadm.disable_database_vault; end; SQL Developer Webから 実行します。
  98. ユーザーWKSP_APEXDEVのアクセス権限を剥奪します 243 Copyright © 2025, Oracle and/or its affiliates begin

    dbms_macadm.delete_auth_from_realm( realm_name => 'Human Resource' , grantee => 'WKSP_APEXDEV' , auth_scope => DBMS_MACUTL.G_SCOPE_LOCAL ); end;
  99. ロールEMPLOYEEのアクセス権限を剥奪します 244 Copyright © 2025, Oracle and/or its affiliates begin

    dbms_macadm.delete_auth_from_realm( realm_name => 'Human Resource' , grantee => 'EMPLOYEE' , auth_scope => DBMS_MACUTL.G_SCOPE_LOCAL ); end;
  100. レルムから保護対象のオブジェクトを除外します 245 Copyright © 2025, Oracle and/or its affiliates begin

    dbms_macadm.delete_object_from_realm( realm_name => 'Human Resource' , object_owner => 'HR' , object_name => '%' , object_type => '%' ); end;
  101. レルムHuman Resourceを削除します 246 Copyright © 2025, Oracle and/or its affiliates

    begin dbms_macadm.delete_realm( realm_name => 'Human Resource' ); end;
  102. このテーマについて学習を進める Database Vaultは独立したドキュメントになっています。 Oracle Database Vault 管理者ガイド Release 19c https://docs.oracle.com/cd/F19136_01/dvadm/index.html

    Oracle Cloud Infrastructureドキュメント Autonomous DatabaseでのOracle Database Vaultの使用 https://docs.public.oneportal.content.oci.oraclecloud.com/ja-jp/iaas/autonomous-database- serverless/doc/autonomous-database-vault.html
  103. Our mission is to help people see data in new

    ways, discover insights, unlock endless possibilities.