- Platform Release 6.5
- Privacera Platform Release 6.5
- Enhancements and updates in Privacera Access Management 6.5 release
- Enhancements and updates in Privacera Discovery 6.5 release
- Enhancements and updates in Privacera Encryption 6.5 release
- Deprecation of older version of PolicySync
- Upgrade Prerequisites
- Supported versions of third-party systems
- Documentation changelog
- Known Issues 6.5
- Platform - Supported Versions of Third-Party Systems
- Platform Support Policy and End-of-Support Dates
- Privacera Platform Release 6.5
- Privacera Platform Installation
- About Privacera Manager (PM)
- Install overview
- Prerequisites
- Installation
- Default services configuration
- Component services configurations
- Access Management
- Data Server
- UserSync
- Privacera Plugin
- Databricks
- Spark standalone
- Spark on EKS
- Portal SSO with PingFederate
- Trino Open Source
- Dremio
- AWS EMR
- AWS EMR with Native Apache Ranger
- GCP Dataproc
- Starburst Enterprise
- Privacera services (Data Assets)
- Audit Fluentd
- Grafana
- Ranger Tagsync
- Discovery
- Encryption & Masking
- Privacera Encryption Gateway (PEG) and Cryptography with Ranger KMS
- AWS S3 bucket encryption
- Ranger KMS
- AuthZ / AuthN
- Security
- Access Management
- Reference - Custom Properties
- Validation
- Additional Privacera Manager configurations
- Upgrade Privacera Manager
- Troubleshooting
- How to validate installation
- Possible Errors and Solutions in Privacera Manager
- Unable to Connect to Docker
- Terminate Installation
- 6.5 Platform Installation fails with invalid apiVersion
- Ansible Kubernetes Module does not load
- Unable to connect to Kubernetes Cluster
- Common Errors/Warnings in YAML Config Files
- Delete old unused Privacera Docker images
- Unable to debug error for an Ansible task
- Unable to upgrade from 4.x to 5.x or 6.x due to Zookeeper snapshot issue
- Storage issue in Privacera UserSync & PolicySync
- Permission Denied Errors in PM Docker Installation
- Unable to initialize the Discovery Kubernetes pod
- Portal service
- Grafana service
- Audit server
- Audit Fluentd
- Privacera Plugin
- How-to
- Appendix
- AWS topics
- AWS CLI
- AWS IAM
- Configure S3 for real-time scanning
- Install Docker and Docker compose (AWS-Linux-RHEL)
- AWS S3 MinIO quick setup
- Cross account IAM role for Databricks
- Integrate Privacera services in separate VPC
- Securely access S3 buckets ssing IAM roles
- Multiple AWS account support in Dataserver using Databricks
- Multiple AWS S3 IAM role support in Dataserver
- Azure topics
- GCP topics
- Kubernetes
- Microsoft SQL topics
- Snowflake configuration for PolicySync
- Create Azure resources
- Databricks
- Spark Plug-in
- Azure key vault
- Add custom properties
- Migrate Ranger KMS master key
- IAM policy for AWS controller
- Customize topic and table names
- Configure SSL for Privacera
- Configure Real-time scan across projects in GCP
- Upload custom SSL certificates
- Deployment size
- Service-level system properties
- PrestoSQL standalone installation
- AWS topics
- Privacera Platform User Guide
- Introduction to Privacera Platform
- Settings
- Data inventory
- Token generator
- System configuration
- Diagnostics
- Notifications
- How-to
- Privacera Discovery User Guide
- What is Discovery?
- Discovery Dashboard
- Scan Techniques
- Processing order of scan techniques
- Add and scan resources in a data source
- Start or cancel a scan
- Tags
- Dictionaries
- Patterns
- Scan status
- Data zone movement
- Models
- Disallowed Tags policy
- Rules
- Types of rules
- Example rules and classifications
- Create a structured rule
- Create an unstructured rule
- Create a rule mapping
- Export rules and mappings
- Import rules and mappings
- Post-processing in real-time and offline scans
- Enable post-processing
- Example of post-processing rules on tags
- List of structured rules
- Supported scan file formats
- Data Source Scanning
- Data Inventory
- TagSync using Apache Ranger
- Compliance Workflow
- Data zones and workflow policies
- Workflow Policies
- Alerts Dashboard
- Data Zone Dashboard
- Data zone movement
- Workflow policy use case example
- Discovery Health Check
- Reports
- How-to
- Privacera Encryption Guide
- Overview of Privacera Encryption
- Install Privacera Encryption
- Encryption Key Management
- Schemes
- Encryption with PEG REST API
- Privacera Encryption REST API
- PEG API endpoint
- PEG REST API encryption endpoints
- PEG REST API authentication methods on Privacera Platform
- Common PEG REST API fields
- Construct the datalist for the /protect endpoint
- Deconstruct the response from the /unprotect endpoint
- Example data transformation with the /unprotect endpoint and presentation scheme
- Example PEG API endpoints
- /authenticate
- /protect with encryption scheme
- /protect with masking scheme
- /protect with both encryption and masking schemes
- /unprotect without presentation scheme
- /unprotect with presentation scheme
- /unprotect with masking scheme
- REST API response partial success on bulk operations
- Audit details for PEG REST API accesses
- Make encryption API calls on behalf of another user
- Troubleshoot REST API Issues on Privacera Platform
- Privacera Encryption REST API
- Encryption with Databricks, Hive, Streamsets, Trino
- Databricks UDFs for encryption and masking on PrivaceraPlatform
- Hive UDFs for encryption on Privacera Platform
- StreamSets Data Collector (SDC) and Privacera Encryption on Privacera Platform
- Trino UDFs for encryption and masking on Privacera Platform
- Privacera Access Management User Guide
- Privacera Access Management
- How Polices are evaluated
- Resource policies
- Policies overview
- Creating Resource Based Policies
- Configure Policy with Attribute-Based Access Control
- Configuring Policy with Conditional Masking
- Tag Policies
- Entitlement
- Service Explorer
- Users, groups, and roles
- Permissions
- Reports
- Audit
- Security Zone
- Access Control using APIs
- AWS User Guide
- Overview of Privacera on AWS
- Configure policies for AWS services
- Using Athena with data access server
- Using DynamoDB with data access server
- Databricks access manager policy
- Accessing Kinesis with data access server
- Accessing Firehose with Data Access Server
- EMR user guide
- AWS S3 bucket encryption
- Getting started with Minio
- Plugins
- How to Get Support
- Coordinated Vulnerability Disclosure (CVD) Program of Privacera
- Shared Security Model
- Privacera Platform documentation changelog
Customize deployment files
Customize deployment files
This topic shows how you can configure additional properties by merging Kubernetes configuration YAML files. When you install and deploy Privacera services, default Kubernetes configuration files for each Privacera service get created. If you want to extend the configuration of a Privacera service, you can create a new configuration file where all the new properties get defined, and then merge them together.
Configuration filenames
The following table provides the list of Privacera services whose configurations can be merged. The tables gives the list of configuration files for a Privacera service that can be created and merged, and where these configuration files should be stored in a directory. You would need to refer this table to get the filename and location when creating the new configuration file.
Service Name | Custom Service Directory | Config File Names |
---|---|---|
Auditserver | ~/privacera/privacera-manager/config/custom-vars/auditserver | - auditserver-service.yml - auditserver-storageclass.yml - auditserver-statefulset.yml |
Audit-fluentd | ~/privacera/privacera-manager/config/custom-vars/audit-fluentd | - audit-fluentd-service.yml - audit-fluentd-storageclass.yml - audit-fluentd-statefulset.yml |
Access-Request-Manager | ~/privacera/privacera-manager/config/custom-vars/portal | - access-request-manager-service.yml - access-request-manager-deployment.yml |
Mariadb | ~/privacera/privacera-manager/config/custom-vars/mariadb | - mariadb-service.yml - mariadb-secret.yml - mariadb-pvc.yml - mariadb-storageclass.yml - mariadb-deployment.yml |
Zookeeper | ~/privacera/privacera-manager/config/custom-vars/zookeeper | - zookeeper-service.yml - zookeeper-poddisruptionbudget.yml - zookeeper-storageclass.yml - zookeeper-statefulset.yml |
Solr | ~/privacera/privacera-manager/config/custom-vars/solr | - solr-service.yml - solr-poddisruptionbudget.yml - solr-storageclass.yml - solr-statefulset.yml |
Ranger-admin | ~/privacera/privacera-manager/config/custom-vars/ranger-admin | - ranger-service.yml - ranger-service-ingress.yml - ranger-deployment.yml |
Ranger-usersync | ~/privacera/privacera-manager/config/custom-vars/ranger-usersync | - usersync-deployment.yml |
Ranger-kms/crypto | ~/privacera/privacera-manager/config/custom-vars/ranger-kms | - ranger-kms-service.yml - ranger-kms-deployment.yml |
Peg | ~/privacera/privacera-manager/config/custom-vars/peg | - peg-service.yml - peg-deployment.yml - peg-hpa.yml |
Portal | ~/privacera/privacera-manager/config/custom-vars/portal | - portal-service.yml - portal-deployment.yml |
Dataserver | ~/privacera/privacera-manager/config/custom-vars/dataserver | - dataserver-service.yml - dataserver-service-account.yml - dataserver-role-binding.yml - dataserver-deployment.yml |
Discovery | ~/privacera/privacera-manager/config/custom-vars/discovery | - discovery-service.yml - discovery-pvc.yml - discovery-storageclass.yml - discovery-deployment.yml |
Policysync | ~/privacera/privacera-manager/config/custom-vars/policysync | - policysync-deployment.yml - policysync-pvc.yml - policysync-rocksdb-pvc.yml - policysync-storageclass.yml |
Kafka | ~/privacera/privacera-manager/config/custom-vars/kafka | - kafka-statefulset.yml |
Pkafka | ~/privacera/privacera-manager/config/custom-vars/pkafka | - pkafka-deployment.yml |
Trino | ~/privacera/privacera-manager/config/custom-vars/trino | - trino-deployment.yml - trino-service.yml - trino-worker-statefulset.yml - trino-worker-storageclass.yml |
Grafana | ~/privacera/privacera-manager/config/custom-vars/grafana | - grafana-service.yml - grafana-pvc.yml - grafana-storageclass.yml - grafana-deployment.yml |
Graphite | ~/privacera/privacera-manager/config/custom-vars/graphite | - graphite-service.yml - graphite-pvc.yml - graphite-storageclass.yml - graphite-deployment.yml |
Common - RBAC | ~/privacera/privacera-manager/config/custom-vars/rbac | - service-account.yml - role.yml - role-binding.yml |
Procedure
To merge Kubernetes configuration files, perform the following steps:
Refer to the table above, and choose the service whose configuration you want to be merged. Get the filename of the configuration file, and the directory where the file will be stored.
Create the directory with the service name. Replace
<SERVICE_NAME>
with the name of the Privacera service whose configuration you want to merge.cd ~/privacera/privacera-manager/config/custom-vars mkdir <SERVICE_NAME>
Create the new configuration file. Replace
<CONFIG_FILENAME>
with the name of the configuration file of the Privacera service.vi <CONFIG_FILENAME>
Add the properties in the configuration file. The following is an example of adding a nodeselector property.
spec:template:spec:nodeSelector:node:privacera
Verify the deployment file by running the
setup
command../privacera-manager.sh setup
Once the command is completed, you can find the deployment file at the following location:
vi ~/privacera/privacera-manager/output/kubernetes/helm/portal/templates/<CONFIG_FILENAME>
Run the update command.
cd ~/privacera/privacera-manager ./privacera-manager.sh update
Example for assigning pods to a node
If you want to assign a pod to a node for the Portal service, perform the following steps:
From the table above, refer the Portal service, and get the filename,
portal-deployment.yml
.Create the directory with the service name as portal.
cd ~/privacera/privacera-manager/config/custom-vars mkdir portal
Create the configuration file,
portal-deployment.yml
.vi portal-deployment.yml
Add the following property in the configuration file. Modify the
<key>
and<value>
.spec:template:spec:nodeSelector:<key>:<value>
Before running the install, verify the deployment file by running the
setup
command../privacera-manager.sh setup
Once the command is completed, you can find the deployment file at the following location:
vi ~/privacera/privacera-manager/output/kubernetes/helm/portal/templates/portal-deployment.yml
Contents of the custom portal deployment file is merged with the regular portal deployment file already available in Privacera Manager using Ansible Combine Filter. This merge only works with hashes/dictionaries. The new deployment file is generated in the output folder in the YAML format.
CLick the tabs to display the properties of the deployment file before and after running the
setup
command.Before
The following are the properties of the deployment file before running the
setup
command.apiVersion: apps/v1 kind: Deployment metadata: labels: app: portal name: portal spec: replicas: 1 selector: matchLabels: app: portal strategy: type: Recreate template: metadata: labels: app: portal spec: containers: - image: hub2.privacera.com/privacera:rel.latest imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 3 initialDelaySeconds: 400 periodSeconds: 30 tcpSocket: port: 6868 name: portal ports: - containerPort: 6868 readinessProbe: failureThreshold: 6 initialDelaySeconds: 120 periodSeconds: 30 tcpSocket: port: 6868 resources: limits: cpu: '0.5' memory: 2457M requests: cpu: '0.2' memory: 307M volumeMounts: - mountPath: /opt/privacera/portal/conf name: conf-vol - mountPath: /opt/privacera/portal/bin name: bin-vol imagePullSecrets: - name: privacera-hub initContainers: - command: - bash - -c - /scripts/wait-for-it.sh zk-0.zkensemble:2181:2181 -t 300 -- image: hub2.privacera.com/privacera:rel.latest name: wait-for-zookeeper - command: - bash - -c - /scripts/wait-for-it.sh solr-service:8983 -t 300 -- image: hub2.privacera.com/privacera:rel.latest name: wait-for-solr - command: - bash - -c - /scripts/wait-for-it.sh mariadb:3306 -t 300 -- image: hub2.privacera.com/privacera:rel.latest name: wait-for-mariadb - command: - bash - -c - cp -r /conf_ro/. /opt/privacera/portal/conf image: hub2.privacera.com/privacera:rel.latest name: copy-conf volumeMounts: - mountPath: /opt/privacera/portal/conf name: conf-vol - mountPath: /conf_ro name: portal-conf - command: - bash - -c - cp -r /bin_ro/. /opt/privacera/portal/bin image: hub2.privacera.com/privacera:rel.latest name: copy-bin volumeMounts: - mountPath: /opt/privacera/portal/bin name: bin-vol - mountPath: /bin_ro name: portal-bin restartPolicy: Always securityContext: fsGroup: 200 serviceAccountName: privacera-sa topologySpreadConstraints: - labelSelector: matchLabels: app: portal-1 maxSkew: 1 topologyKey: zone whenUnsatisfiable: ScheduleAnyway - labelSelector: matchLabels: app: portal-1 maxSkew: 1 topologyKey: node whenUnsatisfiable: DoNotSchedule volumes: - configMap: name: portal-conf name: portal-conf - configMap: defaultMode: 493 name: portal-bin name: portal-bin - emptyDir: {} name: conf-vol - emptyDir: {} name: bin-vol status: {}
After
The following are the properties of the deployment file after running the
setup
command. Two additional linesnodeSelector:
andnode: privacera
are added.apiVersion: apps/v1 kind: Deployment metadata: labels: app: portal name: portal spec: replicas: 1 selector: matchLabels: app: portal strategy: type: Recreate template: metadata: labels: app: portal spec: containers: - image: hub2.privacera.com/privacera:rel.latest imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 3 initialDelaySeconds: 400 periodSeconds: 30 tcpSocket: port: 6868 name: portal ports: - containerPort: 6868 readinessProbe: failureThreshold: 6 initialDelaySeconds: 120 periodSeconds: 30 tcpSocket: port: 6868 resources: limits: cpu: '0.5' memory: 2457M requests: cpu: '0.2' memory: 307M volumeMounts: - mountPath: /opt/privacera/portal/conf name: conf-vol - mountPath: /opt/privacera/portal/bin name: bin-vol imagePullSecrets: - name: privacera-hub initContainers: - command: - bash - -c - /scripts/wait-for-it.sh zk-0.zkensemble:2181:2181 -t 300 -- image: hub2.privacera.com/privacera:rel.latest name: wait-for-zookeeper - command: - bash - -c - /scripts/wait-for-it.sh solr-service:8983 -t 300 -- image: hub2.privacera.com/privacera:rel.latest name: wait-for-solr - command: - bash - -c - /scripts/wait-for-it.sh mariadb:3306 -t 300 -- image: hub2.privacera.com/privacera:rel.latest name: wait-for-mariadb - command: - bash - -c - cp -r /conf_ro/. /opt/privacera/portal/conf image: hub2.privacera.com/privacera:rel.latest name: copy-conf volumeMounts: - mountPath: /opt/privacera/portal/conf name: conf-vol - mountPath: /conf_ro name: portal-conf - command: - bash - -c - cp -r /bin_ro/. /opt/privacera/portal/bin image: hub2.privacera.com/privacera:rel.latest name: copy-bin volumeMounts: - mountPath: /opt/privacera/portal/bin name: bin-vol - mountPath: /bin_ro name: portal-bin nodeSelector: node: privacera restartPolicy: Always securityContext: fsGroup: 200 serviceAccountName: privacera-sa topologySpreadConstraints: - labelSelector: matchLabels: app: portal-1 maxSkew: 1 topologyKey: zone whenUnsatisfiable: ScheduleAnyway - labelSelector: matchLabels: app: portal-1 maxSkew: 1 topologyKey: node whenUnsatisfiable: DoNotSchedule volumes: - configMap: name: portal-conf name: portal-conf - configMap: defaultMode: 493 name: portal-bin name: portal-bin - emptyDir: {} name: conf-vol - emptyDir: {} name: bin-vol status: {}
Run the update command.
cd ~/privacera/privacera-manager ./privacera-manager.sh update