{"id":29629,"date":"2023-11-30T17:15:19","date_gmt":"2023-11-30T16:15:19","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=29629"},"modified":"2025-01-24T10:42:15","modified_gmt":"2025-01-24T09:42:15","slug":"oracle-data-redaction-or-how-to-hide-critical-information","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/oracle-data-redaction-or-how-to-hide-critical-information\/","title":{"rendered":"Oracle Data Redaction or how to hide critical information"},"content":{"rendered":"\n<p>by Alexandre Nestor<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-introduction\">Introduction <\/h2>\n\n\n\n<p>Oracle Data Redaction is part of Oracle Advanced Security which is well known for Transparent Data Encryption (TDE) for columns and tablespaces. <\/p>\n\n\n\n<p>There is a confusion between Data Redaction and Data Masking: <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Data Redaction is the process to <strong>hide<\/strong> (or replace with a defined value) critical informations<\/li>\n\n\n\n<li>Data Masking is the process to <strong>replace<\/strong> critical information with another data, which keep the database structure identical, or at least try to keep database structure identically. Data Masking is an extra cost licence named <strong>Data Masking and Subsetting Pack<\/strong>. <\/li>\n<\/ul>\n\n\n\n<p>To make it easier: <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"519\" height=\"295\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/11\/image-31.png\" alt=\"\" class=\"wp-image-29633\" style=\"aspect-ratio:1.759322033898305;width:519px;height:auto\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/11\/image-31.png 519w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/11\/image-31-300x171.png 300w\" sizes=\"auto, (max-width: 519px) 100vw, 519px\" \/><\/figure>\n<\/div>\n\n\n<p>So, we are going to make an example of Data Redaction implementation. Data Redaction do not change the data in the database, it just modify the output following the criteria (user is the mot usual) :<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"516\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/11\/image-32-1024x516.png\" alt=\"\" class=\"wp-image-29638\" style=\"aspect-ratio:1.9844961240310077;width:586px;height:auto\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/11\/image-32-1024x516.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/11\/image-32-300x151.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/11\/image-32-768x387.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/11\/image-32.png 1146w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-about-the-rights\">About the rights<\/h2>\n\n\n\n<p>To manage Data Redaction policies the are <code>EXECUTE<\/code> right on <code>DBMS_REDACT<\/code> package must be granted (or use SYS user to make it easier). <\/p>\n\n\n\n<p>Good to know that granting the <code>EXEMPT REDACTION POLICY<\/code> system privilege to an user,  make the user to bypass the redaction policy. <\/p>\n\n\n\n<p>Let&#8217;s build the test environment.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-data-redact-sql\">DATA_REDACT.SQL<\/h3>\n\n\n\n<p>To make life easier I created a little script to list available policies: <\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\n-- data_redact.sql\nset lines 110\nset pages 9999\ncol policy_name   format a30\ncol expression    format a40\ncol enable        format a8\ncol object_owner  format a19\ncol object_name   format a20\ncol column_name   format a15\ncol function_type format a25\n\nprompt =====  Current Data Redaction policies\nselect policy_name, expression, enable from redaction_policies;\n\nprompt\nprompt =====  Current Objects redacted by a Data Redaction policy\nselect object_owner, object_name, column_name, function_type from redaction_columns;\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-the-test-table\">The test table<\/h3>\n\n\n\n<p>For the test purpose I create a test table named <code>user_info<\/code>, an user <code>hr<\/code> who owns the <code>user_info<\/code> table, and an user <code>check_user<\/code> which has the rights to read the <code>user_info<\/code> table. <\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\n-- all commands are executer in a PDB as SYS user.\nSQL&gt; alter session set container=PDB01;\n\nSession altered.\n\n-- create the check_user\nSQL&gt; create user check_user identified by check_usr;\nSQL&gt; grant create session to check_user ;\n\n-- create the hr user who owns the test table user_info\nSQL&gt; create user HR identified by hr;\nSQL&gt; grant create session to hr ;\nSQL&gt; grant resource to hr ;\nSQL&gt; alter user hr quota unlimited on users;\nSQL&gt; create table user_info(\n    user_id number, \n    name varchar2(20),\n    sn varchar2(20),\n    corp_card varchar(20),\n    dt date);\nSQL&gt; grant select on user_info to check_user;\n<\/pre><\/div>\n\n\n<p>Let&#8217;s populate the <code>user_info<\/code> table with some random values: <\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nSQL&gt; declare\n    type array_t is varray(20) of varchar2(10);\n    array array_t := array_t(&#039;James&#039;,&#039;Mary&#039;,&#039;Robert&#039;,&#039;Patricia&#039;,&#039;John&#039;,&#039;Jennifer&#039;,&#039;Michael&#039;,&#039;Linda&#039;,&#039;David&#039;,&#039;Elizabeth&#039;,&#039;William&#039;,&#039;Barbara&#039;,&#039;Richard&#039;,&#039;Susan&#039;,&#039;Joseph&#039;,&#039;Jessica&#039;,&#039;Thomas&#039;,&#039;Sarah&#039;, &#039;Alex&#039;, &#039;Thomas&#039;);\nbegin\n    for i in 1..array.count loop\n        insert into user_info values(\n            trunc(dbms_random.value(low =&gt; 1, high =&gt; 900)),\n            array(i),\n            to_char(trunc(dbms_random.value(low =&gt; 100, high =&gt; 900)))||&#039;-&#039;||to_char(trunc(dbms_random.value(low =&gt; 100, high =&gt; 900)))||&#039;-&#039;||to_char(trunc(dbms_random.value(low =&gt; 100, high =&gt; 900))),\n            dbms_random.string(&#039;x&#039;,20),\n            sysdate + dbms_random.value(0,366)\n        );\n    end loop;\n    commit;\nend;\n\/\n\nSQL&gt; alter session set nls_date_format=&#039;DD\/MM\/YYYY HH24:MI:SS&#039;;\n\nSQL&gt; SQL&gt; select * from user_info;\n\n   USER_ID NAME \t\t   SN\t\t     CORP_CAR\t\t    DT\n---------- -------------------- --------------- -------------------- ---------------\n       122 James\t\t   241-406-613\t     AWNMDMC21PHHETCG2YKW 19\/07\/2024 20:51:07\n       244 Mary \t\t   845-527-442\t     PVQJBY6FGXJO3CYZX2EW 27\/07\/2024 10:16:47\n       169 Robert\t\t   827-523-178\t     NSGB6QLJCXYB8H6F12WP 24\/04\/2024 04:52:44\n\t    40 Patricia\t\t   796-595-337\t     JX4FYTJIZN5W10AHMELG 20\/01\/2024 05:47:45\n       318 John \t\t   175-486-737\t     DLYEPYCEFMOF3VWLG4J6 17\/08\/2024 00:49:32\n       461 Jennifer\t\t   672-341-335\t     V78PSCBPECIIUD2RKG36 14\/04\/2024 12:28:20\n       218 Michael\t\t   787-680-888\t     C2L73OG5MFQOP501XLQA 29\/07\/2024 20:38:29\n       201 Linda\t\t   670-104-321\t     WWY50UJABZGZ6JZY8J38 06\/09\/2024 23:39:16\n       556 David\t\t   427-645-834\t     OX2FZMZI59OBOXRP4PCK 02\/12\/2023 00:35:16\n       808 Elizabeth\t   768-321-407\t     W0BEYTKV8GU5AT4POH8W 09\/08\/2024 10:50:49\n       864 William\t\t   634-730-555\t     CMBI72T3REKT31I55U7K 01\/10\/2024 00:18:32\n       751 Barbara\t\t   399-768-748\t     XLSY6HDYPH0NPC88Q4X6 09\/02\/2024 14:30:01\n       740 Richard\t\t   615-173-203\t     ATI5E5KWB58AGQ41UQQU 08\/04\/2024 06:55:50\n       352 Susan\t\t   567-366-498\t     017HW2WLGCVJJMS5V0SY 07\/04\/2024 09:44:36\n       707 Joseph\t\t   859-626-829\t     161OGSUJCV2MTXLK6Z9R 26\/09\/2024 20:28:10\n       899 Jessica\t\t   602-703-601\t     CRDA5X3EIKIOFZPRL5FP 25\/08\/2024 12:46:04\n       418 Thomas\t\t   260-715-289\t     4MYAOOIS1QXRNQEN5HDL 02\/03\/2024 15:58:15\n       859 Sarah\t\t   564-447-263\t     JR3YEKWZ8FLRXBM9M7NG 25\/01\/2024 14:48:30\n       223 Alex \t\t   345-843-155\t     CQ5COC6PDM23O1ZDDENP 04\/03\/2024 18:14:25\n       370 Thomas\t\t   186-555-284\t     P4TQ4M3T3Q886XT8U0ZO 20\/02\/2024 23:24:51\n\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-the-policy-creation-and-management\">The policy creation and management<\/h3>\n\n\n\n<p>Commands are executed at PDB level.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nSQL&gt; show con_name;\n\nCON_NAME\n------------------------------\nPDB01\n\nSQL&gt; show user\nUSER is &quot;SYS&quot;\n\n--- initial state: no config\nSQL&gt; @data_redact.sql\n====== Current Data Redaction policies\n\nno rows selected\n\n===== Current Objects redacted by a Data Redaction policy\n\nno rows selected\n\n-- Create the policy &quot;PROTECT_EMPLOYEES&quot; for the table  &quot;HR.USER_INFO&quot;\nSQL&gt; BEGIN\n DBMS_REDACT.ADD_POLICY  (\n    object_schema =&gt; &#039;HR&#039;\n   ,object_name =&gt; &#039;USER_INFO&#039;\n   ,policy_name =&gt; &#039;PROTECT_EMPLOYEES&#039;\n   ,expression =&gt; &#039;1=1&#039;);\nEND;\n\/\n\nPL\/SQL procedure successfully completed.\n<\/pre><\/div>\n\n\n<p>Now we add the SN column to be protected by the policy. <\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nSQL&gt; show con_name;\n\nCON_NAME\n------------------------------\nPDB01\n\nSQL&gt; show user\nUSER is &quot;SYS&quot;\n\nSQL&gt; BEGIN\n DBMS_REDACT.ALTER_POLICY  (\n    OBJECT_SCHEMA =&gt; &#039;HR&#039;\n   ,object_name =&gt; &#039;USER_INFO&#039;\n   ,policy_name =&gt; &#039;PROTECT_EMPLOYEES&#039;\n   ,action =&gt; DBMS_REDACT.ADD_COLUMN\n   ,column_name =&gt; &#039;SN&#039;\n   ,function_type =&gt; DBMS_REDACT.FULL );\nEND;\n\/\n\nPL\/SQL procedure successfully completed.\n\n-- and print the current configuration \nSQL&gt; @data_redact.sql\n====== Current Data Redaction policies\n\nPOLICY_NAME\t\t       EXPRESSION\t\tENABLE\n-------------------- --------------------- --------\nPROTECT_EMPLOYEE      1=1\t\t\tYES\n\n\n===== Current Objects redacted by a Data Redaction policy\n\nOBJECT_OWNER\t  OBJECT_NAME \t        COLUMN_NAME\t   FUNCTION_TYPE\n--------------- -------------------- --------------- -------------------------\nHR\t\t            USER_INFO\t        SN\t          FULL REDACTION\n\n<\/pre><\/div>\n\n\n<p>The expression <code>1=1<\/code> (always TRUE) the whole SN column will be hidden. <\/p>\n\n\n\n<p>All users are concerned by the policy, even <code>HR<\/code>. <\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\n&#x5B;oracle]$ sqlplus hr\/hr@myserv:1521\/pdb01\n\nSQL&gt; alter session set nls_date_format=&#039;DD-MON-YYYY HH24:MI:SS&#039;;\n\nSQL&gt; select * from hr.user_info where user_id = 774;\n\n   USER_ID NAME \t\t          SN\t\t    CORP_CARD\t     DT\n---------- -------------------- ---------- -------------------- ----------------\n       774 Patricia\t\t\t\t            WJRAZENFM4JTE2EPSAHU 20-NOV-2024 20:49:36\n    \n\n\n&#x5B;oracle@]$ sqlplus check_user\/check_user@myserv:1521\/pdb01\n\nSQL&gt; alter session set nls_date_format=&#039;DD-MON-YYYY HH24:MI:SS&#039;;\n\nSQL&gt; select * from hr.user_info where user_id = 774;\n\n   USER_ID NAME \t\t         SN\t\t    CORP_CARD\t          DT\n---------- -------------------- ---------- -------------------- ----------------\n       774 Patricia\t\t\t\t            WJRAZENFM4JTE2EPSAHU 20-NOV-2024 20:49:36\n\n<\/pre><\/div>\n\n\n<ul class=\"wp-block-list\">\n<li>The SN column is completely hidden <\/li>\n\n\n\n<li>Once the policy created it is active immediately. No need to restart the database. <\/li>\n\n\n\n<li>Data Redaction is included in Oracle. No need to make any additional configuration. <\/li>\n\n\n\n<li>No need to restart user session either. <\/li>\n<\/ul>\n\n\n\n<p>Let&#8217;s give the rights to <code>HR<\/code> user to see his data now:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nSQL&gt; show con_name\n\nCON_NAME\n------------------------------\nPDB01\n\nSQL&gt; show user\nUSER is &quot;SYS&quot;\n\nSQL&gt; BEGIN\n  DBMS_REDACT.ALTER_POLICY  (\n     OBJECT_SCHEMA =&gt; &#039;HR&#039;\n    ,object_name =&gt; &#039;USER_INFO&#039;\n    ,policy_name =&gt; &#039;PROTECT_EMPLOYEES&#039;\n    ,action =&gt; DBMS_REDACT.MODIFY_EXPRESSION\n    ,expression =&gt; &#039;sys_context(&#039;&#039;userenv&#039;&#039;,&#039;&#039;session_user&#039;&#039;) != &#039;&#039;HR&#039;&#039;&#039;\n    );\nEND;\n\/\n\nPL\/SQL procedure successfully completed.\n\nSQL&gt; @data_redact.sql\n====== Current Data Redaction policies\n\nPOLICY_NAME\t\t       EXPRESSION\t\t\t\t         ENABLE\n-------------------- ----------------------------------------      --------\nPROTECT_EMPLOYEE     sys_context(&#039;userenv&#039;,&#039;session_user&#039;) != &#039;HR&#039; YES\n\t\t\t\t            \n\n===== Current Objects redacted by a Data Redaction policy\n\nOBJECT_OWNER\t      OBJECT_NAME \t     COLUMN_NAME.    FUNCTION_TYPE\n------------------- -------------------- --------------- -------------------------\nHR\t\t    \t           USER_INFO            SN\t\t       FULL REDACTION\n\n\n-- hr user can see the data \n&#x5B;oracle@]$ sqlplus hr\/hr@myserv:1521\/pdb01\n\nSQL&gt; select * from hr.user_info where user_id = 774;\n\n   USER_ID NAME \t\t        SN\t\t             CORP_CAR\t\t       DT\n---------- -------------------- -------------------- -------------------- ---------\n       774 Patricia\t\t        251-336-866\t      WJRAZENFM4JTE2EPSAHU 20-NOV-24\n \n SQL&gt; exit; \n\n-- others users (check_user) cannot see the data\n &#x5B;oracle@]$ sqlplus check_user\/check_user@myserv:1521\/pdb01\n\n SQL&gt; select * from hr.user_info where user_id = 774;\n\n   USER_ID NAME \t\t         SN\t\t             CORP_CAR\t\t       DT\n---------- -------------------- -------------------- -------------------- ---------\n       774 Patricia\t\t\t\t                     WJRAZENFM4JTE2EPSAHU 20-NOV-24\n\n<\/pre><\/div>\n\n\n<p>Change the way data is printed on SN column (from 251-336-866 to 251-***-866)<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nSQL&gt; show con_name\n\nCON_NAME\n------------------------------\nPDB01\n\nSQL&gt; show user\nUSER is &quot;SYS&quot;\n\n\nSQL&gt; BEGIN\n DBMS_REDACT.ALTER_POLICY  (\n    OBJECT_SCHEMA =&gt; &#039;HR&#039;\n   ,object_name =&gt; &#039;USER_INFO&#039;\n   ,policy_name =&gt; &#039;PROTECT_EMPLOYEES&#039;\n   ,action =&gt; DBMS_REDACT.MODIFY_COLUMN\n   ,column_name =&gt; &#039;SN&#039;\n   ,function_type =&gt; DBMS_REDACT.PARTIAL,\n   function_parameters =&gt; &#039;vvvfvvvfvvv,vvv-vvv-vvv,#,4,6&#039;\n   );\nEND;\n\/\n\nPL\/SQL procedure successfully completed.\n\n&#x5B;oracle@]$ sqlplus check_user\/check_user@myserv:1521\/pdb01\n\nSQL&gt; set line 200\nSQL&gt; select * from hr.user_info where user_id = 774;\n\n   USER_ID NAME \t\t         SN\t\t          CORP_CAR\t\t  DT\n---------- -------------------- -------------------- -------------------- ---------\n       774 Patricia\t\t         251-###-866\t          WJRAZENFM4JTE2EPSAHU 20-NOV-24\n\n<\/pre><\/div>\n\n\n<p>Now add the date field to the policy and change the date to 01-Jan-01:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nSQL&gt; show con_name\n\nCON_NAME\n------------------------------\nPDB01\n\nSQL&gt; show user\nUSER is &quot;SYS&quot;\n\n\nSQL&gt; BEGIN\n  DBMS_REDACT.alter_policy (\n    object_schema       =&gt; &#039;HR&#039;,\n    object_name         =&gt; &#039;USER_INFO&#039;,\n    policy_name         =&gt; &#039;PROTECT_EMPLOYEES&#039;,\n    action              =&gt; DBMS_REDACT.MODIFY_COLUMN,\n    column_name         =&gt; &#039;DT&#039;,\n    function_type       =&gt; DBMS_REDACT.PARTIAL,\n    function_parameters =&gt; &#039;m1d1y2001h0m0s0&#039;\n  );\nEND;\n\/\n\nPL\/SQL procedure successfully completed.\n\n&#x5B;oracle@ ]$ sqlplus check_user\/check_user@myserv:1521\/pdb01\n\nSQL&gt; set line 200\nSQL&gt; select * from hr.user_info where user_id = 774;\n\n   USER_ID NAME \t\t         SN\t\t     \t     CORP_CAR\t\t        DT\n---------- -------------------- -------------------- -------------------- ---------\n       774 Patricia\t\t         251-###-866\t      WJRAZENFM4JTE2EPSAHU 01-JAN-01\n\n<\/pre><\/div>\n\n\n<p>At the end let&#8217;s drop the policy revert all: <\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nSQL&gt; show con_name\n\nCON_NAME\n------------------------------\nPDB01\n\nSQL&gt; show user\nUSER is &quot;SYS&quot;\n\n\nSQL&gt; BEGIN\n DBMS_REDACT.DROP_POLICY  (\n    OBJECT_SCHEMA =&gt; &#039;HR&#039;\n   ,object_name =&gt; &#039;USER_INFO&#039;\n   ,policy_name =&gt; &#039;PROTECT_EMPLOYEES&#039;);\nEND;\n\/\n\n\nPL\/SQL procedure successfully completed.\n\n&#x5B;oracle@]$ sqlplus check_user\/check_user@myserv:1521\/pdb01\n\nSQL&gt; set line 200\nSQL&gt; select * from hr.user_info where user_id = 774;\n\n   USER_ID NAME \t\t         SN\t\t     \t       CORP_CAR\t\t       DT\n---------- -------------------- -------------------- -------------------- ---------\n       774 Patricia\t\t         251-336-866\t        WJRAZENFM4JTE2EPSAHU 20-NOV-24\n\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-conclusion\">Conclusion <\/h3>\n\n\n\n<p>Data Redaction is easy to activate and use. &nbsp;<code>SYS<\/code>&nbsp;and users who have the&nbsp;<code>EXEMPT REDACTION POLICY<\/code>&nbsp;privilege, all of the Data Redaction policies are bypassed, so the results of their queries are not redacted.<\/p>\n\n\n\n<p>Once the policy created it is active immediately. No need to restart the database. <\/p>\n\n\n\n<p>Data Redaction is included in Oracle. No need to make any additional configuration. <\/p>\n\n\n\n<p>No need to restart user session either. <\/p>\n\n\n\n<p>Data redaction is included in Oracle Advanced Security license. <\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Oracle Data Redaction: What It Is and How to use it. A quick example usage case. <\/p>\n","protected":false},"author":27,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[59,149],"tags":[96,2564],"type_dbi":[],"class_list":["post-29629","post","type-post","status-publish","format-standard","hentry","category-oracle","category-security","tag-oracle","tag-security-3"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Oracle Data Redaction or how to hide critical information - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/oracle-data-redaction-or-how-to-hide-critical-information\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Oracle Data Redaction or how to hide critical information\" \/>\n<meta property=\"og:description\" content=\"Oracle Data Redaction: What It Is and How to use it. A quick example usage case.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/oracle-data-redaction-or-how-to-hide-critical-information\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2023-11-30T16:15:19+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-01-24T09:42:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/11\/image-31.png\" \/>\n\t<meta property=\"og:image:width\" content=\"519\" \/>\n\t<meta property=\"og:image:height\" content=\"295\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Oracle Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Oracle Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-data-redaction-or-how-to-hide-critical-information\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-data-redaction-or-how-to-hide-critical-information\/\"},\"author\":{\"name\":\"Oracle Team\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"headline\":\"Oracle Data Redaction or how to hide critical information\",\"datePublished\":\"2023-11-30T16:15:19+00:00\",\"dateModified\":\"2025-01-24T09:42:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-data-redaction-or-how-to-hide-critical-information\/\"},\"wordCount\":455,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-data-redaction-or-how-to-hide-critical-information\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/11\/image-31.png\",\"keywords\":[\"Oracle\",\"Security\"],\"articleSection\":[\"Oracle\",\"Security\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/oracle-data-redaction-or-how-to-hide-critical-information\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-data-redaction-or-how-to-hide-critical-information\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/oracle-data-redaction-or-how-to-hide-critical-information\/\",\"name\":\"Oracle Data Redaction or how to hide critical information - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-data-redaction-or-how-to-hide-critical-information\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-data-redaction-or-how-to-hide-critical-information\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/11\/image-31.png\",\"datePublished\":\"2023-11-30T16:15:19+00:00\",\"dateModified\":\"2025-01-24T09:42:15+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-data-redaction-or-how-to-hide-critical-information\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/oracle-data-redaction-or-how-to-hide-critical-information\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-data-redaction-or-how-to-hide-critical-information\/#primaryimage\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/11\/image-31.png\",\"contentUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/11\/image-31.png\",\"width\":519,\"height\":295},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-data-redaction-or-how-to-hide-critical-information\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Oracle Data Redaction or how to hide critical information\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\",\"name\":\"Oracle Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"caption\":\"Oracle Team\"},\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/oracle-team\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Oracle Data Redaction or how to hide critical information - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/oracle-data-redaction-or-how-to-hide-critical-information\/","og_locale":"en_US","og_type":"article","og_title":"Oracle Data Redaction or how to hide critical information","og_description":"Oracle Data Redaction: What It Is and How to use it. A quick example usage case.","og_url":"https:\/\/www.dbi-services.com\/blog\/oracle-data-redaction-or-how-to-hide-critical-information\/","og_site_name":"dbi Blog","article_published_time":"2023-11-30T16:15:19+00:00","article_modified_time":"2025-01-24T09:42:15+00:00","og_image":[{"width":519,"height":295,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/11\/image-31.png","type":"image\/png"}],"author":"Oracle Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Oracle Team","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/oracle-data-redaction-or-how-to-hide-critical-information\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-data-redaction-or-how-to-hide-critical-information\/"},"author":{"name":"Oracle Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"headline":"Oracle Data Redaction or how to hide critical information","datePublished":"2023-11-30T16:15:19+00:00","dateModified":"2025-01-24T09:42:15+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-data-redaction-or-how-to-hide-critical-information\/"},"wordCount":455,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-data-redaction-or-how-to-hide-critical-information\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/11\/image-31.png","keywords":["Oracle","Security"],"articleSection":["Oracle","Security"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/oracle-data-redaction-or-how-to-hide-critical-information\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/oracle-data-redaction-or-how-to-hide-critical-information\/","url":"https:\/\/www.dbi-services.com\/blog\/oracle-data-redaction-or-how-to-hide-critical-information\/","name":"Oracle Data Redaction or how to hide critical information - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-data-redaction-or-how-to-hide-critical-information\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-data-redaction-or-how-to-hide-critical-information\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/11\/image-31.png","datePublished":"2023-11-30T16:15:19+00:00","dateModified":"2025-01-24T09:42:15+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-data-redaction-or-how-to-hide-critical-information\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/oracle-data-redaction-or-how-to-hide-critical-information\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/oracle-data-redaction-or-how-to-hide-critical-information\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/11\/image-31.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2023\/11\/image-31.png","width":519,"height":295},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/oracle-data-redaction-or-how-to-hide-critical-information\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Oracle Data Redaction or how to hide critical information"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee","name":"Oracle Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","caption":"Oracle Team"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/oracle-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/29629","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/27"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=29629"}],"version-history":[{"count":20,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/29629\/revisions"}],"predecessor-version":[{"id":36866,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/29629\/revisions\/36866"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=29629"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=29629"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=29629"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=29629"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}