<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Azure on</title><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/</link><description>Recent content in Azure on</description><generator>Hugo</generator><language>en</language><atom:link href="https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/agent/installation/agent_outbound_ip/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/agent/installation/agent_outbound_ip/</guid><description>&lt;h2 id="agent-function-outbound-ip-address">Agent Function Outbound IP address&lt;/h2>
&lt;p>Agent Function App IP addresses may be useful for configuring ESA policy store and allowing traffic between Agent and ESA.&lt;/p>


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

 &lt;ul>
&lt;li>Add IP addresses in the ESA network inbound port rules.&lt;/li>
&lt;li>Add the list of IPs to Policy data store in ESA&lt;/li>
&lt;/ul>


&lt;/div>

&lt;p>&lt;strong>To obtain the list of Outbound IP addresses:&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>From Azure console navigate to &lt;strong>Function App&lt;/strong>, select the Agent Function App.&lt;/li>
&lt;li>Select &lt;strong>Settings&lt;/strong> &amp;gt; &lt;strong>Networking&lt;/strong>.&lt;/li>
&lt;li>Under &lt;strong>Outbound traffic configuration&lt;/strong>, select &lt;strong>Show More&lt;/strong> next to &lt;strong>Outbound addresses&lt;/strong>&lt;/li>
&lt;/ol></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/agent/installation/configure_function/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/agent/installation/configure_function/</guid><description>&lt;h2 id="configure-function">Configure Function&lt;/h2>
&lt;p>Agent Function must be configured with parameters recorded in steps above.&lt;/p>
&lt;p>To configure Function:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Open &lt;strong>Function App&lt;/strong> service from the Azure console. Select the Function App created for policy agent in previous steps.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Navigate to &lt;strong>Settings&lt;/strong> &amp;gt; &lt;strong>Environment variables&lt;/strong> .&lt;/p>
&lt;/li>
&lt;li>
&lt;p>On the &lt;strong>App Settings&lt;/strong> pane, click on &lt;strong>Show values&lt;/strong> to reveal all configuration values&lt;/p>
&lt;/li>
&lt;li>
&lt;p>To modify multiple parameters, click the pencil icon &lt;strong>Advanced edit&lt;/strong> at the top. Alternatively you may click on the environment variable name to edit single values.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/agent/installation/create_encyption_key/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/agent/installation/create_encyption_key/</guid><description>&lt;h2 id="create-policy-encryption-key">Create Policy Encryption Key&lt;/h2>
&lt;p>Create a policy encryption key.&lt;/p>
&lt;p>To create policy encryption key:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>From Azure console, navigate to Key Vaults and select Key Vault created in &lt;a href="../preconfiguration/#key-vault">Key Vault&lt;/a>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Under &lt;strong>Objects&lt;/strong>, select &lt;strong>Keys&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Click &lt;strong>Generate/Import&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Specify the following:&lt;/p>
&lt;p>a. Key name for the &lt;strong>Name&lt;/strong> field.&lt;/p>
&lt;p>b. &lt;strong>RSA&lt;/strong> for &lt;strong>Key type&lt;/strong>.&lt;/p>
&lt;p>c. &lt;strong>2048&lt;/strong> for &lt;strong>RSA key size&lt;/strong>.&lt;/p>
&lt;p>d. Set &lt;strong>Enabled&lt;/strong> toggle to &lt;strong>Yes&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select &lt;strong>Create&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Click on the key name after creation is complete, then click on the key identifier row under &lt;strong>CURRENT VERSION&lt;/strong>.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/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/azure/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 policy agent 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 agent 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/azure/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/azure/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/azure/common/agent/installation/esa_credentials/#esa-credentials-in-azure-key-vault">ESA credentials stored as secrets in Azure Key Vault&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/agent/installation/esa_credentials/#esa-credentials-from-custom-azure-function-app">ESA credentials provided by a custom Azure Function App&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="esa-credentials-in-azure-key-vault">ESA Credentials In Azure Key Vault&lt;/h3>
&lt;p>Policy Agent Function uses Key Vault as secure store for sensitive information like ESA username and password.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/agent/installation/esa_credentials/credentials_function_app/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/agent/installation/esa_credentials/credentials_function_app/</guid><description>&lt;h3 id="esa-credentials-from-custom-azure-function-app">ESA Credentials From Custom Azure Function App&lt;/h3>
&lt;p>Policy Agent Function requests ESA username and password from a custom Azure Function App, further referred to as ESA Credentials function. This method may be used to get the username and password from external vaults.&lt;/p>
&lt;p>There are four options for configuring Policy Agent authorization with ESA Credentials function: &lt;a href="https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/agent/installation/esa_credentials/credentials_function_app/#authorization-option-1-configure-policy-agent-to-access-esa-credentials-function-using-esa-credentials-function-key-from-environment-variables">Option 1&lt;/a>, &lt;a href="https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/agent/installation/esa_credentials/credentials_function_app/#authorization-option-2-configure-policy-agent-to-access-esa-credentials-function-using-esa-credentials-function-key-from-azure-key-vault">Option 2&lt;/a>, &lt;a href="https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/agent/installation/esa_credentials/credentials_function_app/#authorization-option-3-configure-esa-credentials-authentication-provider-to-authorize-policy-agent-system-assigned-identity">Option 3&lt;/a> and &lt;a href="https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/agent/installation/esa_credentials/credentials_function_app/#authorization-option-4-configure-esa-credentials-authentication-provider-to-authorize-policy-agent-user-assigned-identity">Option 4&lt;/a>. Only one option is expected to be configured at a time.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/agent/installation/esa_credentials/key_vault_secret/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/agent/installation/esa_credentials/key_vault_secret/</guid><description>&lt;h3 id="esa-credentials-in-azure-key-vault">ESA Credentials In Azure Key Vault&lt;/h3>
&lt;p>Policy Agent Function uses Key Vault as secure store for sensitive information like ESA username and password.&lt;/p>
&lt;p>Create ESA credentials secrets:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Navigate to Key Vault.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Under &lt;strong>Objects&lt;/strong>, select &lt;strong>Secrets&lt;/strong> &amp;gt; &lt;strong>Generate/import&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select &lt;strong>Manual&lt;/strong>, then type in valid json as shown in the example for &lt;strong>Secret value&lt;/strong>.&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;font-weight:bold">{&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;username&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;&amp;lt;policy_export_user&amp;gt;&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;password&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;&amp;lt;password&amp;gt;&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>Select &lt;strong>Create&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Navigate to the secret details in Key Vault by selecting the newly created secret.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/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/azure/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 Function App on TCP port 8443. Make sure inbound connections on TCP:8443 are allowed for the network where ESA is hosted. You can find the list of Agent Function Outbound IP addresses after you deploy the function in &lt;a href="https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/agent/installation/esa_server/#agent-function-outbound-ip-address">Agent Function Outbound IP address&lt;/a>&lt;/p>
&lt;p>Note down ESA IP to be accessed form Agent Function:&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/azure/common/agent/installation/install_with_arm/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/agent/installation/install_with_arm/</guid><description>&lt;h2 id="install-agent-via-arm-template">Install Agent via ARM template&lt;/h2>
&lt;p>Resources created with ARM template include Function App, Premium V3 App Service Plan (optional) and Application Insights service. Run Azure Resource Manager deployment.&lt;/p>


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

 Refer to &lt;a href="https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/appendix/arm_template_installation_permission_req/">ARM Template Installation - Required Permissions&lt;/a> for the list of IAM permissions required to deploy ARM template.

&lt;/div>

