<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>GCP on</title><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/</link><description>Recent content in GCP on</description><generator>Hugo</generator><language>en</language><atom:link href="https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/agent/installation/esa_certificates/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/agent/installation/esa_certificates/</guid><description>&lt;h2 id="certificates-on-esa">Certificates on ESA&lt;/h2>
&lt;p>By default, ESA is configured with self-signed certificates, which can only be validated using self-signed CA certificate supplied in Cloud Function Environment variables configuration.&lt;/p>
&lt;p>In case ESA is configured with publicly signed certificates, this section can be skipped since the Cloud Function will use public CA to validate ESA certificates.&lt;/p>
&lt;p>To obtain self-signed CA certificate from ESA:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Log in to ESA Web UI.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select &lt;strong>Settings&lt;/strong> &amp;gt; &lt;strong>Network&lt;/strong> &amp;gt; &lt;strong>Manage Certificates&lt;/strong>.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/agent/installation/esa_credentials/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/agent/installation/esa_credentials/</guid><description>&lt;h2 id="creating-esa-credentials">Creating ESA Credentials&lt;/h2>
&lt;p>Policy Agent Function requires ESA credentials to be provided as one of the two options:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/agent/installation/esa_credentials/#secret-manager">Option 1: Secret Manager&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/agent/installation/esa_credentials/#custom-cloud-function">Option 2: Custom Cloud Function&lt;/a>
)&lt;/li>
&lt;/ul>


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

 The username and password of the ESA user requires role with &lt;strong>DPS Admin&lt;/strong> and &lt;strong>Export Certificates&lt;/strong> permissions. &lt;strong>Security Administrator&lt;/strong> is one of the predefined roles which contains the above permissions, however for separation of duties it is recommended to create custom role.

&lt;/div>

&lt;p>

 




	






 






 &lt;h3 id="secret-manager">Secret Manager&lt;/h3>
&lt;p>Secret Manager is the recommended option for storing ESA credentials.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/agent/installation/esa_credentials/custom_cloud_function/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/agent/installation/esa_credentials/custom_cloud_function/</guid><description>&lt;h3 id="custom-cloud-function">Custom Cloud Function&lt;/h3>
&lt;p>If you have the skills to write code, you may provide a custom Cloud Function that returns the ESA credentials to the Policy Agent. One use case is when reading the ESA credentials from a third-party password vault.&lt;/p>
&lt;p>Create the Cloud Function:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Create a new 2nd gen Cloud Function using any runtime.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>The Policy Agent does not provide an input payload.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>The Cloud Function must return a response according to the following schema:&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/agent/installation/esa_credentials/esa_secret_manager/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/agent/installation/esa_credentials/esa_secret_manager/</guid><description>&lt;h3 id="secret-manager">Secret Manager&lt;/h3>
&lt;p>Secret Manager is the recommended option for storing ESA credentials.&lt;/p>
&lt;p>Create ESA credentials secrets:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Log in to Google Account and select project where Protegrity service will be installed.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Go to &lt;strong>Security&lt;/strong> &amp;gt; &lt;strong>Secret Manager&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select &lt;strong>CREATE SECRET&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Specify the Secret Value:&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>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;#34;username&amp;#34;: &amp;#34;{esa_username}&amp;#34;, 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;#34;password&amp;#34;: &amp;#34;{esa_password}&amp;#34;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>Select &lt;strong>Create Secret&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Once the secret is created, you should see the secret screen opened. If not click on the secret name to see a screen with secret versions.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/agent/installation/esa_server/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/agent/installation/esa_server/</guid><description>&lt;h2 id="esa-server">ESA Server&lt;/h2>
&lt;p>Policy Agent function requires ESA server running and accessible from Agent Cloud Function on TCP port 8443. Make sure inbound connections on TCP:8443 are allowed for the network where ESA is hosted.&lt;/p>
&lt;p>Note down ESA IP address:&lt;/p>
&lt;p>&lt;strong>ESA IP Address (EsaIpAddress): ___________________&lt;/strong>&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/agent/installation/identifying_vpc_gcp/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/agent/installation/identifying_vpc_gcp/</guid><description>&lt;h2 id="identify-or-create-a-new-vpc">Identify or Create a new VPC&lt;/h2>
&lt;p>Google Cloud VPC is used to route traffic from Policy Agent Cloud Function to ESA. If your ESA is in a Google Cloud VPC, it is recommended to create a serverless VPC access and record its name:&lt;/p>
&lt;p>&lt;strong>google_vpc_access_connector_name: ___________________&lt;/strong>&lt;/p>


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

 For more information on serverless VPC connector, refer to the following link. &lt;a href="https://cloud.google.com/vpc/docs/configure-serverless-vpc-access">https://cloud.google.com/vpc/docs/configure-serverless-vpc-access&lt;/a>

&lt;/div>

