<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Appendices on</title><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/snowflake/appendix/</link><description>Recent content in Appendices on</description><generator>Hugo</generator><language>en</language><atom:link href="https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/snowflake/appendix/index.xml" rel="self" type="application/rss+xml"/><item><title>Integrating Cloud Protect with PPC (Protegrity Provisioned Cluster)</title><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/snowflake/appendix/install_with_ppc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/snowflake/appendix/install_with_ppc/</guid><description>&lt;p>

 




	






 






 &lt;ol id="toc">&lt;/ol>
&lt;script>
 // JavaScript to generate the table of contents from H2 headings
 document.addEventListener("DOMContentLoaded", function () {
 //get all h2 headings within the 'main' element and generate a toc with links to them
 //excluding h2 heading 'Feedback' if it exists
 const toc = document.getElementById("toc");
 const headings = document.querySelectorAll("main h2");
 headings.forEach(heading => {
 if (heading.textContent === "Feedback") {
 return; // Skip the 'Feedback' heading
 }

 const li = document.createElement("li");
 const a = document.createElement("a");
 const id = heading.textContent.toLowerCase().replace(/\s+/g, '-');
 heading.id = id; // Set the id for the heading
 a.href = `#${id}`;
 a.textContent = heading.textContent;
 li.appendChild(a);
 toc.appendChild(li);
 });

 });
&lt;/script>





 




	






 






 

 




	






 






 This guide describes how to configure the Protegrity Policy Agent and Log Forwarder to connect to a Protegrity Provisioned Cluster (PPC), highlighting the differences from connecting to ESA.




 




	






 






 &lt;h2 id="key-differences-ppc-vs-esa">Key Differences: PPC vs ESA&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Feature&lt;/th>
 &lt;th>ESA 10.2&lt;/th>
 &lt;th>PPC (this guide)&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>Datastore Key Fingerprint&lt;/td>
 &lt;td>Optional/Recommended&lt;/td>
 &lt;td>&lt;strong>Required&lt;/strong>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>CA Certificate on Agent&lt;/td>
 &lt;td>Optional/Recommended&lt;/td>
 &lt;td>&lt;strong>Optional/Recommended&lt;/strong>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>CA Certificate on Log Forwarder&lt;/td>
 &lt;td>Optional/Recommended&lt;/td>
 &lt;td>&lt;strong>Not supported&lt;/strong>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Client Certificate Authentication from Log Forwarder&lt;/td>
 &lt;td>Optional/Recommended&lt;/td>
 &lt;td>&lt;strong>Not supported&lt;/strong>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>IP Address&lt;/td>
 &lt;td>ESA IP address&lt;/td>
 &lt;td>&lt;strong>PPC address&lt;/strong>&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>





 




	






 






 &lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;ul>
&lt;li>Access to PPC and required credentials.&lt;/li>
&lt;li>Tools: &lt;code>curl&lt;/code>, &lt;code>kubectl&lt;/code> installed.&lt;/li>
&lt;/ul>





 




	






 






 &lt;h2 id="policy-agent-setup-with-ppc">Policy Agent Setup with PPC&lt;/h2>


&lt;div class="alert alert-warning" role="alert">
&lt;h4 class="alert-heading">Important&lt;/h4>

 When connecting to PPC, the Policy Agent &lt;strong>requires&lt;/strong> use of a datastore key fingerprint. For connecting to ESA 10.2 with Cloud Protect Policy Agent, the fingerprint is optional but recommended. See &lt;a href="https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/snowflake/installation/agent/">Policy Agent Installation&lt;/a> for general setup steps.

&lt;/div>