&lt;p>To install Agent via ARM template:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>From Azure Console, select &lt;strong>Create a resource&lt;/strong>, search for template and then select &lt;strong>Template deployment&lt;/strong> &amp;gt; &lt;strong>Create&lt;/strong>.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/agent/installation/key_vault_access_policy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/agent/installation/key_vault_access_policy/</guid><description>&lt;h2 id="agent-function-key-vault-access-policies">Agent Function Key Vault Access Policies&lt;/h2>
&lt;p>Agent Function requires access to Key Vault created in &lt;a href="../preconfiguration/#key-vault">Key Vault&lt;/a> to encrypt policy and to access configuration secrets.&lt;/p>
&lt;ol>
&lt;li>From Azure console navigate to Key Vaults, select the Key Vault created in &lt;a href="../preconfiguration/#key-vault">Key Vault&lt;/a>.&lt;/li>
&lt;li>Select &lt;strong>Access policies&lt;/strong>.&lt;/li>
&lt;li>Click &lt;strong>Create&lt;/strong>.&lt;/li>
&lt;li>Select the following permissions in &lt;strong>Permissions&lt;/strong> tab:
a. &lt;strong>Get&lt;/strong> under &lt;strong>Key Management Operations&lt;/strong>.
b. &lt;strong>Wrap Key&lt;/strong> under &lt;strong>Cryptographic Operations&lt;/strong>.
c. &lt;strong>Get&lt;/strong> under &lt;strong>Secret Permissions&lt;/strong>.&lt;/li>
&lt;li>For &lt;strong>Principal&lt;/strong> provide function identity
a. For functions with user-assigned identity enter identity recorded in step &lt;a href="https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/agent/installation/key_vault_access_policy/#agent-function-user-assigned-managed-identity">Agent Function User-Assigned Managed Identity&lt;/a>
b. For functions with system-assigned identity enter function name recorded in step &lt;a href="https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/agent/installation/key_vault_access_policy/#install-agent-via-arm-template">Install Agent via ARM template&lt;/a>&lt;/li>
&lt;li>Proceed &lt;strong>Next&lt;/strong> to &lt;strong>Application&lt;/strong> and &lt;strong>Next&lt;/strong> again to &lt;strong>Review + Create&lt;/strong>.&lt;/li>
&lt;li>Review permissions and &lt;strong>Create&lt;/strong>.&lt;/li>
&lt;/ol></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/agent/installation/system_assigned_managed_identity/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/agent/installation/system_assigned_managed_identity/</guid><description>&lt;h2 id="function-system-assigned-managed-identity">Function System-Assigned Managed Identity&lt;/h2>
&lt;p>System-assigned Azure managed identity is enabled if user-assigned managed identity is not used. User-assigned managed identities offer less frequent updates to Azure resources and allow for configuration of permissions ahead of function creation.&lt;/p>
&lt;p>If you have not created a user-assigned managed identity at &lt;a href="https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/agent/installation/system_assigned_managed_identity/#agent-function-user-assigned-managed-identity">Agent Function User-Assigned Managed Identity&lt;/a>, setup following role assignments for system-assigned managed identity:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Navigate to the function&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select &lt;strong>Settings&lt;/strong>, &lt;strong>Identity&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Confirm &lt;strong>Status&lt;/strong> of system-assigned identity is already &lt;strong>On&lt;/strong> on &lt;strong>System Assigned&lt;/strong> tab&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/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/azure/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 Agent function installation:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Navigate to &lt;strong>Overview&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select the function &lt;strong>agent&lt;/strong> from the &lt;strong>Functions&lt;/strong> tab.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Click &lt;strong>Code + Test&lt;/strong> &amp;gt; &lt;strong>Test/Run&lt;/strong> and then &lt;strong>Run&lt;/strong> to execute the function.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>You should see a &lt;strong>202 Accepted&lt;/strong> response.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Expand &lt;strong>Logs&lt;/strong> output at the bottom of the page. Click &lt;strong>Maximize&lt;/strong> to enlarge log output.&lt;/p>


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

 It may take 1-2 minutes for the logs to begin populating in the console. Logging in the console is best effort and it is possible for the logs to be cut off. Navigate to Application Insights for full logs.

&lt;/div>

&lt;/li>
&lt;li>
&lt;p>Below is an example log output from successful agent run.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/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/azure/common/agent/installation/troubleshooting/</guid><description>&lt;h2 id="troubleshooting">Troubleshooting&lt;/h2>
&lt;p>To review the most recent invocation traces, navigate to the function app instance. Select &lt;strong>Monitoring&lt;/strong> &amp;gt; &lt;strong>Logs&lt;/strong> from the menu on the left. Run the query &lt;strong>traces&lt;/strong> in the query editor to retrieve the full history of executions with detailed traces.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/agent/installation/user_assigned_managed_identity/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/agent/installation/user_assigned_managed_identity/</guid><description>&lt;h2 id="agent-function-user-assigned-managed-identity">Agent Function User-Assigned Managed Identity&lt;/h2>
&lt;p>User-assigned Azure managed identities are optional. If a user-assigned identity is not provided, a system-assigned managed identity will be enabled the function. User-assigned managed identities offer less frequent updates to Azure resources and allow for configuration of permissions ahead of function creation.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>In the search box, enter &lt;strong>Managed Identities&lt;/strong>. Under &lt;strong>Services&lt;/strong>, select &lt;strong>Managed Identities&lt;/strong>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select &lt;strong>Create&lt;/strong>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>For &lt;strong>Subscription&lt;/strong> provide recorded value of &lt;strong>AzureSubscriptionID&lt;/strong>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>For &lt;strong>Resource Group&lt;/strong> provide recorded value of &lt;strong>ApiResourceGroup&lt;/strong>&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/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/azure/common/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><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/appendix/arm_template_installation_permission_req/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/appendix/arm_template_installation_permission_req/</guid><description>&lt;h2 id="arm-template-installation---required-permissions">ARM Template Installation - Required Permissions&lt;/h2>
&lt;p>Permissions below are required to install Protegrity service using ARM template.&lt;/p>
&lt;p>All permissions in the table must be granted with the Resource group scope.&lt;/p>
&lt;table id="permissions-table">&lt;thead>&lt;tr>&lt;th>
&lt;p>Permissions&lt;/p>
&lt;/th>&lt;th>
&lt;p>Description&lt;/p>
&lt;/th>&lt;th>
&lt;p>Built-In Azure Role&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>Microsoft.Insights/components/read
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&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>Microsoft.OperationalInsights/workspaces/read
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/td>&lt;td>
&lt;p>Read access to monitoring data and settings&lt;/p>
&lt;/td>&lt;td>
&lt;p>Monitoring Reader&lt;/p>
&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>Microsoft.Insights/components/write
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&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>Microsoft.OperationalInsights/workspaces/write
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/td>&lt;td>
&lt;p>Write and manage access to monitoring data and settings&lt;/p>
&lt;/td>&lt;td>
&lt;p>Monitoring Contributor&lt;/p>
&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>Microsoft.Web/serverFarms/write
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&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>Microsoft.Web/sites/write
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&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>Microsoft.Web/sites/host/listkeys/action
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&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>Microsoft.Web/serverFarms/join/action
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&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>Microsoft.Web/register/action
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/td>&lt;td>
&lt;p>Write and manage access to web apps&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/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/azure/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 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 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/azure/common/log-forwarder/azure_log_forwarder_architecture/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/log-forwarder/azure_log_forwarder_architecture/</guid><description>&lt;h2 id="audit-log-forwarding-architecture">Audit Log Forwarding Architecture&lt;/h2>
&lt;p>Audit logs are by default sent to Azure Blob Storage and Application Insights. The Cloud Protect product can also be configured to send audit logs to ESA. Such configuration requires deploying audit Log Forwarder component which is available as part of Cloud Protect deployment bundle. The diagram below shows additional resources deployed with Log Forwarder component.&lt;/p>
&lt;p>&lt;img src="https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/log-forwarder/azure_log_forwarder_arch.png" alt="" title="Audit Log Forwarder Architecture">&lt;/p>
&lt;p>The audit log forwarding solution includes Azure Event Hubs data-streaming service and an Azure Function App deployment called Log Forwarder. Protect function delivers audit logs to Azure Event Hub instance, Event Hub instance batches audit logs and delivers them to Log Forwarder function. Log Forwarder function then delivers audit logs to ESA. Audit log aggregation occurs on both Protect and Log Forwarder functions. Aggregation rules are described in the &lt;a href="https://docs.protegrity.com/10.1/docs/aog/architecture/esa_logging_architecture/#Understanding-the-log-aggregation:~:text=on%20the%20ESA.-,Understanding%20the%20log%20aggregation,-The%20architecture%2C%20the">Understanding the log aggregation&lt;/a> section. If Log Forwarder cannot deliver audit logs to ESA due to temporary ESA connection loss, it will send undelivered audit logs to a dead-letter queue Event Hub. Audit logs in dead-letter queue Event Hub can be re-delivered to ESA using another instance of Log Forwarder, which can be configured to run either manually or on schedule.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/log-forwarder/install/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/log-forwarder/install/</guid><description>&lt;p>The following sections provide installation steps for the Log Forwarder component in Azure.
The Log Forwarder deployment allows for the audit logs generated by Protect Service to be delivered to ESA for auditing and governance purposes.
Log Forwarder component is optional and is not required for the Protect Service to work properly.
See &lt;a href="../../architecture/#audit-log-forwarding-architecture">Audit Log Forwarder Architecture&lt;/a> for more information. Some of the installation steps are not required for
the operation of the software but recommended for establishing a secure environment. Contact Protegrity for
further guidance on configuration alternatives in the cloud.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/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/azure/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/azure/common/log-forwarder/installation/certificates_on_esa/#install-log-forwarder-via-arm-template">Install Log Forwarder via ARM template&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/azure/common/log-forwarder/installation/create_secrets/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/log-forwarder/installation/create_secrets/</guid><description>&lt;h2 id="create-key-vault-secrets">Create Key Vault Secrets&lt;/h2>
&lt;p>Log Forwarder uses Key Vault as a secure store for certificate key file.&lt;/p>
&lt;p>Create secret in Key Vault for certificate key file:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Navigate to Key Vault.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Under &lt;strong>Objects&lt;/strong>, select &lt;strong>Secrets&lt;/strong> &amp;gt; &lt;strong>Generate/import&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select &lt;strong>Manual&lt;/strong>, type in secret name and specify single-line &lt;a href="https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/log-forwarder/installation/create_secrets/#esa-authentication">certificate key file&lt;/a> value for &lt;strong>Secret value&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select &lt;strong>Create&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Record secret name:&lt;/p>
&lt;p>&lt;strong>ESA Client Cert Key Secret Name (EsaClientCertKeySecretName): ___________________&lt;/strong>&lt;/p>
&lt;/li>
&lt;/ol></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/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/azure/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;ul>
&lt;li>&lt;strong>client.key&lt;/strong>&lt;/li>
&lt;li>&lt;strong>client.pem&lt;/strong>&lt;/li>
&lt;/ul>
&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/azure/common/log-forwarder/installation/install_with_arm/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/log-forwarder/installation/install_with_arm/</guid><description>&lt;h2 id="install-log-forwarder-via-arm-template">Install Log Forwarder via ARM template&lt;/h2>
&lt;p>Resources created with ARM template include Function App, App Service Plan and Application Insights service. Optionally, a new Event Hub namespace and Event Hub instance can be created.&lt;/p>


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

 Refer to &lt;a href="https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/appendix/arm_template_installation_permission_req/">ARM Template Installation - Required Permissions&lt;/a> for the list of IAM permissions required to deploy ARM template.