&lt;p>If ESA is not on Google Cloud VPC, you can either create one or choose to let Terraform script to create one. The Terraform script will create the following elements:&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/agent/installation/install_with_terraform/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/agent/installation/install_with_terraform/</guid><description>&lt;h2 id="install-policy-agent-function-through-terraform-scripts">Install Policy Agent Function through Terraform Scripts&lt;/h2>
&lt;p>Agent Terraform scripts provided by Protegrity create a Cloud Function in your Google account. If you don&amp;rsquo;t specify the deployment bucket Terraform parameter, a new storage bucket will also be created. You can also create the following optional resources by specifying the corresponding parameters:&lt;/p>
&lt;ul>
&lt;li>Service account with IAM role&lt;/li>
&lt;li>VPC with NAT external IP&lt;/li>
&lt;li>VPC access connector&lt;/li>
&lt;/ul>
&lt;p>To install Policy Agent Function through Terraform:&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/agent/installation/test_installation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/agent/installation/test_installation/</guid><description>&lt;h2 id="test-agent-function-installation">Test Agent Function Installation&lt;/h2>
&lt;p>After configuration is complete, you can test the function.&lt;/p>
&lt;p>To test and run the Policy Agent Function:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>From the Google Cloud console, go to &lt;strong>Cloud Run Functions&lt;/strong> or &lt;strong>Cloud Run&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Click on the function you just deployed: &lt;strong>pty_agent_{deployment_id}&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Click &lt;strong>Test&lt;/strong> button at the top right section of the screen.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Scroll down to &lt;strong>CLI test command&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Copy and run the curl command to trigger the agent. Alternatively, use the option &lt;strong>Test in Cloud Shell&lt;/strong>.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/agent/installation/troubleshooting/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/agent/installation/troubleshooting/</guid><description>&lt;h2 id="troubleshooting">Troubleshooting&lt;/h2>
&lt;p>Configure additional logging:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Set &lt;strong>log_level&lt;/strong> Terraform variable on the Agent function to &lt;strong>DEBUG&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>In the GCP Logs Explorer, you can run the query below, replacing placeholders with your deployment id and project name.&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-gdscript3" data-lang="gdscript3">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">resource&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span>&lt;span style="color:#000">type&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;cloud_run_revision&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">resource&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span>&lt;span style="color:#000">labels&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span>&lt;span style="color:#000">service_name&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=~&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;pty-agent-&amp;lt;deploymentd-id&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">severity&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#000">ERROR&lt;/span> &lt;span style="color:#000">OR&lt;/span> &lt;span style="color:#000">textPayload&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=~&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;\[error\]&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ce5c00;font-weight:bold">-&lt;/span>&lt;span style="color:#000">logName&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;projects/&amp;lt;gcp-project-id&amp;gt;/logs/run.googleapis.com&lt;/span>&lt;span style="color:#4e9a06">%2F&lt;/span>&lt;span style="color:#4e9a06">requests&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>Expand each log entry for more details. Check for &lt;strong>jsonPayload&lt;/strong> &amp;gt; &lt;strong>exception&lt;/strong> to see more detailed error.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;table>&lt;thead>&lt;tr>&lt;th>
&lt;p>&lt;strong>Error message&lt;/strong>&lt;/p>
&lt;/th>&lt;th>
&lt;p>&lt;strong>Details&lt;/strong>&lt;/p>
&lt;/th>&lt;/tr>&lt;/thead>&lt;tbody>&lt;tr>&lt;td>
&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>iap_agent_gcp.cloud_functions_util.CloudFunctionsApiException: Resource &amp;#39;projects/&amp;lt;account&amp;gt;/locations/&amp;lt;region&amp;gt;/functions/protegrity-protect-&amp;lt;deployment-id&amp;gt;&amp;#39; was not found
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/td>&lt;td>
This error may indicate the following configuration issues:
&lt;ol>
&lt;li>The function name indicated in setting &lt;strong>gcp_protect_function_resource_name&lt;/strong> has been provided incorrectly, and thus cannot be found.&lt;/li>
&lt;li>&lt;strong>disable_deploy&lt;/strong> has been set, and a &lt;em>dummy&lt;/em> function has been entered to work around the &lt;strong>gcp_protect_function_resource_name&lt;/strong> requirement. The Agent deployment requires a deployed Protect or Log Forwarder Cloud Run function to operate.&lt;/li>
&lt;/ol>
&lt;/td>&lt;/tr>&lt;tr>&lt;td>
&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>[ERROR] policy_agent:Invalid GCP_PROTECT_FUNCTION_RESOURCE_NAME parameter value. Must be a comma separated list of Lambda Function names or ARNs.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/td>&lt;td>
This error may indicate the following configuration issues:
&lt;ol>
&lt;li>The setting &lt;strong>gcp_protect_function_resource_name&lt;/strong> is empty. The Agent deployment requires a deployed Protect or Log Forwarder Cloud Run function to operate, this setting may not be left empty.&lt;/li>
&lt;li>The list of function names provided to &lt;strong>gcp_protect_function_resource_name&lt;/strong> contains invalid function name or is not valid csv format.&lt;/li>
&lt;/ol>
&lt;/td>&lt;/tr>&lt;tr>&lt;td>
&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;font-weight:bold">[&lt;/span>&lt;span style="color:#000">ERROR&lt;/span>&lt;span style="color:#000;font-weight:bold">]&lt;/span> &lt;span style="color:#000">iap_agent_gcp&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span>&lt;span style="color:#000">cloud_functions_util&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">&amp;lt;&lt;/span>&lt;span style="color:#000">HttpError&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">403&lt;/span> &lt;span style="color:#000">when&lt;/span> &lt;span style="color:#000">requesting&lt;/span> &lt;span style="color:#000">https&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">//&lt;/span>&lt;span style="color:#000">cloudfunctions&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span>&lt;span style="color:#000">googleapis&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span>&lt;span style="color:#000">com&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">/&lt;/span>&lt;span style="color:#000">v2&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">/&lt;/span>&lt;span style="color:#000">projects&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">/&amp;lt;&lt;/span>&lt;span style="color:#000">account&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">&amp;gt;/&lt;/span>&lt;span style="color:#000">locations&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">/&amp;lt;&lt;/span>&lt;span style="color:#000">region&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">&amp;gt;/&lt;/span>&lt;span style="color:#000">functions&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">/&lt;/span>&lt;span style="color:#000">pty&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">-&lt;/span>&lt;span style="color:#000">protect&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">-&amp;lt;&lt;/span>&lt;span style="color:#000">deployment&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">-&lt;/span>&lt;span style="color:#000">id&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">&amp;gt;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#000">generateDo&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">wnloadUrl&lt;/span>&lt;span style="color:#a40000">?&lt;/span>&lt;span style="color:#000">alt&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#000">json&lt;/span> &lt;span style="color:#000">returned&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Permission &amp;#39;cloudfunctions.functions.sourceCodeGet&amp;#39; denied on &amp;#39;projects/&amp;lt;account&amp;gt;/locations/&amp;lt;region&amp;gt;/functions/&amp;lt;deployment-id&amp;gt;&amp;#39;&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span> &lt;span style="color:#000">Details&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Permission &amp;#39;cloudfunctions.functions.sourceCodeGet&amp;#39; denied on &amp;#39;projects/&amp;lt;account&amp;gt;/locations/&amp;lt;region&amp;gt;/functions/pty-protect-&amp;lt;deployment-id&amp;gt;&amp;#39;&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">&amp;gt;&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 style="color:#000">ERROR&lt;/span>&lt;span style="color:#000;font-weight:bold">]&lt;/span> &lt;span style="color:#000">policy_agent&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#000">Permission&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;cloudfunctions.functions.sourceCodeGet&amp;#39;&lt;/span> &lt;span style="color:#000">denied&lt;/span> &lt;span style="color:#000">on&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;projects/&amp;lt;account&amp;gt;/locations/&amp;lt;region&amp;gt;/functions/pty-protect-&amp;lt;deployment-id&amp;gt;&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&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:#000">iap_agent_gcp&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span>&lt;span style="color:#000">cloud_functions_util&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span>&lt;span style="color:#000">CloudFunctionsApiException&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#000">Permission&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;cloudfunctions.functions.sourceCodeGet&amp;#39;&lt;/span> &lt;span style="color:#000">denied&lt;/span> &lt;span style="color:#000">on&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;projects/&amp;lt;account&amp;gt;/locations/&amp;lt;region&amp;gt;/functions/pty-protect-&amp;lt;deployment-id&amp;gt;&amp;#39;&lt;/span> 
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/td>&lt;td>
&lt;p>Indicates the Agent Cloud Run function&amp;rsquo;s identity does not have permissions to sourceCodeGet for Protect/Log Forwarder function(s) provided to the &lt;strong>gcp_protect_function_resource_name&lt;/strong> configuration.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/appendix/audit_log_recovery_alternative_gcp/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/appendix/audit_log_recovery_alternative_gcp/</guid><description>&lt;h2 id="recovering-logs-in-dead-letter-topic-alternative">Recovering Logs in Dead Letter Topic (Alternative)&lt;/h2>
&lt;p>When the recommended method of for recovery described in &lt;a href="https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/appendix/audit_log_recovery_alternative_gcp/#recovering-logs-in-dead-letter-topic-recommended">Recovering Logs in Dead Letter Topic (Recommended)&lt;/a> is not an option, you may use the existing Log Forwarder to reprocess undelivered logs.&lt;/p>
&lt;p>&lt;img src="https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/api/appendix/dead_letter_queue_audit_log_replay_existing_lf.png" alt="Audit log recovery using existing log forwarder installation" title="The existing Log Forwarder subscribes to dead letter pub/sub (DLQ 1) and logs are sent to ESA. Any additional undeliverable logs are placed back into the same pub/sub topic Log Forwarder is subscribed to (DLQ 1) for processing (creating a loop).">&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/appendix/audit_log_recovery_intro/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/appendix/audit_log_recovery_intro/</guid><description>&lt;p>Protegrity Cloud Protect Log Forwarder installation provides a solution to recover undelivered audit logs. Reasons for undeliverable logs may include:&lt;/p>
&lt;ul>
&lt;li>Changes to network configuration in ESA or cloud provider (VPC, firewall, certificate rotation, service user credentials)&lt;/li>
&lt;li>Log Forwarder IAM Service Account permissions&lt;/li>
&lt;li>Log Forwarder Cloud Run Function configuration&lt;/li>
&lt;li>Disruption in cloud provider service&lt;/li>
&lt;/ul></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/appendix/dead_letter_queue_pubsub_architechture/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/appendix/dead_letter_queue_pubsub_architechture/</guid><description>&lt;h2 id="log-forwarder-dead-letter-pubsub-architecture">Log Forwarder Dead Letter Pub/Sub Architecture&lt;/h2>
&lt;p>Log Forwarder is triggered by pub/sub events generated by Protect Functions. If Log Forwarder is unable to reach ESA to deliver the logs, they are pushed to a dead letter pub/sub topic. Dead letter pub/sub topic is created when installing the Log Forwarder with the service installation script. See &lt;a href="https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/log-forwarder/installation/install_forwarder_with_terraform/">Install Log Forwarder Function via Terraform Scripts&lt;/a> for dead letter topic configuration options and naming conventions.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/appendix/monitoring_undelivered_logs/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/appendix/monitoring_undelivered_logs/</guid><description>&lt;h2 id="monitoring-undelivered-logs">Monitoring Undelivered Logs&lt;/h2>
&lt;p>Logs pushed to the dead letter pub/sub topic will be purged and no longer recoverable when specified &lt;strong>dlq_topic_message_retention_duration&lt;/strong> has been reached. Monitoring the dead letter topic is recommended to ensure timely recovery of audit messages before they are permanently lost. Consult the &lt;a href="https://cloud.google.com/monitoring/alerts">GCP monitoring alerts documentation&lt;/a> for setting up alerts based on pub/sub topic metrics.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/appendix/recovering_logs_recommended/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/appendix/recovering_logs_recommended/</guid><description>&lt;h2 id="recovering-logs-in-dead-letter-topic-recommended">Recovering Logs in Dead Letter Topic (Recommended)&lt;/h2>
&lt;p>Protegrity recommends creation of an additional Log Forwarder installation in the case where logs are not delivered to ESA, as described in &lt;a href="https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/appendix/recovering_logs_recommended/#log-forwarder-dead-letter-pubsub-architecture">Log Forwarder Dead Letter Pub/Sub Architecture&lt;/a>.&lt;/p>
&lt;p>&lt;img src="https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/api/appendix/dead_letter_queue_audit_log_replay_new_lf.png" alt="Audit log recovery using new log forwarder installation" title="New Log Forwarder service (Log Forwarder 2) subscribes to dead letter pub/sub topic (DLQ1) and queued logs are sent to ESA. Any additional undeliverable logs are sent to a dead letter pub/sub topic (DLQ2) of the Log Forwarder (Log Forwarder 2) service.">&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/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/gcp/common/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 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/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/log-forwarder/installation/certificates_on_esa/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/log-forwarder/installation/certificates_on_esa/</guid><description>&lt;h2 id="certificates-on-esa">Certificates on ESA&lt;/h2>
&lt;p>By default, ESA is configured with self-signed certificates, which can only be validated using self-signed CA certificate supplied in Log Forwarder configuration.&lt;/p>


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

 Certificate Validation can be bypassed for testing purposes, see section: &lt;a href="https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/log-forwarder/installation/certificates_on_esa/#install-log-forwarder-function-via-terraform-scripts">Install Log Forwarder via Terraform&lt;/a>