&lt;p>Follow these instructions as a guide for understanding specific inputs for Policy Agent integrating with PPC:&lt;/p></description></item><item><title>Sample Snowflake External Function</title><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/snowflake/appendix/sample_snowflake_external_function/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/snowflake/appendix/sample_snowflake_external_function/</guid><description>&lt;h1 id="appendix-a-sample-snowflake-external-function">Appendix A. Sample Snowflake External Function&lt;/h1>
&lt;table>&lt;tbody>&lt;tr>&lt;td colspan="3">
&lt;p>&lt;strong>Method: Tokenization&lt;/strong>&lt;/p>
&lt;/td>&lt;/tr>&lt;tr>&lt;td colspan="3">
&lt;p>&lt;strong>Type: ALPHA&lt;/strong>&lt;/p>
&lt;/td>&lt;/tr>&lt;tr>&lt;td colspan="3">
&lt;p> &lt;/p>
&lt;/td>&lt;/tr>&lt;tr>&lt;td>
&lt;p>&lt;strong>Snowflake Data Types&lt;/strong>&lt;/p>
&lt;/td>&lt;td>
&lt;p>&lt;strong>Snowflake Max Size&lt;/strong>&lt;/p>
&lt;/td>&lt;td>
&lt;p>&lt;strong>Protegrity Max Size&lt;/strong>&lt;/p>
&lt;/td>&lt;/tr>&lt;tr>&lt;td>
&lt;p>VARCHAR&lt;/p>
&lt;/td>&lt;td rowspan="4">
&lt;p>16M (16,777,216 bytes)&lt;/p>
&lt;/td>&lt;td rowspan="4">
&lt;p>4K (4,096 bytes)&lt;/p>
&lt;/td>&lt;/tr>&lt;tr>&lt;td>
&lt;p>CHAR&lt;/p>
&lt;/td>&lt;/tr>&lt;tr>&lt;td>
&lt;p>STRING&lt;/p>
&lt;/td>&lt;/tr>&lt;tr>&lt;td>
&lt;p>TEXT&lt;/p>
&lt;/td>&lt;/tr>&lt;tr>&lt;td colspan="3">
&lt;p> &lt;/p>
&lt;/td>&lt;/tr>&lt;tr>&lt;td colspan="3">
&lt;p>&lt;strong>External Function Sample Definitions:&lt;/strong>&lt;/p>
&lt;/td>&lt;/tr>&lt;tr>&lt;td colspan="3">
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">CREATE&lt;/span> &lt;span style="color:#000">SECURE&lt;/span> &lt;span style="color:#000">EXTERNAL&lt;/span> &lt;span style="color:#000">FUNCTION&lt;/span> &lt;span style="color:#000">PTY_PROTECT_ALPHA&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span> &lt;span style="color:#000">val&lt;/span> &lt;span style="color:#000">varchar&lt;/span> &lt;span style="color:#000;font-weight:bold">)&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">RETURNS&lt;/span> &lt;span style="color:#000">varchar&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">NULL&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">IMMUTABLE&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">COMMENT&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;Protects using an ALPHA data element&amp;#39;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">API_INTEGRATION&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">REPLACE_WITH_YOUR_API_INTEGRATION_ID&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">HEADERS&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#39;X-Protegrity-HCoP-Rules&amp;#39;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#39;{&amp;#34;jsonpaths&amp;#34;: [{&amp;#34;op_type&amp;#34;:&amp;#34;PROTECT&amp;#34;,&amp;#34;data_element&amp;#34;:&amp;#34;TOK_ALPHA&amp;#34;}]}&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">CONTEXT_HEADERS&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span> &lt;span style="color:#000">current_user&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#000">current_timestamp&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#000">current_account&lt;/span> &lt;span style="color:#000;font-weight:bold">)&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">AS&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;&amp;lt;api_gateway_protect_service_url&amp;gt;/pty/snowflake&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/td>&lt;/tr>&lt;tr>&lt;td colspan="3">
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">CREATE&lt;/span> &lt;span style="color:#000">SECURE&lt;/span> &lt;span style="color:#000">EXTERNAL&lt;/span> &lt;span style="color:#000">FUNCTION&lt;/span> &lt;span style="color:#000">PTY_UNPROTECT_ALPHA&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span> &lt;span style="color:#000">val&lt;/span> &lt;span style="color:#000">varchar&lt;/span> &lt;span style="color:#000;font-weight:bold">)&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">RETURNS&lt;/span> &lt;span style="color:#000">varchar&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">NULL&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">IMMUTABLE&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">COMMENT&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;Unprotects using an ALPHA data element&amp;#39;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">API_INTEGRATION&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">REPLACE_WITH_YOUR_API_INTEGRATION_ID&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">HEADERS&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#39;X-Protegrity-HCoP-Rules&amp;#39;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#39;{&amp;#34;jsonpaths&amp;#34;:[{&amp;#34;op_type&amp;#34;:&amp;#34;UNPROTECT&amp;#34;,&amp;#34;data_element&amp;#34;:&amp;#34;TOK_ALPHA&amp;#34;}]}&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">)&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">CONTEXT_HEADERS&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span> &lt;span style="color:#000">current_user&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#000">current_timestamp&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#000">current_account&lt;/span> &lt;span style="color:#000;font-weight:bold">)&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">AS&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;&amp;lt;api_gateway_protect_service_url&amp;gt;/pty/snowflake&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/td>&lt;/tr>&lt;tr>&lt;td colspan="3">
&lt;p> &lt;/p></description></item><item><title>Configuring Regular Expression to Extract Policy Username</title><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/snowflake/appendix/username_regex_configuration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/snowflake/appendix/username_regex_configuration/</guid><description>&lt;h2 id="configuring-regular-expression-to-extract-policy-username">Configuring Regular Expression to Extract Policy Username&lt;/h2>
&lt;p>Cloud Protect Cloud Function exposes USERNAME_REGEX configuration to allow extraction of policy username from user in the request.&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>USERNAME_REGEX Cloud Function Environment configuration&lt;/strong>&lt;/p>
&lt;p>The USERNAME_REGEX environment variable can be set to contain regular expression with one capturing group. This group is used to extract the username. Examples below show different regular expression values and the resulting policy user.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;table>&lt;thead>&lt;tr>&lt;th>
&lt;p>USERNAME_REGEX&lt;/p>
&lt;/th>&lt;th>
&lt;p>User in the request&lt;/p></description></item><item><title>Associating ESA Data Store With Cloud Protect Agent</title><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/snowflake/appendix/agent_ip_address_config/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/snowflake/appendix/agent_ip_address_config/</guid><description>&lt;p>ESA controls which policy is deployed to protector using concept of data store. A data store may contain a list of IP addresses identifying servers allowed to pull the policy associated with that specific data store. Data store may also be defined as default data store, which allows any server to pull the policy, provided it does not belong to any other data stores. Node registration occurs when the policy server (in this case the policy agent) makes a policy request to ESA, where the agent&amp;rsquo;s IP address is identified by ESA.&lt;/p></description></item><item><title>Undeliverable Audit Log Recovery</title><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/snowflake/appendix/audit_log_recovery/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/snowflake/appendix/audit_log_recovery/</guid><description>&lt;p>

 




	






 






 &lt;ol id="toc">&lt;/ol>
&lt;script>
 // JavaScript to generate the table of contents from H2 headings
 document.addEventListener("DOMContentLoaded", function () {
 //get all h2 headings within the 'main' element and generate a toc with links to them
 //excluding h2 heading 'Feedback' if it exists
 const toc = document.getElementById("toc");
 const headings = document.querySelectorAll("main h2");
 headings.forEach(heading => {
 if (heading.textContent === "Feedback") {
 return; // Skip the 'Feedback' heading
 }

 const li = document.createElement("li");
 const a = document.createElement("a");
 const id = heading.textContent.toLowerCase().replace(/\s+/g, '-');
 heading.id = id; // Set the id for the heading
 a.href = `#${id}`;
 a.textContent = heading.textContent;
 li.appendChild(a);
 toc.appendChild(li);
 });

 });
&lt;/script>





 




	






 






 &lt;p>Protegrity Cloud Protect Log Forwarder installation provides a solution to recover undelivered audit logs. Reasons for undeliverable logs may include:&lt;/p></description></item></channel></rss>