&lt;/div>

&lt;p>&lt;strong>To install Log Forwarder via ARM template:&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>
&lt;p>From Azure Console, select &lt;strong>Create a resource&lt;/strong>, search for template and then select &lt;strong>Template deployment&lt;/strong> &amp;gt; &lt;strong>Create&lt;/strong>.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/log-forwarder/installation/key_vault_access_policy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/log-forwarder/installation/key_vault_access_policy/</guid><description>&lt;h2 id="update-function-key-vault-access-policies">Update Function Key Vault Access Policies&lt;/h2>
&lt;p>The Key vault must be updated to allow the Function App to decrypt the policy files. The Forwarder is using policy to confirm the authenticity of audit logs it receives from Event Hub and to digitally sign the aggregated logs that it sends to ESA. Update the Key vault access policies with function identity. To update the key vault access policies:&lt;/p>
&lt;ol>
&lt;li>From Azure console navigate to Key Vaults, select the Key Vault created in &lt;a href="../preconfiguration/#key-vault">Key Vault&lt;/a>.&lt;/li>
&lt;li>Select &lt;strong>Access policies&lt;/strong>.&lt;/li>
&lt;li>Click &lt;strong>Create&lt;/strong>.&lt;/li>
&lt;li>Select the following permissions in &lt;strong>Permissions&lt;/strong> tab:
a. &lt;strong>Get&lt;/strong> under &lt;strong>Key Management Operations&lt;/strong>.
b. &lt;strong>Unwrap Key&lt;/strong> under &lt;strong>Cryptographic Operations&lt;/strong>.
c. &lt;strong>Get&lt;/strong> under &lt;strong>Secret Permissions&lt;/strong>.&lt;/li>
&lt;li>Proceed &lt;strong>Next&lt;/strong> to &lt;strong>Principal&lt;/strong>.&lt;/li>
&lt;li>For &lt;strong>Principal&lt;/strong> provide function identity
a. For functions with user-assigned identity enter identity recorded in step &lt;a href="https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/log-forwarder/installation/key_vault_access_policy/#function-user-assigned-managed-identity">Function User-Assigned Managed Identity&lt;/a>
b. For functions with system-assigned identity enter function name recorded in step &lt;a href="https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/log-forwarder/installation/key_vault_access_policy/#install-log-forwarder-via-arm-template">Install Log Forwarder via ARM template&lt;/a>&lt;/li>
&lt;li>Proceed &lt;strong>Next&lt;/strong> to &lt;strong>Application&lt;/strong> and &lt;strong>Next&lt;/strong> again to &lt;strong>Review + Create&lt;/strong>.&lt;/li>
&lt;li>Review permissions and &lt;strong>Create&lt;/strong>.&lt;/li>
&lt;/ol></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/log-forwarder/installation/system_assigned_managed_identity/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/log-forwarder/installation/system_assigned_managed_identity/</guid><description>&lt;h2 id="function-system-assigned-managed-identity">Function System-Assigned Managed Identity&lt;/h2>
&lt;p>System-assigned Azure managed identity is enabled if user-assigned managed identity is not used. User-assigned managed identities offer less frequent updates to Azure resources and allow for configuration of permissions ahead of function creation.&lt;/p>
&lt;p>If you have not created a user-assigned managed identity at &lt;a href="https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/log-forwarder/installation/system_assigned_managed_identity/#function-user-assigned-managed-identity">Function User-Assigned Managed Identity&lt;/a>, setup following role assignments for system-assigned managed identity:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Navigate to the function&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select &lt;strong>Settings&lt;/strong>, &lt;strong>Identity&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Confirm &lt;strong>Status&lt;/strong> of system-assigned identity is already &lt;strong>On&lt;/strong> on &lt;strong>System Assigned&lt;/strong> tab&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/log-forwarder/installation/test_full_installation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/log-forwarder/installation/test_full_installation/</guid><description>&lt;h2 id="test-full-log-forwarder-installation">Test Full Log Forwarder Installation&lt;/h2>
&lt;ol>
&lt;li>Install and configure Protegrity Agent, Protect Service and Log Forwarder components.&lt;/li>
&lt;li>Set &lt;strong>EVENT_LEVEL&lt;/strong> environment variable on Protect Service function to &lt;strong>Informational&lt;/strong>.&lt;/li>
&lt;li>Set &lt;strong>PTY_LOG_LEVEL&lt;/strong> environment variable on both Protect Service function and Log Forwarder function to &lt;strong>config&lt;/strong>.&lt;/li>
&lt;/ol>
&lt;p>Test Installation&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Make a protect operation using a data element or user which will result in audit log generation&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Navigate to the Logs for the Protect Service function&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Execute &amp;rsquo;traces&amp;rsquo; query&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/log-forwarder/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/azure/common/log-forwarder/installation/test_installation/</guid><description>&lt;h2 id="test-log-forwarder-installation">Test Log Forwarder Installation&lt;/h2>
&lt;p>Follow the steps to validate Log Forwarder installation. Successful Log Forwarder installation will aggregate logs, connect to ESA and send audit log events.&lt;/p>
&lt;p>Testing in this section validates the connectivity between Log Forwarder and ESA. The sample policy included with the initial installation and test event below are not based on your ESA policy. Any logs forwarded to ESA which are not signed with a policy generated by your ESA will not be added to the audit store.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/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/azure/common/log-forwarder/installation/troubleshooting/</guid><description>&lt;h2 id="troubleshooting">Troubleshooting&lt;/h2>
&lt;p>Configure additional logging for functions:&lt;/p>
&lt;ol>
&lt;li>Set &lt;strong>EVENT_LEVEL&lt;/strong> environment variable on Protect function to &lt;strong>Informational&lt;/strong>.&lt;/li>
&lt;li>Set &lt;strong>PTY_LOG_LEVEL&lt;/strong> environment variable on both Protect function and Log Forwarder function to &lt;strong>config&lt;/strong>.&lt;/li>
&lt;/ol>
&lt;table>&lt;thead>
&lt;tr>
&lt;th>
&lt;p>Error&lt;/p>
&lt;/th>
&lt;th>
&lt;p>Detail&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-gdscript3" data-lang="gdscript3">&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">Unhandled&lt;/span> &lt;span style="color:#000">exception&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span> &lt;span style="color:#000">System&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span>&lt;span style="color:#000">Exception&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#000">Failed&lt;/span> &lt;span style="color:#000">to&lt;/span> &lt;span style="color:#000">initialize&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">function&lt;/span> &lt;span style="color:#000">type&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>&lt;span style="color:#000">expecting&lt;/span> &lt;span style="color:#000">environment&lt;/span> &lt;span style="color:#000">variable&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&amp;#39;AzureWebJobs.AuditLogForwarder.Disabled&amp;#39;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">to&lt;/span> &lt;span style="color:#000">be&lt;/span> &lt;span style="color:#000">set&lt;/span> &lt;span style="color:#000">to&lt;/span> &lt;span style="color:#000">either&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;true&amp;#39;&lt;/span> &lt;span style="color:#204a87;font-weight:bold">or&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;false&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/td>&lt;td>
&lt;ol>
&lt;li>An environment variable &amp;lsquo;AzureWebJobs.AuditLogForwarder.Disabled&amp;rsquo; is expected. This environment variable is added automatically when functions are deployed with ARM templates.&lt;/li>
&lt;li>Verify this environment variable exists and is set to &amp;rsquo;true&amp;rsquo; for Protect Service functions and is set to &amp;lsquo;false&amp;rsquo; for Log Forwarder functions.&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>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[2024/08/08 10:00:00] [error] [tls] error: unexpected EOF
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/td>&lt;td>
&lt;p>Log Forwarder failed to verify ESA certificate&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/log-forwarder/installation/update_policy_agent_with_log_forwarder_details/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/log-forwarder/installation/update_policy_agent_with_log_forwarder_details/</guid><description>&lt;h2 id="update-policy-agent-with-log-forwarder-function-target">Update Policy Agent With Log Forwarder Function Target&lt;/h2>
&lt;p>Log Forwarder requires a Protegrity policy which is in sync with the Protector Service. This section will describe the steps to update the Policy Agent to include updating the Log Forwarder.&lt;/p>


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

 If the Policy Agent has not been installed, follow the steps in &lt;a href="../agent/#install-agent-via-arm-template">Install Agent via ARM template&lt;/a>. Set &lt;strong>PROTEGRITY_PROTECT_FUNCTION&lt;/strong> to include both Protect Service function and Log Forwarder function.

