<?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/aws/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/aws/snowflake/appendix/index.xml" rel="self" type="application/rss+xml"/><item><title>Sample Snowflake External Function</title><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/aws/snowflake/appendix/sample-snowflake-functions/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/aws/snowflake/appendix/sample-snowflake-functions/</guid><description>&lt;h2 id="sample-snowflake-external-function">Sample Snowflake External Function&lt;/h2>
&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;AWS API GATEWAY URL&amp;gt;/SF_CUSTOMER&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;AWS API GATEWAY URL&amp;gt;/SF_CUSTOMER&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>Installing the Policy Agent and Protector in Different AWS Accounts</title><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/aws/snowflake/appendix/cross_account/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/aws/snowflake/appendix/cross_account/</guid><description>&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>The Policy Agent Lambda function and Protect Lambda functions can be installed in separate AWS accounts. However, additional configuration is required to authorize the Policy Agent to provision the security policy to a remote Protect Lambda function.&lt;/p></description></item><item><title>Integrating Cloud Protect with PPC (Protegrity Provisioned Cluster)</title><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/aws/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/aws/snowflake/appendix/install_with_ppc/</guid><description>&lt;p>

 




	






 






 &lt;p>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;/p>
&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> the &lt;code>PTY_DATASTORE_KEY fingerprint&lt;/code>. For ESA 10.2, the fingerprint is optional but recommended. See &lt;a href="https://docs.protegrity.com/cloud-protect/4.0.0/docs/aws/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>Policy Agent - Custom VPC Endpoint Hostname Configuration</title><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/aws/snowflake/appendix/custom_vpc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/aws/snowflake/appendix/custom_vpc/</guid><description>&lt;p>The Policy Agent uses default endpoint hostnames to communicate with other AWS services (for example, secretsmanager.amazonaws.com). This configuration will only work in VPCs where Amazon-provided DNS is available (default VPC configuration with private DNS option enabled for the endpoint). If your VPC uses custom DNS, follow the instructions below to configure the Policy Agent Lambda to use custom endpoint hostnames.&lt;/p>


&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Note&lt;/h4>

 This configuration is only available with the Cloud Protect version 1.5.0 or higher. For more information about the upgrade instructions, refer to &lt;a href="https://docs.protegrity.com/cloud-protect/4.0.0/docs/aws/snowflake/upgrading/">Upgrading to the Latest Version&lt;/a>.

&lt;/div>

&lt;h2 id="identify-dns-hostnames">Identify DNS Hostnames&lt;/h2>
&lt;p>To identify DNS hostnames:&lt;/p></description></item><item><title>Protection Methods</title><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/aws/snowflake/appendix/protection_methods/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/aws/snowflake/appendix/protection_methods/</guid><description>&lt;h2 id="protection-methods">Protection Methods&lt;/h2>
&lt;p>For more information about the protection methods supported by Protegrity, refer to the &lt;a href="https://docs.protegrity.com/protectors/10.1/docs/pmr/">Protection Methods Reference&lt;/a>.&lt;/p>
&lt;table>&lt;thead>&lt;tr>&lt;th>
&lt;p>Tokenization Type&lt;/p>
&lt;/th>&lt;th>
&lt;p>Supported Input Data Types&lt;/p>
&lt;/th>&lt;th>
&lt;p>Notes&lt;/p>
&lt;/th>&lt;/tr>&lt;/thead>&lt;tbody>&lt;tr>&lt;td>
&lt;p>Numeric&lt;/p>
&lt;p>Credit Card&lt;/p>
&lt;p>Alpha&lt;/p>
&lt;p>Upper-case Alpha&lt;/p>
&lt;p>Alpha-Numeric&lt;/p>
&lt;p>Upper Alpha-Numeric&lt;/p>
&lt;p>Lower ASCII&lt;/p>
&lt;p>Printable&lt;/p>
&lt;p>Decimal&lt;/p>
&lt;p>Unicode&lt;/p>
&lt;p>Unicode Base64&lt;/p>
&lt;p>Unicode Gen2&lt;/p>
&lt;p>Email&lt;/p>
&lt;/td>&lt;td>
&lt;p>STRING&lt;/p>
&lt;p>NULL&lt;/p>
&lt;/td>&lt;td>
&lt;/td>&lt;/tr>&lt;tr>&lt;td>
&lt;p>Integer&lt;/p>
&lt;/td>&lt;td>
&lt;p>NUMBER&lt;/p>
&lt;p>NULL&lt;/p>
&lt;/td>&lt;td>
&lt;/td>&lt;/tr>&lt;tr>&lt;td>
&lt;p>Date&lt;/p>
&lt;p>Datetime&lt;/p>
&lt;/td>&lt;td>
&lt;p>STRING&lt;/p>
&lt;p>NULL&lt;/p>
&lt;/td>&lt;td>
&lt;p>For information about supported formats, refer to the &lt;a href="https://docs.protegrity.com/protectors/10.1/docs/pmr/">Protection Methods Reference&lt;/a>.&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/aws/snowflake/appendix/username_regex/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/aws/snowflake/appendix/username_regex/</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 Lambda 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 Lambda Environment configuration&lt;/strong>&lt;/p>
&lt;p>The USERNAME_REGEX configuration can be used to extract policy username from user in the request. The following are allowed values for USERNAME_REGEX:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>1 - Default build-in regular expression is used:&lt;/p>
&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>^arn:aws:(?:iam|sts)::[0-9]{12}:(?:role|user|group|assumed\-role|federated\-user)\/([\w\/+=,.\-]{1,1024}|[\w\/+=,.\-@]{1,1024})(?:@[a-zA-Z0-9\-]{1,320}(?:\.\w+)+)?$
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>^User regex$ - Custom regex 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></description></item><item><title>Associating ESA Data Store With Cloud Protect Agent</title><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/aws/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/aws/snowflake/appendix/agent_ip_address_config/</guid><description>&lt;h2 id="associating-esa-data-store-with-cloud-protect-agent">Associating ESA Data Store With Cloud Protect Agent&lt;/h2>
&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></channel></rss>