<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Protegrity Synthetic Data on</title><link>https://docs.protegrity.com/synthetic-data/latest/docs/</link><description>Recent content in Protegrity Synthetic Data on</description><generator>Hugo</generator><language>en</language><atom:link href="https://docs.protegrity.com/synthetic-data/latest/docs/index.xml" rel="self" type="application/rss+xml"/><item><title>Introduction</title><link>https://docs.protegrity.com/synthetic-data/latest/docs/intro/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/synthetic-data/latest/docs/intro/</guid><description>&lt;p>This section explains why organizations use Synthetic Data and how Protegrity Synthetic Data preserves statistical utility while reducing privacy risk.&lt;/p>
&lt;p>Organizations need realistic datasets for model training, testing, and cross-team collaboration without exposing sensitive information. Traditional methods such as masking and redaction can reduce data utility for analytics and machine learning.&lt;/p>
&lt;p>Protegrity Synthetic Data learns patterns and distributions from source data. It then generates new records that reflect these patterns without reproducing the original personal records.&lt;/p></description></item><item><title>Understanding the Architecture and Components</title><link>https://docs.protegrity.com/synthetic-data/latest/docs/arch/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/synthetic-data/latest/docs/arch/</guid><description>&lt;p>Protegrity Synthetic Data generates realistic, privacy-safe synthetic datasets using machine learning models. It learns patterns and distributions from real data, then produces new records with similar statistical properties.&lt;/p>
&lt;p>Protegrity Synthetic Data uses Kubernetes for scalable Synthetic Data generation and supports deployment on 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[Synthetic Data Python SDK]
 SDK --&amp;gt;|HTTPS :443| GW

 GW --&amp;gt;|:8000 /pty/syntheticdata/v2| App[Synthetic Data
REST Server &amp;#43; ML Engine]

 App --&amp;gt;|:5432 jobstatedb &amp;#43; mlopsdb| DB[(PostgreSQL)]

 subgraph EKS [EKS Cluster · synthetic-data-ns]
 GW
 App
 DB
 end

 subgraph AWS
 S3[(S3 Bucket
Data Storage)]
 IAM[IAM Role
Pod Identity]
 end

 App -.-&amp;gt;|assumes| IAM
 IAM -.-&amp;gt;|grants access| S3
 App &amp;lt;--&amp;gt;|read / write| S3&lt;/pre>
&lt;h3 id="communication-ports">Communication Ports&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Port&lt;/th>
 &lt;th>Direction&lt;/th>
 &lt;th>Description&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>443&lt;/td>
 &lt;td>User and SDK → PPC Gateway&lt;/td>
 &lt;td>HTTPS entry point for user and SDK traffic&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>8000&lt;/td>
 &lt;td>Gateway → Synthetic Data REST Server&lt;/td>
 &lt;td>Synthetic Data REST API (&lt;code>/pty/syntheticdata/v2&lt;/code>)&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>5432&lt;/td>
 &lt;td>Synthetic Data REST Server → PostgreSQL&lt;/td>
 &lt;td>Stores job state (&lt;code>jobstatedb&lt;/code>) and MLOps model tracking (&lt;code>mlopsdb&lt;/code>); internal only&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="components">Components&lt;/h3>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>PPC Gateway&lt;/strong>: Exposes the external HTTPS endpoint and routes requests to the Synthetic Data REST API.&lt;/p></description></item><item><title>Prerequisites for Deployment</title><link>https://docs.protegrity.com/synthetic-data/latest/docs/prereqs/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/synthetic-data/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. 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, refer to &lt;a href="https://docs.protegrity.com/aiteam-edition/1.1.0/docs/infrastructure/ppc/">Protegrity Provisioned Cluster&lt;/a>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>AWS CLI credentials are configured by using &lt;code>aws configure&lt;/code>.&lt;/p></description></item><item><title>Server Installation</title><link>https://docs.protegrity.com/synthetic-data/latest/docs/install/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/synthetic-data/latest/docs/install/</guid><description>&lt;blockquote>
&lt;p>&lt;strong>Note&lt;/strong>: This guide uses version &lt;code>2.1.0&lt;/code> throughout. Replace &lt;code>2.1.0&lt;/code> with the version you are installing, including in the &lt;a href="https://docs.protegrity.com/synthetic-data/latest/docs/using_synth_data/py_sdk_install/">Python SDK Installation&lt;/a> section.&lt;/p>&lt;/blockquote>
&lt;p>This section describes how to deploy Protegrity Synthetic Data on Amazon EKS as part of Protegrity AI Team Edition.&lt;br>
It uses OpenTofu to provision cloud infrastructure, such as S3, IAM, and Karpenter. It also generates the &lt;code>syntheticdata-values.yaml&lt;/code> file that Helm uses to deploy Kubernetes workloads.&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>syntheticdata-values.yaml&lt;/code> with cloud-specific Helm overrides.&lt;/p></description></item><item><title>Upgrading Protegrity Synthetic Data</title><link>https://docs.protegrity.com/synthetic-data/latest/docs/upg/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/synthetic-data/latest/docs/upg/</guid><description>&lt;p>This section describes how to upgrade Protegrity Synthetic Data to the latest version.&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Note&lt;/strong>: If upgrading across major versions, review the release notes for any breaking changes before proceeding.&lt;/p>&lt;/blockquote>
&lt;ol>
&lt;li>
&lt;p>Upgrade Protegrity Synthetic Data by running &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 synthetic-data &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/synthetic-data/helm/synthetic-data &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 synthetic-data-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/synthetic-data/latest/docs/user_creation_ppc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/synthetic-data/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>syntheticdata_administrator&lt;/code> role to include &lt;code>can_create_token&lt;/code> permission. Then create a user with this role.&lt;/p>
&lt;h4 id="1-update-syntheticdata_administrator-role-permission">1. Update &lt;code>syntheticdata_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;syntheticdata_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;syntheticdata_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-syntheticdata_administrator-role-attached">2. Create a user with the &lt;code>syntheticdata_administrator&lt;/code> role attached&lt;/h4>
&lt;p>Use the following request payload when creating the user:&lt;/p></description></item><item><title>Uninstalling and Cleanup</title><link>https://docs.protegrity.com/synthetic-data/latest/docs/uninstall_cleanup/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/synthetic-data/latest/docs/uninstall_cleanup/</guid><description>&lt;p>To remove the Synthetic Data 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 synthetic-data -n synthetic-data-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 synthetic-data-ns -l app.kubernetes.io/name&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>synthetic-data
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Optionally, delete the namespace after all resources are deleted:&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 synthetic-data-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;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"># Destroys Karpenter nodes, IAM role, Pod Identity association, and S3 bucket.&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>tofu destroy -var&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;cluster_name=&amp;lt;CLUSTER_NAME&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;blockquote>
&lt;p>&lt;strong>Note&lt;/strong>: By default, &lt;code>tofu destroy&lt;/code> prompts for confirmation before deleting resources. Add &lt;code>-auto-approve&lt;/code> to skip the prompt.&lt;/p></description></item><item><title>Troubleshooting</title><link>https://docs.protegrity.com/synthetic-data/latest/docs/troubleshooting/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.protegrity.com/synthetic-data/latest/docs/troubleshooting/</guid><description>&lt;h3 id="diagnostic-flowchart">Diagnostic Flowchart&lt;/h3>
&lt;p>Use the following flowchart to identify the cause of common issues.&lt;/p>
&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 synthetic-data-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 synthetic-data-ns]
 APIWorks --&amp;gt;|Yes| ValidationFails{Request fails?}
 ValidationFails --&amp;gt;|Yes| ConfigIssue[Review request config&amp;lt;br/&amp;gt;Check model and data parameters]
 ValidationFails --&amp;gt;|No| OtherIssue[Check logs or open a support ticket]
 style Start fill:#e1f5ff&lt;/pre>
&lt;h3 id="common-issues">Common Issues&lt;/h3>
&lt;h4 id="pods-not-reach-the-running-state">Pods not reach the &lt;code>Running&lt;/code> state&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>kubectl describe pod -n synthetic-data-ns &amp;lt;POD_NAME&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>kubectl logs -n synthetic-data-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>