&lt;/div>

&lt;ol>
&lt;li>
&lt;p>Navigate to the Policy Agent function created in &lt;a href="../agent/#install-agent-via-arm-template">Install Agent via ARM template&lt;/a>&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/log-forwarder/installation/update_protector_with_event_hub/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/log-forwarder/installation/update_protector_with_event_hub/</guid><description>&lt;h2 id="update-protect-service-with-event-hub-details">Update Protect Service With Event Hub details&lt;/h2>
&lt;p>In this section, Event Hub details will be provided to the Protect Service installation.&lt;/p>


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

 If the Protect function has not been installed yet, you may provide the &amp;lsquo;Event Hub Name&amp;rsquo;, &amp;lsquo;Event Hub Namespace&amp;rsquo; during Protect Service installation and skip the remainder of this section.

&lt;/div>

&lt;ol>
&lt;li>
&lt;p>Navigate to the Protect function environment variables.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Set &lt;strong>EVENTHUB_NAME&lt;/strong> to the output value recorded in &lt;a href="https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/log-forwarder/installation/update_protector_with_event_hub/#install-log-forwarder-via-arm-template">Install Log Forwarder via ARM template&lt;/a>.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/log-forwarder/installation/user_assigned_managed_identity/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/log-forwarder/installation/user_assigned_managed_identity/</guid><description>&lt;h2 id="function-user-assigned-managed-identity">Function User-Assigned Managed Identity&lt;/h2>
&lt;p>User-assigned Azure managed identities are optional. If a user-assigned identity is not provided, a system-assigned managed identity will be enabled the function. User-assigned managed identities offer less frequent updates to Azure resources and allow for configuration of permissions ahead of function creation.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>In the search box, enter &lt;strong>Managed Identities&lt;/strong>. Under &lt;strong>Services&lt;/strong>, select &lt;strong>Managed Identities&lt;/strong>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select &lt;strong>Create&lt;/strong>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>For &lt;strong>Subscription&lt;/strong> provide recorded value of &lt;strong>AzureSubscriptionID&lt;/strong>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>For &lt;strong>Resource Group&lt;/strong> provide recorded value of &lt;strong>ApiResourceGroup&lt;/strong>&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/performance/log_forwarder/arm_template_parameters/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/performance/log_forwarder/arm_template_parameters/</guid><description>&lt;h2 id="log-forwarder-arm-template-parameters">Log Forwarder ARM Template Parameters&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>New Event Hub Namespace Sku Name&lt;/strong> and &lt;strong>New Event Hub Namespace Sku Tier&lt;/strong> directly affect the quotas applied to new Event Hub instances. Review Azure Event Hub Quotas related to selected tier in Azure documentation: &lt;a href="https://learn.microsoft.com/en-us/azure/event-hubs/event-hubs-quotas">Azure Event Hub Quotas&lt;/a>&lt;/li>
&lt;li>&lt;strong>New Event Hub Namespace Sku Capacity:&lt;/strong> Event Hubs throughput units for Basic or Standard tiers, where value should be 0 to 20 throughput units. The Event Hubs premium units for Premium tier, where value should be 0 to 10 premium units. Capacity directly controls the purchased throughput of Event Hub instance. Review details in Azure documentation: &lt;a href="https://learn.microsoft.com/en-us/azure/event-hubs/event-hubs-scalability#throughput-units">Event Hub Instance Throughput&lt;/a>&lt;/li>
&lt;li>&lt;strong>New Event Hub Partition Count:&lt;/strong> The number of partitions represents the level of parallel log streams in the Event Hub. It is proportional to throughput capacity of the Event Hub instance. If the number of partitions is too low and the volume of audit logs is too high, a throughput ceiling may be reached on Event Hub and some audit records sent from protect function may be lost. Review details in Azure documentation: &lt;a href="https://learn.microsoft.com/en-us/azure/event-hubs/event-hubs-scalability#number-of-partitions">Event Hub Scalability&lt;/a>&lt;/li>
&lt;li>&lt;strong>New Event Hub Audit Log Retention In Days:&lt;/strong> Number of days audit logs are to be available in Event Hub. Applies to both primary Event Hub instance and dead-letter queue Event Hub instance. While audit logs are processed by Log Forwarder in near-realtime, it may be beneficial to keep audit logs available in Event Hub for extended period in case Log Forwarder or ESA require maintenance.&lt;/li>
&lt;li>&lt;strong>Event Hub Name DLQ:&lt;/strong> Dead-letter Queue Event Hub name. This Event Hub will be used by Log Forwarder in case ESA is temporarily unavailable. Messages from DLQ Event Hub can be re-processed by another instance of Log Forwarder either manually or on schedule once ESA connectivity is restored.&lt;/li>
&lt;/ul></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/performance/log_forwarder/monitoring/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/performance/log_forwarder/monitoring/</guid><description>&lt;h2 id="monitoring-log-forwarder-performance">Monitoring Log Forwarder Performance&lt;/h2>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Azure Event Hub Metrics:&lt;/strong> Any positive value in &amp;lsquo;Throttled Requests&amp;rsquo; metric indicates that audit logs rate from protect function is too high. The recommended actions may include:&lt;/p>
&lt;ul>
&lt;li>Increase aggregation and batching intervals of Protect function by increasing values of PTY_CORE_FLUSHINTERVAL and MAX_WAIT_TIME&lt;/li>
&lt;li>Increase number of partitions for Event Hub&lt;/li>
&lt;li>Purchase additional capacity units for Event Hub&lt;/li>
&lt;li>Use a higher Event Hub namespace tier&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Azure Event Hub Metrics for DLQ Event Hub:&lt;/strong> Any positive value in &amp;lsquo;Incoming Messages&amp;rsquo; metric indicates that not all audit logs are being delivered to ESA. Review whether connection to ESA is set up in &lt;a href="../../installation/log-forwarder/">Audit Log Forwarder Installation&lt;/a>&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/performance/log_forwarder/overview/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/performance/log_forwarder/overview/</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.&lt;/p>
&lt;p>The first level is in protect function instances, where audit logs from consecutive requests to an instance are batched and aggregated. The second level of batching takes place in Azure Event Hub instance where log records from different protect function instances are additionally batched and sent to log forwarder function where they are aggregated.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/performance/log_forwarder/protect_function_lf_configuration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/performance/log_forwarder/protect_function_lf_configuration/</guid><description>&lt;h2 id="protect-service-function-environment-variables">Protect Service Function Environment Variables&lt;/h2>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>PTY_CORE_FLUSHINTERVAL:&lt;/strong> Defines for how long audit logs are aggregated before they are sent to Azure Event Hub. Default value is ten seconds. Audit logs are always aggregated into one minute buckets, therefore a value greater than sixty seconds will affect mostly the batching interval.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>MAX_WAIT_TIME:&lt;/strong> Defines for how long aggregated audit logs are batched before they are sent to Azure Event Hub. Default value is ten seconds.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/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/azure/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/azure/common/preconfiguration/create_key_vault/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/preconfiguration/create_key_vault/</guid><description>&lt;h2 id="key-vault">Key Vault&lt;/h2>
&lt;p>Key Vault is required to store secrets and encrypt policy deployment package. Identify existing Key Vault or create new.&lt;/p>
&lt;p>To create Key Vault:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>From the Azure Console select &lt;strong>Create a resource&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Navigate to &lt;strong>Key Vault&lt;/strong> &amp;gt; &lt;strong>Create&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select a &lt;strong>Resource group&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Enter a &lt;strong>Key vault name&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select a &lt;strong>Region&lt;/strong>. For the best performance, use the same region for all resources.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Set the &lt;strong>Pricing tier&lt;/strong> to &lt;code>Standard&lt;/code>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Under &lt;strong>Access configuration&lt;/strong>, select &lt;strong>Vault access policy&lt;/strong> as the &lt;strong>Permission model&lt;/strong>.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/preconfiguration/create_resource_group/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/preconfiguration/create_resource_group/</guid><description>&lt;h2 id="resource-group">Resource Group&lt;/h2>
&lt;p>Identify or create a new Azure Resource Group where the Protegrity solution will be installed. It is recommended that a new Resource group is created. This can provide greater security controls and help avoid conflicts with other applications that might impact regional account limits. An individual with the Cloud Administrator role will be required for some of the subsequent installation steps.&lt;/p>
&lt;p>&lt;strong>Azure Subscription ID (AzureSubscriptionID): ____________________&lt;/strong>&lt;/p>
&lt;p>&lt;strong>Azure Resource Group ID (ApiResourceGroupID): ___________________&lt;/strong>&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/preconfiguration/create_resource_group_ssf/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/preconfiguration/create_resource_group_ssf/</guid><description>&lt;h2 id="resource-group">Resource Group&lt;/h2>
&lt;p>Identify or create a new Azure Resource Group where the Protegrity solution will be installed. It is recommended that a new Resource group is created. This can provide greater security controls and help avoid conflicts with other applications that might impact regional account limits. An individual with the Cloud Administrator role will be required for some of the subsequent installation steps.&lt;/p>
&lt;p>&lt;strong>Azure Subscription ID (AzureSubscriptionID): ____________________&lt;/strong>&lt;/p>
&lt;p>&lt;strong>Azure Resource Group ID (AzureResourceGroupID): ___________________&lt;/strong>&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/preconfiguration/function_app_storage/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/preconfiguration/function_app_storage/</guid><description>&lt;h2 id="function-app-storage">Function App Storage&lt;/h2>
&lt;p>

 




	






 






 &lt;h3 id="create-storage-account">Create Storage Account&lt;/h3>
