<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Protegrity Anonymization on</title><link>https://docs.protegrity.com/anonymization/latest/docs/</link><description>Recent content in Protegrity Anonymization on</description><generator>Hugo</generator><language>en</language><atom:link href="https://docs.protegrity.com/anonymization/latest/docs/index.xml" rel="self" type="application/rss+xml"/><item><title>Introduction</title><link>https://docs.protegrity.com/anonymization/latest/docs/intro/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/anonymization/latest/docs/intro/</guid><description>&lt;p>Organizations today collect vast amounts of personal data, providing valuable insights into individuals&amp;rsquo; habits, purchasing trends, health, and preferences. This information helps businesses refine their strategies, develop products, and drive success. However, much of this data is highly sensitive and private. Organizations must implement robust protection measures aligned with compliance requirements and business needs.&lt;/p>
&lt;p>To safeguard personal data, pseudonymization replaces direct identifiers with encrypted or tokenized values. This approach allows data processing while minimizing exposure to sensitive attributes. Because pseudonymized data can be re-identified with access to the decryption mechanism, it enables controlled usage while maintaining privacy. However, as more fields, particularly quasi-identifiers, are pseudonymized to prevent re-identification, the overall utility of the data may decrease.&lt;/p></description></item><item><title>Understanding the Architecture and Components</title><link>https://docs.protegrity.com/anonymization/latest/docs/arch/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/anonymization/latest/docs/arch/</guid><description>&lt;p>Protegrity Anonymization processes datasets through generalization to ensure the risk of re-identification stays within tolerable thresholds. The anonymization process affects data utility. However, Protegrity Anonymization optimizes the privacy-utility trade-off to maximize data quality within defined privacy goals.&lt;/p>
&lt;p>Protegrity Anonymization uses Kubernetes for data anonymization at scale and provides deployment support for AWS EKS.&lt;/p>
&lt;h3 id="component-diagram">Component Diagram&lt;/h3>
&lt;p>The following diagram shows the deployment architecture and communication between components.&lt;/p>
&lt;pre class="mermaid">graph TD
 User([User / Client Application]) --&amp;gt;|HTTPS :443| GW[PPC Gateway]
 User --&amp;gt; SDK[Anonymization Python SDK]
 SDK --&amp;gt;|HTTPS :443| GW

 GW --&amp;gt;|:8000 /pty/anonymization/v3| App[anon-app\nREST Server]
 GW --&amp;gt;|:8786 /pty/dask| Sched[anon-scheduler\nDask Scheduler]

 App --&amp;gt;|:5432| DB[(anon-db\nPostgreSQL)]
 App --&amp;gt; Sched
 Sched --&amp;gt;|random ports| W1[anon-worker]
 Sched --&amp;gt;|random ports| W2[anon-worker]
 W1 &amp;lt;--&amp;gt;|read / write| S3[(S3 Bucket\nAnon-Storage)]
 W2 &amp;lt;--&amp;gt;|read / write| S3

 subgraph EKS [EKS Cluster · anon-ns]
 GW
 App
 DB
 Sched
 W1
 W2
 end

 subgraph AWS
 S3
 IAM[IAM Role\nPod Identity]
 end

 App -.-&amp;gt;|assumes| IAM
 IAM -.-&amp;gt;|grants access| S3&lt;/pre>