&lt;/div>

&lt;p>In case ESA is configured with publicly signed certificates, this section can be skipped since the Log Forwarder will use public CA to validate ESA certificates.&lt;/p>
&lt;p>To obtain self-signed CA certificate from ESA:&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/log-forwarder/installation/creating_log_forwarder_service_account/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/log-forwarder/installation/creating_log_forwarder_service_account/</guid><description>&lt;h2 id="create-log-forwarder-service-account">Create Log Forwarder Service Account&lt;/h2>
&lt;p>To create Log Forwarder Service Account:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Log in to Google Account and select the project where Protegrity service will be installed.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Navigate to &lt;strong>IAM &amp;amp; Admin&lt;/strong> &amp;gt; &lt;strong>Service Accounts&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select &lt;strong>CREATE SERVICE ACCOUNT&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Specify service account name and description.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select &lt;strong>Create and Continue&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>In the next step, click &lt;strong>Select Role&lt;/strong>. Then select the following roles:&lt;/p>
&lt;ul>
&lt;li>Cloud KMS CryptoKey Decrypter&lt;/li>
&lt;li>Pub/Sub Publisher&lt;/li>
&lt;li>Secret Manager Secret Accessor&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>Click &lt;strong>Done&lt;/strong>.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/log-forwarder/installation/creating_serviceaccount_for_pubsub/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/log-forwarder/installation/creating_serviceaccount_for_pubsub/</guid><description>&lt;h2 id="create-service-account-for-forwarder-pubsub">Create Service Account For Forwarder Pub/Sub&lt;/h2>
&lt;p>Pub/Sub service requires Cloud Run Invoker permissions in order to be able to send messages to the Forwarder function.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Log in to Google Account and select the project where Protegrity forwarder will be installed.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Navigate to &lt;strong>IAM &amp;amp; Admin&lt;/strong> &amp;gt; &lt;strong>Service Accounts&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select &lt;strong>CREATE SERVICE ACCOUNT&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Specify service account name and description.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select &lt;strong>Create and Continue&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>In the next step, click &lt;strong>Select Role&lt;/strong>. Then select &lt;strong>Cloud Run Invoker&lt;/strong>.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/log-forwarder/installation/esa_audit_store_configuration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/log-forwarder/installation/esa_audit_store_configuration/</guid><description>&lt;h2 id="esa-audit-store-configuration">ESA Audit Store Configuration&lt;/h2>
&lt;p>ESA server is required as the recipient of audit logs. Verify the information below to ensure ESA is accessible and configured properly.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>ESA server running and accessible on TCP port 9200.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Audit Store service is configured and running on ESA. For information related to ESA Audit Store configuration, refer to &lt;em>Audit Store Guide&lt;/em>.&lt;/p>
&lt;/li>
&lt;/ol></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/log-forwarder/installation/esa_auth_cert/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/log-forwarder/installation/esa_auth_cert/</guid><description>&lt;h1 id="certificate-authentication">Certificate Authentication&lt;/h1>
&lt;p>Certificate authentication uses a public certificate and a private certificate key. Consult &lt;em>Audit Store Guide&lt;/em> on how to set up certificate authentication on ESA and how to download certificate and certificate key. Certificate contains no sensitive information. Certificate key contains private information and for this reason is stored in GCP Secret Manager. Both certificate and certificate key must be converted to single-line values using code similar to the following Powershell code snippet:&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/log-forwarder/installation/esa_authentication/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/log-forwarder/installation/esa_authentication/</guid><description>&lt;h2 id="esa-authentication">ESA Authentication&lt;/h2>
&lt;p>Audit Log Forwarder must authenticate with ESA using certificate-based authentication with client certificate and certificate key.
Download the following certificates from the &lt;strong>/etc/ksa/certificates/plug&lt;/strong> directory of the ESA:&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>File Name&lt;/th>
 &lt;th>Description&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>client.key&lt;/td>
 &lt;td>Client certificate key&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>client.pem&lt;/td>
 &lt;td>Client certificate (PEM)&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>Both certificate and certificate key must be converted to single-line values using code similar to the following examples.&lt;/p>
&lt;p>&lt;strong>Client certificate (client.pem):&lt;/strong>&lt;/p>



&lt;ul class="nav nav-tabs" id="tabs-0" role="tablist">
 &lt;li class="nav-item">
 &lt;button class="nav-link active"
 id="tabs-00-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-00" role="tab"
 data-td-tp-persist="powershell" aria-controls="tabs-00-00" aria-selected="true">
 Powershell
 &lt;/button>
 &lt;/li>&lt;li class="nav-item">
 &lt;button class="nav-link"
 id="tabs-00-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-01" role="tab"
 data-td-tp-persist="bash" aria-controls="tabs-00-01" aria-selected="false">
 Bash
 &lt;/button>
 &lt;/li>