&lt;p>Create a storage account to host Protegrity deployment packages provided in installation artifact bundle. Note that turning on the firewall or restricting access to selected virtual networks or IP address ranges will require additional configuration and is beyond the scope of this document.&lt;/p>
&lt;p>To create Function App storage:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>From the Azure Console select &lt;strong>Create a resource&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Navigate to &lt;strong>Storage account&lt;/strong> &amp;gt; &lt;strong>Create&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select the &lt;strong>Resource group&lt;/strong> where the Protegrity solution will be deployed.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/preconfiguration/storage/create_agent_policy_container/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/preconfiguration/storage/create_agent_policy_container/</guid><description>&lt;h3 id="create-agent-policy-blob-container">Create Agent Policy Blob Container&lt;/h3>
&lt;p>The Agent function uploads an encrypted policy zip package to a blob container which is used as a staging storage. Create the policy staging container&lt;/p>
&lt;p>To prepare the policy blob container:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Under Storage account created in previous step, select &lt;strong>Data storage&lt;/strong> &amp;gt; &lt;strong>Containers&lt;/strong> and click &lt;strong>+ Container&lt;/strong> .&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Type in a container name and click &lt;strong>Create&lt;/strong> .&lt;/p>
&lt;p>&lt;strong>Agent Policy Blob Container Name (AgentPolicyBlobContainer): ___________________&lt;/strong>&lt;/p>
&lt;/li>
&lt;/ol></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/preconfiguration/storage/create_protect_policy_container/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/preconfiguration/storage/create_protect_policy_container/</guid><description>&lt;h3 id="create-protect-function-policy-blob">Create Protect Function Policy Blob&lt;/h3>
&lt;p>Create a blob container for encrypted Protegrity security policy using Azure Blob Service. Agent will store encrypted policy in this container. Both Protect and Log Forwarder functions will load policy from this container.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Go Storage Account created in the previous step.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Under &lt;strong>Data storage&lt;/strong> section, select &lt;strong>Containers&lt;/strong> and click &lt;strong>+ Container&lt;/strong> .&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Type in container name and click &lt;strong>Create&lt;/strong> .&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Right-click the container name, and select &lt;strong>Container properties&lt;/strong> to obtain URL.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/preconfiguration/storage/create_storage_account/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/preconfiguration/storage/create_storage_account/</guid><description>&lt;h3 id="create-storage-account">Create Storage Account&lt;/h3>
&lt;p>Create a storage account to host Protegrity deployment packages provided in installation artifact bundle. Note that turning on the firewall or restricting access to selected virtual networks or IP address ranges will require additional configuration and is beyond the scope of this document.&lt;/p>
&lt;p>To create Function App storage:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>From the Azure Console select &lt;strong>Create a resource&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Navigate to &lt;strong>Storage account&lt;/strong> &amp;gt; &lt;strong>Create&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select the &lt;strong>Resource group&lt;/strong> where the Protegrity solution will be deployed.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/preconfiguration/storage/upload_files/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/preconfiguration/storage/upload_files/</guid><description>&lt;h3 id="upload-files">Upload Files&lt;/h3>
&lt;p>Create a deployment container using the Azure Blob Service.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Go Storage Account created in the previous step.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Under &lt;strong>Data storage&lt;/strong> section, select &lt;strong>Containers&lt;/strong> and click &lt;strong>+ Container&lt;/strong> .&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Type in container name and click &lt;strong>Create&lt;/strong> .&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Upload the following installation artifacts to the container:&lt;/p>
&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>&lt;strong>protegrity-protect-azure-&amp;lt;version&amp;gt;.zip&lt;/strong>&lt;/li>
&lt;li>&lt;strong>protegrity-agent-azure-&amp;lt;version&amp;gt;.zip&lt;/strong>&lt;/li>
&lt;/ul>


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

 The installation bundle you receive from Protegrity should be unzipped to reveal the files above. Only the files above need to be uploaded to the storage container. Do not unzip the three individual zip packages.

&lt;/div>