&lt;h3 id="communication-ports">Communication Ports&lt;/h3>
&lt;p>The following table lists the ports used for communication between the components.&lt;/p></description></item><item><title>Prerequisites for Deployment</title><link>https://docs.protegrity.com/anonymization/latest/docs/prereqs/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/anonymization/latest/docs/prereqs/</guid><description>&lt;p>Ensure the following prerequisites are met:&lt;/p>
&lt;h3 id="tools">Tools&lt;/h3>
&lt;p>Install and configure the following tools on the jumpbox:&lt;/p>
&lt;ul>
&lt;li>&lt;code>opentofu&lt;/code> 1.10 or later. For more information about installation steps, refer to &lt;a href="https://opentofu.org/docs/intro/install">OpenTofu Installation&lt;/a>.&lt;/li>
&lt;li>&lt;code>helm&lt;/code> 3.12+, &lt;code>kubectl&lt;/code> 1.27+, and &lt;code>aws&lt;/code> CLI v2 with access to the Protegrity Provisioned Cluster (PPC).&lt;/li>
&lt;/ul>
&lt;h3 id="aws-setup">AWS Setup&lt;/h3>
&lt;p>Ensure that the following AWS requirements are met:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>A Protegrity Provisioned Cluster (PPC) is available. For more information about PPC, refer to &lt;a href="http://10.39.2.150:6060/docs/infrastructure/ppc/">Protegrity Provisioned Cluster&lt;/a>.&lt;/p></description></item><item><title>Server Installation</title><link>https://docs.protegrity.com/anonymization/latest/docs/install/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/anonymization/latest/docs/install/</guid><description>&lt;blockquote>
&lt;p>&lt;strong>Note&lt;/strong>: This guide uses version &lt;code>2.0.1&lt;/code> throughout. Replace &lt;code>2.0.1&lt;/code> with the version you are installing, including in the &lt;a href="https://docs.protegrity.com/anonymization/latest/docs/using_anon/py_sdk_install/">Python SDK Installation&lt;/a> section.&lt;/p>&lt;/blockquote>
&lt;p>This project deploys the Protegrity Anonymization service on Amazon EKS as part of the Protegrity AI Team Edition.&lt;/p>
&lt;h3 id="deployment-steps">Deployment Steps&lt;/h3>
&lt;h4 id="1-provision-cloud-infrastructure-with-opentofu">1. Provision Cloud Infrastructure with OpenTofu&lt;/h4>
&lt;p>The OpenTofu module creates the S3 bucket, IAM role, EKS Pod Identity association, and Karpenter NodePool. It also writes &lt;code>anonymization-values.yaml&lt;/code> with cloud-specific Helm overrides.&lt;/p></description></item><item><title>Upgrading Protegrity Anonymization</title><link>https://docs.protegrity.com/anonymization/latest/docs/upg/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/anonymization/latest/docs/upg/</guid><description>&lt;p>This section describes how to upgrade Protegrity Anonymization to the latest version.&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Note&lt;/strong>: If you are upgrading across major versions, review the release notes for any breaking changes before proceeding.&lt;/p>&lt;/blockquote>
&lt;ol>
&lt;li>
&lt;p>Run &lt;code>helm upgrade&lt;/code> with the new &lt;code>--version&lt;/code> value.&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Note&lt;/strong>: Passwords are preserved during upgrades. Omit the &lt;code>--set database.auth.*&lt;/code> flags.&lt;/p>&lt;/blockquote>
&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>helm upgrade anonymization &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> oci://registry.protegrity.com/anonymization/anonymization-server/helm/anonymization &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> --version &amp;lt;NEW_VERSION&amp;gt; &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> --namespace anon-ns &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> --values &amp;lt;VALUES_FILE&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>After upgrading, verify that all pods are in the &lt;code>Running&lt;/code> state.&lt;/p></description></item><item><title>User Creation in PPC</title><link>https://docs.protegrity.com/anonymization/latest/docs/user_creation_ppc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/anonymization/latest/docs/user_creation_ppc/</guid><description>&lt;blockquote>
&lt;p>&lt;strong>Warning&lt;/strong>: Use the &lt;code>-k&lt;/code> flag only in development or trusted internal environments. Do not use it in production, where valid certificates must be configured.&lt;/p>&lt;/blockquote>
&lt;h3 id="role-update-and-user-creation">Role Update and User Creation&lt;/h3>
&lt;p>After deployment, update the default &lt;code>anonymization_administrator&lt;/code> role to include the &lt;code>can_create_token&lt;/code> permission and then create a user with this role.&lt;/p>
&lt;h4 id="1-update-anonymization_administrator-role-permission">1. Update &lt;code>anonymization_administrator&lt;/code> role permission&lt;/h4>
&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>&lt;span style="color:#204a87">export&lt;/span> &lt;span style="color:#000">GATEWAY_URL&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;https://&lt;/span>&lt;span style="color:#204a87;font-weight:bold">$(&lt;/span>kubectl get configmap/nfa-config -n default -o &lt;span style="color:#000">jsonpath&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;{.data.FQDN}&amp;#39;&lt;/span>&lt;span style="color:#204a87;font-weight:bold">)&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"># 1. Obtain an Authentication Token&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">TOKEN&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#204a87;font-weight:bold">$(&lt;/span>curl -sk -X POST &lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">${&lt;/span>&lt;span style="color:#000">GATEWAY_URL&lt;/span>&lt;span style="color:#4e9a06">}&lt;/span>&lt;span style="color:#4e9a06">/api/v1/auth/login/token&amp;#34;&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/x-www-form-urlencoded&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;loginname=admin&amp;amp;password=Admin123!&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 - -o /dev/null &lt;span style="color:#000;font-weight:bold">|&lt;/span> grep -i &lt;span style="color:#4e9a06">&amp;#39;pty_access_jwt_token&amp;#39;&lt;/span> &lt;span style="color:#000;font-weight:bold">|&lt;/span> awk &lt;span style="color:#4e9a06">&amp;#39;{print $2}&amp;#39;&lt;/span> &lt;span style="color:#000;font-weight:bold">|&lt;/span> tr -d &lt;span style="color:#4e9a06">&amp;#39;\r\n&amp;#39;&lt;/span>&lt;span style="color:#204a87;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>curl -sk -X PUT &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> &lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">${&lt;/span>&lt;span style="color:#000">GATEWAY_URL&lt;/span>&lt;span style="color:#4e9a06">}&lt;/span>&lt;span style="color:#4e9a06">/pty/v1/auth/roles&amp;#34;&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;accept: 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> -H &lt;span style="color:#4e9a06">&amp;#34;Authorization: Bearer &lt;/span>&lt;span style="color:#4e9a06">${&lt;/span>&lt;span style="color:#000">TOKEN&lt;/span>&lt;span style="color:#4e9a06">}&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&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;name&amp;#34;: &amp;#34;anonymization_administrator&amp;#34;,
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06"> &amp;#34;description&amp;#34;: &amp;#34;Administrator role&amp;#34;,
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06"> &amp;#34;permissions&amp;#34;: [
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06"> &amp;#34;can_create_token&amp;#34;,
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06"> &amp;#34;anonymization_operations_admin&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;h4 id="2-create-a-user-with-the-anonymization_administrator-role">2. Create a user with the &lt;code>anonymization_administrator&lt;/code> role&lt;/h4>
&lt;p>Use the following request payload when creating the user:&lt;/p></description></item><item><title>Uninstallation and Cleanup</title><link>https://docs.protegrity.com/anonymization/latest/docs/uninstall_cleanup/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/anonymization/latest/docs/uninstall_cleanup/</guid><description>&lt;p>To remove the Anonymization service and all associated Kubernetes and AWS resources:&lt;/p>
&lt;h4 id="1-uninstall-the-helm-release">1. Uninstall the Helm release&lt;/h4>
&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>&lt;span style="color:#8f5902;font-style:italic"># Removes all chart resources. PVC data is RETAINED by default (retentionPolicy: whenDeleted=Retain).&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>helm uninstall anonymization -n anon-ns
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"># To also delete the database PVC:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>kubectl delete pvc -n anon-ns -l app.kubernetes.io/name&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>anonymization
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Optionally, delete the namespace after the Helm release and PVCs are removed using the following command:&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>kubectl delete namespace anon-ns
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="2-destroy-opentofu-infrastructure">2. Destroy OpenTofu infrastructure&lt;/h4>
&lt;blockquote>
&lt;p>&lt;strong>Warning&lt;/strong>: &lt;code>tofu destroy&lt;/code> deletes the S3 bucket, including all stored input and output datasets. Back up any data you need before proceeding.&lt;/p></description></item><item><title>Troubleshooting</title><link>https://docs.protegrity.com/anonymization/latest/docs/troubleshooting/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/anonymization/latest/docs/troubleshooting/</guid><description>&lt;h2 id="diagnostic-flowchart">Diagnostic Flowchart&lt;/h2>
&lt;pre class="mermaid">flowchart TD
 Start[Problem?] --&amp;gt; ServerRunning{Server pods Running?}
 ServerRunning --&amp;gt;|No| PodIssue[Check pod logs&amp;lt;br/&amp;gt;kubectl logs -n anon-ns]
 ServerRunning --&amp;gt;|Yes| APIWorks{Does API respond?}
 APIWorks --&amp;gt;|No| NetworkIssue[Check Service and Gateway&amp;lt;br/&amp;gt;kubectl get svc -n anon-ns]
 APIWorks --&amp;gt;|Yes| ValidationFails{Request fails?}
 ValidationFails --&amp;gt;|Yes| ConfigIssue[Review request config&amp;lt;br/&amp;gt;Check privacy model params]
 ValidationFails --&amp;gt;|No| OtherIssue[Check logs or open a support ticket]
 style Start fill:#e1f5ff&lt;/pre>
&lt;h2 id="common-issues">Common Issues&lt;/h2>
&lt;h3 id="pods-not-reaching-the-running-state">Pods not reaching the &lt;code>Running&lt;/code> state&lt;/h3>
&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>kubectl describe pod -n anon-ns &amp;lt;POD_NAME&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>kubectl logs -n anon-ns &amp;lt;POD_NAME&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Check that the Karpenter NodePool provisioned the required nodes. Ensure that OpenTofu created the S3 bucket and IAM role.&lt;/p></description></item></channel></rss>