&lt;/ul>

&lt;div class="tab-content" id="tabs-0-content">
 &lt;div class="tab-body tab-pane fade show active"
 id="tabs-00-00" role="tabpanel" aria-labelled-by="tabs-00-00-tab" tabindex="0">
 &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>$folder = &amp;#39;C:\Temp&amp;#39;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cd $folder
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>(Get-Content &amp;#34;$folder\client.pem&amp;#34;) -join &amp;#39;\n&amp;#39; | Set-Content &amp;#34;$folder\one-liner-client.pem&amp;#34;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cat &amp;#34;$folder\one-liner-client.pem&amp;#34;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
 &lt;/div>
 &lt;div class="tab-body tab-pane fade"
 id="tabs-00-01" role="tabpanel" aria-labelled-by="tabs-00-01-tab" tabindex="0">
 &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>folder=&amp;#34;/tmp&amp;#34;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cd &amp;#34;$folder&amp;#34;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>awk &amp;#39;NF {printf &amp;#34;%s\\n&amp;#34;,$0}&amp;#39; &amp;#34;client.pem&amp;#34; &amp;gt; &amp;#34;one-liner-client.pem&amp;#34;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cat &amp;#34;one-liner-client.pem&amp;#34;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
 &lt;/div>
&lt;/div>

&lt;p>&lt;strong>Client certificate key (client.key):&lt;/strong>&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/log-forwarder/installation/install_forwarder_with_terraform/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/log-forwarder/installation/install_forwarder_with_terraform/</guid><description>&lt;h2 id="install-log-forwarder-function-via-terraform-scripts">Install Log Forwarder Function via Terraform Scripts&lt;/h2>
&lt;p>Resources created with Terraform scripts include Audit Log Forwarder Cloud Functions Service and Pub/Sub topic. If you don&amp;rsquo;t specify the deployment bucket Terraform parameter, a new storage bucket will also be created. You can optionally choose to create a new service account with custom IAM role.&lt;/p>
&lt;p>To install using Terraform:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>From the command shell move to directory where you downloaded Protegrity installation bundle.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/log-forwarder/installation/preconfiguration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/log-forwarder/installation/preconfiguration/</guid><description>&lt;h3 id="google-cloud-project">Google Cloud Project&lt;/h3>
&lt;p>Identify or create a new Google Cloud Project where the Protegrity solution will be installed. It is recommended to create a new project. This provides greater security controls and avoids conflicts with other applications that might impact regional account limits. An individual with the &lt;strong>Owner&lt;/strong> role will be required for some of the subsequent installations.&lt;/p>
&lt;p>&lt;strong>Google Project ID: ___________________&lt;/strong>&lt;/p>
&lt;p>&lt;strong>Google Project Number: ___________________&lt;/strong>&lt;/p>
&lt;p>&lt;strong>Google Cloud Region: ___________________&lt;/strong>&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/log-forwarder/installation/preparation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/log-forwarder/installation/preparation/</guid><description>&lt;h2 id="preparation">Preparation&lt;/h2>
&lt;ol>
&lt;li>
&lt;p>Ensure that all the steps in &lt;a href="../preconfiguration">Google Cloud Project&lt;/a> are performed.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Log in to the Google Cloud account where Protegrity will be installed.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select the project.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Ensure that you have access to shell command on your computer or Cloud Shell with Terraform CLI v0.14 or higher installed.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Ensure that the Terraform scripts provided by Protegrity are available on your local computer.&lt;/p>
&lt;/li>
&lt;/ol></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/log-forwarder/installation/pubsub_log_output/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/log-forwarder/installation/pubsub_log_output/</guid><description>&lt;h2 id="protect-function-pubsub-log-output">Protect Function Pub/Sub Log Output&lt;/h2>
&lt;p>Protect function must be configured to output audit logs to Pub/Sub topic.&lt;/p>
&lt;p>To configure Protect function audit log output:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Go to Protect function Terraform deployment.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Navigate to pty-protect-gcp/main.tf.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Set Terraform variable pty_log_output=&amp;ldquo;pub_sub&amp;rdquo;.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Set Terraform variable pty_pub_sub_topic to log forwarder Pub/Sub topic.&lt;/p>


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

 You can obtain the topic resource name from Log Forwarder Terraform output: &lt;strong>audit_log_topic&lt;/strong>.

&lt;/div>

&lt;/li>
&lt;li>
&lt;p>Run &lt;strong>terraform apply&lt;/strong>.&lt;/p>
&lt;/li>
&lt;/ol></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/log-forwarder/installation/secret_manager/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/log-forwarder/installation/secret_manager/</guid><description>&lt;h2 id="configure-esa-secrets-in-gcp-secret-manager">Configure ESA Secrets In GCP Secret Manager&lt;/h2>
&lt;p>Audit Log Forwarder Function uses GCP Secret Manager to store ESA Audit Store credentials used during authentication.&lt;/p>
&lt;p>For information on how to configure basic and certificate authentication for Audit Store on ESA refer to &lt;em>Audit Store Guide&lt;/em>.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Log in to Google Account and select project where Protegrity service will be installed.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Go to &lt;strong>Security&lt;/strong> &amp;gt; &lt;strong>Secret Manager&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select &lt;strong>CREATE SECRET&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Specify the Secret Value:&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/log-forwarder/installation/storage/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/log-forwarder/installation/storage/</guid><description>&lt;h1 id="google-cloud-storage">Google Cloud Storage&lt;/h1>
&lt;p>Cloud Storage buckets are required for the Gen 2 Cloud Function sources, the Terraform backend, and the deployment of the Protegrity installation artifacts. It is recommended that you create 3 separate buckets to separate files used for different purposes. If you cannot create 3 separate buckets, you may reuse a bucket for multiple purposes.&lt;/p>
&lt;p>Create the buckets:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Run the cloud command below to enable the Google Storage Transfer API.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/log-forwarder/installation/test_forwarder_func_inst_gcp/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/log-forwarder/installation/test_forwarder_func_inst_gcp/</guid><description>&lt;h2 id="test-log-forwarder-function-installation">Test Log Forwarder Function Installation&lt;/h2>
&lt;p>Before continuing with next steps, you can verify whether Log Forwarder Function is installed correctly. This step is optional and can be skipped.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Below you can find example CURL command to test your function.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Before you can execute it, test if you can obtain temporary authentication token. Run the &lt;strong>gcloud auth login&lt;/strong> and then &lt;strong>gcloud auth print-identity-token&lt;/strong> commands. The logged in gcloud user must have the &lt;strong>Cloud Run Invoker&lt;/strong> permissions. Continue to the next step if the command succeeds and prints the token.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/log-forwarder/installation/troubleshooting/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/log-forwarder/installation/troubleshooting/</guid><description>&lt;h2 id="troubleshooting">Troubleshooting&lt;/h2>
&lt;p>Configure additional logging:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Set &lt;strong>min_log_level&lt;/strong> Terraform variable on both Protect function and Log Forwarder function to &lt;strong>config&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>In the GCP Logs Explorer, you can run the query below, replacing placeholders with your deployment id and project name.&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-gdscript3" data-lang="gdscript3">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">resource&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span>&lt;span style="color:#000">type&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;cloud_run_revision&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">resource&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span>&lt;span style="color:#000">labels&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span>&lt;span style="color:#000">service_name&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=~&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;pty-(protect|forwarder)-&amp;lt;deploymentd-id&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">severity&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#000">ERROR&lt;/span> &lt;span style="color:#000">OR&lt;/span> &lt;span style="color:#000">textPayload&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=~&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;\[error\]&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ce5c00;font-weight:bold">-&lt;/span>&lt;span style="color:#000">logName&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;projects/&amp;lt;gcp-project-id&amp;gt;/logs/run.googleapis.com&lt;/span>&lt;span style="color:#4e9a06">%2F&lt;/span>&lt;span style="color:#4e9a06">requests&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>Expand each log entry for more details. Check for &lt;strong>jsonPayload&lt;/strong> &amp;gt; &lt;strong>exception&lt;/strong> to see more detailed error.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;table>&lt;thead>&lt;tr>&lt;th>
&lt;p>Error message&lt;/p>
&lt;/th>&lt;th>
&lt;p>Details&lt;/p>
&lt;/th>&lt;/tr>&lt;/thead>&lt;tbody>&lt;tr>&lt;td>
&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>Pub/Sub configuration error.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/td>&lt;td>
&lt;ol>
&lt;li>
&lt;p>Indicates problems with Pub/Sub service configuration/availability.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/log-forwarder/installation/turnon_cpu_always_allocated_feature/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/log-forwarder/installation/turnon_cpu_always_allocated_feature/</guid><description>&lt;h2 id="turn-on-instance-based-billing">Turn on Instance-based billing.&lt;/h2>
&lt;p>Both Protect and Log Forwarder functions must run for a short period of time after all requests are handled. In order for the GCP Cloud Run service to allow that, the &lt;em>Instance-based&lt;/em> billing feature must be enabled for both function deployments.&lt;/p>
&lt;p>To enable Instance-based billing:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Log in to Google Account and select the project where Protegrity Cloud Run Function was installed.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Navigate to &lt;strong>Cloud Run&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Click on the Cloud Function name.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/log-forwarder/installation/update_protect_serviceaccount_with_pubsub/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/log-forwarder/installation/update_protect_serviceaccount_with_pubsub/</guid><description>&lt;h2 id="grant-pubsub-publisher-permission-to-the-protect-function-service-account">Grant Pub/Sub Publisher Permission to the Protect Function Service Account&lt;/h2>
&lt;p>Protect function requires permissions to publish audit log messages to Pub/Sub.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Log in to Google Account and select the project where Protegrity service will be installed.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Navigate to &lt;strong>IAM &amp;amp; Admin&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Search for protector function service account email recorded in protect service installation step.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select &lt;strong>Edit principal&lt;/strong> pencil icon.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select &lt;strong>ADD ANOTHER ROLE&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select &lt;strong>Pub/Sub Publisher&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Click &lt;strong>Save&lt;/strong>.&lt;/p>
&lt;/li>
&lt;/ol></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/log-forwarder/installation/vpc_configuration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/log-forwarder/installation/vpc_configuration/</guid><description>&lt;h2 id="vpc-configuration">VPC configuration&lt;/h2>
&lt;p>Similar to Policy Agent Function, log forwarder function requires Google Cloud VPC to route traffic from the function to ESA. Review the VPC configuration steps for agent in section &lt;strong>Identify or Create a new VPC&lt;/strong>. Same VPC connector as the policy agent can be used. Note down VPC connector name:&lt;/p>
&lt;p>&lt;strong>google_vpc_access_connector_name: ___________________&lt;/strong>&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/performance/log_forwarder/log_forwarder_performance/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/performance/log_forwarder/log_forwarder_performance/</guid><description>&lt;h2 id="log-forwarder-performance">Log Forwarder Performance&lt;/h2>
&lt;p>Log forwarder architecture is optimized to minimize the amount of connections and reduce the overall network bandwidth required to send audit logs to ESA. This is achieved with batching and aggregation taking place on two levels. The first level is in protector function instances, where audit logs from consecutive requests to an instance are batched and aggregated. The second level of batching and aggregation takes place in the log forwarder function before audit logs are forwarded to ESA. This section shows how to configure the deployment to accommodate different patterns of anticipated audit log stream. It also shows how to monitor deployment resources to detect problems before audit records are lost.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/performance/performance_considerations/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/performance/performance_considerations/</guid><description>&lt;h2 id="performance-considerations">Performance Considerations&lt;/h2>
&lt;p>The following factors may affect performance benchmarks:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Cold startup:&lt;/strong> Cloud Function spends additional time on the initial invocation to decrypt and load the policy into memory. This time can vary depending on the policy size. Once the Function is initialized, subsequent “warm executions” should process quickly.&lt;/li>
&lt;li>&lt;strong>Size of policy:&lt;/strong> The size of the policy impacts cold start performance. Larger policies take more time to initialize.&lt;/li>
&lt;li>&lt;strong>Cloud Function memory:&lt;/strong> GCP provides more virtual cores based on the memory configuration. The initial configuration of 2048 MB provides a good tradeoff between performance and cost with the benchmarked policy. Memory can be increased to optimize for your individual cases.&lt;/li>
&lt;li>&lt;strong>Number of security operations (protect or unprotect)&lt;/strong>.&lt;/li>
&lt;li>&lt;strong>Cloud Function max instances and concurrency quota:&lt;/strong> The instance limit affects how functions are scaled. By default the limit is not set to allow handling any traffic pattern. The instance limit can be set to prevent abnormally high request levels. Cloud Functions are also subject to maximum quota for concurrent invocations and request rate.&lt;/li>
&lt;li>&lt;strong>Size of data element:&lt;/strong> Operations on larger text consume time.&lt;/li>
&lt;/ul></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/ppc/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/common/ppc/install_with_ppc/</guid><description>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="../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/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/preconfiguration/cloud_function_service_accounts/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/preconfiguration/cloud_function_service_accounts/</guid><description>&lt;h2 id="cloud-functions-service-accounts">Cloud Functions Service Accounts&lt;/h2>
&lt;p>Cloud Functions use the service accounts created in this deployment. You can create Service accounts manually or use the Protegrity Terraform installation script to create one. Each service account requires specific permissions, which must be granted through IAM roles. Run the following steps to create service accounts and configure the required IAM access. If you use Terraform scripts, skip these steps.&lt;/p>
&lt;p>

 




	






 






 &lt;h3 id="agent-function-iam-role">Agent Function IAM Role&lt;/h3>
&lt;p>To create Agent Function IAM Role:&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/preconfiguration/gcp_account/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/preconfiguration/gcp_account/</guid><description>&lt;h2 id="google-cloud-project">Google Cloud Project&lt;/h2>
&lt;p>Identify or create a new Google Cloud Project where the Protegrity solution will be installed. It is recommended to create a new project. This provides greater security controls and avoids conflicts with other applications that might impact regional account limits. An individual with the &lt;strong>Owner&lt;/strong> role will be required for some of the subsequent installations.&lt;/p>
&lt;p>&lt;strong>Google Project ID: ___________________&lt;/strong>&lt;/p>
&lt;p>&lt;strong>Google Project Number: ___________________&lt;/strong>&lt;/p>
&lt;p>&lt;strong>Google Cloud Region: ___________________&lt;/strong>&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/preconfiguration/key_management_service/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/preconfiguration/key_management_service/</guid><description>&lt;h2 id="key-management-service">Key Management Service&lt;/h2>
&lt;p>The Google Cloud Key Management Service (KMS) provides Protegrity Serverless solution the ability to encrypt and decrypt the Protegrity Security Policy.&lt;/p>
&lt;p>To create KMS Key Ring and Asymmetric Encryption Master Key:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Log in to Google Account and select project where Protegrity service will be installed.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Navigate to &lt;strong>Security&lt;/strong> &amp;gt; &lt;strong>Key Management&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select &lt;strong>Create key ring&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Specify key ring name. For example, &lt;strong>protegrity-policy-keyring&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>select &lt;strong>Key ring location&lt;/strong> which corresponds to the region where Protegrity solution will be installed.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/preconfiguration/service-accounts/agent_function_iam_role/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/preconfiguration/service-accounts/agent_function_iam_role/</guid><description>&lt;h3 id="agent-function-iam-role">Agent Function IAM Role&lt;/h3>
&lt;p>To create Agent Function IAM Role:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Log in to Google Account and select project where Protegrity service will be installed.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Navigate to &lt;strong>IAM &amp;amp; Admin&lt;/strong> &amp;gt; &lt;strong>Roles&lt;/strong>, Select &lt;strong>CREATE ROLE&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Specify role name and description.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select &lt;strong>ADD PERMISSIONS&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select the following permissions:&lt;/p>
&lt;ul>
&lt;li>cloudkms.cryptoKeyVersions.useToEncrypt&lt;/li>
&lt;li>cloudkms.cryptoKeyVersions.viewPublicKey&lt;/li>
&lt;li>secretmanager.versions.access&lt;/li>
&lt;li>storage.objects.get&lt;/li>
&lt;li>storage.objects.create&lt;/li>
&lt;li>storage.objects.delete&lt;/li>
&lt;li>storage.objects.list&lt;/li>
&lt;li>storage.objects.update&lt;/li>
&lt;li>storage.buckets.get&lt;/li>
&lt;li>cloudfunctions.functions.get&lt;/li>
&lt;li>cloudfunctions.functions.update&lt;/li>
&lt;li>cloudfunctions.functions.sourceCodeGet&lt;/li>
&lt;li>cloudfunctions.functions.sourceCodeSet&lt;/li>
&lt;li>iam.serviceAccounts.actAs&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>Click &lt;strong>Add&lt;/strong> and then &lt;strong>Create&lt;/strong>.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>Alternatively, you can run the following command from the Cloud Shell Terminal.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/preconfiguration/service-accounts/agent_service_account/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/preconfiguration/service-accounts/agent_service_account/</guid><description>&lt;h3 id="agent-service-account">Agent Service Account&lt;/h3>
&lt;p>To create Agent Service Account:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Log in to Google Account and select project where Protegrity service will be installed.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Navigate to &lt;strong>IAM &amp;amp; Admin&lt;/strong> &amp;gt; &lt;strong>Service Accounts&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select &lt;strong>CREATE SERVICE ACCOUNT&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Specify service account name and description.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select &lt;strong>Create and Continue&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>In the next step, click &lt;strong>Select Role&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select &lt;strong>Custom&lt;/strong> and select the role created above .&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Click &lt;strong>Done&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Once the service account is created, the screen should open on the service account. If the screen does not appear, refresh the page with the service account list and select the service account created.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/preconfiguration/service-accounts/protect_function_iam_role/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/preconfiguration/service-accounts/protect_function_iam_role/</guid><description>&lt;h3 id="protect-function-iam-role">Protect Function IAM role&lt;/h3>
&lt;p>To create Protect Function IAM role:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Log in to Google Account and select project where Protegrity service will be installed.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Navigate to &lt;strong>IAM &amp;amp; Admin&lt;/strong> &amp;gt; &lt;strong>Roles&lt;/strong>, Select &lt;strong>CREATE ROLE&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Specify role name and description.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select &lt;strong>ADD PERMISSIONS&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select the &lt;strong>cloudkms.cryptoKeyVersions.useToDecrypt&lt;/strong> permission.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Click &lt;strong>Add&lt;/strong> and then &lt;strong>Create&lt;/strong>.&lt;/p>
&lt;/li>
&lt;/ol></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/preconfiguration/service-accounts/protect_service_account/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/preconfiguration/service-accounts/protect_service_account/</guid><description>&lt;h3 id="protect-service-account">Protect Service Account&lt;/h3>
&lt;p>To create Protect Service Account:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Log in to Google Account and select the project where Protegrity service will be installed.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Navigate to &lt;strong>IAM &amp;amp; Admin&lt;/strong> &amp;gt; &lt;strong>Service Accounts&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select &lt;strong>CREATE SERVICE ACCOUNT&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Specify service account name and description.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select &lt;strong>Create and Continue&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>In the next step, click &lt;strong>Select Role&lt;/strong>. Then select &lt;strong>Custom&lt;/strong> and select the role created above .&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Click &lt;strong>Done&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Once the service account is created, the screen should open on the service account. If the screen does not appear, refresh the page with the service account list and select the service account created.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/preconfiguration/storage_account/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/preconfiguration/storage_account/</guid><description>&lt;h2 id="google-cloud-storage">Google Cloud Storage&lt;/h2>
&lt;p>Cloud Storage buckets are required for the Gen 2 Cloud Function sources, the Terraform backend, and the deployment of the Protegrity installation artifacts. It is recommended that you create 3 separate buckets to separate files used for different purposes. If you cannot create 3 separate buckets, you may reuse a bucket for multiple purposes.&lt;/p>
&lt;p>Create the buckets:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Run the cloud command below to enable the Google Storage Transfer API.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/protector/gcp_services/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/protector/gcp_services/</guid><description>&lt;h2 id="google-cloud-services">Google Cloud Services&lt;/h2>
&lt;p>The following table describes the Google Cloud services that may a part of your Protegrity installation.&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Service&lt;/th>
 &lt;th>Description&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>Cloud Run Functions&lt;/td>
 &lt;td>Provides serverless compute for Protegrity protection operations and the ESA integration to fetch policy updates.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>API Gateway&lt;/td>
 &lt;td>Provides the end-point and access control (Required for Snowflake only).&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Key Management Service&lt;/td>
 &lt;td>Provides cryptographic keys for envelope encryption/decryption of the policy.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Secret Manager Service&lt;/td>
 &lt;td>Stores secrets required during deployment, e.g., ESA credentials.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Cloud Storage Service&lt;/td>
 &lt;td>Storage location for the encrypted ESA policy package.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Identity and Access Management&lt;/td>
 &lt;td>Enforces access policies for deployed resources.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Cloud Logging Service&lt;/td>
 &lt;td>Application and audit logs, performance monitoring, and alerts.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Cloud VPC&lt;/td>
 &lt;td>Required for securing network access to On-Prem or cloud-based ESA.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Pub/Sub&lt;/td>
 &lt;td>Provides a messaging service when forwarding audit logs to ESA is enabled.&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/protector/preparation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/protector/preparation/</guid><description>&lt;h2 id="preparation">Preparation&lt;/h2>
&lt;ol>
&lt;li>
&lt;p>Ensure that all the steps in &lt;a href="https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/api/installation/preconfiguration/">pre-configuration&lt;/a> are performed.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Log in to the Google Cloud account where Protegrity will be installed.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select the project.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Ensure that you have access to shell command on your computer or Cloud Shell with Terraform CLI v0.14 or higher installed.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Ensure that the Terraform scripts provided by Protegrity are available on your local computer.&lt;/p>
&lt;/li>
&lt;/ol></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/upgrading/decommission_previous_log_forwarder_version/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/upgrading/decommission_previous_log_forwarder_version/</guid><description>&lt;h2 id="decommission-previous-log-forwarder-version">Decommission Previous Log Forwarder Version&lt;/h2>
&lt;p>Verify audit log transmission from old version is complete and remove installation.
Before you begin&lt;/p>


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

 Destroying previous Log Forwarder terraform environment may result in loss of audit records. Only proceed after carefully
validating that both audit topic and audit dead letter topic are no longer receiving messages from protectors AND do not contain
unacknowledged messages.

&lt;/div>

&lt;p>To remove the previous installation:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Navigate to the previous Log Forwarder installation&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/upgrading/deploy_protect_function_changes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/upgrading/deploy_protect_function_changes/</guid><description>&lt;h2 id="deploy-protect-function-changes">Deploy Protect Function Changes&lt;/h2>
&lt;p>After the upgrade is tested, it can be deployed to production Protect Cloud Function. Follow the instructions below to run terraform and deploy the upgrade.&lt;/p>
&lt;ol>
&lt;li>


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

 If you are upgrading protector to one of these versions: [3.2.2, 3.2.3], in the main.tf file set the variable pty_pub_sub_topic to
log forwarder Pub/Sub topic. You can obtain the topic resource name from the Terraform output: audit_log_topic for the newly
deployed Log Forwarder.

&lt;/div>

&lt;/li>
&lt;li>
&lt;p>In the main.tf file set &lt;strong>upgrade_step&lt;/strong> variable to &amp;ldquo;deploy_changes&amp;rdquo;. Apply Terraform changes.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/upgrading/download_files/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/upgrading/download_files/</guid><description>&lt;h2 id="upgrading-to-the-latest-version">Upgrading to the Latest Version&lt;/h2>
&lt;p>You can download the latest version of the deployment package from &lt;a href="https://my.protegrity.com">https://my.protegrity.com&lt;/a>. Navigate to &lt;strong>Data Protection&lt;/strong> &amp;gt; &lt;strong>Cloud Protect&lt;/strong> to download the latest version.&lt;/p>
&lt;p>Perform the following steps to upgrade the &lt;strong>Policy Agent Function&lt;/strong> and &lt;strong>Protect Function&lt;/strong> separately.&lt;/p>


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

 If new versions are available for both Agent and Protect Lambdas, Agent Lambda must be upgraded first.

&lt;/div></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/upgrading/finalize_upgrade/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/upgrading/finalize_upgrade/</guid><description>&lt;h2 id="reset-agent-environment-variable-for-protect-function-resource-name">Reset Agent environment variable for protect function resource name&lt;/h2>
&lt;p>If the protect function was upgraded, function resource name environment variable must be updated to the original value.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Reinstate the production function resource name in policy agent configuration. See the example below (replace placeholder with values recorded above):&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>GCP_PROTECT_FUNCTION_RESOURCE_NAME=&amp;lt;protect_function_resource_name&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>Run the Terraform apply command to apply the change.&lt;/p>
&lt;/li>
&lt;/ol></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/upgrading/finalize_upgrade_enable_scheduler/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/upgrading/finalize_upgrade_enable_scheduler/</guid><description>&lt;h2 id="resume-protegrity-agent-function-scheduled-job">Resume Protegrity Agent Function Scheduled Job&lt;/h2>
&lt;p>If the Agent Function Scheduled Job was paused at the beginning of the upgrade process, you must resume it. Follow the steps below to resume the Policy Agent Scheduled Job.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Navigate back to Cloud Scheduler.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select checkbox next to Protegrity Agent Function, e.g. pty-agent-&amp;lt;deployment-id&amp;gt;&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Click &lt;strong>Resume&lt;/strong> button placed on the top action panel.&lt;/p>
&lt;/li>
&lt;/ol></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/upgrading/install_new_log_forwarder_function/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/upgrading/install_new_log_forwarder_function/</guid><description>&lt;h2 id="install-new-log-forwarder-function">Install New Log Forwarder Function&lt;/h2>
&lt;p>Upgrade of log forwarder component requires new Log Forwarder installation.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>In the newly downloaded Protegrity Log Forwarder function Terraform directory, open the &lt;strong>main.tf&lt;/strong> configuration file.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Populate Terraform variables values, using your current Log Forwarder Terraform main.tf file as a guide.&lt;/p>


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

 Following values must be changed to avoid conflicts with the current Log Forwarder installation. Recreation of resources
when deployment_id is not changed may result in loss of audit logs.

&lt;/div>

&lt;p>a. &lt;strong>prefix&lt;/strong> in the backend configuration&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/upgrading/load_policy_to_log_forwarder_function/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/upgrading/load_policy_to_log_forwarder_function/</guid><description>&lt;h2 id="load-policy-to-log-forwarder-function">Load Policy to Log Forwarder Function&lt;/h2>
&lt;p>Modify Agent Cloud Function policy target with the new log forwarder function resource name. Run the Agent Function to load
policy.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Open the main.tf file for Policy Agent.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Replace the current log forwarder function name in &lt;strong>gcp_protect_function_resource_name&lt;/strong> variable (if it exists, otherwise
add). Use the new Log Forwarder &lt;strong>forwarder_function_resource_name&lt;/strong> recorded in previous steps.&lt;/p>
&lt;/li>
&lt;li>


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

 Failure to complete this step may result in a faulty upgrade, where the new function code is not used.

&lt;/div>

&lt;p>Cloud API on GCP v3.2.3 Upgrading to the Latest Version
If the value for &lt;strong>gcp_policy_version_object_key&lt;/strong> has not been updated as part of any other component upgrade for the new
release, replace &lt;strong>gcp_policy_version_object_key&lt;/strong> with a new object key.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/upgrading/pause_agent_function_scheduled_job/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/upgrading/pause_agent_function_scheduled_job/</guid><description>&lt;h2 id="pause-protegrity-agent-function-scheduled-job">Pause Protegrity Agent Function Scheduled Job&lt;/h2>
&lt;p>App Function Scheduled Job is used to periodically run Protegrity Agent Function to synchronize policy from ESA. The trigger must be paused temporarily for the time of the upgrade process.&lt;/p>
&lt;p>Follow the steps below to pause the Agent Function Scheduled Job.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>From GCP Console, go to Cloud Scheduler.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select checkbox next to Protegrity Agent Function, e.g. pty-agent-&amp;lt;deployment-id&amp;gt;&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Click &lt;strong>Pause&lt;/strong> button placed on the top action panel.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/upgrading/rollback_protect_function_changes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/upgrading/rollback_protect_function_changes/</guid><description>&lt;h2 id="rollback-protect-function-changes">Rollback Protect Function Changes&lt;/h2>
&lt;p>Follow the instructions below to rollback upgrade changes deployed in previous section.&lt;/p>
&lt;ol>
&lt;li>


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

 If you are upgrading protector to one of these versions: [3.2.2, 3.2.3], in the main.tf file set the variable pty_pub_sub_topic to
log forwarder Pub/Sub topic. You can obtain the topic resource name from the Terraform output: audit_log_topic for the newly
deployed Log Forwarder.

&lt;/div>

&lt;/li>
&lt;li>
&lt;p>In the main.tf file set &lt;strong>upgrade_step&lt;/strong> variable to &amp;ldquo;rollback_changes&amp;rdquo;. Apply Terraform changes.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/upgrading/stage_protect_function_changes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/upgrading/stage_protect_function_changes/</guid><description>&lt;h2 id="stage-protect-function-changes">Stage Protect Function Changes&lt;/h2>
&lt;p>The first step in upgrading Cloud Protect Function is staging the new changes in a separate Cloud Function (Upgrade Protect Function). This is done automatically with Terraform script. Follow the instructions below to update and run Terraform and then test production workloads against Upgrade Protect Function to ensure no unexpected behavior when changes are deployed to production Protect Function.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>In the newly downloaded Protegrity Protect Function Terraform directory, open the &lt;strong>main.tf&lt;/strong> configuration file.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/upgrading/update_log_forwarder_topic_references/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/upgrading/update_log_forwarder_topic_references/</guid><description>&lt;h2 id="update-log-forwarder-topic-references">Update Log Forwarder Topic References&lt;/h2>
&lt;p>Cloud Protectors transmit logs to Log Forwarder function by using pub/sub topics. Any protectors utilizing Log Forwarder&lt;/p>
&lt;p>Function must be updated to reference the upgraded Log Forwarder pub/sub topic.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Open the main.tf file for Protector.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Replace the current &lt;strong>pty_pub_sub_topic&lt;/strong> value with the new Log Forwarder &lt;strong>audit_log_topic&lt;/strong> recorded in previous steps.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Save the &lt;strong>main.tf&lt;/strong> file and run the Terraform apply command to apply the changes.&lt;/p>
&lt;p>Allow a few minutes for the change to take effect. Test the upgrade by invoking Protector such that audit logs are generated.
Verify logs are flowing through the new topic by navigating to the pub/sub metrics in GCP console. Additionally validate delivery
of audit logs in the ESA Audit Store.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/upgrading/upgrade_agent/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/upgrading/upgrade_agent/</guid><description>&lt;h2 id="upgrading-protegrity-policy-agent-function">Upgrading Protegrity Policy Agent Function&lt;/h2>


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

 If the release version of the artifact zip file has not changed since the previous installation, you can skip the Agent Function upgrade.

&lt;/div>

&lt;p>Upgrade the Policy Agent:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>In the newly downloaded Protegrity Agent Function Terraform directory, open the &lt;strong>main.tf&lt;/strong> configuration file.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Populate Terraform variables using values from your current agent Terraform main.tf file.&lt;/p>
&lt;ul>
&lt;li>If upgrading from a Policy Agent before 3.0.1, you must deploy a new Policy Agent function by changing the &lt;code>deployment_id&lt;/code> and terraform backend &lt;code>prefix&lt;/code> to new values. Starting in version 3.0.1, the Policy Agent uses 2nd gen Cloud Functions. If using a credentials function, ensure that it is a 2nd gen Cloud Function.&lt;/li>
&lt;li>Otherwise, use the same backend configuration with the same gcs bucket and prefix.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>If your current Agent function version is lower than 3.0.13, make sure you set the new Terraform variables below. For more information about the new variables, refer to the &lt;a href="../installation/agent#Install-policy-agent-function-through-terraform-scripts">Install Policy Agent Function through Terraform Scripts&lt;/a> section.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/upgrading/upgrade_logforwarder_overview/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/upgrading/upgrade_logforwarder_overview/</guid><description>&lt;h2 id="upgrading-log-forwarder">Upgrading Log Forwarder&lt;/h2>
&lt;p>If the release version of the artifact zip file has not changed since the previous installation, Log Forwarder function upgrade may
be skipped.&lt;/p>


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

 If you are upgrading protector to one of these versions: [3.2.2, 3.2.3], skip this section.

&lt;/div></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/upgrading/upgrade_logforwarder_prerequisites/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/upgrading/upgrade_logforwarder_prerequisites/</guid><description>&lt;h2 id="log-forwarder-upgrade-prerequisites">Log Forwarder Upgrade Prerequisites&lt;/h2>
&lt;p>Follow the steps below to prepare for upgrade.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Identify current Protegrity Log Forwarder Function Terraform module directory.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Record &lt;strong>release_version&lt;/strong> Terraform variable from pty-log-forwarder-gcp/variables.tf file.&lt;/p>
&lt;p>&lt;strong>Current Log Forwarder Function Release Version: ___________________&lt;/strong>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Record all Terraform variables from the main.tf file.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Navigate to directory where new version of Protegrity installation bundle was downloaded.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Unzip the main package. Then unzip protegrity-gcp-{protector}-{version}.zip. Verify that the following files are present:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>pty-log-forwarder-gcp/&lt;/strong>&lt;/li>
&lt;li>&lt;strong>main.tf&lt;/strong>&lt;/li>
&lt;li>&lt;strong>outputs.tf&lt;/strong>&lt;/li>
&lt;li>&lt;strong>protegrity-gcp-{protector}-{version}.zip&lt;/strong>&lt;/li>
&lt;li>&lt;strong>README.md&lt;/strong>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>Open pty-log-forwarder-gcp/variables.tf file and check release-version variable. Compare it with the &lt;strong>Current Log
Forwarder Function Release Version&lt;/strong> recorded in the previous step. If the two versions are the same, Log Forwarder
Function upgrade can be skipped. If not, continue with the next steps.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/upgrading/upgrade_protect_overview/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/upgrading/upgrade_protect_overview/</guid><description>&lt;h2 id="upgrading-protect-function">Upgrading Protect Function&lt;/h2>
&lt;p>Protect Function Terraform module contains upgrade functionality with zero downtime release and rollback capabilities.&lt;/p>
&lt;p>Diagram below illustrates upgrade process.&lt;/p>
&lt;p>&lt;img src="https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/upgrading/upgrade_protect_steps.png" alt="GCP Protect Function Upgrade process" title="GCP Protect Function Upgrade process">&lt;/p>
&lt;p>Steps in the upgrade process have the following purpose:&lt;/p>
&lt;ol>
&lt;li>Stage - The new version is staged as a separate function in parallel with the production function. The new version can be tested before deploying to production.&lt;/li>
&lt;li>Deploy - The new version is deployed to protector function with no interruptions to production traffic.&lt;/li>
&lt;li>Rollback - New version can be optionally rolled back to version before upgrade.&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>
&lt;p>&lt;a href="https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/upgrading/upgrade_protect_overview/#protect-function-upgrade-prerequisites">Protect Function Upgrade Prerequisites&lt;/a>&lt;br>
Follow the steps below to prepare for upgrade.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/upgrading/upgrade_protect_prerequisites/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/upgrading/upgrade_protect_prerequisites/</guid><description>&lt;h2 id="protect-function-upgrade-prerequisites">Protect Function Upgrade Prerequisites&lt;/h2>
&lt;p>Follow the steps below to prepare for upgrade.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Identify current Protegrity Protect Function Terraform module directory.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Record release-version Terraform variable from pty-protect-gcp/variables.tf file.&lt;/p>
&lt;p>&lt;strong>Current Protect Function Release Version: ___________________&lt;/strong>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Record all Terraform variables from the main.tf file.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Navigate to directory where new version of Protegrity installation bundle was downloaded.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Unzip the main package. Then unzip protegrity-gcp-{protector}-{version}.zip. Verify that the following files are present:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>pty-protect-gcp/&lt;/strong>&lt;/li>
&lt;li>&lt;strong>main.tf&lt;/strong>&lt;/li>
&lt;li>&lt;strong>outputs.tf&lt;/strong>&lt;/li>
&lt;li>&lt;strong>protegrity-gcp-{protector}-{version}.zip&lt;/strong>&lt;/li>
&lt;li>&lt;strong>README.md&lt;/strong>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>Open pty-protect-gcp/variables.tf file and check release-version variable. Compare it with the &lt;strong>Current Protect Function Release Version&lt;/strong> recorded in the previous step. If the two versions are the same, Protect Function upgrade can be skipped. If not, continue with the next steps.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/upgrading/upgrade_protect_prerequisites_gen2_functions/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/gcp/common/upgrading/upgrade_protect_prerequisites_gen2_functions/</guid><description>&lt;h2 id="2nd-generation-protect-function-upgrade-prerequisites">2nd Generation Protect Function Upgrade Prerequisites&lt;/h2>
&lt;p>To run Cloud Protect in Gen 2 Cloud Functions, a new instance of Cloud Protect must be created using the included terraform installation scripts. Upgrading a Gen 1 Cloud Function to Gen 2 is not currently supported for Cloud Protect.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Run the cloud command below to enable Google Storage Transfer API.&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>gcloud services enable storagetransfer.googleapis.com
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>Create Cloud Functions storage bucket below. Replace &amp;lt;gcp-project-number&amp;gt; and &amp;lt;region&amp;gt; placeholders.&lt;/p></description></item></channel></rss>