&lt;ol start="5">
&lt;li>
&lt;p>Record Protect function blob URL:&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/protector/azure_services/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/protector/azure_services/</guid><description>&lt;h2 id="azure-services">Azure Services&lt;/h2>
&lt;p>The following table describes the Azure services that may be part of your Protegrity installation.&lt;/p>
&lt;p>All permissions in the table must be granted with the Resource group scope.&lt;/p>
&lt;table>&lt;thead>&lt;tr>&lt;th>
&lt;p>Service&lt;/p>
&lt;/th>&lt;th>
&lt;p>Description&lt;/p>
&lt;/th>&lt;/tr>&lt;/thead>&lt;tbody>&lt;tr>&lt;td>
&lt;p>&lt;strong>Microsoft Entra ID Application&lt;/strong>&lt;/p>
&lt;/td>&lt;td>
&lt;p>Allows authentication with Azure Function app&lt;/p>
&lt;/td>&lt;/tr>&lt;tr>&lt;td>
&lt;p>&lt;strong>Azure Managed Identity&lt;/strong>&lt;/p>
&lt;/td>&lt;td>
&lt;p>Allows functions assume user-defined managed identity&lt;/p>
&lt;/td>&lt;/tr>&lt;tr>&lt;td>
&lt;p>&lt;strong>Function App&lt;/strong>&lt;/p>
&lt;/td>&lt;td>
&lt;p>Provides serverless compute for Protegrity protection operations and ESA integration to fetch policy updates or deliver audit logs.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/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/azure/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="../preconfiguration">Pre-Configuration&lt;/a> are performed.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Login to the Azure account console where Protegrity will be installed.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Ensure the Azure Resource Manager templates 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/azure/common/protector/register_entra_id_app/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/protector/register_entra_id_app/</guid><description>&lt;h2 id="register-an-entra-id-app">Register an Entra ID App&lt;/h2>
&lt;p>A Microsoft Entra ID App provides the mechanism for Client to authenticate with the Function App instance. Creating an Entra ID app requires appropriate permissions to the Azure Subscription and is typically performed by the Azure Account Administrator.&lt;/p>
&lt;p>To register an Entra ID App:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>In the Azure portal navigate to &lt;strong>Microsoft Entra ID&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Click &lt;strong>+ Add&lt;/strong> and select &lt;strong>App registration&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Enter a &lt;strong>Name&lt;/strong> and select &lt;strong>Accounts in any organizational directory&lt;/strong>.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/protector/system_assigned_managed_identity/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/protector/system_assigned_managed_identity/</guid><description>&lt;h2 id="function-system-assigned-managed-identity">Function System-Assigned Managed Identity&lt;/h2>
&lt;p>System-assigned Azure managed identity is enabled if user-assigned managed identity is not used. User-assigned managed identities offer less frequent updates to Azure resources and allow for configuration of permissions ahead of function creation.&lt;/p>
&lt;p>If you have not created a user-assigned managed identity at &lt;a href="https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/protector/system_assigned_managed_identity/#protect-function-user-assigned-managed-identity">Protect Function User-Assigned Managed Identity&lt;/a>, setup following role assignments for system-assigned managed identity:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Navigate to the function&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select &lt;strong>Settings&lt;/strong>, &lt;strong>Identity&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Confirm &lt;strong>Status&lt;/strong> of system-assigned identity is already &lt;strong>On&lt;/strong> on &lt;strong>System Assigned&lt;/strong> tab&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/protector/troubleshooting_installation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/protector/troubleshooting_installation/</guid><description>&lt;h2 id="troubleshooting">Troubleshooting&lt;/h2>
&lt;p>To review live requests, navigate to &lt;strong>Application Insights&lt;/strong> service and select item with the same name as the protect function. Under &lt;strong>Investigate&lt;/strong>, select &lt;strong>Live Metrics&lt;/strong>. Wait for the dashboard to load, then go to &lt;strong>Sample Telemetry&lt;/strong> pane on the right and look for the requests in question.&lt;/p>
&lt;p>To review the full history of requests from Application Insights under &lt;strong>Monitoring&lt;/strong> select &lt;strong>Logs&lt;/strong>:&lt;/p>
&lt;ol>
&lt;li>Select the &lt;strong>Tables&lt;/strong> tab.&lt;/li>
&lt;li>Hover over one of the table names under &lt;strong>Application Insights&lt;/strong> header, for example exceptions.&lt;/li>
&lt;li>Click on &lt;strong>See preview data&lt;/strong>.&lt;/li>
&lt;li>Click &lt;strong>Use in editor&lt;/strong>.&lt;/li>
&lt;/ol>
&lt;p>You can also run the query directly in the query editor. For instance to select the 10 latest exceptions run the following query.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/protector/update_key_vault_policy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/protector/update_key_vault_policy/</guid><description>&lt;h2 id="update-key-vault-access-policies">Update Key Vault Access Policies&lt;/h2>
&lt;p>The Key vault must be updated to allow the Function App to decrypt the policy files. Azure assigns a unique identifier to each Function App instance that can be used to grant permissions to that instance. Update the Key vault access policies with the Protect function. To update the key vault access policies:&lt;/p>
&lt;p>&lt;strong>Obtain Function App identifier&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Navigate to the &lt;strong>Function App&lt;/strong> service in the Azure portal.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/protector/upload_sample_policy_protector/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/protector/upload_sample_policy_protector/</guid><description>&lt;h2 id="upload-the-sample-policy">Upload the Sample Policy&lt;/h2>
&lt;p>The Protegrity installation bundle contains a sample policy which can be used to test the protect service installation without an ESA.
Upload the sample policy artifact to the policy Blob storage container:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Go to Azure console and select &lt;strong>Storage Account Name (StorageAccountName)&lt;/strong> recorded in step &lt;a href="../preconfiguration/#create-storage-account">Create Storage Account&lt;/a>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Under &lt;strong>Data storage&lt;/strong> select &lt;strong>Blob Containers&lt;/strong> and select container created in &lt;a href="../preconfiguration/#create-protect-function-policy-blob-container">Protect Function Policy Blob Container&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Click &lt;strong>Upload&lt;/strong> and select &lt;strong>protegrity-sample-policy-&amp;lt;version&amp;gt;.zip&lt;/strong> file from your local computer.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/protector/user_assigned_managed_identity/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/protector/user_assigned_managed_identity/</guid><description>&lt;h2 id="protect-function-user-assigned-managed-identity">Protect Function User-Assigned Managed Identity&lt;/h2>
&lt;p>User-assigned Azure managed identities are optional. If a user-assigned identity is not provided, a system-assigned managed identity will be enabled the function. User-assigned managed identities offer less frequent updates to Azure resources and allow for configuration of permissions ahead of function creation.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>In the search box, enter &lt;strong>Managed Identities&lt;/strong>. Under &lt;strong>Services&lt;/strong>, select &lt;strong>Managed Identities&lt;/strong>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select &lt;strong>Create&lt;/strong>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>For &lt;strong>Subscription&lt;/strong> provide recorded value of &lt;strong>AzureSubscriptionID&lt;/strong>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>For &lt;strong>Resource Group&lt;/strong> provide recorded value of &lt;strong>ApiResourceGroup&lt;/strong>&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/upgrading/disable_agent_deployment/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/upgrading/disable_agent_deployment/</guid><description>&lt;h3 id="disable-agent-policy-deployment-and-test-policy-agent-function">Disable Agent Policy Deployment and Test Policy Agent Function&lt;/h3>
&lt;p>Policy agent generates a backup of pulled policy when triggered. The policy will then be deployed to Protect and Log Forwarder functions. Deployment of policies to functions should be disabled during the upgrade process.&lt;/p>
&lt;p>Follow the steps below to disable policy deployment:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>From Azure Console, navigate to Policy Agent Function App&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Navigate to &lt;strong>Settings&lt;/strong> &amp;gt; &lt;strong>Environment variables&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>set &lt;strong>DISABLE_DEPLOY&lt;/strong> to &lt;strong>1&lt;/strong> if it is not already set.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/upgrading/disable_agent_timer/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/upgrading/disable_agent_timer/</guid><description>&lt;h2 id="disable-protegrity-agent-function-timer-trigger">Disable Protegrity Agent Function Timer Trigger&lt;/h2>
&lt;p>App Function Timer Trigger is used to periodically run Protegrity Agent Function to synchronize policy from ESA. The trigger must be disabled temporarily for the time of the upgrade process.&lt;/p>
&lt;p>Follow the steps below to disable the Agent Function Timer Trigger.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>From Azure Console, go to Function App service and select Protegrity Agent Function.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Navigate to &lt;strong>Overview&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>The functions list should contain &lt;strong>agent&lt;/strong> function with Trigger type &lt;strong>Timer&lt;/strong> and status &lt;strong>Enabled&lt;/strong>.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/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/azure/common/upgrading/download_files/</guid><description>&lt;h2 id="upload-deployment-artifacts">Upload Deployment Artifacts&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>After downloading the deployment package from the Protegrity Portal, go to Azure console. Navigate to the storage account that was previously created to upload deployment artifacts (see: &lt;a href="../installation/preconfiguration#create-agent-policy-blob-container">Agent Policy Blob Container&lt;/a>).&lt;/p>
&lt;p>Upload the following artifacts to the Azure storage container:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>protegrity-protect-&amp;lt;version&amp;gt;.zip&lt;/strong>&lt;/li>
&lt;li>&lt;strong>protegrity-agent-&amp;lt;version&amp;gt;.zip&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>After upload is complete, note the blob url for each file. Blob URL may be found in the blob properties.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/upgrading/enable_agent_deployment/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/upgrading/enable_agent_deployment/</guid><description>&lt;h2 id="re-enable-policy-agent-deployment-setting">Re-enable Policy Agent Deployment Setting&lt;/h2>
&lt;p>Skip this step if changes were not made to the DISABLE_DEPLOY setting in previous upgrade steps&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Navigate to Agent function &lt;strong>Settings&lt;/strong> &amp;gt; &lt;strong>Environment variables&lt;/strong>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Set &lt;strong>DISABLE_DEPLOY&lt;/strong> to &lt;strong>0&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>apply changes and restart the Agent Function App&lt;/p>
&lt;/li>
&lt;/ol></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/upgrading/enable_agent_timer/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/upgrading/enable_agent_timer/</guid><description>&lt;h2 id="enable-protegrity-agent-function-timer-trigger">Enable Protegrity Agent Function Timer Trigger&lt;/h2>
&lt;p>If the Agent Function Timer Trigger was disabled at the beginning of the upgrade process, you must re-enabled it. Follow the steps below to enable Policy Agent Timer Trigger.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Navigate back to Protegrity Agent Function.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select &lt;strong>Overview&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Click on the three dots in the same row as the &lt;strong>agent&lt;/strong> function in the list of functions. Then select &lt;strong>Enable&lt;/strong>.&lt;/p>
&lt;/li>
&lt;/ol></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/upgrading/generate_upgraded_policy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/upgrading/generate_upgraded_policy/</guid><description>&lt;h3 id="testrun-policy-agent-function-to-generate-latest-policy">Test/Run Policy Agent Function to Generate Latest Policy&lt;/h3>
&lt;p>Follow the steps below to run the upgraded policy agent to refresh latest backup policy. Record the latest backup policy URL for later upgrade steps.&lt;/p>


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

 Policy will not be deployed to Protectors when agent DISABLE_DEPLOY is set to 1 as described in &lt;a href="https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/upgrading/generate_upgraded_policy/#disable-agent-policy-deployment-and-test-policy-agent-function">Disable Agent Policy Deployment and Test Policy Agent Function&lt;/a>.

