doc-exports/docs/dws/dev/dws_06_0168.html
Lu, Huayi e6fa411af0 DWS DEV 830.201 version
Reviewed-by: Pruthi, Vineet <vineet.pruthi@t-systems.com>
Co-authored-by: Lu, Huayi <luhuayi@huawei.com>
Co-committed-by: Lu, Huayi <luhuayi@huawei.com>
2024-05-16 07:24:04 +00:00

109 lines
27 KiB
HTML

<a name="EN-US_TOPIC_0000001233708677"></a><a name="EN-US_TOPIC_0000001233708677"></a>
<h1 class="topictitle1">CREATE REDACTION POLICY</h1>
<div id="body0000001125005011"><div class="section" id="EN-US_TOPIC_0000001233708677__section64541617155413"><h4 class="sectiontitle">Function</h4><p id="EN-US_TOPIC_0000001233708677__p48721529133312"><strong id="EN-US_TOPIC_0000001233708677__b15755191483412">CREATE REDACTION POLICY</strong> creates a data redaction policy for a table.</p>
</div>
<div class="section" id="EN-US_TOPIC_0000001233708677__section530426175413"><h4 class="sectiontitle">Precautions</h4><ul id="EN-US_TOPIC_0000001233708677__ul2301626185417"><li id="EN-US_TOPIC_0000001233708677__li6508144710461">Only the table owner has the permission to create a data redaction policy.</li><li id="EN-US_TOPIC_0000001233708677__li5717812205115">You can create data redaction policies only for ordinary tables. Redaction policies are unavailable to system catalogs, HDFS tables, foreign tables, temporary tables, UNLOGGED tables, views, and functions.</li><li id="EN-US_TOPIC_0000001233708677__li10543192315366">Synonyms cannot be used to create redaction policies for ordinary table objects.</li><li id="EN-US_TOPIC_0000001233708677__li62391740173610">Table objects and redaction policies have a one-to-one mapping relationship. A redaction policy is a collection of data redaction functions that can be applied to multiple columns in a table. You can set different redaction functions for different columns.</li><li id="EN-US_TOPIC_0000001233708677__li1620843714471">A redaction policy is enabled by default upon its creation, that is, the <strong id="EN-US_TOPIC_0000001233708677__b85391223193420">enable</strong> parameter of the policy is <strong id="EN-US_TOPIC_0000001233708677__b7917183614349">true</strong> by default.</li><li id="EN-US_TOPIC_0000001233708677__li19350134104912">Redaction policies do not take effect on users with the <strong id="EN-US_TOPIC_0000001233708677__b82320466342">sysadmin</strong> permission. Data in the redacted columns is always visible to such users.</li><li id="EN-US_TOPIC_0000001233708677__li677320292618">Data redaction policies can be matched with specified roles.</li></ul>
</div>
<div class="section" id="EN-US_TOPIC_0000001233708677__s76b82d2844864556836665e71507845d"><h4 class="sectiontitle">Syntax</h4><div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233708677__sc1bdee974fde47ff935e49409387dcdd"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="n">REDACTION</span><span class="w"> </span><span class="n">POLICY</span><span class="w"> </span><span class="n">policy_name</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="k">table_name</span>
<span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">WHEN</span><span class="w"> </span><span class="p">(</span><span class="n">when_expression</span><span class="p">)</span><span class="w"> </span><span class="p">]</span>
<span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">COLUMN</span><span class="w"> </span><span class="k">column_name</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="n">redaction_function_name</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="n">argument</span><span class="w"> </span><span class="p">[,</span><span class="w"> </span><span class="p">...]</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">)]</span><span class="w"> </span><span class="p">[,</span><span class="w"> </span><span class="p">...</span><span class="w"> </span><span class="p">];</span>
</pre></div></td></tr></table></div>
</div>
</div>
<div class="section" id="EN-US_TOPIC_0000001233708677__section329711615553"><h4 class="sectiontitle">Parameter Description</h4><ul id="EN-US_TOPIC_0000001233708677__ul13297216165518"><li id="EN-US_TOPIC_0000001233708677__le0d876a4740142cba6070d2bfa9fe052"><strong id="EN-US_TOPIC_0000001233708677__a9135027b510a46a6a4c96ad94015b654">policy_name</strong><p id="EN-US_TOPIC_0000001233708677__p47444371904">Specifies the name of a redaction policy.</p>
</li><li id="EN-US_TOPIC_0000001233708677__l59953a97ae544273852d23e58811e857"><strong id="EN-US_TOPIC_0000001233708677__aafb71be4f77c42b09bc43534c8375b37">table_name</strong><p id="EN-US_TOPIC_0000001233708677__p129154115187">Specifies the name of the table to which the redaction policy is applied.</p>
</li><li id="EN-US_TOPIC_0000001233708677__li549719951616"><strong id="EN-US_TOPIC_0000001233708677__b141373218180">WHEN ( when_expression )</strong><p id="EN-US_TOPIC_0000001233708677__p11491174112011">Specifies the expression used for the redaction policy to take effect. The redaction policy takes effect only when this expression is true.</p>
<div class="note" id="EN-US_TOPIC_0000001233708677__note152055145311"><img src="public_sys-resources/note_3.0-en-us.png"><span class="notetitle"> </span><div class="notebody"><p id="EN-US_TOPIC_0000001233708677__p14609172911014">When a query statement is querying a table where a redaction policy is enabled, the redacted data is invisible in the query only if the WHEN expression for the redaction policy is true. Generally, the WHEN clause is used to specify the users for which the redaction policy takes effect.</p>
<p id="EN-US_TOPIC_0000001233708677__p52886545456">The WHEN clause must comply with the following rules:</p>
<ol id="EN-US_TOPIC_0000001233708677__ol1681469167"><li id="EN-US_TOPIC_0000001233708677__li15681465161">The expression can be a combination of multiple subexpressions connected by AND and/or OR.</li><li id="EN-US_TOPIC_0000001233708677__li156916619161">Each subexpression supports only the =, &lt;&gt;, !=, &gt;=, &gt;, &lt;=, and &lt; operators. The left and right operand values can only be constant values or one of the following system constant values: <strong id="EN-US_TOPIC_0000001233708677__b229819253556">SESSION_USER</strong>, <strong id="EN-US_TOPIC_0000001233708677__b3296278559">CURRENT_USER</strong>, <strong id="EN-US_TOPIC_0000001233708677__b6314133045513">USER</strong>, <strong id="EN-US_TOPIC_0000001233708677__b1348413815517">CURRENT_ROLE</strong>, and <strong id="EN-US_TOPIC_0000001233708677__b16260541185513">CURRENT_SCHEMA</strong> system constants or the <strong id="EN-US_TOPIC_0000001233708677__b2012704485514">SYS_CONTEXT</strong> system function.</li><li id="EN-US_TOPIC_0000001233708677__li46917631620">Each subexpression can be an IN or NOT IN expression. The value for the left operand can be any of the system constant values listed in rule 2, and each element in the array of the right operand must be a constant value.</li><li id="EN-US_TOPIC_0000001233708677__li41140133315">Each subexpression can be a <strong id="EN-US_TOPIC_0000001233708677__b65506220170">PG_HAS_ROLE</strong> system function.</li><li id="EN-US_TOPIC_0000001233708677__li26912631618">If you want a redaction policy to be valid in all conditions, that is, you want it to take effect on all users (including the table owner), you are advised to use the (1=1) expression to create this policy.</li><li id="EN-US_TOPIC_0000001233708677__li176915611167">If the WHEN clause is not specified, the redaction policy is disabled by default. You need to manually specify a WHEN expression for the policy to take effect.</li></ol>
</div></div>
</li><li id="EN-US_TOPIC_0000001233708677__li109730225161"><strong id="EN-US_TOPIC_0000001233708677__b52262235588">column_name</strong><p id="EN-US_TOPIC_0000001233708677__p518122711582">Specifies the name of the table column to which the redaction policy is applied.</p>
</li><li id="EN-US_TOPIC_0000001233708677__li234522701614"><strong id="EN-US_TOPIC_0000001233708677__b20556191241">function_name</strong><p id="EN-US_TOPIC_0000001233708677__p212414138413">Specifies the redaction function applied to the specified table column.</p>
</li><li id="EN-US_TOPIC_0000001233708677__li20539133401616"><strong id="EN-US_TOPIC_0000001233708677__b8860175647">arguments</strong><p id="EN-US_TOPIC_0000001233708677__p54735341082">Specifies the list of arguments of the redaction function.</p>
<ul id="EN-US_TOPIC_0000001233708677__ul57861518193"><li id="EN-US_TOPIC_0000001233708677__li10746003193">MASK_NONE: indicates that no masking is performed.</li><li id="EN-US_TOPIC_0000001233708677__li63414143194">MASK_FULL: indicates that all data is masked to a fixed value.</li><li id="EN-US_TOPIC_0000001233708677__li139391716101914">MASK_PARTIAL: indicates that partial masking is performed based on the specified character type, numeric type, or time type.</li></ul>
<div class="note" id="EN-US_TOPIC_0000001233708677__note1511614581467"><img src="public_sys-resources/note_3.0-en-us.png"><span class="notetitle"> </span><div class="notebody"><p id="EN-US_TOPIC_0000001233708677__p1885550123017">You can use the built-in masking functions <strong id="EN-US_TOPIC_0000001233708677__b15876110174519">MASK_NONE</strong>, <strong id="EN-US_TOPIC_0000001233708677__b178775034512">MASK_FULL</strong>, and <strong id="EN-US_TOPIC_0000001233708677__b28776094511">MASK_PARTIAL</strong>, or create your own masking functions by using the C language or PL/pgSQL. For details, see <a href="dws_06_0064.html">Data Masking Functions</a>.</p>
</div></div>
</li></ul>
</div>
<div class="section" id="EN-US_TOPIC_0000001233708677__section1879372020138"><h4 class="sectiontitle">Examples</h4><p id="EN-US_TOPIC_0000001233708677__p88609454489"><strong id="EN-US_TOPIC_0000001233708677__b143482591815">Create redaction policy for a specified user.</strong></p>
<ol id="EN-US_TOPIC_0000001233708677__ol1334114427374"><li id="EN-US_TOPIC_0000001233708677__li5341942143720">Create users <strong id="EN-US_TOPIC_0000001233708677__b17263121110181">alice</strong> and <strong id="EN-US_TOPIC_0000001233708677__b19263311171819">matu</strong>:<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233708677__screen94793512371"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">ROLE</span><span class="w"> </span><span class="n">alice</span><span class="w"> </span><span class="n">PASSWORD</span><span class="w"> </span><span class="s1">'{Password}'</span><span class="p">;</span>
<span class="k">CREATE</span><span class="w"> </span><span class="k">ROLE</span><span class="w"> </span><span class="n">matu</span><span class="w"> </span><span class="n">PASSWORD</span><span class="w"> </span><span class="s1">'{Password}'</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
</li><li id="EN-US_TOPIC_0000001233708677__li193623542378">Create a table object <strong id="EN-US_TOPIC_0000001233708677__b4451417151818">emp</strong> as user <strong id="EN-US_TOPIC_0000001233708677__b1845816179188">alice</strong>, and insert data into the table.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233708677__screen51941058182017"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">emp</span><span class="p">(</span><span class="n">id</span><span class="w"> </span><span class="nb">int</span><span class="p">,</span><span class="w"> </span><span class="n">name</span><span class="w"> </span><span class="nb">varchar</span><span class="p">(</span><span class="mi">20</span><span class="p">),</span><span class="w"> </span><span class="n">salary</span><span class="w"> </span><span class="nb">NUMERIC</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="mi">2</span><span class="p">));</span>
<span class="k">INSERT</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="n">emp</span><span class="w"> </span><span class="k">VALUES</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="s1">'July'</span><span class="p">,</span><span class="w"> </span><span class="mi">1230</span><span class="p">.</span><span class="mi">10</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="s1">'David'</span><span class="p">,</span><span class="w"> </span><span class="mi">999</span><span class="p">.</span><span class="mi">99</span><span class="p">);</span>
</pre></div></td></tr></table></div>
</div>
</li><li id="EN-US_TOPIC_0000001233708677__li1699194123815">Create a redaction policy <strong id="EN-US_TOPIC_0000001233708677__b44942331815">mask_emp</strong> for the <strong id="EN-US_TOPIC_0000001233708677__b1455122320181">emp</strong> table as user <strong id="EN-US_TOPIC_0000001233708677__b135518231182">alice</strong> to make the <strong id="EN-US_TOPIC_0000001233708677__b1056323171812">salary</strong> column invisible to user <strong id="EN-US_TOPIC_0000001233708677__b55652331815">matu</strong>.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233708677__screen1768511452117"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="n">REDACTION</span><span class="w"> </span><span class="n">POLICY</span><span class="w"> </span><span class="n">mask_emp</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="n">emp</span><span class="w"> </span><span class="k">WHEN</span><span class="p">(</span><span class="k">current_user</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'matu'</span><span class="p">)</span><span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">COLUMN</span><span class="w"> </span><span class="n">salary</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="n">mask_full</span><span class="p">(</span><span class="n">salary</span><span class="p">);</span>
</pre></div></td></tr></table></div>
</div>
</li><li id="EN-US_TOPIC_0000001233708677__li18335112073811">Grant the <strong id="EN-US_TOPIC_0000001233708677__b15635153312187">SELECT</strong> permission on the <strong id="EN-US_TOPIC_0000001233708677__b3635163315187">emp</strong> table to user <strong id="EN-US_TOPIC_0000001233708677__b963683318181">matu</strong> as user <strong id="EN-US_TOPIC_0000001233708677__b0636193311181">alice</strong>.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233708677__screen87381411192116"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">GRANT</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="n">emp</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="n">matu</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
</li><li id="EN-US_TOPIC_0000001233708677__li0387133073817">Switch to user <strong id="EN-US_TOPIC_0000001233708677__b13635133718184">matu</strong>.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233708677__screen4892220112113"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SET</span><span class="w"> </span><span class="k">ROLE</span><span class="w"> </span><span class="n">matu</span><span class="w"> </span><span class="n">PASSWORD</span><span class="w"> </span><span class="s1">'{Password}'</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
</li><li id="EN-US_TOPIC_0000001233708677__li67446429383">Query the <strong id="EN-US_TOPIC_0000001233708677__b438018424187">emp</strong> table. Data in the <strong id="EN-US_TOPIC_0000001233708677__b14387124211185">salary</strong> column has been redacted.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233708677__screen361810273217"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">emp</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
</li></ol>
<p id="EN-US_TOPIC_0000001233708677__p19581111681214"><strong id="EN-US_TOPIC_0000001233708677__b19397146131910">Create redaction policy for the role.</strong></p>
<ol id="EN-US_TOPIC_0000001233708677__ol111532944711"><li id="EN-US_TOPIC_0000001233708677__li4115182974720">Create a role <strong id="EN-US_TOPIC_0000001233708677__b283918181190">redact_role</strong>.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233708677__screen138101842141"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">ROLE</span><span class="w"> </span><span class="n">redact_role</span><span class="w"> </span><span class="n">PASSWORD</span><span class="w"> </span><span class="s1">'{Password}'</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
</li><li id="EN-US_TOPIC_0000001233708677__li1651820112518">Add users <strong id="EN-US_TOPIC_0000001233708677__b5469123701918">matu</strong> and <strong id="EN-US_TOPIC_0000001233708677__b2022615429191">alice</strong> to the role <strong id="EN-US_TOPIC_0000001233708677__b136347215206">redact_role</strong>.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233708677__screen1034910192617"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">GRANT</span><span class="w"> </span><span class="n">redact_role</span><span class="w"> </span><span class="k">to</span><span class="w"> </span><span class="n">matu</span><span class="p">,</span><span class="n">alice</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
</li><li id="EN-US_TOPIC_0000001233708677__li76632335479">Create a table object <strong id="EN-US_TOPIC_0000001233708677__b19344182918428">emp1</strong> as the administrator and insert data.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233708677__screen847664014141"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">emp1</span><span class="p">(</span><span class="n">id</span><span class="w"> </span><span class="nb">int</span><span class="p">,</span><span class="w"> </span><span class="n">name</span><span class="w"> </span><span class="nb">varchar</span><span class="p">(</span><span class="mi">20</span><span class="p">),</span><span class="w"> </span><span class="n">salary</span><span class="w"> </span><span class="nb">NUMERIC</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="mi">2</span><span class="p">));</span><span class="w"> </span>
<span class="k">INSERT</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="n">emp1</span><span class="w"> </span><span class="k">VALUES</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="s1">'Rose'</span><span class="p">,</span><span class="w"> </span><span class="mi">2230</span><span class="p">.</span><span class="mi">20</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="s1">'Jack'</span><span class="p">,</span><span class="w"> </span><span class="mi">899</span><span class="p">.</span><span class="mi">88</span><span class="p">);</span><span class="w"> </span>
</pre></div></td></tr></table></div>
</div>
</li><li id="EN-US_TOPIC_0000001233708677__li1319044213474">Create a redaction policy <strong id="EN-US_TOPIC_0000001233708677__b33155016447">mask_emp1</strong> for the table object <strong id="EN-US_TOPIC_0000001233708677__b93690184441">emp1</strong> as the administrator to make the <strong id="EN-US_TOPIC_0000001233708677__b373514375441">salary</strong> column invisible to role <strong id="EN-US_TOPIC_0000001233708677__b72454484445">redact_role</strong>.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233708677__screen19219476143"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="n">REDACTION</span><span class="w"> </span><span class="n">POLICY</span><span class="w"> </span><span class="n">mask_emp1</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="n">emp1</span><span class="w"> </span><span class="k">WHEN</span><span class="p">(</span><span class="n">pg_has_role</span><span class="p">(</span><span class="k">current_user</span><span class="p">,</span><span class="w"> </span><span class="s1">'redact_role'</span><span class="p">,</span><span class="w"> </span><span class="s1">'member'</span><span class="p">))</span><span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">COLUMN</span><span class="w"> </span><span class="n">salary</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="n">mask_full</span><span class="p">(</span><span class="n">salary</span><span class="p">);</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001233708677__p4713125510494">If no user is specified, the current user (<strong id="EN-US_TOPIC_0000001233708677__b1379035416451">current_user</strong>) is used by default.</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233708677__screen14182545012"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="n">REDACTION</span><span class="w"> </span><span class="n">POLICY</span><span class="w"> </span><span class="n">mask_emp1</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="n">emp1</span><span class="w"> </span><span class="k">WHEN</span><span class="w"> </span><span class="p">(</span><span class="n">pg_has_role</span><span class="p">(</span><span class="s1">'redact_role'</span><span class="p">,</span><span class="w"> </span><span class="s1">'member'</span><span class="p">))</span><span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">COLUMN</span><span class="w"> </span><span class="n">salary</span><span class="w"> </span><span class="k">WITH</span><span class="w"> </span><span class="n">mask_full</span><span class="p">(</span><span class="n">salary</span><span class="p">);</span>
</pre></div></td></tr></table></div>
</div>
</li><li id="EN-US_TOPIC_0000001233708677__li13796184620471">The administrator grants the SELECT permission on the table <strong id="EN-US_TOPIC_0000001233708677__b1231573215466">emp1</strong> to the user <strong id="EN-US_TOPIC_0000001233708677__b15616174210469">matu</strong>.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233708677__screen148696451515"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">GRANT</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="n">emp1</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="n">matu</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
</li><li id="EN-US_TOPIC_0000001233708677__li137751752164719">Switch to user <strong id="EN-US_TOPIC_0000001233708677__b185138510491">matu</strong>.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233708677__screen174721512156"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SET</span><span class="w"> </span><span class="k">ROLE</span><span class="w"> </span><span class="n">matu</span><span class="w"> </span><span class="n">PASSWORD</span><span class="w"> </span><span class="s1">'{Password}'</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
</li><li id="EN-US_TOPIC_0000001233708677__li10312135820476">Query the <strong id="EN-US_TOPIC_0000001233708677__b1912825211507">emp1</strong> table. Data in the <strong id="EN-US_TOPIC_0000001233708677__b21352521502">salary</strong> column has been redacted.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233708677__screen1113914016150"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">emp1</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
</li></ol>
</div>
<div class="section" id="EN-US_TOPIC_0000001233708677__section1426016489355"><h4 class="sectiontitle">Helpful Links</h4><p id="EN-US_TOPIC_0000001233708677__p9325125517354"><a href="dws_06_0132.html">ALTER REDACTION POLICY</a>, <a href="dws_06_0199.html">DROP REDACTION POLICY</a></p>
</div>
</div>
<div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="dws_06_0118.html">DDL Syntax</a></div>
</div>
</div>