&lt;/div>

&lt;ol>
&lt;li>
&lt;p>From Azure Console, navigate to the Policy Agent Function App&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/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/azure/common/upgrading/upgrade_agent/</guid><description>&lt;h2 id="upgrading-policy-agent-function">Upgrading 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;div class="alert alert-warning" role="alert">
&lt;h4 class="alert-heading">Important&lt;/h4>

 &lt;p>If Policy Agent version is less than version 4, a new installation must be created. Carefully observe the below points:&lt;/p>
&lt;ul>
&lt;li>Create a new Container in the Storage Account for policy storage for the installation, as the version 4 policy package differs from version 3.&lt;/li>
&lt;li>To prevent overwriting production environment policies with incompatible policy package, follow &lt;a href="https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/upgrading/upgrade_agent/#disable-protegrity-agent-function-timer-trigger">Disable Protegrity Agent Function Timer Trigger&lt;/a> after deploying the new function with arm template. &lt;em>Do not add the production Protect or Forwarder functions to the &lt;strong>PROTEGRITY_PROTECT_FUNCTION&lt;/strong> environment variable of new Policy Agent until the trigger is disabled&lt;/em>&lt;/li>
&lt;li>Skip to &lt;a href="https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/upgrading/upgrade_agent/#disable-agent-policy-deployment-and-test-policy-agent-function">Disable Agent Policy Deployment and Test Policy Agent Function&lt;/a> once installation is complete.&lt;/li>
&lt;/ul>

&lt;/div>

&lt;h3 id="upgrade-policy-agent-runtime-package">Upgrade Policy Agent Runtime Package&lt;/h3>
&lt;ol>
&lt;li>
&lt;p>From Azure console, navigate to &lt;strong>Function App&lt;/strong> service and select agent function app. Navigate to &lt;strong>Settings&lt;/strong> &amp;gt; &lt;strong>Environment variables&lt;/strong>.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/upgrading/upgrade_finalize/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/upgrading/upgrade_finalize/</guid><description>&lt;h2 id="enable-protegrity-agent-function-timer-trigger">Enable Protegrity Agent Function Timer Trigger&lt;/h2>
&lt;p>If the Agent Function Timer Trigger was disabled at the beginning of the upgrade process, you must re-enabled it. Follow the steps below to enable Policy Agent Timer Trigger.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Navigate back to Protegrity Agent Function.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select &lt;strong>Overview&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Click on the three dots in the same row as the &lt;strong>agent&lt;/strong> function in the list of functions. Then select &lt;strong>Enable&lt;/strong>.&lt;/p>
&lt;/li>
&lt;/ol></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/upgrading/upgrade_finalize_reenable_deploy_policy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/upgrading/upgrade_finalize_reenable_deploy_policy/</guid><description>&lt;h2 id="re-enable-policy-agent-deployment-setting">Re-enable Policy Agent Deployment Setting&lt;/h2>
&lt;p>Skip this step if changes were not made to the DISABLE_DEPLOY setting in previous upgrade steps&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Navigate to Agent function &lt;strong>Settings&lt;/strong> &amp;gt; &lt;strong>Environment variables&lt;/strong>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Set &lt;strong>DISABLE_DEPLOY&lt;/strong> to &lt;strong>0&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>apply changes and restart the Agent Function App&lt;/p>
&lt;/li>
&lt;/ol></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/upgrading/upgrade_log_forwarder_finalize/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/upgrading/upgrade_log_forwarder_finalize/</guid><description>&lt;h3 id="finalize-log-forwarder-upgrade">Finalize Log Forwarder Upgrade&lt;/h3>
&lt;p>Upgraded Log Forwarder Function will be swapped into production deployment slot to serve production traffic and re-enabled,&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;a href="https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/upgrading/upgrade_log_forwarder_finalize/#swap-upgraded-function-slot-to-production.md">Swap Upgraded Function Slot to Production&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/upgrading/upgrade_log_forwarder_finalize/#re-enable-log-forwarder-function-trigger">Re-Enable Log Forwarder Function Trigger&lt;/a>&lt;/p>
&lt;/li>
&lt;/ul></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/upgrading/upgrade_log_forwarder_finalize_reenable_trigger/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/upgrading/upgrade_log_forwarder_finalize_reenable_trigger/</guid><description>&lt;h4 id="re-enable-log-forwarder-function-trigger">Re-Enable Log Forwarder Function Trigger&lt;/h4>
&lt;ol>
&lt;li>
&lt;p>Go to your main Log Forwarder Function.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Navigate to environment variable settings &lt;strong>Settings&lt;/strong> &amp;gt; &lt;strong>Environment variables&lt;/strong>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Click on &lt;strong>AzureWebJobs.AuditLogForwarder.Disabled&lt;/strong> configuration entry.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Replace value with &lt;strong>false&lt;/strong>. Click &lt;strong>Apply&lt;/strong> then &lt;strong>Apply&lt;/strong> and &lt;strong>Confirm&lt;/strong> to finalize.&lt;/p>
&lt;/li>
&lt;/ol></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/upgrading/upgrade_log_forwarder_finalize_swap_slot/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/upgrading/upgrade_log_forwarder_finalize_swap_slot/</guid><description>&lt;h4 id="swap-upgraded-function-slot-to-production">Swap Upgraded Function Slot to Production&lt;/h4>
&lt;ol>
&lt;li>
&lt;p>Go to your main Log Forwarder Function.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select deployment slots.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select &lt;strong>Swap&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select staging Log Forwarder Function slot as source and current Function as target.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Click &lt;strong>Start Swap&lt;/strong> and wait until the functions are swapped.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>If you need to rollback, swap the application slots again.&lt;/p>
&lt;/li>
&lt;/ol></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/upgrading/upgrade_log_forwarder_overview/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/upgrading/upgrade_log_forwarder_overview/</guid><description>&lt;h2 id="upgrading-log-forwarder-function">Upgrading Log Forwarder 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 Log Forwarder upgrade.

&lt;/div>



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

 Upgrading the Log Forwarder component to version &lt;strong>4&lt;/strong> from versions &amp;lt;&lt;strong>3.2&lt;/strong>, or versions of &lt;strong>3.2&lt;/strong> which use shared access key for loading the source, requires a new installation

&lt;/div></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/upgrading/upgrade_log_forwarder_prereq/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/upgrading/upgrade_log_forwarder_prereq/</guid><description>&lt;h3 id="disable-log-forwarder-event-hub-trigger">Disable Log Forwarder Event Hub Trigger&lt;/h3>
&lt;p>Disabling the Event Hub trigger will prevent audit log delivery during the upgrade process. This reduces the chance for any duplicate or lost audit logs. Later steps will indicate when this trigger may be re-enabled.&lt;/p>
&lt;p>Follow the steps below to disable the Event Hub trigger:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>From Azure Console, go to Function App service and select Protegrity Log Forwarder Function.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Navigate to &lt;strong>Overview&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>The functions list should contain &lt;strong>AuditLogForwarder&lt;/strong> function with Trigger type &lt;strong>Event Hub&lt;/strong> and Status &lt;strong>Enabled&lt;/strong>.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/upgrading/upgrade_log_forwarder_step_1/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/upgrading/upgrade_log_forwarder_step_1/</guid><description>&lt;h3 id="create-staging-deployment-slot-log-forwarder">Create Staging Deployment Slot (Log Forwarder)&lt;/h3>
&lt;p>Creating new deployment slot allows updating the function such that it may easily be rolled back. Log Forwarder Function will be disabled during the upgrade process. Logs generated during this time will be processed once Log Forwarder is re-enabled&lt;/p>
&lt;ol>
&lt;li>
&lt;p>From Azure console, navigate to &lt;strong>Function App&lt;/strong> service and select the Log Forwarder Function App to upgrade. Navigate to &lt;strong>Deployments&lt;/strong> &amp;gt; &lt;strong>Deployment Slots&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Click &lt;strong>Add slot&lt;/strong>. Specify slot name.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/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/azure/common/upgrading/upgrade_protect_overview/</guid><description>&lt;h2 id="upgrading-protect-function">Upgrading Protect 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 Protect Function upgrade.

&lt;/div>



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

 Upgrading the Protector component to version &lt;strong>4&lt;/strong> from versions &amp;lt;&lt;strong>3.2&lt;/strong>, or versions of &lt;strong>3.2&lt;/strong> which use shared access key for loading the source, requires a new installation

&lt;/div>

&lt;p>Diagram below illustrates upgrade steps.&lt;/p>
&lt;p>&lt;img src="https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/upgrading/azure_upgrade_protect_steps.png" alt="Azure Protect Function Upgrade Steps" title="Azure Protect Function Upgrade Steps">&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/upgrading/upgrade_protect_step_1/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/upgrading/upgrade_protect_step_1/</guid><description>&lt;h3 id="create-staging-deployment-slot-protector">Create Staging Deployment Slot (Protector)&lt;/h3>
&lt;p>Creating new deployment slot allows updating the function without interruptions to the existing traffic.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>From Azure console, navigate to &lt;strong>Function App&lt;/strong> service and select the Protect Function App to upgrade. Navigate to &lt;strong>Deployments&lt;/strong> &amp;gt; &lt;strong>Deployment Slots&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Click &lt;strong>Add slot&lt;/strong>. Specify slot name.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Click &lt;strong>Add&lt;/strong>. Wait for the slot to be created.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>After the slot is added, select &lt;strong>Close&lt;/strong> to close the dialog box.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>There should be a new slot available in the list of deployment slots. You will use this deployment slot as staging for the upgraded function. After upgrade is done and tested, you will swap staging slot with production slot.&lt;/p></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/upgrading/upgrade_protect_step_2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/upgrading/upgrade_protect_step_2/</guid><description>&lt;h3 id="load-production-policy-and-test-new-protect-function-in-staging">Load Production Policy and Test New Protect Function In Staging&lt;/h3>
&lt;ol>
&lt;li>
&lt;p>Navigate to the new staging Protect function &lt;strong>Settings&lt;/strong> &amp;gt; &lt;strong>Environment variables&lt;/strong>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Set &lt;strong>AZURE_POLICY_BLOB_URL&lt;/strong> environment variable to the &lt;strong>upgraded_agent_policy_blob_url&lt;/strong> value recorded in previous steps.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Start/Stop the protect function.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Test New Protect Function in staging. You can use curl command below, replacing &lt;strong>Staging Protect Function URL&lt;/strong> and &lt;strong>Staging Protect Function Default Host Key&lt;/strong> with values recorded in previous section.&lt;/p>
&lt;/li>
&lt;/ol>



&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="snowflake" aria-controls="tabs-00-00" aria-selected="true">
 Snowflake
 &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="cloud api" aria-controls="tabs-00-01" aria-selected="false">
 Cloud API
 &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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>curl -X POST &lt;span style="color:#4e9a06">&amp;#34;&amp;lt;Staging Protect Function URL&amp;gt;/api/Protect&amp;#34;&lt;/span> -k &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span>-H &lt;span style="color:#4e9a06">&amp;#39;sf-custom-X-Protegrity-HCoP-Rules: {&amp;#34;jsonpaths&amp;#34;:[{&amp;#34;op_type&amp;#34;:&amp;#34;unprotect&amp;#34;,&amp;#34;data_element&amp;#34;:&amp;#34;alpha&amp;#34;}]}&amp;#39;&lt;/span> &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span>-H &lt;span style="color:#4e9a06">&amp;#39;sf-context-current-user: test&amp;#39;&lt;/span> &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span>-H &lt;span style="color:#4e9a06">&amp;#39;sf-external-function-current-query-id: test-id&amp;#39;&lt;/span> &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span>-H &lt;span style="color:#4e9a06">&amp;#39;x-functions-key: &amp;lt;Staging Protect Function Default Host Key&amp;gt;&amp;#39;&lt;/span> &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span>-H &lt;span style="color:#4e9a06">&amp;#39;Content-Type: application/json&amp;#39;&lt;/span> &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span>-d &lt;span style="color:#4e9a06">&amp;#39;{
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06"> &amp;#34;data&amp;#34;: [
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06"> [&amp;#34;0&amp;#34;, &amp;#34;UtfVk UHgcD!&amp;#34;]
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06"> ]
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">}&amp;#39;&lt;/span>
&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>curl -X POST &lt;span style="color:#4e9a06">&amp;#34;&amp;lt;Protect Function URL&amp;gt;/api/v1/protect&amp;#34;&lt;/span> -k &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span>-H &lt;span style="color:#4e9a06">&amp;#39;x-functions-key: &amp;lt;Protect Function app key&amp;gt;&amp;#39;&lt;/span> &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span>-H &lt;span style="color:#4e9a06">&amp;#39;Content-Type: application/json&amp;#39;&lt;/span> &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span>-d &lt;span style="color:#4e9a06">&amp;#39;{
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06"> &amp;#34;data&amp;#34;: [&amp;#34;test&amp;#34;],
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06"> &amp;#34;user&amp;#34;: &amp;#34;test&amp;#34;,
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06"> &amp;#34;data_element&amp;#34;: &amp;#34;test&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">}&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
 &lt;/div>
&lt;/div></description></item><item><title/><link>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/upgrading/upgrade_protect_step_3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/cloud-protect/4.0.0/docs/azure/common/upgrading/upgrade_protect_step_3/</guid><description>&lt;h3 id="finalize-protector-upgrade">Finalize Protector upgrade&lt;/h3>
&lt;p>Upgraded Protect Function can now be swapped in to production deployment slot to serve production traffic.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Go to your main Protect Function.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select deployment slots.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select &lt;strong>Swap&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select staging Protect Function slot as source and production Function as target.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Click &lt;strong>swap&lt;/strong> and wait until the functions are swapped.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>If you need to rollback swap the application slots again.&lt;/p>
&lt;/li>
&lt;/ol></description></item></channel></rss>