Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Configuring the Veza integration for Adobe Enterprise.
The Adobe Enterprise integration enables Veza to discover and analyze users, groups, and administrative roles within your Adobe environment. This integration uses Adobe's User Management API (v2) to provide visibility into user access, group memberships, and product license assignments across your Adobe organization.
The integration supports:
Discovery of Adobe Enterprise users and their properties
Mapping of user groups and product profiles
Analysis of group types and license quotas
Adobe admin role assignments
The integration uses OAuth 2.0 client credentials flow. You will need:
An Adobe Enterprise account
Adobe Organization ID (format: xxxxx@AdobeOrg
)
API credentials from Adobe Developer Console (Client ID and Client Secret)
Veza platform access with permissions to add new integrations
The integration uses Adobe's User Management API v2 to collect:
Users: /v2/usermanagement/users/{org_id}
Groups: /v2/usermanagement/groups/{org_id}
The Organization ID is a unique identifier in the format {hex_number}@AdobeOrg
(e.g., A495E53@AdobeOrg
). You can find this value:
In the Adobe Admin Console URL path when logged in
In the Adobe IO Console under your User Management integration settings
Follow the instructions in Setting up the OAuth Server-to-Server credential to create a new Project and credentials.
Select the "User Management API" when configuring the Products & services for the Project.
Note the API Key (Client ID) and generated access token (Client Secret).
In Veza, use the main menu to open the Integrations page.
Click Add Integration and search for Adobe Enterprise.
Click on Adobe Enterprise and to open the configuration form.
Enter the required information:
Name
A unique name for this integration instance
Yes
Insight Point
The Insight Point this integration will be associated with
Yes
Organization ID
Adobe Organization ID
Yes
Must end with @AdobeOrg
Client ID
Adobe API Client ID
Yes
From Adobe Developer Console
Client Secret
Adobe API Client Secret
Yes
From Adobe Developer Console
Click Create Integration to save the configuration.
To check integration status:
On the Veza Integrations list, click the integration name to view details.
On the details page, review the list of data sources.
Use the Status column to check if the data source is unavailable or has an error.
Click on an individual status to show more details.
To view discovered entities:
On the Veza Integrations list, click View Dashboard to show an overview of the entities Veza has discovered.
Click an entity type to view the results in Query Builder.
Review the entities to validate that results and attributes are as expected.
Type: "Adobe Enterprise"
id
Unique identifier for the user
name
Username used for authentication
email
Primary email address for the user
isActive
Boolean indicating if the user account is active
first_name
User's first name
last_name
User's last name
domain
Domain associated with the user's account
country
User's country
account_type
Type of Adobe account (adobeID/enterpriseID/federated)
identities
List of email addresses associated with the user
groups
List of group IDs the user belongs to
id
Unique identifier for the group (converted from integer)
name
Display name of the group
group_type
Type of Adobe group
product_name
Name of associated Adobe product (if applicable)
license_quota
Number of available licenses for the group
The integration supports three built-in administrative roles:
org
org
Organization-level administration
deployment
deployment
Deployment management
support
support
Support access
Each role has a corresponding permission of the same name. All permissions are of type "uncategorized".
Role Properties
id
Role identifier (matches name)
name
Name of the role ("org", "deployment", or "support")
permissions
List of permissions associated with the role
Permission Properties
name
Name of the permission (matches role name)
permissionType
Type of permission (always "uncategorized")
Relationships
Group Membership
Associates users with their groups
Role Assignment
Associates users with administrative roles
Permission Grant
Associates roles with their corresponding permissions
Configuring the Veza integration for Jenkins
The Veza integration for Jenkins enables the discovery of Users and Roles, and permissions. One configured, Veza uses Jenkins APIs to populate the Authorization Graph with entities and metadata. The integration supports project-based Matrix Authorization and role-based access controls.
To enable the integration:
Create a user and API token for the Veza integration:
Create a Jenkins user for the integration. Log in to Jenkins and go to Dashboard → Manage Jenkins → Users → Create User. Enter the name, password, and email-address and save your changes.
Assign them a role with the Overall Read permission under Manage Jenkins > Manage and Assign Roles.
Get an API token for the user. Browse to your Jenkins instance, log in and go to (Your Username) > Configure > API Token.
Click Add New Token. Give the token a name and save the value.
Add the integration to Veza:
Browse to your Veza instance and log in.
Go to Integrations.
Click Add Integration. Select Jenkins as the integration to add. Click Next.
Complete the required fields:
Jenkins Token: the token you created for the integrations.
URL: URL of the Jenkins environment. Ensure the URL ends with a /
.
Username: Integration user name.
Click Save to enable the integration.
ID and Name are collected for both users and roles. Veza discovers and processes all permissions found in Jenkins.
A Jenkins User represents an account with specific permissions and roles within the Jenkins automation server. This entity is subject to access control with varying levels of permissions, such as read, write, and execute, on different Jenkins resources.
full_name
Full name for the user
absolute_url
URL for the user. The ID is part of the absolute URL
A Jenkins Role is a set of capabilities assigned to a Jenkins User or group of users within Jenkins.
Name
Name of the role
Type
Currently only "USER" type roles. (no groups).
Configuring the Veza integration for SharePoint Server (on-premises).
Veza can discover and analyze permissions in SharePoint Server environments that are configured with Microsoft Entra ID (formerly Azure AD) federated authentication. This offers visibility into your on-premises SharePoint infrastructure using an existing Azure Integration, including:
Site collections and sub-sites discovery
Document libraries and folders
Effective permission analysis
Microsoft Entra ID user and group federation
Optional site filtering with allow and deny lists
SharePoint Server 2013 or newer
The SharePoint environment must be configured for federated authentication with Microsoft Entra ID following Microsoft's official documentation
The Azure integration in Veza must be configured with a valid SSL certificate for SharePoint site discovery (Signed certificate recommended for production environments)
You can connect to SharePoint by providing a certificate for app-only access when configuring an Azure integration. For testing environments, you can generate a self-signed certificate following the Microsoft documentation.
The integration requires read-only API permissions to discover SharePoint resources:
Go to the Integrations page and add or edit an Azure integration, following the instructions in Microsoft Azure.
In Azure, create or edit the app registration for the integration with the additional API scopes:
SharePoint:
User.Read.All
Sites.Read.All
Microsoft Graph API:
Directory.Read.All
Files.Read.All
Sites.Read.All
Reports.Read.All
Enable SharePoint discovery by providing a certificate for app-only access and granting optional API permissions as documented in Microsoft SharePoint Online.
If you are limiting the services discovered by the integration, ensure that SharePoint is enabled under Limited Services in the integration configuration.
(Optional) In the Limit Services > SharePoint section, add SharePoint site URLs to the allow or deny lists to limit extraction of specific sites. The integration will detect all on-premesis SharePoint sites included in the /sites/getAllSites
Microsoft Graph API response.
Save your changes to the integration configuration after supplying the X.509 certificate and password, if encrypted.
When discovery completes, perform a Graph search for relationships between Azure AD Users and SharePoint Sites to validate that on-premises sites are appearing as expected.
Additional steps may be needed to fully gather enrolled MFA factors for Okta identities
If your Okta Multi-factor enrollment policies are such that traffic from Veza's Cloud IP Addresses is denied the ability to use a factor, Veza will not be able to detect user enrollment in that factor. As a result, the "MFA Active" property for Okta users will be "False," even if factors are enabled for the user. To prevent this, you can can:
Configure an Okta Network Zone that allows optional MFA factors
Use an Insight Point to connect to Okta from an IP address internal to your data center that does not have these restrictions
See below for more details and steps to enable:
Okta MFA enrollment policies have the ability to not only set enrollment but also define usage. MFA enrollment policies work by evaluating from the highest priority to the lowest priority at the policy level (filtered by groups), and then at the rule level (filtered by Network Zones and App Condition).
This means that if there is not a policy rule that fits the incoming request, Okta will check the next policy that applies to the user until it finds one (Default Policy applies to everyone and Default Rule applies everywhere).
There are 2 options to allow Veza to fully collect MFA enrollment.
Configure a Network Zone specifically for the Veza IP Addresses and allow the factors as optional at the Policy level and deny the Enrollment at the Policy Rule Level:
Create an Okta Group to control scope during deployment.
Configure Network IP Zones for Veza's Cloud IP Addresses under Gateway IPs.
Create a Veza MFA Enrollment Policy.
For Assigned Groups, enter the group created in step 1.
All authenticators are Optional (OIE requires 1 as Required).
Create a Veza Policy Rule:
IF User's IP is "in zone" (Add the Zone for Veza's Cloud IP Addresses)
AND User is accessing "Okta"
THEN Enrollment is "Allowed if required authenticators are missing".
Test the configuration by adding users to the group.
Veza should see everything and user experience should not be affected.
After testing, Remove the "Assigned" Group, and Apply the "Everyone" group.
Have Veza traffic to Okta run through an Insight Point installed in your data center. This asumes your data center IP Addresses do not have the same restrictions as Veza's Cloud IP Addresses.
Configuring the Veza integration for Microsoft SQL Server
Veza connects to standalone SQL Server instances via a local user, using the configured host, port, username, and password. Typically, an Insight Point is recommended to enable a secure connection between Veza and the SQL host. For testing purposes, you can use the internal Insight Point, assuming that firewall rules allow communication with Veza.
NOTE: System databases are not included in the database fetching.
Configuring SQL Database user
1. Connect to your SQL Server and create new SQL Server Login with password.
To enable discovery for SQL Server, you will need credentials for a local SQL Server user (Login with password). Connect to the server using your client of choice, and create the user with the command:
CREATE LOGIN <db_user> WITH PASSWORD = '<password>';
2. Assign read only permissions for the service account.
Grant the following permissions to the SQL Server Login from the previous step:
SQL 2008 and 2012
GRANT VIEW ANY DEFINITION TO <db_user>;
GRANT VIEW ANY DATABASE TO <db_user>;
GRANT CONNECT SQL TO <db_user>;
SQL 2014 and later
GRANT VIEW ANY DEFINITION TO <db_user>;
GRANT CONNECT ANY DATABASE TO <db_user>;
To add the connection, go to Configuration > Integrations_ > Create Integration and choose "SQL Server".
If you are using an external Insight Point
for discovery, change the selection from the default internal Insight Point to the one you deployed.
Enter the server Host
, Port
, Login user
and Password
.
Optionally, prevent discovery of some databases and schema by adding database names to the allow and deny lists. If the allow list is populated, only those resources are discovered. If the deny list is populated, those resources are skipped, while all others are discovered.
Click Save to enable the integration and queue parsing. The SQL Server will be registered and appear under "Discovered Data Sources" on the Configuration > All Data Sources tab.
Configuring the Veza integration for Beeline
Early Access: Beeline is available in Early Access. Please contact our support team to enable the integration.
The Veza integration for the Beeline workforce platform enables discovery of Beeline employees, and can be enabled as a source of identity for lifecycle management policies. HRIS metadata from Beeline can be used to enrich queries, access reviews, and enable provisioning and de-provisioning flows when employees are added or removed, or their status changes.
The Veza Beeline connector uses Beeline's Reporting as a Service (RaaS) feature to retrieve employees and their attributes.
After enabling RaaS, a BeeLine report with the corresponding values must be created in advance. Please contact our support team to coordinate report creation for the latest supported attributes.
Ensure that the RaaS feature is enabled.
Generate an API key for the integration user, that Veza will use for the discovery. This user can be an existing Beeline user or a new user.
Note the ClientSecret
, UserName
and UserAPIKey
from the API Authentication Page
Find the Report ID by opening it in your browser and copying the UUID value from the URL. The report ID will be the part after the ReportID=
parameter.
Note your Customer ID or Project ID from the Beeline URL. This will be the value after beeline.com
such as beeline.com/acme/
or beeline.com/proj1345
depending on if it is a production or development tenant.
On the Veza Integrations page, click Add Integration and locate the Beeline tile.
Configure the integration with the following fields:
Name - Name for the integration
Site ID - Customer or Project identifier for the Beeline instance
Client Secret - Client secret value from the API key generated
User Name - User name for corresponding API key
User API Key - The API key value
Report ID - UUID identifier for published report
URL - Optional: For non-production tenants the URL for connecting to the API. For development projects sites this value is typically https://projapi.beeline.com
.
Enable lifecycle management (optional): On the Integrations page, find the BeeLine integration. In the Lifecycle Management column, toggle the slider to enable the integration as an identity source.
Employee fields ingested by Veza will depend on the report configuration. Currently, the following attributes are supported:
id
employee number
first name
last name
preferred name
display full name
canonical name
email
work location
cost center
employement status
is active
start date
job title
address
admin ou
current end date
external id
hiring manager name
internal job grouping
manager hierarchy level two name
manager hierarchy level three name
manager hierarchy level four name
requires system access
Configuring the Veza integration for Concur
Concur is an enterprise-level expense management platform that automates expense reports, approvals, and payments. The integration facilitates data exchange between Veza and Concur, for user and role discovery.
Before configuring Concur, you must create a new integration application within Concur and generate OAuth 2.0 credentials. Follow these steps:
Navigate to the in Concur and create a new app.
Provide a name and description for the app.
Add allowed grants:
refresh_token
, password
Add allowed scopes:
openid
, identity.user.core.read
, identity.user.enterprise.read
, identity.user.ids.read
, identity.company.core.read
, spend.user.general.read
, identity.user.coresensitive.read
.
Submit and note down the Client ID and Client Secret values.
Go to the page. Enter the app ID and click submit.
Note the Company UUID and Request Token. You will exchange the temporary token for a refresh token prior to configuring the integration in Veza.
Use the curl
command to obtain a refresh token. This command must be run within 24 hours of generating the request token.
Replace placeholders with the actual Client ID, Client Secret, Company UUID, and Request Token:
From the response, collect the refresh_token
value, and use it to configure the integration in Veza.
In Veza, open the Integrations page.
Click Add New and pick Concur as the type of integration to add
Enter the Client ID, Client Secret, and Refresh Token, then Save the configuration
A user account within the Concur system, typically for submitting, managing, and reporting business expenses. The connector supports user attributes:
is_active
: True if User is active on Concur
cost_center
: User’s cost center
employee_number
: User’s employee number if set in Concur
start_date
: User’s start date
termination_date
: User’s termination date
email
: User's email address
Concur Roles determine what level of access and abilities a user has within the system. Built-in roles include approver, processor, or administrator.
The Concur connector currently discovers user roles for:
Base Concur application
Concur Spend integration
Configuring the Veza integration for Egnyte.
The Veza integration for Egnyte enables the discovery of Users, Groups, and Roles from the Egnyte platform. Veza uses Egnyte APIs to populate the Authorization Graph with user, group, and role information. Use it to:
Find users and groups roles within a Workspace.
Find identities with specific permissions in Egnyte.
Note that resources such as individual channels are not discovered. While Veza collects role information, the associated permissions with the roles will not be found in the connector.
Before adding the integration to Veza, you need a token to make authenticated requests on the Egnyte platform:
Get the application API key for your application. Log in to developers.egnyte.com, and go to your profile. Search for Keys.
Ensure the API key user has admin-level permissions. Veza will only use the necessary scopes, which are egnyte.user
, egnyte.group
and egnyte.permissions
.
Follow the official to generate an API Token from your API Key and Client ID.
Copy the generated API Token returned from the API call.
To enable Veza to gather data from Egnyte:
Log in to your Veza platform.
Go to Integrations.
In the main pane, click Add Integration > Egnyte.
Enter the required fields:
Insight Point: Use the default data plane unless connecting with a deployed .
Name: A friendly name to identify the integration.
API Token: A token generated from the API Key, allowing Veza to make the required API calls.
API URL: The URL for your Egnyte instance (e.g. www.{org-name}.egnyte.com/pubapi
).
Click Save to enable the integration.
Veza creates the following entities to represent Egnyte identities and access controls, along with some additional attributes:
Configuring the Veza integration for DocuSign
The DocuSign integration enables discovery of identities, groups, and permissions within a DocuSign account. It uses Open Authorization API to create the following entities:
Account → Custom Application
UserGroups → Local Groups
User → Local User
Permission Profiles → Local Roles
Permission Profiles → Custom Permissions
To set up the DocuSign integration in Veza, you will need to create a DocuSign app and configure Veza with the necessary credentials. This includes the Client ID, Client Secret, and Refresh Token. Additionally, you will need the base URI for DocuSign API calls.
Using a DocuSign developer account, and get the Client ID and Client Secret:
Go to Apps and Keys in DocuSign. Click Add App and Integration Key, and complete the required fields.
Under Authentication, click Add Secret Key and save it to use as Client Secret.
Save your changes and save the Integration Key to use as a Client ID.
Get a Refresh Token, following the instructions in . You will need to get an authorization code for the Veza app, and use it to request an access token.
The response will contain the refresh token:
After obtaining an access token, you can retrieve your DocuSign base URI by making an API request:
Copy the base_url
from the response.
To enable Veza to gather data from DocuSign, follow these steps:
Log in to Veza and go to Integrations
In the main pane, click Add Integration. Click DocuSign.
Complete the required fields:
Name: Friendly name to identify the DocuSign account in Veza
Base URL: DocuSign Base URI. Example, https://demo.docusign.net/restapi/
Client ID: Integration app Client ID
Client Secret: Integration app Client Secret
Refresh Token: Refresh Token for DocuSign API integration
Discovery of DynamoDB Data Resources with Veza
Veza will automatically catalog DynamoDB resources for configured AWS accounts. All discovered DynamoDB tables, secondary indexes, and streams can be viewed in the data catalog, with cross-service effective permissions available in Authorization Graph search. DynamoDB insights are included in select Reports, or can be viewed using the Saved Queries panel.
To extract authorization metadata for DynamoDB, the IAM policy granting discovery and extraction permissions must include the following statement:
These permissions are included in the latest ; if you are upgrading from release
2021.6.x
you will need to update the policy attached to the Insight Point, IAM user, or IAM role used for discovery.
DynamoDB Table
DynamoDB Secondary Index
DynamoDB Stream
# Replace placeholders with actual values
curl --location 'https://us.api.concursolutions.com/oauth2/v0/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'client_id=YOUR_CLIENT_ID' \
--data-urlencode 'client_secret=YOUR_CLIENT_SECRET' \
--data-urlencode 'grant_type=password' \
--data-urlencode 'username=YOUR_COMPANY_UUID' \
--data-urlencode 'password=YOUR_REQUEST_TOKEN' \
--data-urlencode 'credtype=authtoken'
Client ID
Obtained from Concur app settings
Client Secret
Obtained from Concur app settings
Refresh Token
Obtained using curl
command
Name
User name
ID
User unique ID
last_active
Timestamp for when the user last logged in
User email
user_type
Set to service_account
for Egnyte Service Accounts, otherwise human
external_id
User's unique Egnyte external identifier
user_principal_name
User Active Directory login if set
Name
Group name
ID
User unique ID
Name
Role name
{
"access_token": "ACCESS_TOKEN",
"token_type": "Bearer",
"refresh_token": "REFRESH_TOKEN",
"expires_in": 28800
}
curl --request GET https://account-d.docusign.com/oauth/userinfo
--header "Authorization: Bearer <ACCESS_TOKEN>"
{
"Sid": "DynamoDB",
"Effect": "Allow",
"Action": [
"dynamodb:ListTables",
"dynamodb:DescribeTable",
"dynamodb:ListStreams",
"dynamodb:DescribeStream"
],
"Resource": "*"
}
Support for 200+ enterprise systems (Cloud Providers, Databases, Data Lakes, SaaS Applications, Custom Applications, and On-Prem Systems)
Veza offers integrations for cloud providers, data systems (such as Snowflake, AWS RedShift, GCP BigQuery, Azure SharePoint, SQL Server), SaaS applications (SalesForce, NetSuite, JIRA, GitHub, GitLab, and others), and services such as AWS KMS and Azure VPC. Additionally, Veza's Open Authorization API (OAA) enables the integration of custom applications and identity providers. You can also import identity and permissions metadata from any source using CSV Upload.
Veza also provides outbound integrations for platforms such as Slack, Jira, and ServiceNow, and webhooks for publishing events to any external system. Veza can also integrate with Okta, AzureAD, or another compatible identity provider (IdPs) for Single Sign-On (SSO) and MFA.
This page lists all built-in integrations with links to configuration guides. Please contact our support team to learn more about enabling early access integrations on the Veza platform.
See Integrations Overview for more information about how Veza integrations work. See Configuring Integrations for instructions to enable and manage data sources on the Veza Integrations page.
See AWS for details on adding an account to Veza.
AWS Cognito
AWS DynamoDB
AWS EC2
AWS EMR
AWS IAM
AWS IAM Identity Center
AWS KMS
AWS Lambda
AWS Redshift
AWS RDS Services
AWS RDS Aurora
AWS RDS MySQL
AWS RDS Oracle Database
AWS RDS PostgresQL
AWS RDS SQL Server
AWS S3
AWS Security Groups
AWS VPC
AWS EKS
See Azure for details on adding a tenant to Veza.
Azure Blob Storage
Azure Data Lake
Azure Key Vault
Azure RBAC
Azure SQL Database
Azure SQL Server
Azure Virtual Machines
Azure Virtual Networks
Azure Security Groups
Azure Cognitive Services + Azure OpenAI
Azure AKS
Azure PostgreSQL
Microsoft Intune
See Google Cloud Platform for details on integrating your Google organization with Veza.
Identity and Access Management (IAM)
BigQuery
Cloud Run
Cloud Storage
Compute Engine
Key Management Service (KMS)
Virtual Private Cloud (VPC)
See Oracle Cloud Infrastructure for setup instructions.
OCI IAM
OCI Object Store
See Salesforce Commerce Cloud for setup instructions.
Salesforce Business Manager
FiveTran (Supported via SCIM)
Celonis (Supported via SCIM)
Cerner (Early Access)
Envoy (Supported via SCIM)
Harness (Supported via SCIM)
IronClad (Supported via SCIM)
SharePoint Online / OneDrive (Configured through the Azure Integration)
Sigma Computing (Supported via SCIM)
Thousand Eyes (Supported via SCIM)
Twingate (Supported via SCIM)
Zapier (Supported via SCIM)
CSV Upload enables data source owners and administrators to import identity and authorization metadata from sources that don't have built-in Veza integration. You can create an integration using a CSV file when you need to:
Import user and authorization data from legacy or custom applications
Integrate with any SaaS application that supports CSV exports
Model employee access to homegrown or specialized systems
Upload employee metadata as a source of identity for Lifecycle Management workflows
For instructions, examples, and troubleshooting guidance, see the CSV Upload documentation.
Veza supports the collection of authorization metadata from applications with Users and Groups SCIM endpoints with our in-platform Generic SCIM Connector.
Veza OAA is an Open Source framework for adding any custom applications to Veza. Veza develops and supports an expanding suite of OAA connectors, alongside several Community developed connectors. Additionally, any application can be integrated using OAA templates (see below) and Veza-provided OAA SDK.
OAA provides templates for modeling identities, resources, and access controls within custom applications and identity providers, which can be published with a Veza-developed python client or a custom script.
Custom Application: Map federated identities to custom resources
Custom Identity Provider: Map external resources to custom users and groups
Custom Human Resource Information System (HRIS): Upload employee metadata, enabling identity mapping, enrichment and Lifecycle Management actions.
Configuring the Veza integration for BlackLine
The Veza integration for BlackLine enables gathering User, Group and Role assignments from the BlackLine financial automation platform.
Create a BlackLine user for API access
The user must have the API
Role and be a System Administrator to make the necessary requests
Generate an API key for the user for the BlackLine API Administration Portal or Financial Close System
Request OAuth 2.0 credentials from the BlackLine customer support team:
Required API features: Accounts
Required scopes: bl_users
, bl_mdm
Their team should return a PDF with the OAuth app credentials. Use this support-provided installation form to configure the integration on Veza.
For more detail on obtaining credentials and BlackLine API keys, see Getting Started in the official developer documentation.
On the Veza Integrations page, add a BlackLine Integration with the following fields:
Name - integration name
URL - URL for BlackLine instance from installation form e.g. https://us.api.blackline.com
Username - Username of BlackLine user for the integration
API Key - API key generated for the user
Client ID - The Client ID from the support-provided installation form
Client Secret - The Client Secret from the installation form
Instance ID - UUID-type string from the Installation form Scope following the instance_
. Do not include the scope strings such as bl.users bl.mdm.
NOTE: Please contact Blackline Customer Support if you need the values for URL, Username, API key, Client ID, Client Secret and Instance ID.
id
User login
name
User full name as configured in BlackLine
is_active
Boolean True if user is active
email
User's configured email
job_title
User's Job Title if set in BlackLine
id
BlackLine Group ID
name
Group name
level_name
Name of Group Level
unique_code
BlackLine unique code for Group (short name)
parent_id
ID of Parent Group if child
name
Product Name
name
Role Name
Roles are assigned to Users or Groups to either BlackLine Application or specific BlackLine Product (resource) as configured in BlackLine.
Configuring the Veza integration for Crowdstrike
The Veza integration for Crowdstrike enables the discovery of Users, Roles, and permissions from the Crowdstrike Falcon platform. Veza uses Crowdstrike APIs to populate the Authorization Graph with entities and metadata.
This document explains how to enable and create a Crowdstrike Falcon integration. See notes and supported entities for more details.
For customers with access to Crowdstrike Identity Protection, the Veza integration for Crowdstrike can be configured to import identity risk scores from the Falcon platform and store them as custom tags on identities in Veza.
Veza can also be configured to mark identities on the Falcon platform to trigger administrative investigation if the identity's Veza Risk Score is greater than 50.
Before adding the integration to Veza, create an API client on the Crowdstrike platform for the connection.
Browse to your Crowdstrike Falcon instance (ex: https://falcon.us-2.crowdstrike.com/
) and log in
Click the hamburger icon in the upper-left corner to open the navigation bar
Click Support and resources in the left navigation bar, then click API clients and keys in the Resources and tools section of the navigation submenu
Click Create API client in the upper-right corner of the screen
Enter the following details in the Create API client modal window:
Client name: a distinct name for the API client
Description: an optional description of the API client's purpose
Scope:
Locate User management and click the Read checkbox
If Risk Score import/export will be enabled, locate Identity Protection GraphQL and click the Write checkbox
Click Create at the bottom of the modal
From the API client created window, record the Client ID, Secret, and Base URL output values
Click Done to close the modal
To enable Veza to gather data from the Crowdstrike Falcon platform:
In Veza, open the Integrations page.
Click Add New and pick Crowdstrike as the type of integration to add
Enter the required information and Save the configuration
Name
A unique display name for the Crowdstrike Falcon connection
Crowdstrike Url
The Base URL value recorded earlier
Crowdstrike Client Id
The Client ID value recorded earlier
Crowdstrike Client Secret
The Secret value recorded earlier
Import Risk Scores
Check this to import risk scores from Falcon Identity to Veza
Export Risk Scores
Check this to mark identities with a Veza Risk Score of 50 or higher in Falcon Identity
Veza API Key
Required only if risk score import/export is enabled
Veza Tenant URL
Required only if Risk Score import/export is enabled
The connector discovers the following entities and attributes:
is_active
Boolean True if user account is active
email
User email
created_at
Creation time for user
last_login_at
The timestamp of the user's last login
cid
The home CID of the Falcon user (if in a multi-CID environment)
description
A description of the role
If Risk Score import is enabled, Okta
and Azure Active Directory / Entra
identities that exist on the Crowdstrike Identity Protection platform will be updated with two new tags in Veza:
crowdstrike_risk_score
The numeric risk score generated by the Falcon platform
crowdstrike_risk_score_severity
The HIGH/MEDIUM/LOW risk score severity associated with the risk score
Configuring the Veza integration for IBM Aspera on Cloud
The Veza integration for IBM Aspera on Cloud enables gathering User, Groups, Roles and Workspace memberships for the cloud-based file transfer platform.
Generate a key pair to use for authentication (if creating a new user):
Use the command to generate the private portion ssh-keygen -t rsa -b 4096 -m PEM -f jwtRS256.key
.
Do not set a password.
Create a public key from the private key: openssl rsa -in jwtRS256.key -pubout -outform PEM -out jwtRS256.key.pub
.
Create or use an existing user for authentication:
For a new user, set the user's public key to the public portion of the generated key pair.
For an existing user and key pair set, use the corresponding public key to configure the integration in Veza.
Go to Integrations -> API clients to create an API client:
Enter a name.
Enter the Veza URL for the Redirect URI.
Enable Enable JWT Grant type.
Deselect Client can retrieve token for all users and pick the configured user.
Click create and note the Client ID and Client Secret
Note the Aspera Organization name. This is your Aspera sub-domain, for example https://<org_name>.ibmaspera.com
.
On the Veza Integrations page, add a Aspera Integration with the following fields:
Name - Name for integration
Client Id - Client ID from the API client
Client Secret - Corresponding Client Secret
Username - Username for API client user with public key.
Organization Name - Aspera Organization name
Aspera Users
id
Aspera on Cloud User ID
name
User full name as configured
is_active
Boolean True if user is active
created_at
Timestamp for user creation
last_login_at
Timestamp user last logged in
email
User's configured email
ibm_uid
Corresponding IBM User ID
ats_admin
Boolean true if user is ATS Admin
organization_admin
Boolean True if user is Organization Admin
Aspera Group
id
BlackLine Group ID
name
Group name
created_at
Timestamp for group creation
manager_ids
List of manager User IDs for Group
owner_ids
List of group owner IDs
Aspera Workspace
id
Workspace ID
name
Workspace Name
description
Workspace description
Aspera Roles
Users are assigned roles to the Organization and Workspace based on their configured status
Organization Roles
Organization Admin
ATS Admin
Member
Workspace Roles
Manager
Member
Configuring the Veza integration for Oracle Enterprise Performance Management (EPM)
The Veza integration for Oracle Enterprise Performance Management (EPM) discovers users, groups and roles assigned in EPM. Veza uses an Oracle EPM service account connect to the EPM APIs to run the built in EPM reports for user group and role assignments.
Create a service account in Oracle EPM for Veza to use:
From Account Type list select Basic Auth and set a username and password
Account must have Service Administrator role
Note the username and password
For more information on Service Accounts see Oracle Documentation
Note the URL of the Oracle EPM instance
In Veza, open the Integrations page.
Click Add New and pick Oracle EPM as the type of integration to add
Enter the required information and Save the configuration
URL
URL of Oracle EPM instance
Username
Username for service account
Password
Password for service account
Veza discovers and shows the following metadata for EPM entities. Attribute filters can be used to constrain searches and access reviews based on these properties
id (text)
User login
name (text)
User display name (first + last)
email (text)
User email address
name (text)
Group name
name (text)
Role Name
Note: Oracle EPM API does not return information on role configurations and permissions
Configuring the Veza integration for MySQL
The Veza MySQL integration provides visibility into database security posture by discovering local users, roles, resources, and permissions within a MySQL instance. This integration enables security teams and database administrators to:
Map and monitor access across databases, tables, triggers and routines
Analyze role-based access control (RBAC) including privilege inheritance
Identify users and roles with elevated privileges
Track permission delegation through grant options
Monitor administrative capabilities and sensitive operations
For managed MySQL instances, see RDS MySQL documentation.
Veza requires a MySQL user with read-only permissions to discover resources and permissions. Connect to your database, and execute the following commands to create a Veza User and grant the needed privileges for discovery. Replace [veza_user]
with the name of the actual database user you want to create:
CREATE USER '[veza_user]'@'%' IDENTIFIED BY '[your-strong-password]';
GRANT REFERENCES ON *.* TO [veza_user];
GRANT SELECT ON mysql.user TO [veza_user];
GRANT SELECT ON mysql.db TO [veza_user];
GRANT SELECT ON mysql.tables_priv TO [veza_user];
GRANT SELECT ON mysql.columns_priv TO [veza_user];
GRANT SELECT ON mysql.global_grants TO [veza_user];
GRANT SELECT ON mysql.procs_priv TO [veza_user];
GRANT SELECT ON mysql.proxies_priv TO [veza_user];
-- Only if MySQL version is up to 5.7
GRANT SELECT ON mysql.proc TO [veza_user];
-- Only if MySQL version is 8+
GRANT SELECT ON mysql.role_edges TO [veza_user];
GRANT SHOW_ROUTINE ON *.* TO [veza_user];
-- If including triggers
GRANT TRIGGER ON *.* TO [veza_user];
Before configuring the integration, you must have:
Network connectivity from Veza to your MySQL server via:
A deployed Insight Point in your network (recommended for production)
Direct connection using Veza's internal Insight Point (suitable for testing)
On the Veza Integrations page select Add Integration and locate the MySQL tile. Configure the integration with the following fields:
Insight Point: Choose whether to use the default data plane or a deployed Insight Point
Name: A friendly name to identify the unique integration
Host: The hostname or IP address of the MySQL server.
Port: The port number on which the MySQL server is listening (default is usually 3306).
Username: The username to authenticate with the MySQL server.
Password: The password associated with the provided username.
Click Create Integration to save the configuration
Veza discovers the following MySQL entities:
MySQL Instance
MySQL Database
MySQL Local User
MySQL Local User Instance
MySQL Role
MySQL Role Instance
MySQL Routine (Function/Procedure)
MySQL Table
MySQL Trigger
Configuring the Veza integration for Power BI
Early Access: The Power BI integration is provided as an Early Access feature. Please contact our support team for more details
The Veza integration for Power BI enables discovery of Users and Groups assigned to Workspaces in Power BI cloud environments connected to Azure AD tenants.
The Veza Connector for Power BI uses an Azure App Registration to authenticate to the Power BI Admin API. This can either be a new app registration or an app used for an existing Veza-Azure integration. Follow the steps below to enable Power BI access for the app registration, creating one if necessary:
From the Azure Portal:
Create a new Application and generate credentials. If you are using an existing app created for Azure discovery, skip this step.
Generate a client ID and Secret value for the application to use for authentication.
Note the Tenant ID of the application.
Create an Entra (Azure AD) Security Group, used to authorize the Application to use the Power BI admin API.
Add the Application to the Security Group.
From the Power BI Admin Portal:
Navigate to Admin API settings
Under Service principals can access read-only admin APIs ensure that it is enabled.
Add the security group created above to the specific security groups allowed and apply the settings.
Power BI settings can take 15 minutes to propogate, you may need to wait before configuring the Veza integration
On the Veza Integrations page select Add Integration and locate the Power BI tile. Configure the integration with the following fields:
Name - Name for the integration
Tenant ID - The Azure Tenant ID that Power BI is connected to where the app registration is created
Client ID - The client ID of the app registration.
Client Secret - The ID of the secret generated for the app registration.
Power BI users and groups are managed via Azure Entra (Azure AD). User and Group entities in the Veza graph serve to connect the Power BI role to the correct Azure user.
id
Power BI group ID
name
Name of the group
id
Power BI Workspace ID
name
Name of the Workspace
description
Workspace description if set
is_on_dedicated_capacity
Boolean if the Workspace is using its own dedicated storage capacity
is_read_only
Boolean if Workspace is marked as read-only
state
State as reported by Power BI
has_workspace_level_settings
True if Workspace has local setttings
Configuring the Veza integration for PagerDuty
The Veza integration for PagerDuty connects to the incident management platform to gather authorization for users that are configured in PagerDuty, their base role for the PagerDuty application, and their assigned Teams and Team roles.
To authenticate with PagerDuty, Veza requires an API key for a PagerDuty user. To generate this API key (also referred to as a token):
Log in to PagerDuty.
Click the Integrations menu button in the middle of the PagerDuty screen, then click API Access Keys.
Click the Generate new API Key button to obtain an access token.
Enter a description, click on Create Key and Save the API token. Copy the token value to use when configuring Veza.
See the PagerDuty documentation for the most up-to-date guidance.
In Veza, open the Integrations page..
Click Add Integration and pick PagerDuty as the type of integration to add.
Enter the required information and Save the configuration.
Insight Point
Choose whether to use the default data plane or a deployed Insight Point.
Name
A descriptive name to identify the unique integration.
PagerDuty URL
URL for PagerDuty API endpoint including protocol (such as https://
)
PagerDuty Token
The token used to access the PagerDuty API
Veza creates Authorization Graph nodes to model PagerDuty teams, users, roles, and role permissions:
PagerDuty Business → PagerDuty Application
PagerDuty Team → PagerDuty Resource
PagerDuty Team → PagerDuty Group
PagerDuty User → PagerDuty User
PagerDuty User Role → PagerDuty Role
PagerDuty User Role → PagerDuty Permission
This connector uses the PagerDuty API to extract the identity and authorization information for users. Users are connected by identity based on their email address configured in PagerDuty.
PageDuty Teams are represented both as a local group and a resource. If the User has a Team Role it is represented on the resource. The Local Group can be used for purely membership queries, while role assignments to the resource should be used to audit a user's permission within a PagerDuty Team.
id
PagerDuty User ID
name
PagerDuty User name
email
The email address configured for the PagerDuty user
is_billed
Boolean value if user is a billed user in PagerNow
full_admin
True if user is a global admin
id
PagerDuty Group ID
name
PagerDuty Group name
description
Truncated team description
default_role
Default role for new users assigned to the Team
summary
Summary value for Team
id
PagerDuty Team ID
name
PagerDuty Team name
Configuring the Veza integration for HubSpot.
The Veza integration for HubSpot enables discovery of users, teams, and roles on the HubSpot CRM platform, enabling search, insights, and access reviews involving user access to HubSpot.
The integration includes out-of-the-box queries. You can modify these based on your actual environment to create dashboards and rules for the risks and trends you want to monitor:
All HubSpot local user accounts
HubSpot roles that have users assigned
Number of users who have been granted the Super Admin role in HubSpot
Total number of HubSpot Roles
All HubSpot local Teams
HubSpot teams that have users assigned
HubSpot Local Users with an Okta identity
HubSpot Local Users who do not have an Okta identity
HubSpot Local Users with an Azure AD identity
HubSpot Local Users who do not have an Azure AD identity
This document includes steps to enable the HubSpot integration in Veza, and supported entity details.
To configure the integration, you will need a HubSpot access token for a private app.
Creating a private app enables Veza to use HubSpot's APIs to access specific data within your HubSpot account using an access token unique to the private app. You can create an app by following the instructions in Private Apps. You must be a super admin to access private apps in your HubSpot account.
In HubSpot, click the settings icon in the main navigation bar.
On the left sidebar, open Integrations > Private Apps.
Click Create Private App.
On the Basic Info tab, configure the details of your app:
Enter your app's name.
Hover over the placeholder logo and click the upload icon to upload a square image that will serve as the logo for your app.
Enter a description for your app.
Click the Scopes tab to add required scopes:
settings.users.teams.read
settings.users.read
Click Create App in the top right to save your changes.
On the Auth tab of the application details, click Show Token and copy the app access token:
In Veza, open the Integrations page.
Click Add New and pick HubSpot as the type of integration to add.
Enter the required information and Save the configuration.
Name
A unique display name for the HubSpot organization.
Insight Point
Use the default setting unless using an external .
Token
Trusted access token for the HubSpot private app.
The HubSpot integration uses standard custom application entity types to model users, teams, and permissions in the authorization graph:
HubSpot User → Local User
HubSpot Teams → Local Groups
HubSpot Permission Sets → Local Roles
Veza collects the following attributes for HubSpot entities:
User
email
User's email address
User
primary_team_name
User's primary team name
User
primary_team_id
User's list of secondary team names
User
superadmin
True if the user is a Super Admin
User
role_name
User's role
Group
id
Team's ID provided by HubSpot
Group
name
Team's name
Role
id
Role's ID provided by HubSpot
Role
name
Role's name
Automating updating CSV integration data
In addition to using a simple web interface to update CSV data manually, you can automate a process to push new data using the Veza REST API and refresh the Veza graph. This document includes example utilities using Python and CLI tools.
After creating a CSV upload integration, you can use the REST API operation Push Custom Provider Datasource CSV to upload new CSV data.
Whenever a CSV is submitted, it is processed based on the current configuration of the CSV Upload Integration provider, including any column mapping settings.Authentication: To make API calls, you must include an authorization token in the header of each request. This can be:
A Personal API Key for a Veza administrator
A Team API Key, for a team assigned to manage CSV Upload integrations
See Authentication for more details on creating API keys.
Note: The CSV data must be complete for each upload. Veza will remove entities from the Graph for any entities that were present in the previous upload, but not in the current upload.
Using the REST API requires the Integration (Provider) and Data Source IDs. You can retrieve these in Veza on the Integration Details > Data Source tab:
On the Veza Integrations page, click the CSV integration to view details
On the Data Source tab, click the data source name to view details
Copy the values from the Properties table:
The unique data source "Id"
The "Provider Id"
Both values are in UUID format, e.g., 19b0c736-6686-4708-87e2-92171db6afb3
.
Uploading the CSV data is made with a post call to the /api/v1/providers/custom/{provider_id}/datasources/{data_source_id}:push_csv
endpoint.
Note: The CSV contents must be base64-encoded into the JSON body of the request. Raw CSV values are rejected. You can automatically convert the data as part of your implementation, as shown below.
{
"csv_data": "abc123="
}
CSV_PAYLOAD=$(cat my_app_data.csv | base64)
curl --location https://example.vezacloud.com/api/v1/providers/custom/40bdd318-d320-4574-be90-ca556d59889a/datasources/9bc29dc6-8cd0-4926-992e-7d720305ae2f:push_csv \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer $VEZA_API_KEY" \
--data "{\"csv_data\": \"${CSV_PAYLOAD}\"}"
#!/usr/bin/env python3
import base64
import json
import os
import sys
import oaaclient.utils as oaautils
from oaaclient.client import OAAClient, OAAClientError
veza_url = "https://example.vezacloud.com"
veza_api_key = os.getenv("VEZA_API_KEY")
provider_id = "UUID of Provider"
data_source_id = "UUID of Data Source"
source_csv = "path/to/my_file.csv"
print("Connecting to Veza")
try:
veza_con = OAAClient(veza_url, veza_api_key)
except OAAClientError as e:
print("Error connecting to Veza tenant")
print(e)
sys.exit(1)
print("Loading CSV file")
with open(source_csv, "rb") as f:
encoded_csv = base64.b64encode(f.read())
print("Pushing data to Veza")
try:
push_request = {"id": provider_id, "data_source_id": data_source_id, "csv_data": encoded_csv.decode()}
veza_con.api_post(f"/api/v1/providers/custom/{provider_id}/datasources/{data_source_id}:push_csv", push_request)
print("Push succeeded")
except OAAClientError as e:
log.error(f"{e.error}: {e.message} ({e.status_code})")
if hasattr(e, "details"):
for d in e.details:
log.error(d)
sys.exit(3)
Configuring Azure SQL database for Veza discovery
Resources and authorization for Azure SQL Database are automatically discovered for connected Azure tenants, unless the service is disabled in the provider settings.
To collect complete authorization metadata for each database, you will need to create a local database user that the app registration can connect as to execute read-only queries.
You will need access to Azure SQL Database(s) and permission to create the local user.
The Azure SQL Database must have an Azure AD Admin configured.
The database user must have the same name as the Azure app registration used for discovery, or match the "DB User" name provided when configuring the connection.
Connect to your database and create a user, updating db_user
in the examples to match the name of the Veza app registration:
CREATE USER [db_user] FROM EXTERNAL PROVIDER
Note that you must connect using Azure AD Authentication to create the Azure AD-connected local user.
Grant select permissions to the sys
schema:
GRANT VIEW DEFINITION TO [db_user]
Reader
role to the Azure subscriptionThe app registration must have the Reader
role to the Azure subscription attached to the resources to discover. You can check if this was already configured during provider setup, by viewing the subscription's role assignments under Access Control (IAM):
From your Azure portal, browse to Subscriptions and choose the registered to the SQL DB. From Access Control (IAM) choose Add > Add role assignments, and select the Reader
role:
Click Next, and choose Select members on the next screen. Select the Veza app registration.
Review and assign the role. You can verify the subscription's role assignments from the main Access control panel.
The next time Veza conducts discovery of your Azure tenant, the new data source will be registered and appear on the Configuration > Apps and Data Sources panel.
Configuring the Veza integration for Delinea Secret Server
The Veza integration for Delinea Secret Server enables the discovery of Users, Groups, Roles, and permissions from the Delinea Secret Server platform. Veza uses Delinea APIs to populate the Authorization Graph with entities and metadata.
This document explains how to enable and create a Delinea Secret Server integration. See notes and supported entities for more details.
Before adding the integration to Veza, create or select a user account for the connection.
To create a single user on the Delinea Secret Server platform, browse to your Delinea instance as an administrator, go to Admin -> User Management, then select Create User
Once the user account has been created or identified, record the username and password for the account, then ensure that the account is assigned the following roles:
To enable Veza to gather data from the Delinea Secret Server platform:
In Veza, open the Integrations page.
Click Add New and pick Delinea as the type of integration to add.
Enter the required information and Save the configuration.
The connector discovers the following entities and attributes:
Configuring the Veza integration for GitLab
This integration discovers Users, Groups, and Projects for GitLab software development platform, along with authorization data for each group and projects. The integration supports self-hosted and SaaS GitLab deployments.
The GitLab integration requires a read-only access token for authentication, and will discover all groups, sub-groups, and projects the token can access. For self-hosted (non-SaaS) environments, you can optionally discover all groups and additional user information by providing an admin token.
See for more information.
Generate a under GitLab Edit profile > Access Tokens.
For self-hosted, we recommend generating a personal access token for an Admin-level user to enable full discovery.
For GitLab SaaS, a group token will typically be most appropriate. Personal access tokens for a group Owner can also be used.
Assign the access token read_api
access only.
Assign the token a name and expiration date.
Save the generated token and use it to configure the integration.
To enable the integration:
Browse to the Veza platform and log in.
Go to Integrations.
Click Create Integration. Select GitLab as the integration to add.
Complete the required fields:
Insight Point: By default, integrations run on the Veza SaaS platform. Optionally, you can make an internal connection to GitLab with a deployed .
Name: Friendly name for the GitLab deployment.
URL: GitLab URL for the connection. Use https://gitlab.com
for SaaS or specify URL for self-managed GitLab.
Access Token: Integration Access Token.
Click Create Integration to save and enable the configuration.
This connector creates the following entities to map applications and identities to permissions:
GitLab groups are represented both as a Group for User membership and as a Group Resource to show user's role in the group and associated permissions (such as Developer, Owner, Guest).
Attributes above marked with *
are only available on self-hosted with an admin token
Does not currently process external users
Configuring the Veza integration for Kubernetes
The Veza integration for Kubernetes enables gathering information about the RBAC roles existing in a cluster, and who has permissions on Kubernetes services and resources.
The integration supports self-hosted deployments and managed Kubernetes services. If you've also integrated Microsoft Azure or Amazon Web Services with Veza, the Kubernetes integration can show authorization relationships connecting users and Kubernetes services, clusters, and roles.
For example, for AWS EKS, the integration provides visibility into:
K8s Clusters in EKS services
Service-linked roles for EKS
AWS IAM Users and Roles with access to K8s clusters
Paths connecting IAM User → AWS IAM Role → AWS EKS Services → K8s RBAC → K8s Clusters
See for more details.
You must install an Insight Point within the cluster to enable a secure connection and collect Kubernetes RBAC metadata. Follow the instructions in to get a Veza-provided OCI image.
In Veza, open the Integrations page.
Click Add Integration and pick Kubernetes as the type of integration to add
Enter the required information and Save the configuration.
To integrate with a cluster that is not managed in EKS, AKS, or GKE, enter the:
Cluster ID: the unique identifier of the Kubernetes cluster to discover, containing the specified . The exact format can vary depending on environment where the Kubernetes cluster is deployed, e.g. us-east-onprem-cluster
.
To integrate with Kubernetes on EKS, enter the:
Cluster ID: ARN of the EKS cluster, e.g. arn:aws:eks:us-east-1:123456789012:cluster/my-eks-cluster
Tenant ID: ID of the parent AWS account, e.g. 123456789012
To integrate with Kubernetes on AKS, enter the:
Cluster Name: Human-readable name of the cluster in AWS, e.g. example-cluster
Tenant ID: ID of the parent Azure tenant. This is an Azure Directory ID in the format 12345678-9abc-def0-1234-56789abcdef0
Subscription ID: Globally unique identifier assigned to the parent Azure subscription, e.g. 12345678-9abc-def0-1234-56789abcdef0
Resource Group: Name of the logical container the cluster is located, e.g. myResourceGroup
.
To integrate with Kubernetes on GKE, enter the:
Project ID: Unique identifier for the Google Cloud Project, e.g. project-id
Location: Geographic area of the GKE Service, e.g. us-central1
Cluster Name: Name of the cluster to discover, e.g. gke-cluster-name
Kubernetes clusters contain groups of nodes that work together to run containerized applications and services.
Roles represent permissions granted to a user or a group of users within a specific namespace. A cluster role is a set of permissions that can be granted to a user or a group of users within the entire cluster.
A Role Binding connects a Role (or a ClusterRole) to a user, a group of users or a service account within a specific namespace. Cluster Role Bindings connect a ClusterRole to a user, a group of users or a service account within the entire cluster.
An identity used by applications running in the Kubernetes cluster to authenticate and interact with the Kubernetes API server.
A local identity used to authenticate and interact with a cluster. Assigned roles allow users to perform specific actions within namespaces or across the entire cluster.
Configuring the Veza integration for Dropbox
The Dropbox integration enables discovery of users, groups, folders, and files within a Dropbox Business account. Veza parses group memberships and permissions to show the full range of user access on the cloud-based content management, collaboration and file sharing service.
Access Reviews: Review user and group access to files and folders in Dropbox
Search: Search for users based on permission type or group membership
Rules and Alerts: Create rules for alerts when users are added to critical groups or new users gain access to sensitive folders
See for more details.
Veza connects to Dropbox with an OAuth 2.0 authentication flow. You will log in to Dropbox to approve permissions for the Veza application as part of adding the integration in Veza.
Individual Permissions:
View information about members' Dropbox files and folders
View members' Dropbox sharing settings and collaborators and manually added Dropbox contacts
View basic information about members' Dropbox account such as username, email, and country
Team Permissions:
View content of and information about your team's files and folders and view and edit governance data of your team's files and folders
View your team group membership and team membership
View structure of your team's and members' folders
View basic information about your team including names, user count, and team settings
To add a Dropbox account for discovery:
In Veza, go to the Integrations page.
Click Add Integration and search for Dropbox. Choose it and click Next to add an integration.
Enter the required information
Click Authorize to approve the connection in Dropbox. Log in as a Dropbox administrator and click Allow to enable the integration.
Click Create Integration to save the configuration.
A Dropbox Business account (Dropbox Team) is the top level entity. A team has users (members) who can share their files and folders (resources). Permissions on the shared item can be Editor
or Viewer
. Users can belong to groups, which can also have permissions on files and folders.
Veza shows team-owned (or account level) folders in addition to user’s folders.
Veza creates the following Authorization Graph entities to model authorization in Dropbox:
Top-level entity representing a Dropbox Team.
Tenant Unique ID: Dropbox Team ID (e.g dbtid:asdasdaskjdnajksdakjdkasgAQDLO_eiMaQ
)
Created at: Timestamp when the user account was created
User Unique Id: Unique identifier for the user
Email: User's email address
Groups: List of groups the user belongs to
Identity Unique Id: Unique identifier for the user's identity
Is active: Boolean indicating if the user account is active or not
Group Unique ID: Unique identifier for the group
Represents a User > Group assignment in Dropbox.
Permissions: Can be owner
, editor
, viewer
, viewer_no_comment
, traverse
, other
.
The Dropbox Folder entity represents a folder in the Dropbox file system.
Configuring the Veza integration for LastPass
The Veza integration for LastPass Enterprise connects to the platform to discover users, groups, roles, and folders used to store and share passwords and other secrets. Use the integration to:
Search for LastPass users and shared folders, and create rules and alerts.
See effective permissions within LastPass for users and groups, based on their roles.
Review LastPass user > group, user > folder, and user > role assignments.
LastPass enterprise policies can restrict API access to report-only. This policy must be disabled to permit the Veza integration to make the required API calls.
You can view and manage this policy under LastPass Admin Console > Settings > Policies > Restrict Enterprise API to event reporting
The connector uses the LastPass Enterprise API to fetch authorization metadata. You will need a LastPass account number (cid
) and provisioning hash (prohash
) to authenticate. To retrieve these values, log in to LastPass using an account with permission to access the Admin Console at .
Account ID: Unique Account ID provided by LastPass. This can be retrieved on page:
Provisioning Hash: This API secret can be generated on the LastPass Admin page. Go to to manage provisoning hashes.
You can use an existing provisioning hash, which is unique for your organizations LastPass Enterprise API. If you cannot retrieve the current value, you will need to regenerate it and update any other applications to use the new hash.
See for the latest guidance from LastPass.
To enable Veza to gather data from the LastPass platform:
Browse to your Veza instance
In the left navigation, expand Configuration, then click Integrations
In the main pane, click Add Integration. Pick LastPass.
Enter the required details:
Insight Point: Use the default option unless you need to use an external Insight Point for the connection.
Name: A friendly name to identify the unique connection.
Account ID: The account number (CID) shown on the LastPass dashboard, e.g. 123456789012
Provisioning Hash: your LastPass API secret, e.g. 94b95bc8bdf562b32e98eac06e9f6d597111e58XXXXXXX6584b3535d322718bc
.
Veza discovers and shows the following metadata for LastPass User entities. Attribute filters can be used to constrain searches and access reviews based on these properties:
Veza discovers and shows the following metadata for LastPass Group entities. Attribute filters can be used to constrain searches and access reviews based on these properties:
LastPass folders have the following attributes:
The Veza LastPass integration discovers the user's role in LastPass as either Admin or User. LastPass does not currently return information about customer-created Admin Levels. Any admin-level user will be assigned the Admin role for the LastPass application. All other users will be assigned the User role.
Users assigned to a Shared Folder (either directly or by group membership) have Roles based on the configuration of permissions on the assignment.
Veza creates these Authorization Graph entities to represent access controls enabled when managing Shared Folder recipients in LastPass:
A user may have multiple roles on a folder based on the pairings of these permissions.
Configuring the Veza integration for Palo Alto Networks SASE / Prisma Access
The Veza integration for Palo Alto Networks enables the discovery of applications, users, roles, and permissions from the Palo Alto Networks SASE platform. Veza uses Palo Alto Networks APIs to populate the Authorization Graph with entities and metadata.
This document explains how to enable and create a Palo Alto Networks integration. See for more details.
Before adding the integration to Veza, create a service account for the connection and record your tenant ID.
To create a service user on the Palo Alto Networks platform, follow these steps:
Browse to your Strata Cloud Manager instance as an administrator.
In the left navigation pane, click the Settings gear. Click Identity & Access.
In the Identity & Access pane that appears, record and store the tenant ID (TSG ID) displayed at the top of the pane, then click the Add Identity button.
In the modal that appears, provide the following information:
Identity Type: Service Account
Service Account Name: Enter a unique name for the service account (ex: svc-veza-integration
)
Service Account Contact: Enter an optional email for the owner of the service account
Description: Enter an optional description for the service account's purpose
Click Next.
On the Client Credentials screen that appears, copy and save the Client ID and Client Secret. Click Next.
On the Assign Roles screen, click the dropdown menu under Apps & Services and enable All Apps & Services
. Click the Role box and pick View Only Administrator
.
To enable Veza to gather data from the Palo Alto Networks platform, follow these steps:
In Veza, open the Integrations page.
Click Add New and pick Palo Alto Networks as the type of integration to add. Click Next.
Enter the required information (below) and Save the configuration.
The connector discovers the following entities and attributes:
The connector discovers the following applications on the Palo Alto Networks platform:
The connector discovers human users and service account users.
The connector discovers both built-in and custom roles and their permissions.
Configuring the Veza integration for BambooHR
The Veza integration for BambooHR connects to the HRIS platform to discover user profiles and attributes, and group assignments within the application. BambooHR users typically access the platform to track hours worked, manage benefits enrollment, and administer payroll from a single platform. Use the integration to:
Search for users and filter the results based on metadata Veza collects.
Review user > group assignments within BambooHR.
Create alerts and rules to alert for changes in user attributes such as Activity Status.
The connector uses the BambooHR Reports API to gather the required authorization metadata. To enable the connector on Veza, you will need to supply an API key and the company domain to connect to:
Company Domain: The name of the company from your BambooHR login URL: https://{company_domain}.bamboohr.com/
.
API Key: Unique API Key provided by BambooHR. Each user can have one or more secret keys that identify that user to the API. The secret key is a 160-bit number expressed in hexadecimal form.
To create an API key in BambooHR, follow these steps:
Log in to BambooHR and click on your name in the upper right corner of any page to open the user menu. Optionally, you can create a dedicated BambooHR user for the integration, and complete these steps after logging in as that user. Note that users must have Full Admin
access to create API keys.
Click API Keys.
On the following page, click on Add New Key.
Enter an API Key Name then click Generate Key. A random string will appear, similar to 6d925aae960335ba7824f6e0c5cfadc1dc0c027a
. Save this value in a secure location.
See for official documentation on creating BambooHR API keys.
To enable Veza to gather data from the BambooHR platform:
Browse to your Veza instance.
In the left navigation, expand Configuration, then click Integrations.
In the main pane, click Add Integration and choose BambooHR.
Enter the required details:
Insight Point: Use the default option unless you need to use an external Insight Point for the connection.
Name: A friendly name to identify the unique connection.
Company Domain: The BambooHR company identifier from your login URL, excluding the full URL, e.g., company_name
.
API Key: The BambooHR secret key from the steps above, e.g., 6d925aae960335ba7824f6e0c5cfadc1dc0c027a
.
IdP Types: Comma-separated list of IdP types for mapping external identities, e.g., okta,active_directory,azure_ad,custom,google_workspace,one_login
.
Veza discovers and shows the following metadata for BambooHR User entities, which can be used to narrow searches and access reviews using attribute filters:
Configuring the Veza integration for Expensify
The Veza integration for Expensify enables discovery of users, workspaces, and roles within the expense management system.
Use it to:
Search for any Expensify user by department or who they submit expenses to.
Review Expensify Role and Workspace assignments for all users or specific Workspaces.
Create rules and alerts when changes occur (such as when a new Policy Admin is detected or a Workspace is added).
See for more details.
The integration uses the Expensify Enterprise Import/Export API to fetch the data.
To connect, Veza will need your Expensify partnerUserID
and partnerUserSecret
.
Veza recommends creating a unique user and using their API credentials for the integration. The integration user should have the AUDITOR
role to gather the required authorization metadata.
To get the User ID and User Secret, log in to Expensify and go to the Integrations page: https://www.expensify.com/tools/integrations/
.
If you've already generated these for another application, you will need to use the existing ID and Secret. Otherwise you can regenerate the credentials.
See the for more details.
In Veza, open the Integrations page.
Click Add Integration and pick Expensify as the type of integration to add
Enter the required information and Save the configuration
Veza creates Authorization Graph entities to represent Expensify Users and Expensify Groups. You can create filters and rules based on the following attributes.
Expensify Users represent individual employees who log to report or approve expenses, or any other task on the platform.
Expensify Workspaces define common rules for expense management, used to organize departments, teams, or other groups of users.
Roles define the relationship an individual users has to a Workspace, such as Policy Admin
, Auditor
or Employee
, and represent a set of permissions.
Configuring the Veza integration for Oracle Fusion
The Veza integration for Oracle Fusion Cloud supports collecting Users, Groups, and Roles for the Oracle Fusion Cloud ERP platform.
See for more details.
Veza uses pre-defined reports in Oracle Fusion to collect user role information. These reports are defined in an Oracle Fusion catalog file that can be downloaded below.
Create a user for the connector to use. The connector uses that user name and password combination to connect to both the Oracle Fusion REST API and BI Publisher.
Upload the Veza_v2.catalog
file to the BI Catalog.
Navigate to the instance's Catalog page: https://<instance>.oraclecloud.com/analytics/saw.dll?catalog
Under Shared Folders/Custom select Unarchive and upload the Veza.catalog
file
Verify that a new folder containing two entities is created (Custom/Veza/v2
). This Data Model and Report allow the connector to make the necessary queries to collect the detailed role information.
Ensure the intended user has permission on both the Data Model and Report objects.
In Veza, open the Integrations page.
Click Add New and pick Oracle Fusion Cloud as the type of integration to add
Enter the required information and Save the configuration
Oracle Fusion Security Contexts (e.g. 'Asset Book', 'Business Unit', 'Ledger') are represented as Resources. Users may have specific roles assigned to specific Security Contexts in addition to application-wide roles.
Automatic Classification for AWS Key Management Service
Veza natively supports AWS for all configured AWS accounts. You can use the Authorization Graph to display all Customer Master Keys (CMKs), and view cross-service relationships between IAM roles and policies, KMS keys, and data sources.
Any AWS tags and aliases are automatically extracted when discovering KMS keys. These can be viewed from the entity details, and used to filter search results.
As KMS discovery is enabled by default, no additional configuration is required. For more granular control over which AWS data resources are cataloged, you can select specific services for extraction by navigating to the Veza Integrations page, and choosing the "edit" option for the AWS account.
In order for a CMK to be discoverable, its Key Policy must have IAM permissions enabled, or grant the Veza AWS IAM principal directly. are enabled by the default AWS KMS key policy, by a statement such as:
To read authorization metadata for KMS, the IAM policy used by the Veza-AWS connector must include the following statement:
The last two permissions (kms:GetKeyRotationStatus
and kms:ListKeyRotations
) are required to show the AWS KMS CMK "Last Rotated At" attribute in Veza.
Name
A unique display name for the Delinea Secret Server connection
Url
The URL of the Delinea Secret Server instance (ex. https://example.secretservercloud.com
)
Username
The username of the account recorded above
Password
The password of the account recorded above
created_at
The timestamp of user account creation
email
The user's email address
external_user_source
The external IdP source that created the user account
is_active
Boolean true if the user account is not disabled
is_application_account
Boolean true if the account is designated an application account used for integrations
is_locked_out
Boolean true if the user account is locked out and unable to log in
last_login_at
The timestamp when the user account last logged on
login_failures
Integer count of failed login attempts after the account's last successful login
two_factor_method
Indicates if the user account has a two-factor method configured
can_edit_members
Boolean true if group membership can be altered
created_at
The timestamp when the group was created
has_owners
Boolean true if the group has one or more assigned owners
is_active
Boolean true if the group is not disabled
is_editable
Boolean true if the group name and details can be changed
is_platform
Boolean true if the group is defined on the Delinea platform (not on the Secret Server instance directly)
is_system
Boolean true if the group is predefined by the Secret Server platform
id
The ID of the role on the Delinea platform
name
The name of the role on the Delinea platform
deployment
GitLab Application
users
GitLab User
GitLab admin
GitLab Role
logged-in user
GitLab Role
project
GitLab Project Resource
group
GitLab Group
User
email
Email address for user if available
User
bot
Boolean for bot users*
User
gitlab_id
Unique GitLab user ID number
User
is_licensed
State of GitLab license usage
User
state
Account state active
, blocked
, deactivated
User
is_active
True if account state is active
User
created_at
Time user account was created
User
last_login_at
Time of last user login to GitLab*
Project
visibility
Project visibility, private
, internal
, public
Project
gitlab_id
Unique GitLab project ID number
Insight Point
Pick the Insight Point deployed in the cluster.
Name
A friendly name to identify the unique integration.
Platform
Choose a supported provider, or use the generic Kubernetes integration.
Platform Tenant ID
Tenant ID for managed clusters.
AWS Account ID
Identifies the AWS account (optional).
Associated Role Bindings
Associated with multiple role bindings.
Is Cluster Wide
Indicates if role is cluster-wide.
Namespace
Specifies the namespace (optional).
Is Cluster Wide
Indicates if role binding is cluster-wide.
Namespace
Specifies the namespace (optional).
Insight Point
Choose whether to use the default data plane or a deployed Insight Point.
Name
A friendly name to identify the unique integration.
Gather Private Folders
If true, enable discovery of personal folders
Name
A unique display name for the Palo Alto Networks connection
Client ID
The Client ID recorded earlier
Client Secret
The Client Secret recorded earlier
Tenant ID
The Tenant ID recorded earlier
Region
The x-panw-region
for the tenant. See Palo Alto Documentation for available values
AIOps for NGFW
AIOps for NGFW Free
Cloud Identity Engine
Cortex Data Lake
Enterprise DLP
IoT Security
Next-Generation CASB
Prisma Access +NGFW
Prisma SD-WAN
description
The optional description of the user (service account only)
email
The users's email address
inherited_from
The Tenant ID from which the user account is inherited
tsg_id
The Tenant ID on which the user is defined (service account only)
type
The type of user (human
or service account
)
id
The ID of the role on the Palo Alto Networks platform
name
The human-readable name of the role on the Palo Alto Networks platform
Insight Point
Choose whether to use the default data plane or a deployed Insight Point.
Name
A friendly name to identify the unique integration.
Partner User ID
Expensify User ID for making API calls.
Partner User Secret
Expensify Secret Key to use for the connection.
Id
Expensify User ID
Name
Expensify User Name
submits_to
Email address of User that this User submits Expenses to
Name
Name of Workspace
Type
Workspace Type (e.g. Corporate)
output_currency
Currency
owner
Email of owner user
Name
Expensify Role Name
URL
URL of Oracle Fusion Cloud Instance
Username
Username to connect as
Password
Password for the user
Permission By Name
Check to use the more descriptive permission names, default is to use Oracle Fusion Permission codes
name
User's display name if set, defaults to login
if not
email
Email address associated with User
is_active
True if the user is active
user_name
User's login name
name
Role Name
description
Description from role
name
Resource Name
type
Security Context Type
{
"Sid": "Enable IAM policies",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:root"
},
"Action": "kms:*",
"Resource": "*"
}
{
"Sid": "KMS",
"Effect": "Allow",
"Action": [
"kms:GetKeyPolicy",
"kms:ListAliases",
"kms:ListKeyPolicies",
"kms:ListKeys",
"kms:ListResourceTags",
"kms:DescribeKey",
"kms:GetKeyRotationStatus",
"kms:ListKeyRotations"
],
"Resource": "*"
}
id (text)
LastPass User ID
name (text)
The full name of the user if set or Email is unset
created_at (datetime)
The date and time when of user account creation.
is_active (boolean)
Indicates whether the user's account is disabled (true or false).
email (string)
Email address configured for user
is_admin (boolean)
Indicates if the user has admin privileges (true or false).
id (text)
LastPass Group ID
name (text)
Group Name
id (text)
LastPass Folder ID
name (text)
Folder Name
Read-Only
Checked
Folder Read-Only
Read-Only
Un-checked
Folder User
Administrate
Checked
Folder Administrate
Hide Passwords
Unchecked
Folder View Passwords
id (Integer)
The employee ID automatically assigned by BambooHR.
fullName (text)
The employee's first and last name. (e.g., John Doe).
firstName (text)
The employee’s first name.
middleName (text)
The employee’s middle name.
lastName (text)
The employee’s last name.
displayName (text)
The employee's name displayed in a format configured by the user.
preferredName (text)
The employee’s preferred name.
homeEmail (email)
The employee's home email address.
employeeNumber (text)
Employee number (assigned by your company).
status (status)
The employee's employee status (Active or Inactive).
workEmail (email)
The employee's work email address.
jobTitle (list)
The current value of the employee's job title.
employmentHistoryStatus (list)
The employee's current employment status.
location (list)
The employee's current location.
stateCode (text)
The 2 character abbreviation for the employee's state (US only).
hireDate (date)
The date the employee was hired.
supervisorId (integer)
The 'employeeNumber' of the employee's current supervisor.
supervisorEId (integer)
The ID of the employee's current supervisor.
supervisor (employee)
The employee’s current supervisor.
supervisorEmail (text)
The email of the employee's current supervisor.
Configuring the Veza integration for Apache Cassandra
The Veza integration for Apache Cassandra enables discovery of roles, keyspaces, tables, and permissions. Veza connects to your Cassandra deployment to collect authorization metadata, and creates graph entities to model principals and resources within the open source NoSQL distributed database. After enabling the integration, you can use this information to:
Understand and visualize which roles can interact with specific tables and keyspaces in Cassandra.
Create rules to trigger downstream actions when Cassandra entities are added, removed, or modified.
Map external identities within your identity provider to Cassandra roles they can assume via SSO.
This document provides the requirements and steps to configure the integration. See Notes and Supported Entities for more details about the metadata collected by Veza.
To support the roles and permission grants described in this document, the following configurations are required in your cassandra.yaml
file:
authenticator: PasswordAuthenticator
authorizer: CassandraAuthorizer
An external Insight Point is recommended for secure communication with the Cassandra host in production environments. You can use the internal Insight Point for testing.
Log in to the Cassandra database as a superuser, or as a user with permission to create roles.
Run the following commands to create a new role using password authentication. Replace and with actual values:
CREATE ROLE <ROLENAME> WITH PASSWORD = <PASSWORD> AND LOGIN = true;
GRANT SELECT ON system_schema.keyspaces TO <ROLENAME>;
GRANT SELECT ON system_schema.tables TO <ROLENAME>;
GRANT SELECT ON system_auth.roles TO <ROLENAME>;
GRANT SELECT ON system_auth.role_permissions TO <ROLENAME>;
For more details on creating a role, see Security in the official Cassandra documentation.
To configure the integration in Veza:
In Veza, go to the Integrations page.
Click Add Integration and search for Apache Cassandra. Select it and click Next to open the configuration editor.
Enter the required information.
Click Create Integration to save the configuration.
Name
A friendly name to identify the unique integration.
Insight Point
Choose whether to connect using the default data plane or a deployed Insight Point.
Host
IP address of the Cassandra host.
Port
Port to use for the connection.
Username
Integration role password.
Password
Integration role name.
The primary container for all roles and keyspaces. A database serves as the top-level organizational unit within Cassandra, holding the structures necessary for data storage and access control.
A role in Cassandra represents a set of permissions that can be granted to perform various operations on the database.
Unlike traditional user accounts, Cassandra uses roles to define access control, with each role potentially inheriting permissions from other roles.
Roles are hierarchical; assigning one role to another allows the grantee to inherit the permissions of the granted role.
Login capabilities are not inherited and must be explicitly assigned.
Roles can have superuser
status, granting them unrestricted access to all operations within Cassandra. This status can be inherited by other roles.
Can Login
True if the role is allowed to log in.
Is Superuser
True if the role has superuser privileges.
Identity Type
Veza sets this field to "Human" by default. You can add enrichment rules to mark certain roles as "Non-Human."
Is Active
Veza sets this field to "True" by default.
Represents the cumulative permissions that a role has, either directly assigned or inherited from other roles. These permissions dictate what actions the role can perform on the Cassandra Database or on other roles.
Represents the permissions that govern access to specific tables and keyspaces. These permissions determine what operations a role can perform on data stored within the tables of a keyspace, such as reading or modifying the data.
A keyspace is a namespace that contains tables in Cassandra. It is a logical grouping that helps organize data within the database, defining attributes such as replication strategies and the number of replicas for data stored in the tables it contains.
A table is a collection of data organized into rows and columns, similar to a table in a relational database. Tables reside within a keyspace and store the actual data within the Cassandra database.
Enabling Veza discovery of SharePoint resources
To enable SharePoint discovery for an Azure tenant configuration, you will need to upload an X.509 certificate for authentication. Once provided, Veza will automatically extract permissions metadata for SharePoint Online resources, and show effective permissions for AzureAD users and groups to SharePoint servers, sites, libraries, and folders.
1. Prepare certificate
Microsoft and Veza recommend using a valid signed certificate, but you can use a self-signed certificate if needed.
To create a self-signed certificate and private key on Windows:
Copy the script full script on this page: Setting up an Azure AD app for app-only access.
Save the script with a text editor Create-SelfSignedCertificate.ps1
Open PowerShell as an Administrator and invoke the script
.\Create-SelfSignedCertificate.ps1 -CommonName "MyCompanyName" -StartDate 2017-10-01 -EndDate 2019-10-01
When prompted, enter a password for encryption.
Use the .PFX file to configure the Azure integration in Veza and .CER to configure the App Registration in Azure (see step 2.4).
2. Configure the Veza Enterprise App
If you haven't already completed the steps to configure a Microsoft Azure integration, you should do so before continuing.
From your Microsoft Azure Portal, go to Azure Active Directory and select "App Registrations"
Select the app registration used by Veza for discovery of the Azure tenant
Click on API permissions, and "Add a permission" Grant the following Application Permissions.
For SharePoint:
User.Read.All
Sites.Read.All
For Microsoft Graph:
Directory.Read.All
Files.Read.All
Sites.Read.All
Reports.Read.All
Verify that "Grant Admin Consent" is enabled on the API permissions screen.
See the Expanded Functionality section below for optional permissions.
Go to the app registration's Certificates & Secrets, click "Upload certificate," and provide the public key from the key pair from step 1.
Verify that the certificate has been uploaded by selecting "Manifest" and checking the keyCredentials
property.
3. Configure Veza
You can upload the required certificate when adding a new Azure account to Veza, or by navigating to the Integrations page and editing an existing Azure tenant. Upload the certificate pair from the first step.
Enabling Last Activity Date for SharePoint Sites
To enable parsing of Last Activity Date
as a searchable property for SharePoint sites, you will need to disable hidden user details in Office 365 Reports:
From the Office 365 admin center, go to Settings > Org Settings > Services
Select Reports
Clear the checkbox for Display concealed user, group, and site names in all reports, and save your changes
Note: Last activity stats are only obtainable for top-level sites (not sub-sites).
Supported Entities
SharePoint Online (Server)
Sites (server Site Collections)
Site (Communication or Team)
Sub-sites
Library
Folders (and sub-folders)
Lists
Library and folder permissions
The entities listed here reflect the limitations of read-only SharePoint API and Microsoft Graph API access. Additional entities are supported with optional permissions described in the Expanded Functionality section below.
When granted write-level or admin-level permissions, Veza can gather additional entities and properties. The following table identifies our expanded support and the required permissions:
Sharing Capability
Microsoft Graph: SharePointTenantSettings.Read.All
SharePoint Site Permissions
Microsoft Graph: Sites.FullControl.All
SharePoint: Sites.FullControl.All
SharePoint List Permissions
SharePoint: Sites.FullControl.All
Enabling List and Site Permissions will create distinct Permission nodes connecting principal-type entities such as users to SharePoint Site and List entities.
Sharing Capability is a property on the tenant-level SharePoint Online
Server entity indicating the maximum-permitted sharing settings for sharable objects within the tenant. The value can be:
disabled
Users can share only with people in the organization.
externalUserSharingOnly
Users can share with new and existing guests.
externalUserAndGuestSharing
Users can share with anyone, with no sign-in requirement.
existingExternalUserSharingOnly
Users can share with existing guests in the organization directory.
Sharing capability is not currently provided for child Sites and Libraries due to Microsoft API limitations.
Configuring the Veza integration for Oracle JD Edwards Enterprise One (JDE)
The Veza integration for Oracle JD Edwards Enterprise One (JDE) discovers users and roles assigned in JDE. Veza uses a database account to connect to the JDE database and execute queries to gather user metadata and role assignments.
The integration supports both Oracle and Microsoft SQL Server database backends.
Before configuring the integration, ensure you have:
Administrative access to your JDE database (Oracle or MSSQL)
Necessary permissions to create database users and grant permissions
Database connection details (hostname, port, database name)
Connect to a common user with the CREATE USER
privilege.
If the JDE is installed on an Oracle 12c pluggable DB (pdb), switch to the proper pluggable DB.
ALTER SESSION SET CONTAINER=<pdb_name>;
Create the integration user:
CREATE USER <username> IDENTIFIED by <strong_password>;
GRANT SELECT on sy920.f95921 to <username>;
GRANT SELECT on sy920.f0092 to <username>;
GRANT SELECT on sy920.f550092t to <username>;
Connect to SQL Server Management Studio as a sysadmin.
Create the integration login and user:
-- Create a SQL Server login
USE [master];
CREATE LOGIN [veza_jde] WITH PASSWORD = '<strong_password>';
-- Switch to the JDE database and create a user for the login
USE JDE_PD920;
CREATE USER [veza_jde] FOR LOGIN [veza_jde];
-- Grant SELECT permissions on required JDE tables
GRANT SELECT ON JDE.f550092t TO [veza_jde];
GRANT SELECT ON JDE.f0092 TO [veza_jde];
GRANT SELECT ON JDE.f95921 TO [veza_jde];
Save the username and password created above for configuration on the Veza platform.
In Veza, go to the Integrations page.
Click Add Integration.
Search for Oracle JDE. Select it and click Next.
Configure the integration:
Insight Point: Select an Insight Point or choose to use the default internal Insight Point for the connection.
Name: Enter a display name to identify the provider.
DB FQDN: The Fully Qualified Domain Name of the Oracle Database instance, e.g., myoracleserver.domain.com
or 192.168.1.100
.
DB Instance Name: The optional instance name if connecting to a named Microsoft SQL Server instance (mssql only).
DB Name: Database name, e.g., SYS
. You can retrieve this with the SQL command select * from global_name;
.
DB Port: Port for the connection, e.g., 1521
.
DB Schema Name: The schema name for the Oracle JDE connection, e.g. SY920
(mssql only).
DB Type: The type of database backend used for the Oracle JDE installation. Valid options are oracle
or mssql
.
Username: Name of the user created in the steps above, e.g., exampleuser
.
Password: Password of the integration user.
Click Save to test the connection and save the configuration.
Validate the integration was successful by checking the integration status on the Integrations page. Click the integration name to view detailed status and events for each data source.
The integration discovers the following entities, along with attributes for filtering queries and fine-tuning the scope of access review.
Represents an Oracle JDE user.
ID
User login name
User email address
Employee ID
User employee ID
Represents an Oracle JDE role.
Name
Role name
For Oracle connections, verify the database service name using tnsping
.
For MSSQL connections, ensure the SQL Server Browser service is running if using named instances.
Check database firewall rules allow connections from the Insight Point IP address.
Configuring the Veza integration for Coupa
The Veza-built connector for Coupa enables discovery of a single Coupa instance, including details for each user and their group and role memberships.
See notes and supported entities for more details.
To connect to Coupa’s REST API, Veza uses Oauth2 authentication based on a client id and secret. To generate a new client and credentials, log into Coupa as an admin user:
Go to Setup > Oauth2/OpenID Connect Clients
Click Create and pick Client Credentials for the Grant type
Enter the required fields and enable the scope:
core.users.read
Save the Client and note the Client Identifier and Client Secret
See the Coupa documentation for more details.
In Veza, open the Integrations page.
Click Add New and pick Coupa as the type of integration to add
Enter the required information and Save the configuration
Coupa URL
URL of the instance to connect to
Coupa Client Identifier
OAuth Client ID
Coupa Client Secret
OAuth Client Secret
Role Permissions
Export of Role permissions from Coupa (Optional)
Veza is unable to collect role permissions automatically due to the Coupa REST API not supporting returning role permission information. By default, all Local Roles created for Coupa roles are populated with a single permission named for the role that is Uncategorized
.
Optionally, a Coupa permissions export can be uploaded when configuring the integration to map permissions to roles. When provided, this exported data is incorporated into Veza's authorization graph. Important: The role permissions in Veza will reflect the state of permissions as of the last uploaded export - there is no automatic synchronization with Coupa's current permissions.
To create a report of Role Permissions:
Go to Setup > Company Setup > Permissions
Click "Export to" and select CSV file format
The resulting CSV from Coupa should be uploaded as-is without modifications. The export should contain the following header:
Controller,Action,Description,Roles
The CSV can be uploaded as part of the initial configuration of the Integration, and updated at any time by uploading a new CSV by editing the integration.
authentication_method
Authentication method user signs in by
created_at
Time the user was created at
email
Email address associated with User
invoice_approval_limit_amount
Numeric value for invoice approval limit if set on User
is_active
True if the user is active
login
User's login
requisition_approval_limit_amount
Numeric value for requisition approval limit if set on User
requisition_self_approval_limit_amount
Numeric value for requisition self approval limit if set on User
Coupa has multiple different types of Groups. Each group is mapped to a “Local Group” with a group_type
property set to indicate its type. Veza currently collects User
, Account
and Content
groups.
group_type
What type of group the local group is
is_active
True if the group is active
description
Description from role
omnipotent
True if Coupa role is omnipotent
system_role
True if Coupa role is a system role
Note: Only roles with users assigned are discovered by the integration. Unused roles will not appear in Veza.
This integration is provided as an Open Authorization API (OAA) connector package. Download the source code on GitHub.
OAA connector for Google Looker focusing on Looker Models and Connections. Discovers Looker users and groups and provides authorization data for the Looker Models and database connections users can access based on their Looker roles.
This connector uses the OAA Application template. The following table shows how Looker entities are mapped to the template.
Users
Local User
Group
Local Group
Role
Local Role
Model Set
Custom Resource model_set
Model
Custom Sub-resource model
under model_set
Connection
Custom sub-resource connection
under model
Looker connector extracts the following attributes:
User:
id
- Looker ID
verified_looker_employee
- Boolean for user is identified as an employee of Looker who has been verified via Looker corporate authentication
presumed_looker_employee
- Boolean for User is identified as an employee of Looker
is_active
- Status of Looker account
Group:
id
- Looker ID number
Model Set:
id
- Looker ID number
built_in
- Boolean for if model set is built in
all_access
- Boolean if the model set is configured to include all models
Connection:
dialect
- JDBC dialect connection is configured as
host
- Database connection host
username
- Database connection user name
Generate a Looker API3 key for a user with sufficient privileges to see all users, roles and models. The following scopes are required:
see_users
manage_models
Generate an API key for your Veza user. API keys can be managed in the Veza interface under Administration -> API Keys. For detailed instructions consult the Veza User Guide.
With Python 3.8+ install the requirements either into a virtual environment or otherwise:
pip3 install -r requirements.txt
Export the Veza API keys and Looker connection information to the OS environment.
export VEZA_API_KEY="XXXX...."
export LOOKERSDK_BASE_URL="https://<customername>.cloud.looker.com"
export LOOKERSDK_CLIENT_ID="XXXX...."
export LOOKERSDK_CLIENT_SECRET="XXXXX....."
Run the connector
./oaa_looker.py --veza-url https://<customer>.vezacloud.com
Optionally export the Veza URL to the environment as VEZA_URL
and run with no parameters required.
Configuring the Veza integration for Databricks with Unity Catalog enabled.
If your organization uses Unity Catalog to federate access to Databricks workspaces, you can enable Databricks integration when configuring an AWS, GCP, or Microsoft Azure provider. Veza connects to your Databricks account to discover authorization metadata for all workspaces and resources the service principal can access. Veza also discovers account-level users and groups in Unity Catalog, and account-level Metastores shared with workspaces. Supported entities include:
Account-level:
Databricks Account
Databricks Account User
Databricks Account Service Principal
Databricks Account Service Group
Databricks Metastore
Workspace-level:
Databricks Catalog
Databricks Cluster
Databricks Notebook
Databricks Directory
Databricks Schema
Databricks Table
Databricks User
Databricks Group
For discovering single workspaces without Unity Catalog enabled, see Databricks.
To enable the integration, you will need:
A Databricks account on the Premium plan, with SSO (Unified Login) enabled.
Microsoft Azure, Google Cloud: The Veza service principal for the cloud provider integration must be assigned to access the account via SSO as an account admin.
AWS: Veza uses OAuth credentials for a Databricks service account with the Account admin role
The Veza service principal must be assigned as an admin on all workspaces to fully discover all sub-resources.
Single Sign-On (Unified Login) enabled for the workspaces to discover. Unified Login is always enabled on Google Cloud and Microsoft Azure, but is optional for AWS deployments.
A dedicated cluster for running extraction queries (see below).
Administrator access to Databricks to create a Veza service principal and cluster.
The integration requires a Databricks service principal with account admin privileges (required to list all workspace entities and permissions):
Databricks on AWS: OAuth2 token for a Databricks service account (M2M access).
Databricks on Google Cloud Platform: Google Service Account configured for the Google Cloud Platform integration.
Databricks on Microsoft Azure: Azure App Integration configured for Azure discovery.
OAuth M2M for AWS
To create a service principal for Databricks on AWS, log in to the Databricks account console as an administrator:
Go to User management.
Under Service principals, click Add service principal.
Enter a name and click Add.
On the Roles tab, enable Account admin to enable account-level API calls.
Assign your service principal to identity federated workspaces.
Open Workspaces and click your workspace name.
Go to Permissions > Add permissions.
Search for the user, Assign the Admin
permission level and save the changes. Get an OAuth client secret:
To create an OAuth secret for a service principal using the account console:
In the Databricks account console, open User management.
On the Service principals tab, find the service principal.
Under OAuth secrets, click Generate secret.
Copy the Secret and Client ID, and then click Done.
For more details see OAuth M2M in the Databricks documentation.
Veza will run SQL queries on a Databricks cluster to collect metadata. Veza recommends a dedicated cluster for this purpose.
You will identify the cluster by tag when configuring the integration.
To extract Databricks metastore schemas, the cluster must have Unity Catalog enabled. A tag indicates when the cluster is attached to a Unity Catalog metastore and uses a Unity-Catalog-capable access mode (shared or single user): -
To create a cluster from the Databricks UI, pick Create > Cluster:
The cluster can be a small single-node cluster
You should enable termination after an inactivity period (~10 minutes). The cluster will automatically start for extractions, and stop automatically when inactive.
Enable spark.databricks.acl.sqlOnly true
under Advanced Options > Spark > Spark config
Ensure the Veza service principal has CAN_MANAGE
permission on the cluster (More > Permissions).
For more details on creating Databricks clusters see here.
The Veza service principal must be a workspace-level administrator to discover Workspaces subresources such as notebooks and clusters. Without admin permissions, the integration will not be able to gather metadata for the workspace.
To add the Veza service principal to a workspace with the admin role:
A) Using the Databricks account admin console (for workspaces with identity federation):
Open Workspaces and click your workspace name.
Go to Permissions > Add permissions.
Search for the user, Assign the Admin
permission level and save the changes.
B) Using the Workspace admin console:
Click your username in the top bar of the Databricks workspace and select Admin Settings.
Open Identity and access.
Go to Users > Manage > Add User.
Click Add new to create a new user and enter the email of the Veza service account.
Click Add.
On the list of users, click the user.
Click the Entitlements tab.
Click the toggle next to Admin access.
See Manage Users for more detail.
Databricks extraction is disabled by default. To enable the service, edit the AWS, Google Cloud Platform, or Microsoft Azure integration:
Go to the Veza Integrations page.
Find the integration on the list and click Edit.
In the third section Limit Services, tick Limit {Integration} Services
Click Select All to enable all services, or tick the boxes for services your company uses. Tick the box next to Databricks.
Go to the Details section.
Enter the additional fields:
Databricks account ID: Databricks account id
Databricks collector cluster tag: Cluster tag for running queries. If empty, Veza will use the first available cluster.
AWS: Databricks OAuth M2M client ID: Client ID for OAuth M2M
AWS: Databricks OAuth M2M client secret: Veza service principal client secret
Click Save Integration to enable the connection.
Configuring the Veza integration for self-managed BitBucket Data Center.
The Veza integration for BitBucket Data Center edition enables the discovery of Users, Groups, Projects, and Repositories within the self-managed version control system. After enabling the integration, you can:
Review user access to BitBucket at the group, project, or repository level.
Correlate local BitBucket users with external users to understand how federated identities can access resources in BitBucket, including public repositories.
Configure insights, rules, and actions to understand and manage access risks, based on any attributes Veza has discovered, such as activity or last login.
This document provides steps to enable the integration. See for more information.
For Bitbucket Cloud, see the .
Requirements:
Veza requires authorization to call the Bitbucket REST API to collect authorization metadata. You will need an admin username and password to fully gather global and group permissions.
An Insight Point is recommended for secure communication with the BitBucket Data Center host.
Veza must be able to access the Bitbucket Data Center host to perform API calls. To achieve this, you can install an or .
For full discovery, the integration calls the Bitbucket Admin API as an admin user, configured for username and password authentication.
Create a new BitBucket user with Admin privileges
Ensure two-factor is disabled.
Set a strong password for the user.
Specify the username and password during configuration.
See for more details.
The integration can optionally use an Access Token for an admin user for authentication. With a personal access token, the integration will not discover global permissions for BitBucket, and project permissions for groups will contain nested group members.
See to create a token.
To enable the integration and queue the first extraction:
In Veza, go to Integrations.
Click Add Integration and pick Bitbucket Data Center as the type of integration to add.
Enter the required information and Save the configuration.
Some Bitbucket LDAP configurations can unnecessarily result in discovery of all LDAP groups. Use the Only Used Groups option to prevent discovering all groups.
Note: The Project Allow and Deny lists are by the Project's Key. This is generally the last part of the URL when browsing to the Project.
Veza uses the standard application template to model the following entities and properties within Bitbucket:
Bitbucket Data Center Workspace → Application
Bitbucket Data Center Project → Project Resource
Bitbucket Data Center Repository → Repo Resource
Bitbucket Data Center Group → Local Group
Bitbucket Data Center User → Local User
Bitbucket Data Center User Role → Local Role
Bitbucket Data Center Permission → Local Permission
An individual account within the Bitbucket Data Center environment, who can access and interact with the Bitbucket instance. This includes managing personal settings and cloning, committing, and reviewing code.
Users can be assigned permissions on resources directly, or by group membership. See for more details.
A collection of users in Bitbucket Data Center, assigning the same set of permissions to multiple users. Groups can be used to manage repository access, project roles, and other collaborative settings efficiently.
A top-level organizational unit used to group related repositories for management and access control. Project-level settings and permissions can apply to all child repositories. Projects typically organize repositories logically by department, team, or specific initiatives.
Repositories are fundamental units within Bitbucket where actual development work is tracked and managed, containing files, commit history, branches, and tags associated with a project's codebase. Users can interact with repositories by cloning, forking, committing, and pushing changes
Configuring the Veza integration for Jamf Pro
The Veza integration connects to Jamf Pro to discover Users, Groups, and Sites. Jamf is typically used for deploying and maintaining software, responding to security threats, distributing settings, and analyzing inventory data. Enabling the integration lets you use Veza to visualize, audit, and create rules for users with privileged access to Jamf, and their group and role assignments.
A Jamf Pro instance
Administrator permissions to create a Jamf API role and API client
To grant privileges to an API client in Jamf Pro, you must first create an API role that defines a set of permissions:
In Jamf Pro, click Settings in the sidebar.
In the System section, click API Roles and Clients.
Open the API Roles tab at the top of the pane.
Click New.
Enter a name for the API role.
In the Jamf Pro API role privileges field, begin typing the name of a privilege you want to assign, and then select it from the menu. Required privileges for the integration are: Read User
, Read Static User Groups
, Read Smart User Groups
, and Read Accounts
.
Click Save.
Add an API client Veza will use for authentication. Attach the new role to the API client:
In Jamf Pro, click Settings in the sidebar.
In the System section, click API Roles and Clients.
Click the API Clients tab at the top of the pane.
Click New.
Enter a display name for the API client.
In the API Roles field, add the role you created for the Veza integration.
Under Access Token Lifetime, enter the time in seconds that you want access tokens to be valid for.
Click Save.
Click Edit.
Click Enable API Client to allow the client to be used to generate a client secret.
Click Save.
Create a secret for authenticating the API client:
In Jamf Pro, open the API client to generate an access token.
Click Generate Client Secret. A confirmation dialog appears.
Click Create Secret. A pop-up window appears with the client secret. Copy this value.
Note: The client secret will only appear once. Save it to a secure location before dismissing the dialog.
Veza will use the client secret to generate an access token. See for more details.
Note: Rate limiting is not supported. See for more details.
To enable Veza to gather data from the Jamf Pro platform:
Browse to your Veza instance.
On the navigation bar, click Integrations, then click Add Integration.
Find Jamf Pro and click Next.
Enter the required values, then click Create Integration:
Company Name: Name of the Company. This is the same as the name in your Jamf URL (i.e., https://<yourCompany>.jamfcloud.com/
).
Client Id: OAuth Integration Client ID.
Client Secret: OAuth Integration Client Secret.
URL (Optional): URL to use instead of https://<yourCompany>.jamfcloud.com/
.
The integration uses the Custom Application template to model graph entities:
Company Name > Application
User > Local User
Groups > Local Group
Site > Resource
Privilege Set > Local Role
Privileges > Permission
Configuring the Veza integration for Boomi
Boomi is an integration platform as a service (iPaaS) that facilitates connecting applications, data, and processes across various environments. The Veza integration for Boomi Enterprise Platform uses the AtomSphere API to discover users, roles, and permissions on the platform. After enabling the integration, you can:
Review Boomi User to Boomi Role assignments, with support for external user mappings.
Get visibility on privileges granted via custom roles and review built-in role usage.
Monitor Boomi user accounts with the "API Access" role used for programmatic access.
This document will help you configure the integration for your tenant. For more details see .
Create an account for the integration user in Boomi:
Log in to Boomi Enterprise Platform as an administrator.
Go to Settings > User Management.
Create a new role and assign the following Privileges. The new role should not inherit from any other role. API Access
Account Administration
Create a new user and assign the user to the role.
See [Adding a custom role)(https://help.boomi.com/docs/Atomsphere/Platform/t-atm-Adding_a_custom_role_de2bd23b-ce3a-4db3-9656-cacab756e76e) and for official documentation.
To create a token, you must create an integration user with the API Access role. The API Token feature must be enabled under Settings > Account Information and Setup > Boomi AtomSphere API Tokens.
Log in to Boomi as the integration user.
Navigate to Settings > My User Settings > AtomSphere API Tokens.
Generate and copy the API token.
Save the token to use when configuring the integration in Veza.
See for more details.
In Veza, go to the Integrations page.
Click Add Integration and search for Boomi. Click on it and click Next to add an integration.
Enter the required information:
Account Id: Id of the Account. Used for Hostname in the URL (e.g., https://api.boomi.com/api/rest/v1/{{accountId}}/
)
Username: Username of the integration user.
Token: API token for the integration user.
Click Create Integration to save the configuration.
If your organization uses single sign-on to federate access to Boomi, you can add a custom mapping by editing the identity provider configuration. Add mappings to match external identities in your IdP to user accounts they can access with SSO.
See .
The integration uses the OAA Application template to model Boomi users, roles, and privileges:
Boomi Platform Account → Custom Application
Boomi Account Users → Local User
Boomi Account user’s Role → Local Role
Boomi Account Role’s Privileges → Local Permissions
Veza creates graph entities to represent Boomi Users, Roles, and the individual Privileges they can access.
Represents a local Boomi user, with the attributes:
A built-in or custom role:
Built-in roles provide access to common functionality in Boomi. You can use Veza to review user-to-role assignments, or track when the number of users with a role increases or decreases. Built-in roles include:
Administrator: Full access to all features, including API access, API management, account administration, account group management, Atom management (both read and write), Boomi Assure, build (read and write), cloud management, dashboard access, environment management, execution of processes, integration pack management, licensing view, packaged component management and deployment, process library management, scheduling, trading partner management, user management, view audit logs, view data, and view results.
Standard User: Access to Atom management (both read and write), Boomi Assure, build (read and write), developer tools, environment management, execution of processes, integration pack management, licensing view, packaged component management and deployment, process library management, scheduling, trading partner management, view data, and view results.
Production Support: Access to Atom management (both read and write), execution of processes, licensing view, packaged component deployment, scheduling, view data, and view results.
Support: Access to Boomi Assure, developer tools, execution of processes, licensing view, view data, and view results.
Administrators can also create Custom Roles. These have specific privileges tailored to organizational needs. See .
An individual system permission assigned to a role or directly to a user:
Roles define a group of system permissions within Boomi. Example Roles and Privileges:
Configuring the Veza Integration for Confluent
The Veza integration for Confluent enables the discovery of Users, Groups, Roles, Clusters, and Environments from the Confluent platform. Veza uses Confluent APIs to populate the Authorization Graph with entities and metadata.
This document explains how to enable and create a Confluent integration. See for more details.
Before adding the integration to Veza, create a Confluent Cloud API key for the connection.
Refer to for up-to-date instructions for creating an API key.
Using Confluent Cloud Console:
Before creating an API key associated with a service account, use to restrict access to applications that use the key.
From the Administration menu, click Cloud API keys or go to .
Click Add key.
Choose Granular Access as the scope.
Choose whether to create the key associated with your user account or a service account.
The API key and secret are generated and displayed.
Click Copy to copy the key and secret to a secure location.
Important:
The secret for the key is only exposed initially in the Create API key dialog and cannot be viewed or retrieved later from the web interface. Store the secret and its corresponding key in a secure location. Do not share the secret for your API key.
(Optional, but recommended) Enter a description of the API key to describe the intended use and distinguish it from other API keys.
Select the check box to confirm you have saved your key and secret.
Click Save. The key is added to the keys table.
Using Confluent CLI:
Sign in to your cluster using the command.
Enter your Confluent Cloud credentials:
Before creating a Cloud API key associated with a service account, use to restrict access to applications that use the key.
Create the Cloud API key using the confluent api-key create
command, specifying the resource (--resource
) as cloud
. By default, this associates the key with your user account. If you want to associate the key with a service account instead, specify the service account flag (--service-account
). A description (--description
) is optional but recommended.
Save the API key and secret output in a secure location. The secret is not retrievable later.
Record the API Key and API Secret values after creating the key.
To enable Veza to gather data from the Confluent Cloud Platform:
In Veza, navigate to Configuration > Integrations
Click Add Integration and select Confluent as the type of integration to add.
Enter the required information and click Create Integration
The Confluent integration discovers the following entities and attributes:
Confluent roles are discovered and assigned to security principals; no additional metadata is gathered.
Validates that the service account used for a has the required permissions. Rather than checking a specific policy, Veza will verify the total permissions granted to the service account used for extraction.
Query parameters:
Replace the values in brackets with the appropriate values:
BaseURL = Your Veza Domain
ID = Can be found from your Veza Integration > Data Sources dashboard.
Token = your Veza API Key. To call the API, you will need to include an in the authorization header of your request.
The response will indicate when an update is required, and the missing permissions:
current_permissions
: permissions that are currently assigned to the Veza service principal.
required_permissions
: full list of required permissions for discovering supported services and entities in Google Cloud.
required_actions
: permissions required by the integration, but not assigned to the Veza service principal. You should update the to include the missing permissions.
overprivileged_actions
: permissions assigned to the integration that are not required, and can safely be removed.
Configuring the Veza HRIS integration for Ivanti Neurons
The Veza integration for the Ivanti Neurons HRIS system streamlines identity governance by automatically synchronizing employee data with Veza's Identity Security platform. This integration enables organizations to:
Maintain current employee data across your identity security infrastructure
Enrich Veza search results with up-to-date employee information
Streamline access reviews with accurate organizational context
Support automated lifecycle management workflows using Ivanti Neurons as a source of identity
This guide will walk you through creating the required API credentials in Ivanti, configuring the integration in Veza, and including custom employee attributes (optional).
The Veza Ivanti Nurons connector requires an API key to connect and collect the employee information. Follow the steps in the Ivanti
Create the API key for a user with administrative read permissions to view all employees.
Most customers will require a Veza Insight Point to be deployed in their environment to access their Ivanti Nurons instance. Follow the steps <> for more on deploying a Veza Insight Point.
On the Veza Integrations page, click Add Integration and locate the Ivanti Nurons HR tile.
Configure the integration with the following fields:
Set the Insight Point - Select the Insight Point that will have access to the Ivanti Nurons instance
Name - Name for the integration
URL - URL for Ivanti Nurons instance
Additional Properties - Additional employee properties to collect from the API response. See below.
Provisioning Source (optional): Check to enable Ivanti Neurons as a provisioning source for Life Cycle Management Workflows.
The Veza connector gathers employee metadata from the employees
business object. Business Objects can be viewed from the Ivanti Configuration console, under Build > Business Objects
The following Employee properties are collected by default and mapped to the Veza Employee object.
Collecting Additional Fields
Any additional field from the employee business object can be extracted as a string by adding it to a comma-separated list in the Additional Properties field during integration configuration. These values will be added as custom properties on the Employee object shown in Veza.
For example, to collect the employees DN and extensionAttribute1 set Additional Properties to DN,extensionAttribute1
Insight Point
Choose an Insight Point to use for discovery.
Name
A friendly name to identify the unique integration.
Host URL
Full URL used to access Bitbucket, such as https:/bitbucket.mycompany.com
.
Only Used Groups
Check this box to only processes Groups used by Bitbucket Users.
Username
Username for authentication. Leave blank if using a Personal Access Token.
User Secret
The password or Personal Access Token for authentication.
Project Allow List
List of Project keys to include for discovery. When enabled, projects not on the list are skipped.
Project Deny List
List of Project keys to exclude from discovery.
id
User Id
email
User's email address
name
User's login name
display_name
User's display name
is_active
True if user is an active user, else False
last_login_at
User last login time
type
Account type as reported by Bitbucket
id
Group Id
name
Group name
is_active
True if group is active, else False
id
Project Id
name
Project name
is_public
True if Project is marked "Public"
id
Repository Id
name
Repository name
slug
Repository slug
is_public
True if repo is marked "Public"
project_key
Project key repository belongs to
confluent login
Email: [email protected]
Password: ********
confluent api-key create --resource cloud --description <key-description> --service-account <service-account-id>
API Key
The API key created on the Confluent Cloud platform
API Secret
The API secret created on the Confluent Cloud platform
resource_name
The Confluent Resource Name / URI of the cluster resource
resource_name
The Confluent Resource name / URI of the environment resource
filter
The Common Expression Language filter expression that defines the group mapping
resource_name
The Confluent Resource Name / URI of the group mapping
state
A string representing the enabled/disabled state of the group mapping
auth_type
The user's authentication method (either AUTH_TYPE_LOACAL
or AUTH_TYPE_SSO
)
description
Optional string description of the user account
The user's email address
resource_name
The Confluent Resource name / URI of the environment resource
GET
{{BaseURL}}/api/v1/providers/google_cloud/{{ID}}:checkpolicy
id
string
Y
A valid Google provider id
curl -X GET 'https://{{BaseURL}}/api/v1/providers/google_cloud/{{ID}}:checkpolicy' \
-H 'authorization: Bearer {{token}}'
{
"requires_update": true,
"google_cloud_customer_id": "{id}",
"current_permissions": [],
"required_permissions": [
"bigquery.datasets.get",
"bigquery.datasets.getIamPolicy",
"bigquery.tables.get",
"bigquery.tables.getIamPolicy",
"bigquery.tables.list",
"cloudkms.cryptoKeyVersions.get",
"cloudkms.cryptoKeyVersions.list",
"cloudkms.cryptoKeys.get",
"cloudkms.cryptoKeys.getIamPolicy",
"cloudkms.cryptoKeys.list",
"cloudkms.keyRings.get",
"cloudkms.keyRings.getIamPolicy",
"cloudkms.keyRings.list",
"cloudkms.locations.get",
"cloudkms.locations.list",
"compute.instances.list",
"compute.instances.getIamPolicy",
"compute.networks.list",
"compute.regions.list",
"compute.subnetworks.getIamPolicy",
"compute.subnetworks.list",
"compute.zones.list",
"iam.roles.get",
"iam.roles.list",
"iam.serviceAccounts.list",
"resourcemanager.folders.getIamPolicy",
"resourcemanager.folders.list",
"resourcemanager.organizations.get",
"resourcemanager.organizations.getIamPolicy",
"resourcemanager.projects.get",
"resourcemanager.projects.getIamPolicy",
"resourcemanager.projects.list",
"resourcemanager.tagKeys.get",
"resourcemanager.tagKeys.list",
"resourcemanager.tagValues.get",
"resourcemanager.tagValues.list",
"serviceusage.services.list",
"storage.buckets.getIamPolicy",
"storage.buckets.list"
],
"required_actions": [
"bigquery.tables.get",
"compute.instances.getIamPolicy",
"resourcemanager.folders.list",
"resourcemanager.projects.get",
"resourcemanager.tagValues.get",
"iam.roles.get",
"storage.buckets.getIamPolicy",
"cloudkms.locations.get",
"cloudkms.locations.list",
"compute.regions.list",
"compute.subnetworks.list",
"resourcemanager.organizations.get",
"resourcemanager.tagKeys.list",
"cloudkms.keyRings.getIamPolicy",
"resourcemanager.organizations.getIamPolicy",
"storage.buckets.list",
"resourcemanager.tagKeys.get",
"resourcemanager.folders.getIamPolicy",
"resourcemanager.tagValues.list",
"resourcemanager.projects.list",
"cloudkms.keyRings.list",
"compute.networks.list",
"bigquery.tables.list",
"cloudkms.cryptoKeys.getIamPolicy",
"bigquery.datasets.getIamPolicy",
"resourcemanager.projects.getIamPolicy",
"serviceusage.services.list",
"cloudkms.keyRings.get",
"iam.serviceAccounts.list",
"bigquery.tables.getIamPolicy",
"bigquery.datasets.get",
"iam.roles.list",
"cloudkms.cryptoKeyVersions.list",
"compute.zones.list",
"cloudkms.cryptoKeys.get",
"cloudkms.cryptoKeys.list",
"compute.instances.list",
"cloudkms.cryptoKeyVersions.get",
"compute.subnetworks.getIamPolicy"
],
"overprivileged_actions": []
}
ID
RecID
Name
DisplayName
First Name
FirstName
Last Name
LastName
User Name
NetworkUserName
Employee Number
LoginID
PrimaryEmail
Employment Status
Status
value of string
IsActive
Status
boolean true if string equals "Active"
Title
Title
Department
Department
Department ID
DepartmentCode
Cost Center
ConstCentre
Hire Date
HireDate
Terminated Date
TerminatedDate
Manager
ManagerEmail
Work Location
EmployeeLocation
Team
Team Email, Team
Display Full Name
DisplayName
Entity
Property
Description
User
id
Unique ID of the user.
name
Name of the user.
full_name
Full name of the user.
is_active
Whether the user is enabled or disabled.
access_level
(Custom)
Access level: Full Access, Site Access, Group Access.
Group
id
Unique ID of the group.
name
Name of the group.
access_level
(Custom)
Access level: Full Access, Site Access, Group Access.
Resource
id
Unique ID of the Site.
name
Name of the Site.
userId
The user ID.
firstname
The first name of a user.
lastname
The last name of a user.
id
The ID of the role.
parentId
The ID of the parent role.
name
The name of the role.
description
The description of the role.
name
Name of the privilege.
{
"id": "9ba2e34c-2818-11e6-a17b-45f3f0dc7cd7",
"name": "MDM Administrator",
"description": "Boomi Default MDM Administrator Role.",
"Privileges": [
{"name": "MDM_DESTROY"},
{"name": "MDM_SOURCE_ATTACH"},
{"name": "MDM_BATCH_ADMIN"},
{"name": "MDM_DASHBOARD"},
{"name": "MDM_EDIT_MODELS"},
{"name": "MDM_STEWARDSHIP"},
{"name": "MDM_VIEW_DATA"},
{"name": "MDM_VIEW_REPOSITORIES"},
{"name": "MDM_VIEW_MODELS"},
{"name": "MDM_STEWARDSHIP_MGMT"},
{"name": "MDM_REPORTING_HISTORY"},
{"name": "MDM_VIEW_LOGS"},
{"name": "MDM_SOURCE_MGMT"},
{"name": "MDM_DEPLOY"},
{"name": "MDM_REPORTING_OPS"},
{"name": "MDM_REPOSITORY_MGMT"}
]
}
Configuring the Veza integration for Box
The Veza integration for Box gathers Box Users, Groups, Roles, and Folders from the storage platform. Search, Insights, and Workflows for Box provide the ability to:
See all Box users with administrative privileges on a Box tenant
Review folders that have external guest collaborators.
Review folders with Internal guest collaborators.
Map Okta and Azure AD users and local Box users to ensure there are no local-only users.
Create reports and rules for Box administrators and external collaborators
This guide includes steps to create a Box App to enable the connection, and configure the integration for Veza. See Supported Entities for more details.
The Veza Box integration is compatible with Box, Business, Business Plus, Enterprise, and Enterprise Plus account types. Individual and Team Accounts are not supported.
The integration uses a Box Custom App to collect metadata. To create this read-only service principal:
Box enforces a monthly limit of 50,000 API calls per Box user and App. You can configure more than one Veza Box App if the limit is reached.
Log in to your Box account and open the Developer Console.
Click the "Create New App" button and select "Custom App".
Select Server Authentication (with JWT) as the Authentication Method
Click "Create App".
Configure the custom app in Box:
For "App Access Level" select App + Enterprise Access.
Under the Application Scopes section ensure the following boxes are checked:
Under the Advanced Features section ensure the following boxes are checked:
Save the changes.
Generate a key pair and authorize the custom app:
Under Add and Manage Public Keys click Generate a Public/Private Keypair. A JSON file will be downloaded automatically, containing the private portion of the key and passphrase.
Optionally, you can upload an existing key pair, download the configuration file manually, and complete the key portion.
Under the Authorization tab click Review and Submit to make your new app available.
From the Box Admin console, navigate to Integrations > Platform Apps Manager to see the pending authorization.
Click on the integration, then click Authorize to enable the app for your Box environment. Click Authorize again to confirm the changes.
The JSON file downloaded in step 1 contains the necessary configuration information for setting up the integration in Veza:
{
"boxAppSettings": {
"clientID": "<clientID>",
"clientSecret": "<clientSecret>",
"appAuth": {
"publicKeyID": "<publicKeyID>",
"privateKey": "<privateKey>",
"passphrase": "<passphrase>"
}
},
"enterpriseID": "123456"
}
In Veza, go to Configuration > Integrations
Click Add New and choose Box as the integration type
Complete the required fields:
ID
Box Enterprise ID
Name
Display Name
Include Non-shared Items
Whether to parse objects that can only be accessed by their owners
Include External Collaborator Details
Whether to parse full details for external collaborators
App Configurations
One or more Box Apps used for discovery (see note on API limits)
Private Key
Box App Auth Private Key
Passphrase
Box App Auth Passphrase
Client ID
Box App Client ID
Client Secret
Box App Client Secret
Box Enterprise
Box User
Box Group
Box Role
Box Effective Permission
Box Folder
Box Home Folder
Entity Attributes and notes:
A Box user represents an account on the platform used to access personal files and collaborate with others.
status
Box status string, active
, inactive
, cannot_delete_edit
, cannot_delete_edit_upload
is_exempt_from_login_verification
Indicates whether the user must use two-factor authentication (boolean)
role
The user's Box role
Only users from the enterprise are represented as graph entities. External collaborators are shown in Folder properties.
For Box, roles are a set of permissions that can be assigned to a user or group of users, defining the actions an identity can perform, and what data they can access within the platform.
Permissions [0-99]
List of System role permissions
Box User(s) and Group(s) can have a Role defined on Folder(s). Roles can be owner
, co-owner
, editor
, viewer uploader
, previewer uploader
, viewer
, previewer
, or uploader
.
Box folders are containers used to organize and store files and documents. Folders can be organized hierarchically to create a logical structure for file storage.
A Box User's folders can be private or shared with specific collaborators or groups. Users can set permissions for each folder, determining who has access to the folder and what actions they can perform on the files within the folder.
Box Folder entity attributes indicate external collaborators: HasExternalCollaborators
, and a list of ExternalCollaborators
containing user IDs, and possibly name and e-mail (if "Include External Collaborator Details" is enabled).
In Graph search, you will be able to see the folder contents of all users' root (home) folders. Box Home Folder entities represent the root-level folder for each Box User.
has_external_collaborators
True if there are external collaborators
external_collaborators
List of external collaborators
Configuring the Veza integration for Qualys.
The Veza integration for Qualys provides visibility into users, asset groups, roles, and permissions within the Qualys Enterprise TruRisk Platform.
The integration enables:
Discovery of Qualys users, roles, and permissions
Mapping asset groups and their associated resources
Tracking business impact ratings and ownership of asset groups
Insight into user activity, account status, and business unit associations
A Qualys platform account. The integration is tested with the "Small Business" Qualys package.
A dedicated service account for the integration:
Create a dedicated Qualys user account for the integration
Do not use personal user accounts for integration authentication
Ensure the service account has the required permissions:
The account must have "Manager" role permissions to access all required data
The account must have API access enabled
The integration uses basic HTTP authentication with your Qualys credentials. To configure the integration in Veza, you will need:
A valid Qualys username
A valid Qualys password
Your Qualys platform URL (varies by account region)
In Veza, go to the Integrations page
Click Add Integration and search for Qualys
Click on the Qualys integration to open the configuration.
Enter the required fields
Click Create Integration to save the configuration
Name
A friendly name to identify the unique integration
Username
The username for your Qualys API access
Password
The password for your Qualys API access
Qualys URL
Your Qualys API endpoint URL
The Qualys integration uses platform APIs to discover and map the following entities:
Users → Local Users
Asset Groups → Resources
Roles → Local Roles
Permissions → Local Permissions
id
Mapped from USER_ID, provides unique identifier
name
Concatenated from FIRSTNAME and LASTNAME fields
email
User's email address
is_active
Derived from USER_STATUS
created_at
Account creation timestamp (RFC 3339 format)
last_login_at
Most recent login timestamp (RFC 3339 format)
user_login
Unique login identifier
title
User's job title
business_unit
Organizational unit association
user_status
Full status description (Active, Inactive, Pending Activation)
id
Unique identifier for the asset group
name
Display name of the asset group
owner_user_id
Id of the asset group owner
updated_at
Last modification timestamp (RFC 3339 format)
business_impact
Business criticality rating
owner_user_name
Name of the asset group owner
host_id_list
Associated host identifiers
Qualys uses a role-based permission system where user access is governed by assigned role and any extended permissions. The integration maps Qualys roles and permissions to their corresponding Effective Permissions:
Core Roles:
Manager: Full access to all assets and management capabilities
Unit Manager: Management within assigned business unit
Scanner: Can run scans and reports on assigned assets
Reader: View and reporting access
Remediation User: Access to remediation tickets and vulnerability data
User Administrator: User and asset group management
Contact: Limited to scan notifications
Auditor: Compliance management and reporting
Access to asset groups depends on the user's role:
Managers, Auditors, and User Administrators have access to all asset groups
Unit Managers, Scanners, Readers, and Remediation Users can only access asset groups:
Created by the user
Explicitly assigned to the user
Associated with their business unit
Individual assets within asset groups are not currently supported
The integration currently supports the following extended permissions:
Create option profiles
Purge host information/history
Add assets
Create/edit remediation policy
Create/edit authentication records/vaults
Business units in Qualys define organizational boundaries for access control. User access to "All" asset groups depends on their business unit assignment:
Users assigned to a business unit have access only to asset groups within their business unit:
When assigned to "All" asset groups, access is limited to their business unit's asset groups
This access is represented by a " - All" resource in Veza
For users without a business unit assignment:
When assigned to "All" asset groups, access is limited to asset groups created by the Qualys account owner
This access is represented by an "Unassigned - All (My Asset Groups)" resource in Veza
Note: Direct mapping between business unit names and unit IDs is not available due to API constraints.`,
Configuring the Veza integration for ClickHouse.
ClickHouse is a high-performance columnar database management system (DBMS) optimized for Online Analytical Processing (OLAP). The Veza integration for ClickHouse Cloud enables discovery of users, roles, and services configured for your organization, providing visibility into what human and non-human identities have permissions on ClickHouse data and settings.
A ClickHouse Cloud account
Administrator access to create API keys in ClickHouse
A Developer API key with permissions to read organization metadata
Note: The integration currently supports connecting to a single organization only
In the ClickHouse Cloud Console, select API Keys from the left menu.
Click New API Key in the top-right corner. For new accounts, you'll see a prompt to create your first key.
Configure the API key:
Enter a descriptive Key Name
For Organization Permissions, select Developer
Set an appropriate expiration time
Click Generate API Key
Copy and securely store both the Key ID and Key Secret. These values cannot be retrieved after leaving this page.
Browse to your Veza instance
In the left navigation, choose Integrations
Click Add Integration and select ClickHouse
Enter the following values:
Client ID: The Key ID from your ClickHouse API key
Client Secret: The Key Secret from your ClickHouse API key
Click Create Integration to save your changes
The integration captures organization-level metadata for a ClickHouse Cloud deployment. Note that the integration currently supports connecting to a single organization only.
organization_id
Unique identifier for your ClickHouse organization
Application Custom Property
organization_name
Display name of your ClickHouse organization
Application Custom Property
created_at
Organization creation timestamp in ISO-8601 format
Application Custom Property
Users represent members of your ClickHouse organization who can access and manage services. Each user is assigned either an Admin or Developer role, which determines their access to services and organization settings.
id
The user's unique identifier
LocalUser Property
name
User's display name
LocalUser Property
email
User's email address
LocalUser Property
created_at
When the user joined the organization (ISO-8601 format)
LocalUser Property
Role Assignment:
Users with role "admin" are assigned the Admin role with full access to all services
All other users are automatically assigned the Developer role with selective service access
Services represent individual ClickHouse database instances within your organization. Each service represents a deployable database with specific configuration options across cloud providers and regions.
id
Unique identifier for the service
Resource ID
name
Display name of the service
Resource Name
provider
Cloud provider where service is deployed (aws, gcp, azure)
CustomResource Property
region
Cloud region where service is deployed
CustomResource Property
state
Current operational state of the service
CustomResource Property
tier
Service tier determining scaling capabilities
CustomResource Property
is_primary
Whether this is the primary service
CustomResource Property
created_at
Service creation timestamp (ISO-8601 format)
CustomResource Property
Service Tiers:
development
: Fixed-size instances with limited scaling (not available on Azure)
production
: Fully scalable instances
dedicated_high_mem
: Memory-optimized instances
dedicated_high_cpu
: Compute-optimized instances
ClickHouse uses a role-based access control (RBAC) system with two predefined roles:
Admin: Full administrative access to all services and organization settings
Developer: Limited access focused on service usage and monitoring
The integration maps ClickHouse system permissions to standardized Veza permission types. These mappings include:
Service Management:
View service
: DataRead
, MetadataRead
Create service
: DataCreate
, MetadataCreate
Delete service
: DataDelete
, MetadataDelete
Stop service
: DataWrite
, MetadataWrite
Restart service
: DataWrite
, MetadataWrite
Reset service password
: DataWrite
, MetadataWrite
View service metrics
: DataRead
, MetadataRead
Access Management:
View API key records
: DataRead
, MetadataRead
Create API key
: DataCreate
, MetadataCreate
Delete API key
: DataDelete
, MetadataDelete
View users
: DataRead
, MetadataRead
Invite users
: DataCreate
, MetadataCreate
Change user role
: DataWrite
, MetadataWrite
Delete users
: DataDelete
, MetadataDelete
Organization Management:
View billing
: DataRead
, MetadataRead
Manage billing
: DataRead
, DataWrite
, DataCreate
, DataDelete
, MetadataRead
, MetadataWrite
, MetadataCreate
, MetadataDelete
View organization activity
: DataRead
, MetadataRead
Submit support requests
: DataCreate
, MetadataCreate
View integrations
: DataRead
, MetadataRead
Configuring the Veza integration for OneLogin
The OneLogin integration connects to your OneLogin environment to discover users, group memberships, applications, and role assignments managed by the identity provider.
The integration enables:
Discovery of OneLogin users, groups, roles, and applications
Visibility into OneLogin administrative roles
Review of SAML applications assigned to OneLogin users and groups
Mapping access between OneLogin users and AWS IAM roles they can assume
Veza connects to your OneLogin environment using read-only API credentials. To configure the integration, you will need to create a new credential and save the client ID and secret.
OneLogin administrator account
API credentials with Read All scope
Log in to OneLogin as an account owner or administrator.
Navigate to Developers > API Credentials.
Click New Credential.
Select "Read All" scope.
Click Save and securely store the client ID and secret.
See the Working with API Credentials documentation for more details.
In Veza, go to the Integrations page.
Click Add Integration and search for OneLogin.
Click on the OneLogin tile to open the configuration form.
Enter the required information.
Click Create Integration to save the configuration.
Insight Point
Choose whether to use the default data plane or a deployed Insight Point
Name
A friendly name to identify the unique integration
Domain
OneLogin domain, e.g., your-domain.onelogin.com
Region
OneLogin region, e.g., us
Client ID
API client ID from OneLogin
Client Secret
API secret from OneLogin
Mapping Configuration
Define rules for linking OneLogin users to other IdP identities or local users.
Custom Properties
Specify any to extract by entering the API shortname and data type.
The OneLogin integration discovers the following entities and relationships:
Domain → Users
Domain → Applications
Domain → Groups (one-to-many)
Domain → Roles (one-to-many)
Users → Groups (many-to-one)
Users → Roles (many-to-many)
Applications → Users (many-to-many)
A OneLogin tenant containing and managing users, applications, groups, and roles. The domain serves as the root node for discovering identity and access relationships.
Identities in OneLogin, including core attributes and authentication status. Users can belong to groups and be assigned roles.
username
OneLogin username (required)
email
User's email address (required)
firstName
User's first name
lastName
User's last name
title
Job title (optional)
department
Department name (optional)
isLocked
Account lock status
lastLoginAt
Timestamp of last login
mfaActive
Multi-factor authentication status
createdAt
Account creation timestamp
updatedAt
Last modification timestamp
awsIamRoleArns
List of AWS IAM roles the user can assume
samlProviderArn
SAML provider ARN for AWS role assumption
SAML Applications integrated with OneLogin define what users can access through OneLogin SSO.
oneLoginConnectorId
OneLogin connector identifier (required)
samlProviderIds
Associated SAML provider IDs (optional)
createdAt
Application creation timestamp
updatedAt
Last modification timestamp
Groups represent collections of users, used for role-based access control at scale.
Admin role assignments in OneLogin grant access to platform management capabilities. Roles track administrative access with admin ID mappings.
adminIds
List of administrative user IDs (optional)
Configuring the Veza integration for Cisco Duo
The Veza integration for Cisco Duo provides visibility into your organization's multi-factor authentication (MFA) infrastructure, user access methods, and administrative privileges within Duo Security.
The integration enables:
Visibility into user authentication methods and enrollment status
Tracking of hardware tokens, phone authentication, and WebAuthn credentials
Monitoring of administrative roles and permissions
Group membership and policy enforcement insights
Device trust and authentication status tracking
See for more details.
A Cisco Duo account with one of the following plans:
Duo Premier
Duo Advantage
Duo Essentials
Administrator access with the Owner role
Valid Admin API credentials
Log in to the and navigate to Applications
Click Protect an Application
Locate Admin API in the applications list. Click Protect to configure the application
Save the credentials:
Integration key
Secret key
API hostname
The secret key should be treated as a sensitive credential. Store it securely and never share it via email or insecure channels.
In the Admin API application settings, grant the following minimum required permissions:
Grant administrators: Read
Grant resource: Read
In Veza, go to the Integrations page
Click Add Integration and search for Cisco Duo
Click on the Cisco Duo icon and click Next
Configure the integration with the following information:
Click Create Integration to save the configuration
The integration supports the following entity types:
Users (including administrators)
Groups
Access Credentials
Phone authentication devices
Hardware tokens
WebAuthn credentials
Administrative Roles and associated permissions
Phone Authentication
Hardware Tokens
WebAuthn Credentials
The integration maps Duo administrative roles to permissions. Each role has specific capabilities mapped Veza canonical permissions:
Solutions for common CSV import issues in Veza
This document helps you identify and resolve common issues when importing CSV files into Veza.
Before troubleshooting, it's important to understand how the CSV import process works:
Maximum file size: 100MB per CSV file
Character encoding: UTF-8 recommended
First row: Must contain column headers
Column delimiters: Commas
Text qualifiers: Double quotes for fields containing commas
Users: Each user must have either an id
or name
(or both)
Groups: Each group must have either an id
or name
(or both)
Roles: Each role must have either an id
or name
(or both)
If only id
or name
is provided for an entity, that value is used for both fields and must be unique
Minimum mapping: You must map at least one column for each entity type you want to import
First-row behavior: For entities appearing in multiple rows, only the first row sets the entity properties
Subsequent rows: Additional rows with the same identifier only process group and role assignments
Role permissions: Permissions for the same role are added across all rows (additive)
All properties: All properties (including custom properties) are set only from the first row where that entity appears
Start with a test file
Begin with a small subset of data to verify your mapping configuration
Test with representative examples of your data structure
Validate CSV format
Ensure proper comma delimitation
Quote fields containing commas
Use consistent data formats across rows
Pre-plan your mapping
Identify which columns map to which entity types and attributes
Determine how to handle multi-value fields (as lists or multiple rows)
Identify custom properties and their data types
Consider data quality
Standardize identifiers (case consistency, no trailing spaces)
Use consistent naming for groups and roles
Validate data formats before import
Be aware of these current limitations in the CSV import functionality:
No application resources support
Resources within applications are not currently supported
No direct user-to-permission mapping
Permissions must be assigned to roles, which are then assigned to users
Direct user-to-permission mappings (without a role) are not supported
No column transformations
The system cannot combine or transform column values during import
Column transformations or combinations are not supported
Full replacement updates
Each update completely replaces the previous data
Incremental updates are not supported
Custom property types are fixed after creation
Once a custom property type is set and data processed, it cannot be changed
Changing custom property types requires deleting the integration and recreating it
Default permissions
If no column is mapped to role permissions, Veza assigns a default "Uncategorized" permission.
HRIS Type field propagation
Updates to the HRIS Type field require a complete CSV file re-upload to propagate changes to downstream systems like Lifecycle Management (LCM)
Changing the HRIS Type field alone will not update entity names throughout the system
If you continue to experience issues after reviewing this guide:
Review the for details on supported formats and mapping options
Check the for guidance on structuring your CSV files
Contact Veza Support with:
A sample of your CSV file (with sensitive data removed)
Your mapping configuration
A description of the unexpected behavior
Enabling the Veza integration for OCI
The integration for Oracle Cloud adds users, storage resources, and IAM components (such as users, compartments, domains, groups, and policies) to the Veza Access Graph. An OCI user API key is required to gather identity, resource, and authorization metadata.
See for more details on supported entity types.
To authenticate to Oracle Cloud you will need to create a user with a dedicated group, generate an API key, and grant the required permissions via IAM policy.
Create a new Oracle Cloud User
The User and its dedicated group must be in a domain located directly below your Oracle Cloud tenancy (for example, the default OCI domain).
Create a new group that will be granted the required permissions for discovery:
Go to Identity and Security > Domains > Default (or another top level domain)> Groups > Create Group
Assign a name to the group (such as veza-oci-integration
) and add a description
Click Create
Create a new user:
From the main navigation menu, choose Identity & Security. Under Identity, click Users
Click Create User
Add a name, description, and email address. Click Create.
On the user details page, add the users to the group:
Click Groups
Click Add User to Group
Select the group from the drop-down list, and then click Add
For more information see in the Oracle Cloud documentation.
Save access key and configuration file
Open the user’s profile page (Identity → Domains → {Domain} → Users → {User})
Scroll down and select API Keys under resources
Select Add API Key, and then Download private key
Copy and save the values in the configuration file preview
Create a group policy
From the main navigation menu, choose Identity & Security. Under Identity, click Policies
Click Create Policy. Provide a name and description for the policy
Under Policy Builder, click Show manual editor to open the editor.
Provide the required policy and click Create.
The policy must contain the following statements (the Group-OCID
can be found on group's page):
For more information see in the Oracle Cloud documentation.
Once you have created the Oracle Cloud user credentials, you can enable the Veza->Oracle integration under Configuration > Cloud Providers:
Navigate to Configuration > Cloud Providers > Add New
Choose Oracle Cloud Infrastructure from the dropdown menu.
Fill out the required fields, using the Oracle Cloud configuration file for reference:
Click Save to begin the initial discovery and extraction.
Supported Entities
Policies
are made up of Policy Statements. Each policy exists in a compartment and may only grant permission to resources in that compartment or a sub-compartment. Oracle Cloud policy statements are sentences in the format:
"Allow group to in compartment where "
Cross Service Connections
IAM Domain - Okta
Effective Permissions
Effective Permissions calculations can account for some scenarios unique to Oracle Cloud:
Aggregate permissions from multiple policies - multiple policies may provide permissions for a single group, aggregated into a single Effective Permission between each user/resource.
Resources within child compartments - If a policy statement allows inspect
permission on users in the tenancy, that permission is allowed on all users in all compartments.
Conditions - A policy statement may contain one or more conditions to restrict access.
Configuring the Veza integration for NetSuite
The Veza integration discovers a single Oracle NetSuite tenant and its users, roles, and subsidiary resources. To discover more than one environment, (for example, production and staging), follow the instructions to configure two separate instances of the integration.
See for more details.
Authentication is done through an Oauth2 workflow. The integration uses a JWT exchange based on a client ID and certificate to exchange for a bearer token. The bearer token is used for all the SuiteQL API calls.
Follow these steps to create the credentials Veza will use for NetSuite discovery:
Navigate to Setup -> Company -> Enabled Features
Under the Analytics tab:
In the SuiteAnalytics Workbook section, enable SUITEANALYTICS WORKBOOK if it is not enabled.
Under the SuiteCloud tab:
In the SuiteTalk (Web Services) section, enable REST WEB SERVICES if it is not enabled.
In the Manage Authentication section, enable Oauth2
Navigate to Setup -> Users/Roles -> Manage Roles and create a new role
Provide a name for the role such as "Veza Discovery"
Under Subsidiary Restrictions set Accessible Subsidiaries to All Subsidiaries
Assign the following permissions to the role:
Reports
SuiteAnalytics Workbook: Edit
Lists
Employee Record: View
Employees: View
Subsidiaries: View
Setup
Bulk Manage Roles: Full
OAuth 2.0 Authorized Applications Management
Log in using OAuth 2.0 Access Tokens
REST Web Services: Full
View Login Audit Trail: Full
The user can be an existing user, or you can create a user for Veza discovery. To review users' roles, go to Setup > Users/Roles > Manage Users.
Navigate to Setup > Integration > Manage Integrations and create a new integration
Provide a name for the integration such as "Veza Discover" and an optional description
Under the Oauth2 section enable CLIENT CREDENTIALS (MACHINE TO MACHINE) GRANT and Scope REST Web Services
After saving the integration, a consumer key and secret will be displayed. Save these values, which only appear once. New credentials can be created by editing the integration and selecting "Reset Credentials."
Generate a new x509 Certificate to use.
Use the following command to generate a new RSA certificate:
openssl req -new -x509 -newkey rsa:4096 -days 365 -keyout private.pem -sigopt rsa_padding_mode:pss -sha256 -sigopt rsa_pss_saltlen:64 -out public.pem -nodes
The certificate expires after the specified number of days.
Go to Setup > Integration > Oauth 2.0 Client Credentials (M2M)
Create a new set of credentials
Select the desired User for the Entity, the created Veza Role and the new Integration for Application
Upload the public portion of the Certificate public.pem
After creating the credentials, note the Certificate ID from the display table
To enable the NetSuite integration in Veza you will need the following:
In Veza, open the Integrations page.
Click Add New and pick NetSuite as the type of integration to add
Enter the required information and Save the configuration
NetSuite instance ID: this is the first part of your NetSuite URL, usually a seven digit number. For sandbox deployments include the -SBXX
.
Consumer Key from the earlier steps
Certificate ID and private portion of the certificate from the credentials configuration
Certificate Key upload the private portion of the certificate private.pem
The integration utilizes NetSuite's REST API and SuiteQL (SQL like query language) to collect necessary information about Users, Roles, and NetSuite Subsidiaries (resources). Roles can be assigned based on Subsidiary.
Users are individuals with access to a NetSuite account. Users are typically employees, but can also represent vendors, partners, or customers.
Veza only gathers NetSuite users with the capability to login to NetSuite.
Roles are configurations defining the level of access and sets of permissions users can have.
Subsidiaries represent separate, hierarchical legal entities (distinct companies) within NetSuite.
Early Access: This integration is provided as an Open Authorization API (OAA) connector package. Contact our support team for more information.
Veza Connector for Confluence Server that discovers Users, groups access to Confluence and Spaces. The Confluence Server connector works by connecting directly the database instance to query information. Direct database access is required to discover Space permissions which are not available via the Confluence Server API.
Note: Connector currently only discovers Global spaces
The Connector requires access to the database used by Confluence. Exact setup instructions will depend on database technology and existing configuration.
It is not recommend to use the same database user as Confluence configuration. Create a user for Veza discovery with limited permission below.
Create a user authenticated by a password and grant access to perform SELECT
operation on the following tables in the Confluence database:
cwd_user
user_mapping
cwd_group
cwd_membership
cwd_user_attribute
SPACES
SPACEPERMISSIONS
For example with database name confluence_db
and user veza
:
User must be able to connect to the database over the network.
Generate an API token for your Veza user. For detailed instructions consult the Veza User Guide.
There are multiple options to run the connector. Instructions are included for running from the command line and building a Docker container.
Install the requirements with Python 3.8+:
Install the specific database platform requirements:
MySQL
PostgreSQL
Export the required environmental variables. Variables not set can be passed via arguments at run time. All parameters can be passed using environment variables if desired. See table below for variable names and descriptions.
Run the connector:
Configuring the Veza integration for Oracle Database on AWS RDS.
Veza supports Oracle Database on AWS RDS as part of the . When enabled for an AWS integration, Veza will discover Oracle Database instances and clusters in the account, and connect to each database to extract authorization metadata.
This document includes steps to enable Oracle Database extraction for a configured AWS integration. See for more information about the metadata collected by Veza.
To discover Oracle Database on RDS, you will need:
An enabled for the host AWS account.
A local database user created in each Oracle database to discover, including any tenant databases.
An is recommended for secure communication between Veza and the databases to extract. The parent AWS integration should be configured to use this insight point.
In the AWS account console, ensure that the includes the rds:DescribeTenantDatabases
capability. The RDS section should look like:
Create a local user in each Oracle database to discover (including tenant databases):
Log in to the Oracle Database instance as an administrator.
Create a local user. This user must have the same name and password for all Oracle databases the integration will discover.
Grant permissions: GRANT SELECT ANY DICTIONARY TO veza_db_user;
Repeat this process for each database to extract authorization metadata.
In Veza, go to the Integrations page.
Search for the parent AWS account integration and click Edit.
In the configuration, check that the DB User matches the name of the user you created.
Enter the user Password.
Save the configuration.
The AWS integration discovers RDS Services, RDS Clusters, and RDS Instances, which can be RDS Oracle instances. These can contain a single Oracle DB Database, or multiple tenant databases, modeled with the following graph entities:
Represents an Oracle database instance. Multitenant configurations can have more than one database within a single RDS Oracle instance.
Represents the privilege grants for objects in the Oracle database. These are granted explicitly to Users and Roles and apply to specific Tables.
There are no explicit privileges over schemas in OracleDB versions currently supported by AWS. Each user owns their own schema, created for each user.
Note that Column privileges are not yet modeled. Schema privileges are only available in Oracle DB version 23 (not currently supported on AWS RDS).
Represents the roles defined within the Oracle database. Roles describe Object Privilege Grants that enable specific actions on tables. OracleDB roles can assume other roles.
Represents a schema within the Oracle database. A schema within an OracleDB Database contains individual tables. Users can be assigned to Schema as owners.
Represents a user within the Oracle database. OracleDB Users are local accounts within a database.
Represents a table within the Oracle database. Veza shows effective permissions from OracleDB Users to OracleDB Tables.
Configuring the Veza integration for OpenAI
The Veza OpenAI integration provides visibility into your organization's access to OpenAI resources, helping secure AI innovations and prevent identity-based threats. This integration discovers all users with access to your OpenAI organization, maps their assigned roles, and visualizes permissions relationships to help maintain proper access control.
The integration enables:
Discovery of all users with access to your OpenAI organization
Mapping of assigned roles (Owner/Reader) to specific permissions
Visibility into access rights including API usage, organization management, billing modifications, and member management
Access review and alert rules based on user access to OpenAI
See for more details.
To integrate OpenAI with Veza, you'll need to obtain your Organization ID and generate an API key.
Sign in to the OpenAI
Click Manage Account from the user dropdown in the upper right corner
Navigate to the Settings section
Note your Organization ID (will begin with "org-")
While in the OpenAI Dashboard, navigate to API Keys
Click Create new secret key
Give your key a name that indicates it's for Veza integration (e.g., "Veza-Integration")
Copy the API key immediately, as you won't be able to see it again
See the for more details.
This integration is provided as an Open Authorization API (OAA) connector package. There are multiple options for running the connector, including command line and Docker.
Contact your Veza support representative to obtain the preview OAA connector.
Generate an for your Veza user.
Install the requirements with Python 3.8+:
Export the required environmental variables:
Run the connector:
A Dockerfile
is included in the repository. Running the container will perform the OpenAI discovery and OAA push then exit. Schedule the container to run on a regular interval.
Build the container:
Run the container with all required parameters:
The OpenAI integration discovers users and their respective roles within your OpenAI organization.
The integration maps OpenAI roles to specific permissions:
Creating a local user for gathering database-level metadata
When , the recommended IAM policy includes permissions to discover PostgreSQL instances and clusters on RDS. To gather additional metadata, Veza will need to be able to execute database commands as a local user, as described in this document.
AWS IAM must be enabled
You will need administrator privileges to create the local user, which will be used to connect at runtime
An is recommended for RDS PostgreSQL discovery.
The Insight Point egress IP must be allowed in the RDS .
Using an Insight Point is recommended when connecting to production environments. For testing purposes, you can use the internal Insight Point, assuming that firewall rules allow communication with Veza.
There are two options to allow Veza access to RDS PostgreSQL databases, depending on whether your instance configuration has revokedpublic
privileges for the pg_catalog
schema, as is a common security practice.
A) If you if you have not revoked the default public
privileges on your schema, you only need to create the user and grant the rds_iam
privilege:
B) If you have revoked the default privileges from your schema, you should instead run the following command to create the user and grant select permissions for the required tables:
Verify that the RDS PostgreSQL DB User specified in the Veza IAM policy for the integration is the same as the local database user you create, for example:
"Resource": "arn:aws:rds-db:us-east-1:123456789:dbuser:*/<my_veza_db_user>"
Note that in the current release, the local username must be the same for all the RDS PostgreSQL resources to discover. You can specify this RDS PostgreSQL DB User name when configuring an .
The next time Veza connects to the AWS account, the database will be registered and appear under "Discovered Data Sources" on the Integrations > All Data Sources tab.
The following sections must be included in your Veza IAM policy. Update the bracketed values to contain your actual region, account ID, and the database username you specified when .
Configuring the Veza integration for Google Drive
The Veza integration for Google Drive discovers shared drives, folders, and permissions within Google Drive file systems.
The integration uses a Google Cloud IAM service account to interact with the Google Drive v3 API, enabling it to list Shared Drives, Folders, and folder permissions. The service account needs to be added as a viewer to shared drives to retrieve listings and permissions. New drives the service account is a viewer on are extracted during data source discovery, which runs periodically after configuration.
Custom entity mapping:
Server: Google Workspace
Mount: Shared Drive
Folder: Folder
Google Drive has four roles that can be assigned to Shared Drives or Folders, and they are common between them. The role reference is as follows:
Organizer
File Organizer
Write
Commenter
Viewer
Note: The owner role is not currently supported.
Sharing permissions are associated with Google Workspace Users or Groups based on the role that identity has on the drive/folder.
Additionally properties are discovered for the sharing settings on the mount and drive:
domain_users_only
: boolean indicating whether the drive/folder allows anyone in the domain access.
domain_role
: string set with the domain shared role if shared.
shared_anyone
: boolean indicating whether the drive/folder is shared with anyone with the link.
anyone_role
: string containing the shared role if shared.
Google provides multiple settings that can be configured by an Administrator on a Shared Drive that can limit the sharing options and scopes for drives. Veza represents these as properties on each Shared Drive to allow for searching. The table below explains the relationship between the Google setting description and the Veza property.
Google Drive connector uses a Google Workspace user to perform discovery. Permissions are granted to Veza to assume this user via an OAuth flow. Integration capabilities depend on the Workspace user's role and the shared drives they can view:
If the Google User is a Super Admin, Veza can discover all Google Drives and permissions. If using a Super Admin, check the Domain Admin Access box when adding the integration to Veza.
If the user is not a Super Admin, then the user must be added as a viewer to each Google Drive the integration will discover.
To discover Folder permissions on a drive, the User must be added as a viewer to the drive, regardless of role.
To create an OAuth app, assign scopes, and retrieve the credentials:
Log into Google Cloud Console https://console.cloud.google.com/
Create a new project https://developers.google.com/workspace/guides/create-project and select that project
Navigate to APIs & Services
Select Enabled APIs & Services from the left and click + Enable APIs and Services from the top to enable a new API
Search for "Google Drive API", select it from the results, and select Enable
Return to APIs & Services and select OAuth Consent Screen
Select Internal for the App type and click Create
Provide a name and the contact emails
Click Save and Continue
Click Add or Remove Scopes
Add the https://www.googleapis.com/auth/drive.readonly
scope
The drive.readonly
scope is required to list Shared Drives
Click Save and Continue
Return to APIs & Services and select Credentials
Create credentials by click + Create Credentials and selecting OAuth Client ID
Select Web Application for Application Type and enter a name
Under Authorized redirect URLs add https://oauth2-redirect.on.vezacloud.com
Save and download the JSON file from the creation modal
In Veza, open the Integrations page.
Click Add New and pick Google Drive as the type of integration to add
Enter the required information and Save the configuration
Click the Authorize button and complete the flow through the Google consent screens.
After being redirected to the Edit Integration page, save the integration.
Discovering granular MySQL permissions with Veza
When , the recommended IAM policy includes permissions to discover RDS instances and clusters. To gather additional metadata, Veza will need to be able to execute database commands as a local user, as described in this document.
RDS MySQL databases are discovered by Veza via role assumption to a local MySQL user, granted the necessary read-only permissions. Veza creates authorization entities for:
RDS MySQL Database
RDS MySQL Function
RDS MySQL Instance
RDS MySQL Local User
RDS MySQL Local User Instance
RDS MySQL Procedure
RDS MySQL Role
RDS MySQL Role Instance
RDS MySQL Service
RDS MySQL Table
RDS MySQL Trigger
By default, extraction excludes the buil-in MySQL tables sys
, performance_schema
, information_schema
, and mysql
. These system-created tables are potentially of interest as they can contain sensitive data, and are discoverable on an optional basis. Enable Gather System Tables in the parent AWS integration configuration to show these Table entities and permissions in Veza.
You will need admin access and privileges to create a local user, which will be used to connect at runtime
An is recommended for RDS MySQL discovery.
The Insight Point egress IP needs to be permitted in the RDS .
Using an Insight Point is recommended when connecting to production environments. For testing purposes, you can use the internal Insight Point, assuming that firewall rules allow communication with Veza.
The MySQL User employed by Veza for extraction uses theAWSAuthenticationPlugin
authentication method. RDS MySQL instances must be .
RDS MySQL databases managed by Amazon Aurora are automatically discovered when RDS extraction is enabled for a configured AWS account.
Connected instances are mapped to the top-level Aurora RDS cluster in Authorization Graph search.
Since all instances in an Aurora cluster are replicas of the same MySQL database, each has the same database-level properties.
1. Configure the IAM Policy
Ensure that the IAM policy configured during AWS setup includes the <db_user>
name of the MySQL user, and is the same as the RDS MySQL DB User name specified in AWS integration configuration. Below is a minimal policy allowing the required actions for discovery.
To discover individual RDS instances across multiple regions, you will need to create additional Resource
entries in the Veza IAM policy for each region, for example:
"Resource": "arn:aws:rds-db:us-east-1:123456789:dbuser:*/veza_user"
"Resource": "arn:aws:rds-db:us-west-1:123456789:dbuser:*/veza_user"
Alternatively, you can use wildcard operator (*
) to match all regions, accounts, and databases:
"Resource": "arn:aws:rds-db:*:*:dbuser:*/veza_user"
2. Create the local user
Connect to your database, and execute the following command to create a Veza User and grant the needed privileges for discovery. Replace [veza_user]
with the name of the actual database user specified in your policy:
The next time Veza connects to the configured AWS account, the RDS MySQL server will be registered and appear under "Discovered Data Sources" on the Integrations > All Data Sources tab.
Configuring the Veza integration for Anaplan
The Veza integration for Anaplan enables the discovery of Users, Workspaces, Models, and User Workspace entitlements from the Anaplan platform. Veza users Anaplan APIs to populate the Authorization Graph with entities and metadata.
This document explains how to enable and create an Anaplan integration. See for more details.
The Veza integration for Anaplan utilizes both the and the to gather entity and entitlement metadata.
Access to the SCIM API requires a non-SSO user with the User Admin
role assigned.
To create a user, sign in to Anaplan with an account that has the User Admin
role and follow these steps or see:
In Users > Internal, click New. The Create new internal user dialog displays.
Complete the new user dialog prompts for First Name, Last Name, and Email Address.
Click Create user to create the user account or click Cancel to cancel the account creation.
In the dialog, select the workspaces the user can access.
Click the select all box to select all the workspaces in your tenant.
Deselect the Notify user when added to workspaces to prevent additional notification emails.
Click Add to Workspaces to assign the user to the workspaces.
To assign the newly created user the User Admin
role for use with SCIM, follow these steps or see
Access the .
Go to Access Control > Assignments
Pick the internal user for the Veza integration from the list.
Click the checkbox next to User Administration role to assign it.
Click Save.
To finish the registration process, open the activation link sent to the email provided when creating the user. Record the account email and password for configuring the integration in Veza.
Configuration of Certificate Authority (CA) authentication to Anaplan is outside the scope of this document. See for information on how to get started.
After enabling CA authentication, follow these steps or see to register a certificate for the integration user:
Access from the Application menu.
Select Security > Certificates.
Select Add Certificates.
Select Choose File to locate the .pem certificate that you want to add.
Select Import Certificates.
To enable Veza to gather data from the Anaplan platform:
In Veza, open the Integrations page.
Click Add New and choose Anaplan as the type of integration to add.
Enter the requested information and Save the configuration.
Authentication: Provide either username/password credentials or a certificate/key pair. If both are provided, this integration will use certificate authentication when connecting to Anaplan.
Certificates: If your certificate and key are combined in a .p12
file, run the following commands to output them in .pem
format:
Note: Anaplan APIs do not provide model permissions information. Available model metadata is gathered for display only.
Configuring AWS Redshift for Veza discovery
The recommended only includes API permissions to get authorization metadata for Redshift clusters. To connect to Redshift databases for full discovery, a local Redshift user with the redshift:GetClusterCredentials
IAM privilege is required. You can allow this via IAM policy in one of two ways, described in the steps below.
Additionally, the local user will also need on the warehouses to discover.
A) AWS can automatically create a local user with the same name as the IAM principal initiating the connection. This can be accomplished in your policy using the condition key ${redshift:DbUser}
, as in line 6 of the following example:
Note that the name of the provisioned Redshift user will be transformed to lowercase, and any dashes will be replaced with underscores (For an IAM user or role Veza-AI
, the Redshift user name will be veza_ai
).
You will still need to manually grant the SELECT
privileges for the local user using the commands in the section.
B) If you would prefer to connect as a local user that you will create yourself, you must specify that user explicitly in the policy, for example:
Connect to the Redshift warehouse and create the user:
The redshift-data:ExecuteStatement
only allows the Veza service principal to run Redshift queries—the exact data Veza can access is governed within Redshift. Database permissions must be granted to the local user for each instance you want to discover.
Connect to the data warehouse and use the following GRANT SELECT
command:
The next time Veza conducts discovery for the parent AWS account, the instance will be registered and appear under "Discovered Data Sources" on the Integrations > All Data Sources_ tab.
User
user_name
Confluence user name
User
email
User's email
User
is_active
True if user is active
User
created_at
Date the user account was created
User
last_login_at
Date for user last login if present
Group
is_active
True if Group is active
Space
space_type
Confluence Space type (global, personal)
Space
status
Space status, e.g. current, archived
Space
anonymous_access
True if any space permission includes anonymous access
Space
anonymous_permissions
List of any anonymous Space permissions
CREATE USER 'veza' IDENTIFIED BY 'replace_with_secure_password';
GRANT SELECT ON confluence_db.`cwd_user` to 'veza';
GRANT SELECT ON confluence_db.`user_mapping` to 'veza';
GRANT SELECT ON confluence_db.`cwd_group` to 'veza';
GRANT SELECT ON confluence_db.`cwd_membership` to 'veza';
GRANT SELECT ON confluence_db.`cwd_user_attribute` to 'veza';
GRANT SELECT ON confluence_db.`SPACES` to 'veza';
GRANT SELECT ON confluence_db.`SPACEPERMISSIONS` to 'veza';
pip3 install -r requirements.txt
pip3 install -r requirements-mysql.txt
pip3 install -r requirements-postgresql.txt
export VEZA_API_KEY="Zdkemfds..."
export CONFLUENCE_DB_PASSWORD="abc123"
./veza_confluence_server.py --mysql --db-host db1.example.com\
--db-name confluence_db\
--db-user veza\
--veza-url https://example.vezatrial.ai
--mysql
N/A
false
Use MySQL driver to for database connection
--pgsql
N/A
false
Use PostgreSQL driver to for database connection
N/A
CONFLUENCE_DB_TYPE
false
Pass the driver name if not using CLI parameters. Values: mysql
, pgsql
--db-host
CONFLUENCE_DB_HOST
true
Hostname for database server
--db-name
CONFLUENCE_DB_NAME
true
Database name for Confluence database
--db-user
CONFLUENCE_DB_USER
true
Database user for discovery
N/A
CONFLUENCE_DB_PASSWORD
true
Database user password
N/A
VEZA_API_KEY
true
The API token which which to connect to the Veza instance
--veza_url
VEZA_URL
true
The url of the Veza instance to which the metadata will be uploaded
--save_json
N/A
false
Save a copy of the metadata JSON uploaded to the Veza instance to this directory
--debug
N/A
false
Enable verbose debug logging
"Allow managers to modify shared drive settings"
Admin Managed Restrictions
false
"Allow people outside of {Organization Name} to access files"
Domain Users Only
false
"Allow people who aren't shared drive members to access files"
Drive Members Only
false
"Allow content managers to share folders"
Sharing Folders Requires Organizer Permission
false
"Allow viewers and commenters to download, print, and copy files"
Copy Requires Write Permission
false
Customer ID
Google Workspace ID
Credentials
Credentials JSON file from Google Setup procedure
Domain Admin Access
Check to use Domain Admin privileges during discovery (user must be Super Admin)
Drive Allow List
List of Drive names to discover, if provided drives that do not match this list will be ignored
Drive Deny List
List of Drives to exclude from discovery
Entity names inconsistent between CSV provider and Lifecycle Management (LCM) after update
Critical: When updating the HRIS Type field for an HR System template integration, you must re-upload the complete CSV file immediately after changing the type. Updating the HRIS Type field without re-uploading data causes system-wide inconsistencies. See the HRIS Type Update Warning for detailed steps.
CSV file is rejected with validation error
Verify you've mapped the minimum required fields (id
or name
for all entity types)
Only some properties appear
Check that columns are mapped to the correct entity types and attributes
Users appear without group/role assignments
Ensure you've correctly mapped group and role columns
Entities appear multiple times
Ensure that the value you're using for id
is unique (Veza automatically cleans whitespace and is case-insensitive)
Boolean values not interpreted correctly
Use standard values: true
, t
, yes
, y
, 1
, active
, or enabled
for TRUE
Timestamp data not processed
Ensure timestamps are in one of the supported formats listed in the CSV Import documentation
Multiple groups/roles not assigned properly
For list columns, ensure values are comma-separated and enclosed in quotes if they contain commas
Special characters causing parsing issues
Save your CSV with UTF-8 encoding and ensure text with commas is properly quoted
Groups/roles in comma-separated lists not assigned
Verify you've selected the list
option when mapping the column
Only first value in list is processed
Check for proper quoting around values that contain commas
Only some list values appear
Check for inconsistent naming between list items and other references to the same entity
Allow group id <Group-OCID> to read users in tenancy
Allow group id <Group-OCID> to inspect compartments in tenancy
Allow group id <Group-OCID> to read domains in tenancy
Allow group id <Group-OCID> to read groups in tenancy
Allow group id <Group-OCID> to inspect policies in tenancy
Allow group id <Group-OCID> to read buckets in tenancy
Allow group id <Group-OCID> to read objectstorage-namespaces in tenancy
Name
Integration display name
User OCID
User id (ocid1.user.oc1..<unique_ID>
)
Fingerprint
fingerprint
value from the configuration file
Tenant OCID
tenancy
id (ocid1.tenancy.oc1..<unique_ID>
)
Region
Tenancy home region (us-ashburn-1
). Veza will extract non-IAM information from all regions.
Private Key File
API Key
Private Key Passphrase
Key passphrase
Select Insight Point
Use the default data plane, unless you have deployed an Insight Point
Limit Services
Any disabled services are skipped during extraction
Compartments
A compartment is a collection of resources used to isolate and organize your resources. A common configuration would be to have a compartment for each major part of an organization. Compartments are like folders in that they can nest. The root compartment of an organization is the tenancy, and all other compartments exist within the tenancy.
Identity Domains
Each Identity Domain is a self-contained IAM service. They’re used to demarcate various use cases, and provide varying levels of security and access to different user groups. For instance, a company may have one Identity Domain to manage employee access, a second to manage supply chain and ordering systems for business partners, and a third for customers using consumer-facing applications. Identity Domains are resources, and exist within compartments.
Users
A user exists within an Identity Domain. A single human may be represented in multiple Identity Domains via multiple users. In Oracle Cloud, machine access is also done via user. Permissions can't be granted to individual users. Instead, they must be granted to groups, which may contain users.
Groups
A group contains one or more users as members. Groups can't be nested.
Storage Buckets
Containers for storing data objects. Each has a region and compartment. Compartment-level policies govern user and machine access to buckets and their contents.
is_active
Boolean True if user account is active
email
User email
external_id
User's external ID for SSO
supervisor_id
NetSuite ID of the user's supervisor
title
User's title
give_access
Boolean if the user has access to NetSuite
subsidiary_id
NetSuite ID number of User's Subsidiary
subsidiary
User's subsidiary name
created_at
Creation time for employee record
last_login_at
Date of last successful User login to NetSuite from Audit Trail
accessible_subsidiaries
Subsidiary access type for role, e.g. "all", "own", "selected", "active"
crosssubsidiary_record_viewing
Boolean if cross-subsidiary record viewing is enabled for role
is_active
Boolean if role is active
is_sso_only
NetSuite configuration if role requires users from in-bound SSO only
is_active
Boolean for subsidiary active status
is_elimination
Boolean if subsidiary is an elimination subsidiary
parent_id
NetSuite ID of parent subsidiary
country
Country designation for subsidiary
full_name
Subsidiary full name which includes all parent names
{
"Sid": "RDS",
"Effect": "Allow",
"Action": [
"rds:DescribeDBClusters",
"rds:DescribeDBInstances",
"rds-db:connect",
"rds:DescribeTenantDatabases"
],
"Resource": "*"
},
Name
The name of the Oracle database.
Id
Unique identifier for the database.
Type
The type of the database entity.
Name
The name of the privilege grant.
Id
Unique identifier for the privilege grant.
Type
The type of the privilege grant entity.
Privileges Grantable
List of grantable privileges.
Privileges Non Grantable
List of Non Grantable privileges.
Name
The name of the role.
Id
Unique identifier for the role.
Type
The type of the role entity.
Authentication Type
The type of authentication used for the role.
Common
Indicates if the role is common across databases.
Oracle Maintained
Indicates if the role is maintained by Oracle.
Password Required
Indicates if a password is required for the role.
Name
The name of the schema.
Id
Unique identifier for the schema.
Type
The type of the schema entity.
Name
The name of the user.
Id
Unique identifier for the user.
Type
The type of the user entity.
Account Status
The status of the user's account.
Authentication Type
The type of authentication used for the user.
Common
Indicates if the user is common across databases.
Identity Type
The type of identity of the user.
Is Active
Indicates if the user is active.
Profile
The profile associated with the user.
System Privileges Admin.
List of system privileges granted to the user.
Created At
Timestamp when the user was created.
Last Used At (Optional)
Timestamp when the user was last active, optional.
Oracle Maintained
Indicates if the user is maintained by Oracle.
System Privileges Non-Admin
List of non-admin system privileges granted to the user.
System Privileges Common Admin
List of common admin system privileges granted to the user, optional.
System Privileges Common Non-Admin
List of common non-admin system privileges granted to the user, optional.
Name
The name of the table.
Id
Unique identifier for the table.
Type
The type of the table entity.
pip3 install -r requirements.txt
export VEZA_API_KEY="your_veza_api_key"
export VEZA_URL="https://your-instance.vezacloud.com"
export OPENAI_ORG_ID="org-your_organization_id"
export OPENAI_API_KEY="your_openai_api_key"
./veza_openai.py
docker build . -t veza_openai
docker run --rm \
-e OPENAI_ORG_ID="org-your_organization_id" \
-e OPENAI_API_KEY="your_openai_api_key" \
-e VEZA_URL="https://your-instance.vezacloud.com" \
-e VEZA_API_KEY="your_veza_api_key" \
veza_openai
N/A
VEZA_API_KEY
true
API token to connect to your Veza instance
--veza_url
VEZA_URL
true
URL of your Veza instance
--openai-org
OPENAI_ORG_ID
true
Organization ID for your OpenAI organization
N/A
OPENAI_API_KEY
true
API key for OpenAI
--save_json
N/A
false
Save a copy of the metadata JSON uploaded to the Veza instance
--debug
N/A
false
Enable verbose debug logging
Org
is_personal
Boolean indicating if the organization is a personal space
Org
organization_id
The unique identifier for the OpenAI organization
User
email
User's email address, used for identity mapping
Owner
Standard API Requests, Read Organization, Modify Billing, Manage Members
Reader
Standard API Requests, Read Organization
Standard API Requests
Ability to make API calls to OpenAI services (DataRead)
Read Organization
Ability to view organization settings and details (MetadataRead)
Modify Billing
Ability to modify billing settings (MetadataWrite)
Manage Members
Ability to add/remove members to the organization (MetadataWrite)
CREATE USER [db_user] WITH LOGIN;
GRANT rds_iam TO [db_user];
CREATE USER [db_user] WITH LOGIN;
GRANT rds_iam TO [db_user];
GRANT SELECT ON
pg_catalog.pg_user,
pg_catalog.pg_group,
pg_catalog.pg_namespace,
pg_catalog.pg_class,
pg_catalog.pg_database,
pg_catalog.pg_auth_members,
pg_catalog.pg_attribute,
pg_catalog.pg_roles,
pg_catalog.pg_trigger,
pg_catalog.pg_proc,
pg_catalog.pg_collation,
pg_catalog.pg_conversion,
pg_catalog.pg_type,
pg_catalog.pg_event_trigger,
pg_catalog.pg_extension,
pg_catalog.pg_foreign_data_wrapper,
pg_catalog.pg_foreign_table,
pg_catalog.pg_language,
pg_catalog.pg_largeobject_metadata,
pg_catalog.pg_operator,
pg_catalog.pg_opclass,
pg_catalog.pg_opfamily,
pg_catalog.pg_policy,
pg_catalog.pg_publication,
pg_catalog.pg_sequence,
pg_catalog.pg_foreign_server,
pg_catalog.pg_statistic_ext,
pg_catalog.pg_subscription,
pg_catalog.pg_tablespace,
pg_catalog.pg_ts_config,
pg_catalog.pg_ts_dict,
pg_catalog.pg_parameter_acl
TO [db_user];
{
"Sid": "RDS",
"Effect": "Allow",
"Action": [
"rds:DescribeDBInstances",
"rds:DescribeDBClusters"
],
"Resource": "*"
},
{
"Sid": "RdsDbConnect",
"Effect": "Allow",
"Action": [
"rds-db:connect"
],
"Resource": "arn:aws:rds-db:<region>:<account_id>:dbuser:<cluster-name>/<db_user>"
}
Field
Notes
Name
A unique display name for the Anaplan platform connection
Username
The username of the account recorded above
Password
The password of the account recorded above
Certificate
The public certificate PEM file recorded above
Certificate Key
The private key PEM file recorded above
openssl pkcs12 -in your_file.p12 -out veza_anaplan.crt.pem -clcerts -nokeys
openssl pkcs12 -in your_file.p12 -out veza_anaplan.key.pem -nocerts -nodes
Attribute
Notes
email
The user's email address
is_active
Boolean true if the account is not disabled
last_login_at
The timestamp when the user account last logged on
Attribute
Notes
is_active
Boolean true if the workspaces is not archived
Attribute
Notes
active_state
A string representation of the model's current state
last_modified_by
The id of the user that last modified the model
{
"Sid": "RedshiftCredentials",
"Effect": "Allow",
"Action": "redshift:GetClusterCredentials",
"Resource": [
"arn:aws:redshift:<region>:<account_id>:dbuser:<cluster-name>/${redshift:DbUser}",
"arn:aws:redshift:<region>:<account-id>:dbname:<cluster-name>/*"
]
},
{
"Sid": "RedshiftDescribe",
"Effect": "Allow",
"Action": [
"redshift:DescribeClusters",
"redshift-data:GetStatementResult",
"redshift-data:DescribeStatement"
],
"Resource": "*"
},
{
"Sid": "RedshiftExecute",
"Effect": "Allow",
"Action": "redshift-data:ExecuteStatement",
"Resource": "arn:aws:redshift:<region>:<account-id>:cluster:<cluster-name>"
}
{
"Sid": "RedshiftCredentials",
"Effect": "Allow",
"Action": "redshift:GetClusterCredentials",
"Resource": [
"arn:aws:redshift:<region>:<account_id>:dbuser:<cluster-name>/<db_user>",
"arn:aws:redshift:<region>:<account-id>:dbname:<cluster-name>/*"
]
},
{
"Sid": "RedshiftDescribe",
"Effect": "Allow",
"Action": [
"redshift:DescribeClusters",
"redshift-data:GetStatementResult",
"redshift-data:DescribeStatement"
],
"Resource": "*"
},
{
"Sid": "RedshiftExecute",
"Effect": "Allow",
"Action": "redshift-data:ExecuteStatement",
"Resource": "arn:aws:redshift:<region>:<account-id>:cluster:<cluster-name>"
}
CREATE USER [veza_user] WITH PASSWORD 'YOUR_PASSWORD';
GRANT SELECT ON
pg_catalog.pg_user,
pg_catalog.pg_group,
pg_catalog.pg_database,
pg_catalog.pg_namespace,
pg_catalog.pg_class,
pg_catalog.pg_class_info,
pg_catalog.pg_attribute_info
TO
[veza_user];
Host
Your Duo API hostname (e.g., api-XXXX.duosecurity.com
)
Integration Key
The integration key from your Admin API application
Secret Key
The secret key from your Admin API application
first_name
User's first name
last_name
User's last name
username
User's login username
User's email address
enable_auto_prompt
Controls automatic authentication method prompting
is_enrolled
Indicates if user has configured authentication methods
last_directory_sync
Timestamp of last directory sync
lockout_reason
Reason for account lockout if applicable
status
User account status (active/bypass/disabled/locked out/pending deletion)
is_admin
Indicates administrator status
password_change_required
For admin users, indicates required password change
created_at
Account creation timestamp
last_login_at
Most recent login timestamp (admin users only)
status
Group authentication status (Active/Bypass/Disabled)
factor_type
Set to "phone"
platform
Phone platform/OS
name
Phone identifier
factor_type
Set to "hardware_token"
serial
Token serial number
name
Token identifier
factor_type
Set to "webauthn_credential"
label
Credential label
name
Credential name
created_at
Credential creation timestamp
Owner
Full access to all actions, objects, and settings. Can manage other administrators and API applications.
DataRead
, DataWrite
, MetadataRead
, MetadataWrite
Administrator
Can manage users, devices, settings, policies, and applications (except Admin API). Cannot manage other administrators.
DataRead
, DataWrite
, MetadataRead
, MetadataWrite
(limited scope)
Application Manager
Can manage protected applications and SSO sources. Limited user/device information access.
DataRead
, MetadataRead
(applications only)
User Manager
Can manage users, phones, tokens, and bypass codes. Can run directory synchronization.
DataRead
, DataWrite
(users only)
Security Analyst
Can manage security settings, process events, view logs. Limited user management.
DataRead
, MetadataRead
Help Desk
Can manage user devices and authentication. Cannot create/delete users or run bulk operations.
DataRead
, DataWrite
(limited scope)
Billing
Access to billing information and sub-account management only.
DataRead
(billing only)
Read-only
Can view basic information about users, groups, devices, and reports. No modification rights.
DataRead
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "RDS",
"Effect": "Allow",
"Action": [
"rds:DescribeDBInstances",
"rds:DescribeDBClusters"
],
"Resource": "*"
},
{
"Sid": "RdsDbConnect",
"Effect": "Allow",
"Action": [
"rds-db:connect"
],
"Resource": "arn:aws:rds-db:<region>:<account_id>:dbuser:<cluster-name>/<db_user>"
}
]
}
CREATE USER [veza_user] IDENTIFIED WITH AWSAuthenticationPlugin AS 'RDS';
GRANT REFERENCES ON *.* TO [veza_user];
GRANT SELECT ON mysql.user TO [veza_user];
GRANT SELECT ON mysql.db TO [veza_user];
GRANT SELECT ON mysql.tables_priv TO [veza_user];
GRANT SELECT ON mysql.columns_priv TO [veza_user];
GRANT SELECT ON mysql.global_grants TO [veza_user];
GRANT SELECT ON mysql.procs_priv TO [veza_user];
GRANT SELECT ON mysql.proxies_priv TO [veza_user];
-- Only if MySQL version is up to 5.7
GRANT SELECT ON mysql.proc TO [veza_user];
-- Only if MySQL version is 8+
GRANT SELECT ON mysql.role_edges TO [veza_user];
GRANT SHOW_ROUTINE ON *.* TO [veza_user];
-- If including triggers
GRANT TRIGGER ON *.* TO [veza_user];
Configuring the Veza integration for Coupa Contingent Workforce
The Veza integration for Coupa Contingent Workforce (CCW) connects to a single CCW environment to discover and map contingent worker identities and relationships. The integration provides visibility into your organization's contingent workforce alongside regular employees.
The integration supports:
Discovery of contingent workers with detailed attributes
Mapping of organizational structures (Account Segments, Cost Centers, Departments)
Visualization of reporting relationships between contingent workers and hiring managers
Support for Veza Lifecycle Management by ingesting workforce data
Coupa CCW environment
User account with Customer Integration Admin privileges
Network connectivity from Veza to your Coupa CCW instance
The integration requires an API consumer application with the following scope:
ccw.contingent_workers
Veza collects information from Coupa CCW by executing REST API calls to interact with the Coupa CCW instance. Before adding the integration to Veza, create an API consumer application on the Coupa CCW platform for the connection.
Log into the Coupa CCW platform as a user with Customer Integration Admin privileges.
Navigate to Integration Toolkit -> API Consumer Apps and click Create.
Provide the following information to create an API app:
Application Name: Enter a name that identifies the API app
Application Description: Describe what the app is used for
Contact First/Last/Email Address: The technical contact responsible for the application
Application Type: Select Machine to Machine (Only OpenId Connect apps that require faceless Machine to Machine integrations with Client Credential grant types are supported)
Application Category: Partner
Active: Check this to enable the application
Credential Type: Shared Secret
Client ID: This field is autogenerated; copy its value for later use
API User: Choose a pre-defined API user
Scopes: ccw.contingent_workers
Click Save and record the Client Secret displayed in the green flash message banner
Note: The client secret is only displayed once. Be sure to copy it somewhere secure immediately.
To enable Veza to gather contingent workforce metadata:
Log into Veza as an administrator.
Navigate to the Integrations page.
Click Add New and select CoupaCCW as the type of integration to add.
Enter the required information:
Url: The URL of your Coupa CCW instance (e.g., https://yourcompany.coupacloud.com
)
Client ID: The API consumer app client ID recorded earlier
Client Secret: The API consumer app client secret recorded earlier
Is Staging: Check this if the Coupa CCW tenant is non-production
Click Save to create the integration.
After configuring the integration:
Navigate to the Integrations page in Veza.
Locate the Coupa CCW integration in the list.
Check the Status column to confirm the integration is connected.
Click on the integration to view detailed extraction status on the Data Sources tab.
After a successful extraction, check the Integration Overview to verify that contingent worker data appears in Veza Graph as expected.
The Veza integration for Coupa CCW uses OAuth2 to authenticate to the Coupa instance. Staging/non-production instances employ a separate authentication endpoint from production instances. If your Coupa CCW instance is a non-production instance, be sure to select Is Staging when configuring the integration to ensure that the proper authentication endpoint is used.
Data from Coupa CCW is synchronized on a scheduled basis. The integration performs an initial full extraction when first configured, followed by incremental updates based on your Veza platform's configured sync schedule.
The Veza integration for Coupa CCW discovers the following entities and attributes:
Account
The employee is added to group(s) that represent the assigned account segments
Cost Center
The employee is added to a group that represents the cost center
Department
The employee is added to a group that represents the department
The employee's email address
EmployeeId
EmployeeNumber
on the Veza platform
Employment Status
ACTIVE
or TERMINATED
Employment Type
CONTRACT
First Name
The employee's first name
ID
The Coupa EmployeeId
IsActive
Set true if the employee is marked active on the Coupa platform
Job Title
The Job title listed in the employee's current contract
Manager
A relationship is created between the contingent worker and the hiring manager
Name
The employee's first and last names, joined with a space
Site Location Code
The site location code of the employee's current contract
StartDate
The employee's start date
Supplier Email
The email address of the supplier contact on the employee's current contract
TerminationDate
The employee's termination date
Account Segments, Cost Centers, and Departments are represented as groups on the Veza platform to which contingent workers can be assigned. This allows for powerful querying and easy visualization in the Veza authorization graph.
The Veza integration discovers the following attributes for these groups:
Code
The numeric code of the entity
Name
The name of the entity
Type
Account Segment
, Cost Center
, or Department
Hiring managers are represented as Full Time employees on the Veza platform to which contingent workers can be associated.
The Veza integration discovers the following attributes for these employees:
The employee's email address
EmployeeNumber
The HiringManagerUserName
value
Employment Status
Unavailable
Employment Type
FULL_TIME
First Name
The employee's first name
ID
The HiringManagerUserName
value
IsActive
Set true if the employee is marked active on the Coupa platform
Name
The employee's first and last names, joined with a space
Configuring the Veza integration for Atlassian Cloud Admin, Jira Cloud, and Confluence Cloud.
This integration enables a connection between Veza and an Atlassian Cloud tenant to discover the following services:
Atlassian Cloud Admin
Bitbucket
Jira Cloud
Confluence Cloud
The integration includes cross-service connections to show relationships between IdP identities, Cloud Admin users and groups, and the local BitBucket, Confluence or Jira accounts those users can assume.
This integration deprecates the original OAA connectors for BitBucket Cloud, Jira and Confluence. You can now enable these products when configuring the Atlassian Cloud integration, and safely remove the original integrations. You should disable any integration secrets or service accounts that are no longer in use.
Two sets of credentials are required to enable the integration:
An admin API key, used to connect to the Cloud Admin API. See Manage an Organization With Admin APIS for more detail.
A user API key, used to connect to products such as Jira and Confluence. These are managed on a per-user basis. For more detail see Manage API Tokens for your Atlassian Account
We recommend creating a unique user for the integration. The integration user should have read-only permissions to all products to discover, for listing entities and permissions.
Log in to the Admin portal at admin.atlassian.com
.
Open the Users List and click Invite Users.
Enter an email address for the invitation.
Grant the user access to the products the integration will discover.
The user status will change to active one you have accepted the invitation and accessed an Atlassian product.
See Create, Edit, and Delete Users for additional guidance.
Veza connects to the Cloud Admin APIs to collect information about groups and users.
Log in to admin.atlassian.com
.
Go to Settings > API Keys.
Choose Create API key.
Enter an identifying name for API key.
By default, keys expire in one week. To change the expiration date, pick a new Expires on date.
Select Create to save the API key Copy the Organization ID
and API key
values for configuring the integration on Veza.
Click Done. The key will appear in the list of API keys.
Atlassian product APIs enable access to individual services just as Jira or Confluence.
As the integration user, log in to https://id.atlassian.com/manage-profile/security/api-tokens
.
Click Create API Token.
Enter a label for the token and click Create.
Copy the token, which will only appear once.
To enable the integration:
In Veza, go to Integrations and choose Add Integration.
Pick Atlassian Cloud as the integration to add and click Next.
Enter the required information and Save the configuration.
Insight Point
Choose whether to use the default data plane or a deployed Insight Point.
Name
A friendly name to identify the unique integration.
Atlassian Url
Host URL, e.g. veza.atlassian.net
.
Admin API Key
Admin token from the previous steps.
Products
Comma-separated list of products to discover (jira, confluence, bitbucket
).
Product User
Integration username, e.g. [email protected]
.
Product Token
User API token from the previous steps.
Product Token
User API token from the previous steps.
Workspace
Optional Bitbucket workspace to connect to (shown in the login URL)
Skip Branch Protection Discovery
Optionally omit extraction of
If you do not enter an admin API key, Veza can still extract data from Jira & Confluence. It will not, however, be able to correlate Jira & Confluence users with users from identity providers.
Atlassian Cloud Tenant
tenant_unique_id
Atlassian Cloud User
account_type
account_status
access_billable
product_access
user_type
Limitations:
Admin API access: The integration user must be assigned to Bitbucket as an administrator to discover group permissions on repositories. This is optional. Without admin permission, the connector will discover users' effective permissions, which can be slower and will not indicate when these are derived through group membership.
Atlassian Cloud Admin is not able to discover external (unmanaged) users. External users have emails belonging to a domain outside of your organization, added manually to your Atlassian organization.
Atlassian and Jira support adding groups to groups to reduce duplication of entitlements but do not return the details on group assignments within groups via their public API. The integration will discover all users that are members of a group directly or indirectly but will not know if the user is directly assigned or inherited by group membership.
Bitbucket Cloud Project
name
Project name
key
Project Key
description
Project Description
is_private
True if project is private
has_publicly_visible_repos
List of publicly visible repos
Bitbucket Cloud Repo
name
is_private
slug
project_key
fork_policy
default_branch_protected
Bitbucket Cloud Group
name
Bitbucket Cloud User
key
User Id.
emailAddress
User's email address.
name
User's name
displayName
User's display name
active
True if user is active user
deleted
True if user deleted
Bitbucket Cloud Role
project_key
Key of the project for respective role
Branch Protection Policies
For Bitbucket Cloud repositories, Veza collects branch protection policies on the default branch. The property default_branch_protected
will be True
if any type of branch protection is configured. Additionally, the following boolean properties are True
indicating the specific type of policy:
allow_auto_merge_when_builds_pass
require_passing_builds_to_merge
enforce_merge_checks
require_approvals_to_merge
require_default_reviewer_approvals_to_merge
require_tasks_to_be_completed
Gathering branch protection policies will increase extraction time. You can disable this option when configuring the Atlassian Cloud integration.
Confluence User
account_type
email
external_collaborator
Confluence Space
type
status
id
unlicensed_access
anonymous_access
Jira Group
Jira Instance
Jira Project
Jira Project Role (shown in Veza as <project name> - <role name>
)
Jira User
Notes:
Due to Atlassian API limitations, the integration cannot currently retrieve Jira user attributes: createdAt
, lastLoginAt
, deactivatedAt
, and lastChangeAt
.
As roles are defined on a per-project basis, and role names can be duplicated across a Jira Cloud instance, project roles are translated as <project name> - <role name>
Configuring the Veza integration for iManage
The Veza integration for iManage connects to the work management platform to discover users, their groups and roles, and the shared libraries they can access. Use the integration to:
Search for employees with access to data in iManage, based on their group and role assignments.
Review user permissions within iManage based on groups, roles, or the resources they can access.
Filter queries and create alert rules based on the authorization metadata discovered by Veza.
To configure the integration, you must enable the Veza - iManage Integration app for your organization's iManage account and add the integration to Veza using the app's credentials.
See Notes and Supported Entities for more details.
The integration requires a custom application installed by the iManage team.
For customers who use iManage Cloud, request an application for your account by emailing [email protected].
To: [email protected]
Subject: Veza – iManage Integration for <CompanyName> in cloudimanage.com
Body: Please create a new Veza – iManage Integration application for <CompanyName> in cloudimanage.com
Name: Veza – iManage Integration
Customer Name: ______
Customer/Tenant ID: ______
Redirect URL (if applicable): ______
For self-managed iManage, create an app registration for your app in Control Center. Ensure the application is configured to use the OAuth2 client_id and secret. Note the values for the configuration steps below.
Once the app is installed, you can log in to iManage to get the application client ID. The client secret will be provided to the email requesting the custom application from iManage's team.
Request the Veza - iManage Integration app. The app must have access to the iManage Control Center.
Log in to iManage. Your account needs the App Management, Group Management, Role Management, and User Management privileges to access and use the integration.
The user must have access to the Veza - iManage Integration application to get Client ID and Client Secret for configuration.
Click on the left menu Applications and Add Application button on the right side to configure a new application.
Select Veza - iManage Integration application and click Authentication.
Update authentication settings if required, otherwise, click Access.
Update Access settings if required, otherwise, click Review.
Review before clicking Add application. Enable the application as shown below if not enabled.
Click on Finish to add application. Once the application is added successfully, you should be able to see it on the Applications list.
To configure the iManage integration in Veza:
Log in to your Veza instance.
Choose Integrations from the main navigation to open the overview page.
In the main pane, click Add Integration.
Choose iManage as the integration to create and enter the required details:
iManage URL: URL for iManage API endpoint for self-managed, including protocol. Can leave empty for default Cloud deployments.
iManage Client Identifier: The client ID used to access the iManage API
iManage Client Secret: The client Secret used to access the iManage API
iManage Username: The username used to access the iManage API
iManage Password: The password used to access the iManage API
Veza represents identities and access within iManage with the following graph entities:
iManage Customer → iManage Application
iManage Library → iManage Resource
iManage Group & Library Group → iManage Group
iManage User & Library User → iManage User
iManage User Role and Library Role → iManage Role
iManage User Role’s capabilities → iManage Permission
allow_logon: Indicates if the user is allowed to sign in. If true, the user is allowed to sign in. If false, the user is not allowed to sign in.
create_date: User’s created date.
last_modified_at: User’s edit date. (Custom Property: Yes, Used field edit_date)
email: User's primary email.
failed_logins: Indicates the current number of user's failed attempts to sign in.
full_name: User’s full name.
id: User’s ID.
is_external: Indicates the user is an external user. If false, the user is not an external user, also called a regular user.
is_locked: Indicates if the user was locked. If true, not allowed to access iManage Work Server. If false, allowed to access iManage Work Server.
preferred_library: Indicates a user's preferred library (formerly called a database).
imanage_user_type_no: Indicates the type of user as number. 2 indicates Virtual users. 6 indicates Enterprise users. (Custom Property: Yes, Used user_nos)
imanage_user_type: Indicates the type of user as string. Allowed values, Virtual users, and Enterprise users. (Custom Property: Yes)
library_id: Indicates the library ID of the user. (Custom Property: Yes)
database: Indicates the database of the user.
is_tierone: Indicates the user has tier1 privilege access. If true, the user has tier1 privilege access. (Custom Property: Yes, Used is_tier1)
is_tiertwo: Indicates if the user has tier2 privilege access. (Custom Property: Yes, Used is_tier2)
is_tierthree: Indicates if the user has tier3 privilege access. (Custom Property: Yes, Used is_tier3)
is_virtual_user: Indicates the user is a virtual user. If true, the user is a virtual user. If false, the user is not a virtual user.
system_user: Indicates the user is a system user. If true, the user is a system user. If false, the user is not a system user.
super_user: Indicates the user is a superuser. If true, the user is a superuser. If false, the user is not a superuser.
user_num: Indicates User Number.
id: Group’s ID.
full_name: Group's name.
group_number: Group’s Number.
create_date: Group’s Creation time.
enabled: Indicates if the group is enabled or disabled. If true, the group is enabled. If false, the group is disabled.
is_external: Indicates if the group is intended for external users. If true, the group is intended for external users. If false, the group is intended for regular users (non-external users).
imanage_group_type_no: Indicates the type of group as number. 2 indicates Group for virtual users. 6 indicates Group for enterprise users. (Custom Property: Yes, Used group_nos)
imanage_group_type: Indicates the type of group as string. Allowed values, Group for virtual users
, Group for enterprise users
. (Custom Property: Yes)
global_id: Indicates the group global ID. If global id is zero, the current group is library group, else global group.
library_id: Indicates the group library ID. (Custom Property: Yes)
database: Indicates the database of the group.
id: Role's ID.
name: Role's name.
description: Indicates the description of the role.
database: Indicates the database of the role.
app_management: Either admin
or no_access
.
encryption_management: Either admin
or no_access
.
feature_management: Either admin
or no_access
.
group_management: Either admin
or no_access
.
role_management: Either admin
or no_access
.
settings_management: Either admin
or no_access
.
user_management: Either admin
or no_access
.
Configuring the Veza integration for Device42.
The Device42 integration enables Veza to discover and analyze users, groups, and permissions within your Device42 environment, for insights into your IT asset management and data center infrastructure.
The integration supports:
Discovery of Device42 admin users and their properties
Mapping of Device42 admin groups and their members
Analysis of permissions assigned to admin users and groups
Visualization of Device42 data within the Veza platform for comprehensive access governance
A Device42 instance with administrator access
API access enabled in your Device42 environment
Veza platform access with permissions to add new integrations
Log in to your Device42 account as a superuser.
Open the Resources tab.
In the Secrets section, click on API Clients.
Click Add to create a new API client.
Assign a resource owner for the token.
Set the Token Time to Live (TTL) for the token.
Click Yes, I saved my keys to confirm that you have saved your Client Key and Client Secret Key.
Click the Download Credentials button to retrieve your credentials.
Note: Ensure that the user generating the API credentials is a Superuser and has their is_staff
property set to False.
In Veza, use the main menu to open the Integrations page.
Click Add Integration and search for Device42.
Click on Device42 and then click Next.
Enter the required information:
Device42 URL
URL for Device42 API endpoint including protocol
Yes
Device42 Client Key
Client key generated in Device42
Yes
Device42 Client Secret Key
Client Secret key generated in Device42
Yes
Device42 CA Certificate
CA certificate for authentication (if required by the Device42 server)
No
Click Create Integration to save the configuration.
To check integration status:
On the Veza Integrations list, click the integration name to view details.
On the details page, review the list of data sources.
Use the Status column to check if the data source is unavailable or has an error.
Click on an individual status to show more details.
To view discovered entities:
On the Veza Integrations list, click View Dashboard to show an overview of the entities Veza has discovered.
Click an entity type (e.g., Users or Groups) to view the results in Query Builder.
Review the entities to validate that results and attributes are as expected.
id
Unique identifier of the user
username
Username of the user
name
Full name of the user (first_name + last_name)
email
Email address of the user
is_active
Indicates if the user account is active
created_at
Timestamp of user creation
last_login_at
Timestamp of user's last login
is_superuser
Indicates if the user has superuser privileges
is_staff
Indicates if the user has staff privileges
auth_type
Authentication type (Local or AD)
id
Unique identifier of the group
name
Name of the group
The Device42 integration includes pre-configured queries to help you quickly gain insights into your Device42 environment. These queries can be used out-of-the-box or serve as a starting point for more complex analyses:
Monitor the overall number of admin users and groups
Track user activity and identify potentially dormant accounts
Ensure deprovisioning of inactive users
Identify superusers for privileged access management
Correlate Device42 identities with other identity providers for consistent access management
Device42 Admin Users
Description: All Device42 local admin user accounts
Type: Inventory count
Device42 Active Admin Users
Description: Active accounts in Device42
Device42 Deactivated Admin Users
Description: Accounts in Device42 that have been deactivated
Device42 Admin Users created in the last 24 hours
Description: Device42 admin users created in the last 24 hours
Device42 Admin Users not logged in recently
Description: Number of Device42 admin users with last login 90 days in the past
Type: Inventory count
Device42 Superusers
Description: Number of admin users who are Superusers in Device42
Device42 Admin Groups
Description: All Device42 local admin groups
Type: Inventory count
Device42 Admin Groups with Users
Description: Device42 admin groups that have users assigned
Type: Inventory count
Device42 Admin Users Related to Okta Users
Description: Device42 local admin users with an Okta identity
Type: Inventory count
Device42 Admin Users Not Related to Okta Users
Description: Device42 local admin users who do not have an Okta identity
Type: Inventory count
Device42 Admin Users Related to Azure AD Users
Description: Device42 local admin users with an Azure AD identity
Device42 Admin Users Not Related to Azure AD Users
Description: Device42 local admin users who do not have an Azure AD identity
Configuring the Veza integration for Databricks
This integration provides support for the Databricks machine learning platform. Veza discovers entity and authorization metadata using the native Databricks REST API, using a user access token for authentication. A customer-provided cluster must be available for executing SQL commands to discover table entities and permissions.
For organizations that use single sign-on (SSO) for federated access to Databricks, the integration discovers authorization and effective permissions that Azure, Okta, and AWS identities have on Databricks resources.
For more information and details on supported entities, see notes.
If you use Unity Catalog to govern access to Databricks on Microsoft Azure, AWS, or Google Cloud, you can enable Databricks discovery as part of the cloud provider integration configuration. See Databricks Unity Catalog for more information.
To connect to Azure Databricks, the workspace must enable both Workspace Access Control and Cluster, Pool, and Jobs Access Control. These features require a Premium Azure Databricks plan. To enable these settings:
As a Databricks administrator, click your username in the top bar of the Azure Databricks workspace and click Admin Settings.
Open Workspace Settings.
Toggle Workspace Access Control and Cluster, Pool and Jobs Access Control.
Click Confirm.
See Enable Access Control for details.
The integration requires a Databricks user with account admin rights (required to list all workspace entities and permissions). Using a non-admin user token will result in an incomplete discovery.
Create a new Databricks Admin user Veza can connect as.
As an account admin, log in to the account console.
Click Account Console > User management.
On the Users tab, click Add User.
Provide a name and email address for the user.
Click Send invite.
Generate a personal access token.
Click Settings in the lower left corner of your Databricks workspace.
Click User Settings.
Go to the Access Tokens tab.
Click the Generate New Token button. Optionally enter a description (comment) and expiration period.
Click Generate. Copy the generated token, and store it securely.
Assign the admin role to the user.
As an account admin, log in to the account console.
Click Account Console > User management.
Find and click the user you created.
On the Roles tab, turn on Account admin.
See Authentication using Databricks personal access tokens for more information.
To extract metadata for the Databricks storage layer, Veza needs to run SQL queries on one of the clusters in the workspace. You should create a separate cluster for this purpose. The cluster will be automatically started only when Veza is conducting extractions, and automatically stopped after a set amount of inactivity.
To create a cluster using the Databricks UI, pick Create > Cluster:
The cluster can be a small single-node cluster
You should enable termination after an inactivity period (~10 minutes)
Add spark.databricks.acl.sqlOnly true
to Advanced Options > Spark > Spark config
Ensure the user created for the Veza integration has CAN_MANAGE
permission on the cluster (More > Permissions)
Once the cluster is running, copy the cluster's HTTP endpoint from Advanced Options > JDBC/ODBC > HTTP path.
For more details on creating Databricks clusters see here.
From the Veza Configuration panel, navigate to the Apps & Data Sources tab. Scroll down to the Standalone Databases section and click Add New. Choose "Databricks" and provide the required information:
Name
Display name for the integration
Workspace URL
Web address of the Databricks workspace (without the https://
)
Access Token
Databricks user personal token
Cluster Endpoint
JDBC/ODBC endpoint for the configured for Veza use
SSO Type
The Identity Provider used for Single Sign On (optional).
SSO ID
Data Source ID of the identity provider used for
The Azure, AWS Identity Center, or Okta Identity Provider used for SSO must be integrated with Veza as a data source.
Cross Service Connections
To add an SSO connection for Databricks:
Use Authorization Graph to search for the Azure AD Domain, Okta Domain, or AWS Identity Center service. Open the Entity Details and copy the Datasource ID
.
Open Data Catalog > Apps and Data Sources and find your Databricks provider under Standalone Databases. Click Edit. If you haven't configured the provider yet, click Add New and choose Databricks.
Select your SSO provider as the SSO type. For SSO ID, use the Datasource ID
of the Azure AD, AWS Identity Center, or Okta IdP.
Azure AD
Azure Tenant ID (ff57cf71-ac1c-43b8-8111-43b1be101dab
)
Okta
Okta Domain (<domain>.okta.com
)
AWS Identity Center
AWS Identity Center identity store ID (ff57cf71-ac1c-43b8-8111-43b1be101dab
)
Within Databricks, Access Control Lists govern permissions to different entities such as catalogs, schemas, tables, clusters, folders, and notebooks.
Every Databricks workspace has a central Hive metastore accessible by all clusters to store table metadata. This metastore (hive_metastore
) is the sole catalog entity supported by Veza, along with schemas, tables, and permissions on those entities. Hive metastore do not support assigning permissions to catalogs.
Supported Entities
Workspace
Contains all other resources (users, groups, clusters, directories, notebooks). Users typically have their own directories, which can have subdirectories and notebooks.
Cluster
A set of computation resources (a Spark cluster). Only clusters with type High Concurrency support Permissions on tables. It has access to all hive data sources defined in a workspace.
Notebook
Executable code that can be attached to a cluster and run. Each has its owner and set of permissions.
Directory
Contains sub directories and notebooks. Each has its owner and set of permissions. By default each user gets its own directory.
Catalog
Databricks catalog
Schema
Databricks schema
Table
Databricks table
View
Databricks view
User
Local workspace user
Group
Local workspace group
The following entities are not currently supported:
SQL Warehouse
Experiment
Job
Cluster Pool
Pipeline
Query
Dashboard
Effective Permissions
From Authorization Graph, select an EP node and click Explain Effective Permissions to view the raw Databricks ACLs that result in a set of effective permissions. Effective Permissions can account for the following scenarios:
In Databricks, Access Control Lists (ACLs) regulate an identity's permissions to access data tables, clusters, pools, jobs, as well as workspace objects such as notebooks, experiments, and folders. By default those controls are turned off: all users are allowed to do anything.
Permissions can be inherited from the parent entity.
Permissions on data tables are only available when enabled both in workspace settings and the cluster (available only on High Concurrency clusters).
If permissions on data tables aren't enabled for a cluster, then all users that have permissions on that cluster can also access all tables.
Configuring the Veza integration for Ping Identity
The Veza integration for Ping Identity enables the discovery of PingOne Users, Groups, Roles, Populations, Applications, and external Identity Providers.
Once configured, you can use the integration to:
Extract and search for user attributes, including custom attributes.
Display users and their assigned applications based on group membership.
Review all users, identity providers, and applications in a PingOne environment.
Add custom mappings to define relationships with other integrated systems.
See notes and supported entities for more information.
Complete the following steps in Ping to create a new application and retrieve client credentials:
In one of your environments, navigate to Connections > Applications.
Click on + to add a new application.
Provide a name and select the application type as Worker. Confirm by clicking Save.
In the Roles tab, click Grant roles.
Search for a role named Configuration Read Only under Organization and select it. Confirm by clicking Save.
Navigate to the Configuration tab and securely store the client ID, client secret, and environment ID.
Proceed to the Veza platform to complete the integration using the client secret, client ID, and environment ID obtained from step 6.
Within Veza, navigate to Integrations.
Click Add New and choose Ping One as the integration type.
Provide the necessary details and click Save.
Environment ID
Unique identifier for a specific environment within the PingIdentity platform.
Client ID
Unique identifier for the client application.
Client Secret
Confidential key used by the integration.
Region
The region of your Ping One organization, for example, Europe
.
Before saving the configuration, you can add Mapping Configurations for any data sources that Ping Users might access.
You can also define any Custom Properties for PingOne users that Veza should import. PingOne supports two types of custom attributes:
Declared (string attributes, possibly multivalued)
JSON (structured).
Veza supports only Declared attributes (strings and lists of strings). JSON attributes are not currently recognized.
After enabling the integration, Veza will discover the following entity types and attributes:
An Organization is the primary entity within Ping Identity, encompassing one or more Environments. Each environment is configured individually.
Attributes supported by Veza:
OrganizationType
Description
Each PingOne Environment houses distinct sets of Users, Groups, Applications, and Identity Providers.
Attributes supported by Veza:
OrganizationID
Region
Description
EnvironmentType
A User entity represents an account or digital identity utilized for single sign-on with applications integrated with PingIdentity IAM solutions.
Attributes supported by Veza:
CreatedAt
UpdatedAt
UserLastLogin
UserIsActive
UserIsLocked
MFAActive
FirstName
LastName
NickName
IDPUniqueID
CountryCode
Region
EmailVerified
ExternalID
LifecycleStatus
VerifyStatus
Title
Username
RoleAssignments
Users can access different applications based on their configurations within Ping:
Veza supports application attributes:
CreatedAt
UpdatedAt
UserIsActive
HiddenFromUI
LoginPageURL
Protocol
Type
ACLAdminUserOnly
ACLGroupsAll
ACLGroupsAny
ServiceProviderEntityID
AcsUrls
Within Ping, application access can be limited 1) only to admins and 2) based on group membership. There are different options for group membership requirements:
No group limitation
Users must belong to any of the selected groups
Users must belong to all selected groups
A group consists of users who might be granted access to Applications and can be associated with Populations.
Attributes supported by Veza:
IDPUniqueID
UserFilter
Description
Population
ExternalID
In addition to groups, Ping Identity introduced Populations that can be associated with Users and Groups.
Attributes supported by Veza:
Default
Description
Population
Roles are collections of permissions assignable to an application, connection, or user. Examples include roles like Organization Admin
or Client Application Developer
.
Attributes supported by Veza:
Permissions
Description
Scope
Configuring the Veza integration for PTC Windchill
The Veza integration for PTC Windchill enables discovery of users, groups, organizations, and projects within the product lifecycle management (PLM) system.
This guide details the steps to configure the Windchill integration on the Veza platform. See notes and supported entities for more details.
To configure the integration, you will need the username and password of a local Windchill user. Veza will connect as this user to gather information about organizations, projects, groups, and other users.
PTC Windchill is a self-managed product deployed in the customer’s environment, and authentication is managed by the web server hosting Windchill.
API authentication for Windchill uses Basic HTTP Authentication. If Windchill is configured with a SAML identity provider for Single Sign-On, ensure that the integration user is able to log in with a username and password.
More information:
To add the integration in Veza:
In Veza, go to the Integrations page.
Click Add Integration, search for PTC Windchill, and select it. Then click Next.
Enter the required configuration options.
Click Create Integration to save the configuration.
Name
Enter a friendly name for the integration.
Insight Point
Leave default unless using a deployed for the connection.
URL
Enter the full URL of the PTC Windchill instance.
User Name
The username to authenticate with the PTC Windchill instance.
User Password
Enter the password for the integration user.
Discover All Users
Option to discover all users in the system (optional).
Excluded Groups
List of group IDs to exclude from discovery(optional).
CA Certificate
Self-generated CA Certificate for authentication.
ID
Unique identifier for the group, derived from group.ID
.
Name
The name of the group, derived from group.Name
.
Description
Description of the group, if available, derived from group.Description
.
CreateOnCustom
Timestamp when the group was created, derived from group.CreatedOn
.
ID
Unique identifier for the user, derived from user.ID
.
Name
Display name for the user, derived from user.FullName
or user.Name
.
CreatedAt
Timestamp when the user was created, derived from user.CreatedOn
.
Email
User’s email address, derived from user.EMail
.
Organization
Organization name associated with the user, derived from user.OrganizationName
.
DistinguishdedName
Distinguished name of the user, derived from user.DistinguishedName
.
Identity
User’s identity, derived from user.Identity
.
UserName
Username of the user, derived from user.Name
.
Identities
User’s email identity, included if user.EMail
is available.
Groups
Group IDs the user is a member of, appended during group user discovery (group.ID
).
Users are discovered through group memberships by default. To discover users not assigned to any PTC Windchill groups check the Discovery All Users option in the integration configuration.
ID
Unique identifier for the organization, derived from org.ID
.
Name
The name of the organization, derived from org.Name
.
ResourceType
Type of the resource, set to OrganizationResourceType
.
Description
Description of the organization, derived from org.Description
.
CreateOnCustom
Timestamp when the organization was created, derived from org.CreatedOn
.
ID
Unique identifier for the project, derived from project.ID
.
Name
The name of the project, derived from project.Name
.
ResourceType
Type of the resource, set to ProjectResourceType
.
Description
Description of the project, derived from project.Description
.
PrivateAcess
Indicator if the project has private access, derived from project.PrivateAccess
.
CreateOnCustom
Timestamp when the project was created, derived from project.CreatedOn
.
OrganizationName
Organization name associated with the project, derived from project.OrganizationName
.
Note: Organizations and Projects are collected for informational purposes. Users and groups are not related to Organizations and Projects.
Configuring the Veza integration for Microsoft Dynamics 365 ERP
Veza's integration with Microsoft Dynamics 365 ERP allows you to discover and visualize permissions data from your Dynamics 365 ERP environments, including Users, Groups, Application Users, and Security Roles. This integration shows connections between Azure AD Users, Groups, and Service Principals, and the roles they can assume within Dynamics 365 ERP.
Before setting up the Dynamics 365 ERP integration:
Complete the Microsoft Azure integration guide. The integration will use the enterprise application created during setup.
When configuring the Dynamics 365 ERP integration, you must provide the correct URL for your environment:
For ERP environments, use the operations URL in the format: https://xxx.operations.dynamics.com
Important: URLs must include the
https://
protocol and must NOT include any trailing slashes at the end. For example, usehttps://company.operations.dynamics.com
nothttps://company.operations.dynamics.com/
.
In order for Veza to extract Dynamics 365 ERP data, you need to grant your Azure AD Enterprise Application access to the Dynamics 365 ERP environments. To enable access to ERP:
In Azure, find the Enterprise App used for the Veza-Azure integration and add the Connector.FullAccess
permission under Permissions > Dynamics ERP
In Dynamics ERP, go to Modules > System administration > Microsoft Entra ID applications and add an entry that matches your Entra ID Enterprise App ID
You will need to assign the app to an existing user with a security role that grants permission to extract data using the https://<dynamics 365 env>/data/<entity>
API endpoints
Enabling Enterprise App to access your Dynamics 365 ERP Environment does not use a paid license.
Log in to Veza and navigate to Integrations
Edit your existing Microsoft Azure integration (or add a new one)
In the Dynamics 365 ERP Environments field, enter a comma-separated list of environments to discover
Example: https://company1.operations.dynamics.com,https://company2.operations.dynamics.com
Addresses must include the https://
protocol and omit any trailing /
Save the configuration.
Monitor the extraction progress in the Integrations dashboard
Verify successful extraction by checking that Dynamics 365 ERP entities appear in search results
The Dynamics 365 ERP integration operates as part of the Microsoft Azure integration rather than as a standalone connector. It leverages the same Enterprise Application credentials used for the Azure integration to access Dynamics 365 ERP environments.
The integration discovers organizational structure and security role assignments within Dynamics 365 ERP environments and maps them to Azure AD identities. This allows you to visualize which Azure AD users, groups, and applications have access to Dynamics 365 ERP security roles.
Veza discovers the following entities in Dynamics 365 ERP:
The Dynamics 365 ERP environment serves as the top-level container for all ERP resources.
Type: DynamicsERPEnvironment
Key Properties:
environment_url
- The URL used to access the environment
azure_deployment_id
- Azure deployment ID associated with the environment
aos_instance_name
- Name of the AOS (Application Object Server) instance
tenant_id
- Azure AD tenant ID associated with the environment
Users represent people who access the Dynamics 365 ERP system, mapped to Azure AD accounts, with permissions defined by their security roles.
Type: DynamicsERPUser
Key Properties:
workflow_line_item_notification_format
- Format for workflow line item notifications
document_handling_active
- Whether document handling is active for the user
network_domain
- Network domain for the user
company
- Company the user belongs to
sqm_guid
- SQM GUID for the user
alias
- User's alias
email_provider_id
- ID of the email provider
email
- User's email address
default_country_region
- Default country/region for the user
nickname
- User's nickname
is_active
- Whether the user is active
preferred_time_zone
- User's preferred time zone
user_info_language
- User's preferred language
auto_log_off
- Auto log-off time for the user
account_type
- User's account type
external_user
- Whether the user is an external user
Groups (Teams) are collections of users who share common access permissions.
Type: DynamicsERPGroup
Key Properties:
Standard group properties (name, description, etc.)
Entra ID Applications represent Azure Entra ID applications that have programmatic access to Dynamics 365 ERP resources.
Type: DynamicsERPEntraIDApplication
Key Properties:
user_id
- User ID associated with the application
is_active
- Whether the application is active
Security Roles define permission sets that control what actions users can perform within Dynamics 365 ERP.
Type: DynamicsERPSecurityRole
Key Properties:
context_string
- Context string for the security role
description
- Description of the security role
user_license_type
- License type required for the role
access_to_sensitive_data
- Whether the role provides access to sensitive data
The Dynamics 365 ERP integration discovers the following relationship types:
Has environment
Connects Azure AD tenant to Dynamics 365 ERP Environment
Has user
Connects Environment to User entities
Has group
Connects Environment to Group entities
Has service principal
Connects Environment to Entra ID Application entities
In group
Connects Users to their Group memberships
Has role assignment
Connects Users/Groups to their assigned Security Roles
Assumes user
Maps Azure AD users to their corresponding Dynamics 365 ERP identities
Has role
Connects Environment to Security Roles
The integration currently does not support custom entity types in Dynamics 365 ERP
Field-level security permissions are not currently extracted
Limited to API-accessible security metadata; does not include permissions managed through custom code
Early Access Using AWS Secrets Manager to store database extraction credentials is currently supported in Early Access for compatible integrations. Please contact our support team to enable this feature.
If your organization uses AWS Secrets Manager to manage and store RDS database credentials, you can configure an to use these secrets for RDS extraction, instead of storing the actual values in Veza.
This enables secure storage and key rotation in Secrets Manager, while granting the Veza service principal (an IAM user or role) access to those keys.
Secrets can use the AWS-provided "RDS secret" type, or be generic secrets, as long as they contain a value for the "username"
and "password"
keys. These values are used to log in as the local database user, configured with minimum permissions to extract database-level entities and authorization metadata.
To enable an integration to communicate with these RDS instances, you must configure a mapping of AWS secrets to instances with the following schema:
Additionally, AWS IAM policies must allow the Veza integration to read and decrypt the specified secrets.
This document describes the required IAM policies and API calls to enable this mapping for an AWS account in Veza.
For each AWS account that contains RDS instances, update the integration IAM policy to allow the Veza user or role to get the secrets associated with those resources.
For multi-account organizations where secrets are stored in another AWS account, you must also apply a resource policy on the secret and on the KMS key within that account, allowing the RDS account access to the secret.
Apply the following policies depending on your environment:
If the secret and RDS instance are located in the same AWS account, update the IAM policy for the integration to allow the Veza user or role to read (and decrypt, if required) the secret:
secretsmanager:GetSecretValue
on the secret (always required)
kms:Decrypt
on the CMK used to encrypt the secret, if a CMK was used instead of the AWS-managed key
The policy attached to the integration IAM user or role grants permissions to get the secret value from Secrets Manager and to decrypt the secret if it is encrypted with a KMS key:
When the secret and RDS instances are in different accounts, you need to apply policies in both accounts:
Account A (where the secret is stored): Apply a resource policy on the secret in Secrets Manager and on the KMS key to allow the external account (Account B) to access the secret.
Account B (where the RDS instance resides): Apply an IAM policy to the role or user used to access the secret in Account A).
Account A: Secrets Manager Resource Policy
This resource policy allows the role from Account B to access the secret.
Account A: KMS Key Policy
This key policy allows the external role from Account B to decrypt the secret.
Account B: IAM Policy for Integration Role or User
Add this statement to the in the account containing the RDS instances. This will allow Veza to get and decrypt secrets in Account A.
You can use an administrator API key to enable mappings for an AWS integration. Note that private APIs are subject to change as capabilities are added or modified.
When making API requests, ensure that the resource_id
parameter is URL-encoded. This is particularly important because the resource_id
can be an AWS ARN or an SQL connection string. These values can contain special characters, such as :
and /
, which can interfere with API routing if not properly encoded.
For example, if the resource_id
is arn:aws:rds:us-west-2:123456789012:db:mysql-db
, the URL-encoded request should be:
List all resource-to-secret mappings for an AWS Integration
GET <BASE URL>/private/providers/{provider_id}/secrets
Response:
Set a mapping of all secrets for an AWS integration.
PUT <BASE URL>/private/providers/{provider_id}/secrets
Request body:
Delete all secrets mapped for an integration, specified by AWS integration ID.
DELETE <BASE URL>/private/providers/{provider_id}/secrets
Remove a single mapping, specified by ID.
DELETE <BASE URL>/private/providers/{provider_id}/secret/{resource_id}
Return the secret id for a specified resource.
GET <BASE URL>/private/providers/{provider_id}/secret/{resource_id}
Request body:
Update the integration secrets mapping to use a new secret ID for the specified resource.
PUT <BASE URL>/private/providers/{provider_id}/secret/{resource_id}
Request body:
Early Access: This integration is provided as an Open Authorization API (OAA) connector package. Contact our support team for more information.
The OAA connector for Auth0 populates an OAA Custom Identity Provider with discovered Auth0 Users. These identities can be mapped to other configured Veza data sources (Snowflake, Trino, etc.), or resources in other OAA Custom Applications.
Create a new application
Provide the application a name
Select "Machine to Machine Applications and click Create
Select the Auth0 Management API
Add the following permissions:
read:users
read:connections
read:custom_domains
read:mfa_policies
Click Authorize to finish creation process
From the newly created Application page not the Domain, Client ID, Client Secret
Under Application Properties ensure that Token Endpoint Authentication Method is set to Post
Generate an API key for your Veza user. API keys can be managed in the Veza interface under Administration -> API Keys. For detailed instructions consult the Veza User Guide.
With Python 3.8+, install the requirements into either a virtual environment or the system.
Set the Veza API key, Auth0 Client ID, and Secret environment variables:
Run the connector:
Integrate multiple existing accounts in an Organization using AWS CloudFormation
AWS CloudFormation allows organizations to easily deploy AWS resources into existing accounts within the AWS Organization. Veza integrates with AWS CloudFormation to enable one-touch registration of AWS accounts with the Veza platform.
To control which AWS accounts will register with the Veza platform, the provided CloudFormation template can apply to the AWS Organization as a whole, specific Organizational Units within the AWS Organization, or specific AWS accounts.
The template will create the required IAM resources and a Lambda function responsible for registering and updating the managed account where it is deployed, and create a Veza AWS Integration for the account.
Veza's AWS Organizations integration is delivered as an AWS CloudFormation template that can be installed in the Organization's root account. The integration consists of three main infrastructure components that will be deployed to target accounts:
An AWS Lambda function:
This Lambda function executes when the AWS CloudFormation StackSet is first deployed and on any subsequent update or delete requests
This function interacts with Veza APIs to ensure that the target account is registered as a Cloud Provider in the organization's Veza platform and that its registration details are up-to-date
An IAM Role and Policy for the target account to allow Veza to assume an IAM Role with read-only access and discover the resources inside the account
An AWS Secrets Manager secret:
The Veza API key required for interacting with Veza APIs is encrypted and stored in the target account.
A strict IAM policy gives the AWS Lambda function access to this key for interactions with the Veza API The AWS Lambda function executes upon initial deployment of the AWS CloudFormation StackSet, as well as upon updates or deletes to the StackSet, allowing for centralized configuration control of the organization's AWS integrations.
Before deploying the Veza AWS Organizations integration, three pieces of data are required.
Make note of the URL used to connect to Veza (ex: https://example.vezacloud.com
)
Generate an on the Veza platform for use by the CloudFormation template
Generate a UUID value for use as the ExternalId
when Veza assumes the read-only IAM role
The following steps should be completed in the AWS Organizations root account by a user with permission to deploy CloudFormation StackSets.
Log into the AWS console, click Services, then search for and select CloudFormation.
In the left navigation bar, click StackSets.
In the right corner of the main pane, click Create StackSet.
In Step 1: Choose a Template, leave the default values selected and provide https://veza-controltower.s3.amazonaws.com/veza-aws-org-member-account.yaml
in the Amazon S3 URL field.
In Step 2: Specify StackSet Details, provide the following:
StackSet Name: enter a display name for the CloudFormation StackSet
StackSet Description: enter an optional description of the CloudFormation StackSet
RemoveVezaIntegrationOnDelete: set to true to remove AWS accounts from the Veza platform if this StackSet is deleted (default: true)
VezaApiToken: paste in the API key generated on the Veza platform
VezaApplicationUrl: paste in the URL of the Veza instance copied above
VezaDiscoveryAccountId: this is the AWS account used by Veza to assume the read-only IAM role and discover resources in the target account. Leave the default value unless otherwise instructed.
VezaExternalId: this is the externalId
that Veza will provide when attempting to assume the IAM Role in the target accounts. Set it to any UUID value.
VezaRDSUser: this is an existing local user account with read privileges that will be used to discover RDS resources.
In Step 3: Configure StackSet options, add any desired tags, ensure Managed execution
is set to Inactive
, and click Next
In Step 4: Set Deployment Options, provide the following, leaving the remaining options with their default values:
Deployment Targets: select either Deploy to organization
or Deploy to organizational units (OUs)
.
If Deploy to organizational units
is selected, provide up to 10 AWS OU IDs and an optional Account Filter Type
Specify Regions: select a single region into which the AWS Lambda function will be deployed for the target accounts. Warning: Ensure only one region is specifed for the deployment; selecting multiple regions will lead to conflicts and require manual intervention to remove.
In Step 5: Review, review the entered parameters, scroll to the bottom of the form, and accept the IAM Role disclaimer, then click Submit After the CloudFormation StackSet is provisioned, the integration is enabled. The Stack resources will be deployed into the target accounts and will register with the Veza platform as they complete.
Veza CloudFormation scripts are hosted on AWS S3. You can either use the defaults provided below or host your own modified versions. If using a customized template, you should update the Amazon S3 URL when creating the CloudFormation StackSet with the URL of your customized version.
CloudFormation Template Link: https://veza-controltower.s3.amazonaws.com/veza-aws-org-member-account.yaml
User
is_active
True if the user is not blocked
User
nickname
User
created_at
User
last_login_at
User
updated_at
User
last_password_reset_at
User
mfa_configure
Is true if Auth0 reports any configured MFA methods
User
connections
List of names of applications the user identity is connected to
pip3 install -r requirements.txt
export VEZA_API_KEY=<Veza API key>
export AUTH0_CLIENT_ID=<Auth0 Client ID>
export AUTH0_CLIENT_SECRET=<Auth0 Client Secret>
./oaa_auth0.py --auth0-domain <https://domain.us.auth0.com> --veza-url <https://yourveza.veaacloud.com>
--auth0-domain
AUTH0_DOMAIN
Domain of the auth0 management URL
AUTH0_CLIENT_ID
The Client ID for the Auth0 Application
AUTH0_CLIENT_SECRET
The Client Secret for the Auth0 Application
--veza-url
VEZA_URL
URL of Veza deployment
VEZA_API_KEY
API key generated for Veza
--debug
n/a
Optional, enable verbose output and debug information
--save-json
n/a
Optional, save OAA payload to JSON file locally for debugging
{
"resource_id": "<rds_instance_arn>",
"secret_id": "<secret_arn>"
}
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"secretsmanager:GetSecretValue",
"kms:Decrypt"
],
"Resource": [
"arn:aws:secretsmanager:your-region:<account-id>:secret:<your-secret-name>",
"arn:aws:kms:your-region:<account-id>:key/<your-key-id>"
]
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "secretsmanager:GetSecretValue",
"Resource": "arn:aws:secretsmanager:region:account-A-id:secret:secret-id",
"Principal": {
"AWS": "arn:aws:iam::account-B-id:role/role-name"
}
}
]
}
{
"Version": "2012-10-17",
"Id": "EnableCrossAccountAccess",
"Statement": [
{
"Sid": "AllowCrossAccountDecrypt",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::account-B-id:role/role-name"
},
"Action": "kms:Decrypt",
"Resource": "arn:aws:kms:region:account-A-id:key/key-id"
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"secretsmanager:GetSecretValue",
"kms:Decrypt"
],
"Resource": [
"arn:aws:secretsmanager:region:account-A-id:secret:secret-id",
"arn:aws:kms:region:account-A-id:key/key-id"
]
}
]
}
GET
/private/providers/{provider_id}/secrets
PUT
/private/providers/{provider_id}/secrets
DELETE
/private/providers/{provider_id}/secrets
DELETE
/private/providers/{provider_id}/secret/{resource_id}
GET
/private/providers/{provider_id}/secret/{resource_id}
PUT
/private/providers/{provider_id}/secret/{resource_id}
GET <BASE URL>/private/providers/123/secrets/arn%3Aaws%3Ards%3Aus-west-2%3A123456789012%3Adb%3Amysql-db
{
"secrets": [
{
"resource_id": "<rds_instance_arn1>",
"secret_id": "<secret_arn1>"
},
{
"resource_id": "<rds_instance_arn2>",
"secret_id": "<secret_arn2>"
}
]
}
{
"secrets": [
{
"resource_id": "<rds_instance_arn1>",
"secret_id": "<secret_arn1>"
},
{
"resource_id": "<rds_instance_arn2>",
"secret_id": "<secret_arn2>"
}
]
}
{
"secret_id": "<secret_arn>"
}
{
"secret_id": "<secret_arn>"
}
Configuring the Veza integration for HashiCorp Vault Server
HashiCorp Vault enables organizations to securely store and manage secrets, according to policies. Secrets can be API keys, passwords, or certificates, or other data objects where access is tightly regulated. The Veza integration connects to a self-managed or cloud-hosted Vault cluster to discover users, namespaces, and resources, including:
Principals
HashiCorp Vault Alias
Resources:
HashiCorp Vault Namespace
HashiCorp Vault System Backend
HashiCorp Vault Auth Method
HashiCorp Vault Auth Method Subresource
HashiCorp Vault Secrets Engine
HashiCorp Vault Secrets Engine Subresource
HashiCorp Vault Policy
The integration can show:
Vault users with access to Vault secrets, and the path of authentication for those users.
Identities with access via passwords, app roles, AWS IAM, and Okta
All secrets and the users authorized for those secrets. See notes and supported entities for more details.
Veza connects to HashiCorp Vault by assuming an application role in your environment. You will need to create an role AppRole
that will be used for extraction. Then, attach it to a policy granting the required permissions for extraction.
You can do this by connecting to your server and running vault
commands:
Create the policy to attach to the Veza AppRole. Paste the following policy into a text file and save it veza-policy.hcl
.
Add the policy to Vault, adjusting the name and path of the saved policy as needed:
vault policy write veza-extraction-policy path/to/veza-policy.hcl
Enable AppRole authentication and create the role:
vault auth enable approle
The response should be: Success! Enabled approle auth method at: approle/
Create the AppRole, and attach the policy you created:
vault write auth/approle/role/veza-extraction-role token_policies=veza-extraction-policy
The response will include the path to the app role: Success! Data written to: auth/approle/role/veza-extraction-role
Get the role ID and secret ID (sensitive):
vault read /auth/approle/role/veza-extraction-role/role-id
This returns the role_id
, e.g. 10d51ce2-16bd-444b-4330-8fdcebfeda98
Get the secret ID:
vault write -f /auth/approle/role/veza-extraction-role/secret-id
Copy the secret_id
, e.g. 16f03071-3ea6-2505-7bcc-153683766133
.
To enable the integration:
In Veza, go to the Integrations page.
Click Add Integration and pick HashiCorp Vault as the type of integration to add. Click Next under the list of integrations.
Enter the required information and Save the configuration
Insight Point
Choose whether to use the default data plane or a deployed Insight Point.
Cluster Id
ID of the cluster to connect to.
Cluster URL
URL of the cluster to connect to.
Auth Role ID
Vault role_id
Auth Secret ID
Vaule role secret_id
If your users can log into Vault with single sign-on, you will need to specify this relationship in a Custom Identity Mapping. For example, you can connect Okta Users to matching HashiCorp Aliases by adding a mapping configuration on the Okta integration. Pick HashiCorp Vault as the destination data source, using Alias Unique ID as the mapping property.
Represents a top-level HashiCorp Vault Cluster. A Vault cluster is a set of Vault servers that share the same data storage backend, clustered for high availability and scaling.
Namespaces in Vault provide a way to partition resources and delegate management of those resources.
The root namespace is named admin
. Namespaces can be nested.
Groups can be nested and can have a policy attached. Groups are a way to organize and manage entities (such as users or machines) in Vault.
Group memberships defined in one namespace referencing an entity from another namespace are not supported.
Aliases represent principals that can access Vault resources. These are identities that can be used for authentication and authorization purposes in Vault.
Represents the API used to perform system actions such as creating namespaces. The system backend is a built-in secrets engine in Vault that allows management of system-level functionality.
Authentication methods in Vault are the components used to authenticate clients and map them to internal entities. Veza currently supports vault authentication methods:
AppRole
AWS
Google Cloud Platform
Microsoft Azure
Okta
Token
Userpass
Contact our support team if your organization uses an alternative auth method.
Can have a policy attached. Auth method subresources are specific configurations or resources within an authentication method, such as roles or bindings.
Secrets engines in Vault are the components that store and manage secrets and other sensitive data. Veza currently supports the following secrets engines:
Key/Value Store (v2)
AWS
Microsoft Azure
GCP
Alternatively called secrets. Some resources are not as sensitive, such as roles generated dynamically. Secrets engine subresources are specific configurations or resources within a secrets engine, such as key-value pairs or roles.
Policy consists of statements that can allow or deny access to resources. Statements consist of a path (can include wildcards) and capabilities. Longer prefix paths take precedence over shorter ones. Policies in Vault are used to govern the access permissions of entities to various resources.
Entities in Vault can have a policy attached.
Namespaces are path-based and can be nested. Parent namespaces can define policies related to child namespaces. Namespaces provide a way to partition resources and allow delegated management of those resources in Vault.
Veza generates effective permissions between principals (HashiCorp Vault Alias) and resources (Namespaces, System Backend, Auth Method, Auth Method Subresource, Secrets Engine, Secrets Engine Subresource, Policy). Veza also shows connections between Vault namespaces, Vault namespace and cluster, Vault namespace and IdPs, and Vault namespace and existing integrations.
Two Vault authorization concepts are not supported at present:
Templated Policies A policy may contain a set of variables. For instance, take the following policy clause:
path "secret/data/{{identity.entity.id}}/*" {
capabilities = ["create", "update", "patch", "read", "delete"]
}
This allows each user access to a user-specific area. Veza doesn't currently resolve these templates to show access to secrets.
External Namespace Group Memberships
Group memberships can be defined across different namespaces, independent of their hierarchy. An entity defined in one namespace can be referenced in a group in another namespace. Veza does not currently fetch policies across namespaces.
Configuring the Veza integration for Oracle Database.
The Veza integration for Oracle Database connects to a standalone Oracle deployment to discover Databases, Object Privilege Grants, Roles, Schemas, Users, and Tables. Veza connects as a local user to discover authorization entities and metadata within the root database and any container databases and pluggable databases in a multi-tenant configuration. After configuring the integration, you can:
Review effective and system-level permissions for users with access to the Oracle database, schemas, and tables.
Create rules for alerts, generate reports for tracking and visibility, and define Separation of Duties (SoD) violations for roles and privileges in Oracle Database.
Conduct user access and entitlement reviews based on the individual roles, privileges, and resources accessible to human and machine identities.
This document includes steps to configure an Oracle Database integration, along with notes and supported entities.
To connect to Oracle Database, you will need:
A local database user for the integration, with the SELECT ANY DICTIONARY
privilege. If your Oracle Database uses the multi-tenant option where a single Container Database (CDB) hosts individual pluggable databases (PDB), the user must be a common user with access to all databases to extract authorization metadata.
An Insight Point for secure communication between Veza and the Oracle Database host in production environments.
For testing purposes, you can use the internal Insight Point for the connection. In this case, firewall rules and filters must allow inbound traffic from Veza's Gateway IP addresses.
Create a common user in the Oracle Database:
Connect to a common user with the CREATE USER
privilege and ensure the current container is the root container.
Create a user, with the prefix "C##" or "c##".
Grant required permissions to the integration user.
Run the following SQL commands to create a common user with access to all container databases. Update the integration user name and password in the example:
ALTER SESSION SET CONTAINER=CDB$ROOT;
CREATE USER c##veza_db_user IDENTIFIED BY password1223;
GRANT CREATE SESSION, ALTER SESSION TO c##veza_db_user CONTAINER=ALL;
GRANT SELECT ANY DICTIONARY TO c##veza_db_user CONTAINER=ALL;
ALTER USER c##veza_db_user SET container_data=all CONTAINER=CURRENT;
Save the username and password to configure the integration in Veza.
In Veza, go to the Integrations page.
Click Add Integration.
Search for OracleDB. Select it and click Next.
Configure the integration:
Insight Point: Select an Insight Point or choose to use the default internal Insight Point for the connection.
Name: Enter a display name to identify the provider.
Server Address: Address of your Oracle Database instance, e.g., myoracleserver.domain.com
or 192.168.1.100
.
Server Port: Port for the connection, e.g., 1521
.
Database Name: Database name, e.g., ORACLE
. You can retrieve this with the SQL command select * from global_name;
.
Username: Name of the user created in the steps above, e.g., c##veza_db_user
.
Password: Password of the integration user.
Click Save to test the connection and save the configuration.
Validate the integration was successful by checking the integration status on the Integrations page. Click the integration name to view detailed status and events for each data source.
The integration discovers the following entities, along with attributes for filtering queries and fine-tuning the scope of access reviews.
Represents an Oracle database instance. Multi-tenant configurations can have more than one database within a single Oracle Database instance.
Name
The name of the Oracle database.
Id
Unique identifier for the database.
Type
The type of the database entity.
Represents the privilege grants for objects in the Oracle database. These are granted explicitly to Users and Roles and apply to specific Tables.
Name
The name of the privilege grant.
Id
Unique identifier for the privilege grant.
Type
The type of the privilege grant entity.
Privileges Grantable
List of grantable privileges.
Privileges Non Grantable
List of non-grantable privileges.
Note that Column privileges are not yet modeled. Schema privileges are only available in Oracle DB version 23.
Represents the roles defined within the Oracle database. Roles describe Object Privilege Grants that enable specific actions on tables. OracleDB roles can assume other roles.
Name
The name of the role.
Id
Unique identifier for the role.
Type
The type of the role entity.
Authentication Type
The type of authentication used for the role.
Common
Indicates if the role is common across databases.
Oracle Maintained
Indicates if the role is maintained by Oracle.
Password Required
Indicates if a password is required for the role.
Represents a schema within the Oracle database. A schema within an OracleDB Database contains individual tables. Users can be assigned to Schema as owners.
Name
The name of the schema.
Id
Unique identifier for the schema.
Type
The type of the schema entity.
Represents a user within the Oracle database. OracleDB Users are local accounts within a database.
Name
The name of the user.
Id
Unique identifier for the user.
Type
The type of the user entity.
Account Status
The status of the user's account.
Authentication Type
The type of authentication used for the user.
Common
Indicates if the user is common across databases.
Identity Type
The type of identity of the user.
Is Active
Indicates if the user is active.
Profile
The profile associated with the user.
System Privileges Admin
List of system privileges granted to the user.
Created At
Timestamp when the user was created.
Last Used At (Optional)
Timestamp when the user was last active, optional.
Oracle Maintained
Indicates if the user is maintained by Oracle.
System Privileges Non-Admin
List of non-admin system privileges granted to the user.
System Privileges Common Admin
List of common admin system privileges granted to the user, optional.
System Privileges Common Non-Admin
List of common non-admin system privileges granted to the user, optional.
Represents a table within the Oracle database. Veza shows effective permissions from OracleDB Users to OracleDB Tables.
Name
The name of the table.
Id
Unique identifier for the table.
Type
The type of the table entity.
A view is a virtual table that provides a way to represent the result of a SQL query as if it were a table. It does not store data itself but dynamically retrieves it from the underlying tables when queried.
A materialized view is a database object that contains the results of a query and stores the data physically. It can be refreshed periodically to reflect changes in the underlying data.
A procedure is a stored PL/SQL block that performs a specific task. It can take parameters, execute multiple SQL statements, and encapsulate business logic.
A trigger is a special type of stored procedure that automatically executes in response to certain events on a table or view, such as INSERT, UPDATE, or DELETE operations.
Configuring the Veza integration for Jira Data Center
This integration enables discovery of Users and Groups, Projects, and Project Roles for Jira Data Center. Use it to:
Search and visualize relationships between Jira users and projects, and the roles granting access.
Review the state of authorization within Jira, such as User > Role, User > Group, or Group > Project access.
Create rules to trigger alerts when entities in Jira are added or removed, or when attributes change.
Visualize federated access to Jira Data Center for IdP identities.
See notes and supported entities for more information.
Veza connects to Jira Data Center with API keys generated for a Jira user. You should create a Jira user for the integration, and supply the user's API credentials when configuring the integration on Veza.
Log in to Jira as an administrator or system administrator.
Click the Administration icon at the top right and pick User Management from the dropdown. Click Create user.
Enter a username, password, and email address and save the changes.
Assign the jira-administrators
group to enable Veza to gather user, group, and permissions metadata. Without admin permissions, the integration can only discover Jira projects.
See Create, edit, or remove a user for more details.
Create a Personal Access Token for a user with Admin-level permissions.
Log in to Jira with the new user account.
In Jira, click your profile picture at the top right of the screen to open the Profile. Choose Personal Access Tokens.
Click Create Token and give it a name. Optionally, you can set a date for the token to expire.
Click Create to save the token. Copy the value.
Save the token in a secure location, and enter it when configuring the integration on Veza. See Using Personal Access Tokens.
To enable the integration and queue the first extraction:
In Veza, go to Integrations.
Click Add Integration and pick Jira Data Center as the type of integration to add.
Enter the required information and Save the configuration.
Insight Point
Choose whether to use the default data plane or a deployed Insight Point.
Name
A friendly name to identify the unique integration.
Jira Software Data Center URL
Full URL used to access Jira, such as https://mycompany.com/jira
.
Jira Software Data Center Token
User API token from the previous steps.
Veza discovers the following entities and properties within Jira Data Center, and represents them in Authorization Graph following the OAA Application model:
Jira Software Data Center Business → Custom Application
Jira Software Data Center Project → Custom Resource
Jira Software Data Center Group → Local Group
Jira Software Data Center User → Local User
Jira Software Data Center User Role → Local Role
Jira Software Data Center Permission → Local Permission
The integration is tested with Jira Data Center and Jira Server version 9.6.
name
Project name
key
Project Key
description
Project Description
archived
True if project archived, False otherwise
project_keys
List of historic and current project keys
project_lead
Login of project lead
has_public_permissions
True if any permission on project is public
public_permissions
List of Project Permissions that are public
Project Permission Schemes: Jira Permission Schemes can grant users and groups permissions on Project through multiple mechanism. Depending on how the permission is assigned the permission can show up differently in Veza. A single permission can be assigned multiple ways.
Application Role- Permission is assigned to the Groups that hold the Application Role.
Project Role - The permissions are added to the Project Local Role. Role holders (users/groups) are assigned the role on the project.
User- Permission is assigned directly to the Local User.
Group- Permission is assigned directly to the Local Group.
Project Lead - Permission is assigned directly to the Local User configured as Project Lead.
The following assignment types are not currently supported. These permissions would only apply to specific items inside the project and not the project as a whole:
Reporter
Assignee
Group By Custom Field
Public permissions (Anyone) are represented as a property on the Project. The custom property has_public_permissions
will be True
if the Project has any public permissions. The public permissions are listed in the public_permissions
property on the Project.
Global Permissions: The connector does not currently support the discovery of global and system-level permissions.
name
Group Id
name
Group name
key
User Id
emailAddress
User's email address
name
User's name
displayName
User's display name
active
True if user is active user, else False
is_deleted
True if user deleted, False otherwise
Due to Atlassian API limitations, the integration cannot currently retrieve Jira user attributes:
createdAt
,lastLoginAt
,deactivatedAt
, andlastChangeAt
.
project_key
Key of the project for respective role
The Veza integration for Fastly enables the discovery of users, services, roles, and permissions within the Fastly content delivery network (CDN). Common use cases include:
Access Reviews: Certify Fastly user-role assignments, with support for mapping IdP identities to Fastly local accounts.
Access Intelligence: Create dashboards for visibility into user and service statuses, with rules to trigger alerts or actions when changes occur.
Access Visibility: Use Query Builder and Graph search to report on and visualize access to roles and services in Fastly.
This document provides steps to enable the Fastly integration. See Notes and Supported Entities for more information about entities and attributes gathered by Veza.
To create an API token:
Log in to the Fastly UI.
Navigate to Account > Personal Profile > API Tokens.
Click Create Token.
Enter your password to re-authenticate.
Fill out the "Create a Token" field. The token scope must be either Read-only access
or Global API access
.
Click Create Token to save the token.
For detailed instructions, see Using API Tokens.
To enable the integration:
In Veza, go to the Integrations page.
Click Add Integration, search for Fastly, select it, and click Next.
Enter the required information.
Click Create Integration to save the configuration.
Insight Point
Choose the default data plane or a deployed Insight Point.
Name
A friendly name to identify the integration.
Token
The API token used to access the Fastly API.
The integration uses the OAA custom application template to model entities in Fastly:
Fastly Customer: Application
Fastly Service: Local Resources
Fastly Users: Local Users
Fastly Role: Local Roles
Fastly Permissions: Local Permissions
A Fastly customer account is the base object that owns users and services.
A platform user is associated with a unique email address and can be granted access to Fastly. Users are always linked to a parent customer account.
id
id
User’s ID
LocalUser Property
name
name
User’s Name
LocalUser Property
created_at
created_at
Time when the user was created
LocalUser Property
deleted_at
is_active
Indicates if the user is active
LocalUser Property
updated_at
updated_at
Time when the user was last updated
LocalUser Custom Property
deleted_at
deleted_at
Time when the user was deleted
LocalUser Custom Property
last_active_at
last_login_at
Last active time of the user
LocalUser Property
limit_services
limit_services
Indicates if the user has limited access to services
LocalUser Custom Property
two_factor_auth_enabled
two_factor_auth_enabled
Indicates if two-factor authentication is enabled
LocalUser Custom Property
login
email
The login associated with the user (typically an email address)
LocalUser Property
locked
locked
Indicates if the account is locked for editing
LocalUser Custom Property
require_new_password
require_new_password
Indicates if a new password is required at next login
LocalUser Custom Property
A service represents the configuration for a website, app, API, or any other service hosted on Fastly. Services can have multiple versions where backends, domains, and more are configured.
id
id
Service’s ID
Resource Property
name
name
Service’s Name
Resource Property
created_at
created_at
Time when the service was created
Resource Custom Property
updated_at
updated_at
Time when the service was last updated
Resource Custom Property
deleted_at
deleted_at
Time when the service was deleted
Resource Custom Property
type
type
Type of service (VCL
or WSAM
)
Resource Custom Property
version
version
Version of the service
Resource Custom Property
is_version_active
is_version_active
Indicates if the service version is active
Resource Custom Property
paused
paused
Indicates if the service is paused
Resource Custom Property
locked
locked
Indicates if the service version is locked
Resource Custom Property
All user roles in a Fastly account have access to all services. The Engineer
role can have limited access to services with specific permissions granted by a Service Authorization API.
Fastly includes predefined user roles:
User: Limited ability to view service configurations and stats; no access to billing.
Billing: Full access to view service configurations, invoices, billing history, and manage payment information.
Superuser: Full account access, including management of service configurations, billing, and TLS settings.
Engineer: Ability to create and manage services. Access can be limited on a per-service basis with the following permissions:
Read-only: View service configuration without making changes.
Purge select: View configuration and issue purge requests for specific parts of a service.
Purge all: View configuration and issue purge requests for the entire service.
Full access: Full access to service configuration and management.
Configuring the Veza integration for JFrog Artifactory
JFrog Artifactory is a universal artifact repository manager for storing, organizing, and managing binary artifacts throughout the software development lifecycle. The Veza integration enables:
Discovery and analysis of users, groups, and their access permissions
Visibility into repository access controls and permission mappings
Project-level access management insights
Role-based access control (RBAC) assessment
Identification of admin privileges and effective permissions
Mapping repository permissions to canonical access types
Tracking shared repository access across projects
JFrog Artifactory instance (validated with Trial License 7.98.9 Rev 79809900)
Admin access to generate API tokens
Network connectivity between your Veza platform or Insight Point and your Artifactory instance
The integration currently supports only self-hosted Artifactory instances.
Log in to JFrog Artifactory as an administrator
Under "User Management," select "Access Tokens"
Click the "Generate Token" button
Fill out the following fields:
Token scope: Admin (token with admin permission)
Description: Brief description of the token's purpose
Expires time: Use "Never" or choose a shorter lifespan. The token will need to be regenerated when it expires.
Service: Choose which product the token should have access to (Artifactory)
Click the "Generate" button
Copy the full token for configuring the integration in Veza
Note: Only users with Admin privileges can generate Access Tokens.
See the official Artifactory API documentation for more details.
In Veza, go to the Integrations page
Click Add Integration and search for Artifactory
Click on it and click Next to add an integration
Configure the integration settings (see Configuration Fields below)
Click Create Integration to save the configuration
Hostname
The fully qualified hostname of your Artifactory instance, including the port number. This is the same URL you use to access the Artifactory web interface.
artifactory.company.com:443
Token
The authentication token generated from Artifactory. Must be an admin token or a token with sufficient permissions to read users, groups, permissions, and metadata.
eyJ2ZXIiOiIyIiwidH...
Gather User Details
When enabled, Veza will collect extended user attributes.
name
Name of the user
id
Unique identifier for the user
email
User's email address
last_login_at
Last login timestamp
admin
Boolean flag indicating admin status. True if user is admin, false by default
realm
String value representing the authentication realm for the user (e.g., internal, SAML, OAuth, LDAP, crowd, SCIM)
disable_ui_access
Boolean flag indicating whether the user has access to the UI
effective_admin
Boolean flag indicating whether the user has effective admin privileges
profile_updatable
Whether the user can update their profile
internal_password_disabled
Whether internal password authentication is disabled
status
Current user status (invited, enabled, disabled, locked)
Note: The attributes disable_ui_access
, effective_admin
, profile_updatable
, internal_password_disabled
, email
, and last_login_at
are only populated when Gather User Details is enabled for the integration.
name
Name of the group
id
Unique identifier for the group
auto_join
Boolean flag indicating if new users automatically join this group. False by default
admin_privileges
Boolean flag indicating if the group has admin privileges. False by default
realm
Authentication realm for the group (e.g., internal, SAML, LDAP, crowd, SCIM)
description
Descriptive text about the group's purpose
name
Name of the role
id
Unique identifier for the role
description
Descriptive text about the role's purpose
type
Classification of the role (PREDEFINED, CUSTOM, CUSTOM_GLOBAL and ADMIN)
name
Name of the repository
id
Unique identifier for the repository
description
Repository description.
type
Classification of repository type ("LOCAL", "REMOTE", or "DISTRIBUTION")
package_type
Artifact format type (e.g., Maven, npm, Docker) used for optimized storage, management, and handling of dependencies
repository_owner
The project key that owns the repository.
shared_with_all_projects
Boolean flag indicating if the repository is shared across all projects
shared_read_only
Boolean flag indicating if the repository is shared in read-only mode
name
Name of the project
id
Unique identifier for the project
manage_members
Boolean flag indicating if project has member management privileges
manage_resources
Boolean flag indicating if project has resource management privileges
index_resources
Boolean flag indicating if project has resource indexing privileges
soft_limit
Boolean flag indicating if project has soft limit privileges
DELETE
DataDelete, MetadataDelete
DEPLOY/CACHE
NonData
MANAGE
DataRead, MetadataRead, DataWrite, MetadataWrite, DataCreate, MetadataCreate, DataDelete, MetadataDelete
READ
DataRead, MetadataRead
SCAN
DataRead, MetadataRead
ANNOTATE
DataRead, MetadataRead, DataWrite, MetadataWrite
WRITE
DataWrite, MetadataWrite
READ_REPOSITORY
DataRead, MetadataRead
ANNOTATE_REPOSITORY
DataRead, MetadataRead, DataWrite, MetadataWrite
DEPLOY_CACHE_REPOSITORY
DataWrite, MetadataWrite
DELETE_OVERWRITE_REPOSITORY
DataDelete, MetadataDelete
MANAGE_XRAY_MD_REPOSITORY
DataRead, MetadataRead, DataWrite, MetadataWrite, DataCreate, MetadataCreate, DataDelete, MetadataDelete
Release Bundle Management
Permissions for managing release bundles including read, create, distribute, and delete operations
Build Management
Permissions for build operations including read, deploy, and delete capabilities
Pipeline Operations
Permissions for managing pipeline sources, integrations, and triggers
Security Controls
Permissions for managing security settings, policies, and watches
Member Management
Permissions for managing project membership and access control
Configuring the Veza integration for Okta.
Veza integrates with Okta to gather individual user metadata, applications, groups, and domains. After synchronizing with Okta, Veza shows the relationships connecting Okta identities and the external data sources and services they access (such as Snowflake databases, SQL tables, or AWS S3 buckets).
You can use Okta properties such as country
, department
, or login date to filter queries and define access reviewers for Okta users
If Veza does not detect an identity mapping from Okta to another integrated data source, you can define the relationships with custom identity mappings
If your organization uses custom attributes in addition to the standard properties collected by Veza, you can enable them on the Veza configuration screen.
Veza can establish a connection to Okta using OAuth 2.0 application credentials or user API keys. OAuth is recommended to provide greater control over application permissions, but you can use API keys for testing or non-production environments.
Log in to Okta to create a new app integration, generate keys, and assign scopes and roles:
The OAuth App requires a super admin or read-only admin role in your Okta organization. If you encounter a permissions error at step 5, the feature is not enabled. Go to Okta Settings > Features and enable the Assign admin roles to public client app option.
Go to Applications after logging into your Okta account. Record your Okta organization's URL, omitting https://
Create a new app:
Click on Create App Integration.
Choose API Services as the integration type.
Configure the Application:
Assign a descriptive name to your application.
In the app configuration section, edit the client credentials:
Copy the Client ID.
For Client Authentication, enable Public key/Private key.
In General Settings, ensure the option Require Demonstrating Proof of Possession (DPoP) is disabled.
Under Public Keys, add a key and copy the PEM value (starting with -----BEGIN PRIVATE KEY-----
). Save this key and copy the Key ID (KID
). Save your changes.
Convert the PEM private key to an RSA private key using OpenSSL: Run openssl rsa -in ~/okta_generated.key -out okta_updated.key -traditional
in your terminal.
Assign scopes: In the Okta API Scopes section, find and grant the application scopes:
okta.users.read
okta.groups.read
okta.apps.read
okta.roles.read
okta.logs.read
okta.userTypes.read
On the Admin Roles tab, click Edit Assignments > Add Assignment. Assign the Read-only Administrator role and save the changes.
(Optional) To gather and show metadata for Okta Admin Roles, the Veza app needs the Super Administrator role.
The application scopes granted above will restrict the integration to read-only capabilities. For a full visualization of access in Okta, Veza recommends granting a super admin role if possible.
Create a user for Veza and assign an administrator role:
Open Directory > People and click Add Person.
Enter user details for the profile (such as VezaIntegration
). Click Save.
Open Security > Administrators and click Add Administrator.
In the Grant Administrator Role To field, enter the name of the Veza user.
Pick Read-Only Administrator for the assigned role.
Save the changes.
Gathering metadata for Administrator Roles requires that the integration has Okta superuser permissions. To optionally do so you must assign the
super admin
role instead ofread-only admin
.
Get an access token for the Okta user
Sign in to your Okta domain with the read-only admin username and password.
Go to Security > API using the admin console menu. Open the Tokens tab.
Click Create Token.
Give it a name and click Create Token.
Save the token value, which will only appear once.
For more information, see Create an API Token in the Okta documentation.
Go to the Veza Integrations page to enable the Okta integration:
Click Integrations on the main navigation.
Click Add Integration > Okta*.
Enter your organization's Okta Domain to authenticate with.
Pick the Credential Type: API token or OAuth.
For OAuth authentication, enter your client ID and private key ID. Upload the RSA private key.
For API token authentication, enter the token generated for your Okta user.
Click Next to configure optional identity mappings. These mappings correlate Okta users with local accounts in other systems when Veza cannot automatically detect a connection.
Security Note: For enhanced security, you can store Okta credentials in an external secrets vault instead of directly in Veza. This keeps sensitive credentials in your private network. See Secrets Vaults for configuration details.
Click Next to specify any custom properties you want Veza to discover.
Click Create Integration to save the configuration.
To prevent large Okta environments from causing integration pipeline delays, Veza recommends enabling audit log extraction as described in the next section.
By default, Veza discovers all Okta domains and applications in the account. You can deselect the "Gather All Applications" option to only sync specific apps based on the allowlist settings.
Veza can parse Okta system logs to extract activity metadata. This enables two key capabilities:
Incremental Extraction for the Okta integration: Enabling audit logs allows updates to Authorization Graph metadata only for entities that have changed since the last snapshot. This reduces the time needed to gather users, groups, apps, and roles during each sync. Administrators should enable this feature post-Okta integration setup to improve extraction speed and minimize traffic to Okta API endpoints.
Support for Activity Monitoring, including generation of Over Provisioned Scores for Okta users.
To enable audit logs for an Okta integration:
Open the Integrations overview and locate the Okta integration.
Click Actions > Enable Audit Logs.
To disable activity monitoring and incremental extraction, toggle the option to Disable Audit Logs.
Your Okta organization might add additional user metadata with Custom Attributes. To include these custom properties during discovery, specify the Name and data Type of each property to collect.
For example, if your organization used a custom attribute to track employee region
, you can use this information for attribute filters by adding the custom property to the Okta integration configuration.
On Edit Integration > Custom Properties tab, click Add Custom Property.
Enter the variable name region
as the property name to collect.
Pick String
as the property type.
Save the configuration.
The specified attributes will appear on Authorization Graph entities the next time Veza connects to the Okta domain.
The supported types are:
String
Number
Boolean
RFC339 Timestamp
String List
Veza honors RFC339 timestamp formats, such as: 2006-01-02T15:04:05Z07:00
, 2006-01-02T15:04:05.999999999Z07:00
, 2006-01-02 15:04:05Z07:00
, 2006-01-02 15:04:05
, 2006-01-02
, 2006-01-02T
, 2006-01-02T15:04:05
, 2006-01-02T15:04:05Z
Time values in the format "18:47:12.019Z"
(that do not contain dates) are only supported in strings.
Veza can automatically detect relationships for Okta and AWS, Snowflake, and other providers. However, some connections to standalone data sources need to be explicitly mapped.
Administrators can disable default IdP User > Local User mapping by email when adding a custom mapping.
Administrators can configure up to four property matchers for custom identity mapping based on possible combinations of user name and email. If any matcher is valid, Veza connects the IdP and local identities.
When submitting authorization metadata for custom apps with the Open Authorization API, local users, groups, roles, and permissions are mapped to Okta identities by login email and group name.
Veza identifies Okta-AWS relationships based on the official AWS Account Federation app
Use Custom Identity Mappings to manually create a connection to another provider. For example, employees might be able to access a standalone SQL database with their Okta credentials:
Open the Okta provider configuration menu (Configuration > Identity Providers > Add or Edit)
Click Identity Mapping Configurations
Pick the Destination Datasource Type. The mapping will apply to all resources of the chosen provider (such as SQL Server).
Pick an optional transformation. By default, Veza will link identities based on email addresses (username@domain
). To match only the username, use Ignore Domain. You can also ignore special characters in local usernames.
Veza gathers metadata and creates searchable Authorization Graph entities to represent:
Okta Domains
Okta Groups
Okta Apps
Okta App Users (Application Roles)
Okta App Group Assignments
Okta Users
Okta Roles (Administrator Roles)
Configuring the Veza integration for MuleSoft Anypoint Platform
The MuleSoft integration enables organizations to monitor and manage access controls across their MuleSoft Anypoint Platform cloud environment. This integration provides visibility into user access patterns, role assignments, and team structures within MuleSoft.
The integration enables:
Discovery of MuleSoft organization user access and permissions, incluuding role assignments and team memberships
Tracking of administrative privileges, role group assignments, and and security configurations
Analysis of user activity, correlating Mulesoft users to external identities (Okta, Azure AD)
See notes and supported entities for more details.
To set up the integration, you'll need to create a Connected App in MuleSoft with appropriate permissions.
Administrator access to your MuleSoft Anypoint Platform organization
Permissions to create and manage Connected Apps
The following API scopes available for assignment:
Access Controls Viewer
View Organization
View Users in a particular organization
A Veza admin account with permissions to create integrations
Note: This integration currently supports Anypoint Platform cloud deployments. Self-hosted MuleSoft deployments are not supported.
Navigate to Access Management in your MuleSoft Anypoint Platform
Click Connected Apps in the navigation menu
In the Owned Apps section, click Create App
Complete the following fields:
Name: Enter a unique name for your integration
Type: Select "App acts on its own behalf (client credentials)"
Click Save to create the Connected App
Click "Add Scopes" and select the following required scopes:
Access Controls Viewer
View Organization
View Users in a particular organization
Save the scope configuration
Note down the Client ID and Client Secret for use in Veza configuration
See the MuleSoft Access Management documentation for more details.
In Veza, go to the Integrations page
Click Add Integration and search for MuleSoft. Click on the tile to add an integration
Enter the required information
Click Create Integration to save the configuration
Name
A friendly name to identify this integration
Client ID
Client ID from the MuleSoft Connected App
Client Secret
Client Secret from the MuleSoft Connected App
The organization entity represents your MuleSoft Anypoint Platform organization and its configuration.
org_id
Unique identifier for the organization
org_name
Display name of the organization
mfa_required
MFA requirement status for the organization
org_type
Type of organization
domain
Organization's domain
subscription_category
Subscription level category
subscription_type
Type of subscription
subscription_expiration
Expiration date of current subscription
subscription_justification
Justification for subscription type
created_at
Organization creation timestamp
updated_at
Last update timestamp
deleted_at
Deletion timestamp (if applicable)
Users represent individuals with access to the MuleSoft platform.
id
Unique identifier for the user
username
User's login name
name
Display name (combination of first and last name)
email
Email address
first_name
User's first name
last_name
User's last name
enabled
Whether the user account is active
created_at
Account creation timestamp
updated_at
Last update timestamp
last_login
Most recent login timestamp
mfa_verifiers_configured
Whether MFA verification is set up
mfa_verification_excluded
Whether user is excluded from MFA requirements
is_federated
Whether the user is managed by an identity provider
type
User type classification
password_updated_at
Last password change timestamp
Groups represent organizational structures within MuleSoft.
team_id
Unique identifier for the team
team_name
Display name of the team
team_type
Classification of team
created_at
Team creation timestamp
updated_at
Last update timestamp
Roles define sets of permissions that can be assigned to users and groups.
role_id
Unique identifier for the role
name
Display name of the role
description
Detailed description of the role's purpose
editable
Whether the role can be modified
created_at
Role creation timestamp
updated_at
Last update timestamp
The ownership of the Connected App used for integration automatically transfers to the root organization owner if the creating user:
Is deleted from the system
Is removed from the root organization
Loses administrative privileges
Organization administrators can modify Connected App ownership through Access Management > Connected Apps > Owned Apps.
Configuring the Veza integration for HiBob
The HiBob integration connects to your HiBob HR Information System (HRIS) platform to gather employee metadata and organizational structure information. As a primary source of workforce identity data, HiBob provides context for understanding user access patterns and supporting identity lifecycle decisions.
The integration enables:
Employee data synchronization for Lifecycle Management.
Visibility into HiBob structure and employee status.
Mapping HiBob accounts to external identities for query enrichment and access reviews.
Automated tracking of changes and reporting relationships.
This document includes steps to configure the integration, and details about the collected metadata.
A HiBob administrator account with permissions to create service users and permission groups
The required HiBob roles to grant API access scopes:
People's data > People permissions
Access to employee lifecycle data
Service user API credentials (ID and Token)
Create an API Service User, and retrieve the user ID and token for authentication:
In Bob, open Bob products > System settings.
Click Integrations.
From the All categories menu, choose Automation.
Click on Service users > Manage.
Click + New service user. Enter a display name and a description and click Next.
A popup will show the service user info. Copy the ID and Token and securely save them to configure the Veza integration.
Click Done.
See the help topic for complete instructions.
Create a service user permission group with the required permissions to read default employee fields:
In Bob, go to Bob products > System settings
Choose Account > Permission groups
Click Create permission group
Choose Service user. Give the group a name, description, and optional tags
In the Group members section, choose the Veza service user and click Apply.
Click Create, then Confirm.
The new permission group will have no permissions marked by default. Use the People's data tab to add the following scopes:
People's data > People > About > View selected employees' About sections.
People's data > People > Basic info > View selected employees' Basic info sections.
People's data > People > Work > View selected employees' Work sections.
People's data > People > Work contact details > View selected employees' Work contact details sections.
People > Lifecycle > View selected employees' lifecycle sections.
Under People's data > Access rights, choose employees these permissions apply to. By default, the permissions apply to all Employed
employees.
Click Save, then click Apply.
For more information, see .
In Veza, go to the Integrations page.
Click Add Integration and search for HiBob. Click on it and click Next to add an integration.
Enter the required information.
Click Create Integration to save the configuration.
The integration gathers employee metadata to support identity governance and Access Reviews, automated provisioning/de-provisioning, and access analysis.
id
- Unique identifier for the employee
employeeNumber
- Company-specific employee identifier
name
- Display name of the employee
firstName
- Employee's first name
lastName
- Employee's surname
canonicalName
- Full name in standard format
displayFullName
- Full name as displayed in the system
email
- Employee's email address
isActive
- Boolean indicating if the employee is currently active
employmentStatus
- Status of employment (e.g., "ACTIVE", "WITHDRAWN")
jobTitle
- Employee's current job title
employmentTypes
- List of employment type classifications
workLocation
- Physical work location/site
startDate
- Employment start date
terminationDate
- Employment end date (if applicable)
department
- Department reference containing department ID
company
- Company identifier
supervisor
- Reference to the employee's manager (if applicable)
is_manager
- Boolean indicating if the employee has managerial status
Early Access: This integration is provided as an Open Authorization API (OAA) connector package. Contact our support team for more information.
The Veza connector for Bullhorn enables users to import Bullhorn User entitlements into Veza. Users are imported along with the entitlements summary to show the Bullhorn User Type for each user and the permissions that the user type is entitled to.
The Bullhorn connector uses the OAA Custom Application model. The following table shows how Veza Custom Application entities correspond to Bullhorn entities.
The following entity properties are imported:
Bullhorn does not currently provide the necessary API endpoints to extract the authorization information programmatically. Identity and authorization information is imported through CSV data that can be collected from Bullhorn.
The importer takes in a parameter --name
, this name will appear in the name of the Application entity in Veza as Bullhorn - {name}
and will be used for the Veza data source name. The name must remain consistent for subsequent imports. After the initial run, if --name
does not match a previously used name the importer will stop. To create new instances run with --create
once to create the new data source.
Export the User list from Bullhorn and convert to CSV file. The exported data should include the following required headers. Additional columns are ignored:
Request an export of the User Type entitlements from Bullhorn support. The provided data should be converted to CSV if not already in CSV format. Expected format is Entitlements as rows and User Types as columns with Type
and Entitlement
columns.
Generate a Veza user API key by navigating to Administration -> API Keys. Choose Add New. Give the key a name and copy the token, which will only be shown once.
Install the requirements:
Set the secrets:
Run the connector:
This integration is provided as an Open Authorization API (OAA) connector package. Contact our support team for more information.
Veza Connector for NewRelic. Enables discover of NewRelic Users along with Organizations, Groups and their Roles.
Follow the instructions to generate API Key (User key, used for querying and configuration) A user key is required to use NerdGraph, which is used for querying data and configuring features. Each user key is tied to a specific user.
Note the API key is need to run the Integration.
Generate an API key for your Veza user. API keys can be managed in the Veza interface under Administration -> API Keys. For detailed instructions consult the Veza User Guide.
Install the requirements:
Set the Secrets:
Run the connector:
Instance
Application
User
Local User
User Type
Local Role
Entitlement
Permission
User
primary id
User's login
User
is_active
Boolean if User is active
User
email
Primary email configured for user
User
additional_emails
List of any additional emails configured
User
user_id
Bullhorn unique user ID
User
master_user_id
Bullhorn master user ID
User
title
User's title configured in Bullhorn
User
primary_department
User's primary department
User
additional_departments
List of any additional departments
User
user_type
String of User's type
Master UserID,UserID,Login Name,First Name,Last Name,Email,Additional Email Addresses,Title,Enabled?,UserType,Primary Department,Additional Departments
pip3 install -r requirements.txt
export VEZA_API_KEY="ZXldTcj...JCWGU3Qlo1OHR3RTBfc00yN3lfSFk="
./oaa_bullhorn.py --veza-url https://<your-org>.vezacloud.com --users <user_export.csv> --entitlements <entitlements_export.csv> --name "Prod"
--veza-url
VEZA_URL
URL of Veza system
VEZA_API_KEY
API key for Veza connection
-u
/--users
Path to user list export CSV file
-e/``--entitlements
Path to user type entitlements export CSV file
-n
/--name
Name of Bullhorn instance for managing multiple instances
--create
Create new datasource for name
if doesn't already exist
--debug
Enable verbose debug output
--save-json
Save OAA Payload as local JSON file before upload
Insight Point
Choose whether to use the default data plane or a deployed Insight Point.
Name
A friendly name to identify the unique integration.
Service User ID
Service user for API authentication.
Service User Token
Authentication token for the service user.
Sandbox
Toggle if connecting to a sandbox environment.
IdP Types
Comma-separated list of IdP types for identity mapping, e.g. (okta,azure_ad,custom,google_workspace,one_login).
Provisioning Source
Toggle to enable HiBob as a source of identity for Lifecycle Management.
NewRelic.com
Application
Users
Local User
Organizations
Custom Resources
Groups
Local Group
Roles
Local Role
User
id
User's ID provided by NewRelic
User
name
User's name
User
user_type
User's member type. It can be either Full platform or Basic
User
email
User's email address.
User
last_login_at
User's last active timestamp
Organization
id
Organization's ID provided by NewRelic
Organization
name
Name of the Organization.
Organization
customer_id
Customer Id of the Organization.
Role
id
Id of the Role.
Role
display_name
Display Name of the Role.
Role
name
Name of the Role.
Role
scope
Scope of the Role. Scope can be account
or organization
Role
type
Type of the Role. Example: Role::V2::Standard
Group
id
Id of the Group.
Group
name
Display Name of the Group.
pip3 install -r requirements.txt
export VEZA_API_KEY="ZXldTcj...JCWGU3Qlo1OHR3RTBfc00yN3lfSFk="
export NEW_RELIC_KEY="6ed173a951f433d7c71214XXXXXXX"
./veza_newrelic.py --veza-url https://<your-org>.vezacloud.com
--veza-url
VEZA_URL
URL of Veza system
VEZA_API_KEY
API key for Veza connection
NEW_RELIC_KEY
New Relic API Key
--debug
Enable verbose debug output
--save-json
Save OAA Payload as local JSON file before upload
Configuring the Veza integration for Privacera
The Veza integration for Privacera provides visibility into your Privacera environment, including users, groups, roles, resource policies, and their associated permissions.
This integration uses the Privacera Cloud API to collect identity and authorization data. You will need to create an integration user and generate an API key for the user.
Required API Permissions:
Read user profiles (GetUserProfile
)
List users (GetUsers
)
List groups (GetGroups
)
List roles (GetRoles
)
List resource policies (GetResourcePolicies
)
Sign in to Privacera Cloud using your account ID or alias.
From Access Management > Users/Groups/Roles create a new user with sufficient permissions to access the required APIs. Note the username and password for the user.
Go to Settings > API Keys to generate a new API Key. Save the API key value securely after generation as it cannot be viewed again in the Privacera UI.
Note your Privacera Account ID. This value appears at the top right of the Privacera UI. It must be a 14-digit numerical identifier, not an account alias.
To enable the Privacera integration in Veza you will need the following:
In Veza, open the Integrations page.
Click Add New and select Privacera as the type of integration to add
Enter the required information and Save the configuration
Required Configuration Fields:
Username
The username for authenticating with Privacera
Password
The password for authenticating with Privacera
API Key
API key for accessing Privacera services
Account ID
The Privacera account identifier
URL
(Optional) The Privacera API endpoint (Defaults to "https://api.privaceracloud.com/api/" if not specified)
CA Certificate
(Optional) Custom CA certificate for API communication (only if using a custom endpoint with private CA)
The URL
field is optional. If not provided, the integration will use the default Privacera Cloud API endpoint.
If a custom URL
is provided and requires a CA Certificate, both must be provided together.
The integration uses both basic authentication (username/password) and API key authentication.
Extraction issues such as unknown roles or unmapped users will result in a warning message (max 10 warnings)
The integration currently supports the following Privacera entities and attributes:
The root entity representing your Privacera environment. Contains users, groups, roles, and resource policies.
account_id
The unique identifier for your Privacera account
An individual account within the Privacera platform. Users can be members of groups, have roles assigned directly, and can be granted or denied permissions through resource policies.
name
The display name of the user
email
Used for connecting user to external IdP in Veza if available
description
Brief description or purpose of the user account
is_active
Indicates if the user account is currently active
is_visible
Determines if the user profile is visible to other users
created_at
Timestamp of when the user account was created
updated_at
Timestamp of the last update to the user account
role_list
List of roles assigned to the user
identity_type
Identifies if the user is human or non-human
A collection of Privacera Users. Groups can have roles assigned and can be granted or denied permissions through resource policies.
name
The display name of the group
description
Brief description or purpose of the group
created_at
Timestamp of when the group was created
updated_at
Timestamp of the last update to the group
is_visible
Determines if the group is visible to other users
group_type
The type classification of the group
group_source
Indicates where the group originated from
A set of permissions and access rights that can be assigned to users and groups. Roles can be nested within other roles and can be granted or denied permissions through resource policies.
name
The display name of the role
description
Brief description or purpose of the role
is_enabled
Indicates if the role is currently active and assignable
is_system_role
Identifies if this is a built-in Privacera role
created_at
Timestamp of when the role was created
updated_at
Timestamp of the last update to the role
Defines access control rules for resources. Policies can grant or deny permissions to users, groups, and roles.
name
The display name of the policy
description
Brief description of the policy's purpose
service_type
The type of service this policy applies to
service
The specific service instance this policy applies to
policy_priority
The priority level of this policy
zone_name
The security zone this policy applies to
policy_labels
Tags or labels associated with the policy
is_enabled
Indicates if the policy is currently active
version
The version number of the policy
Defines the specific resources that a policy applies to within a service. For Hive services, this captures the hierarchical relationship between databases, tables, and columns.
name
The display name of the resource definition
service_type
The type of service these resources belong to (e.g., "hive")
resource_type_hierarchy
Hierarchical path of resource types (e.g., "database.table.column")
Supported Resource Hierarchies
The integration currently supports the following resource type hierarchies:
Hive Resources:
Database → Table → Column
Database → UDF (User Defined Function)
Global
Service
URL
For Hive resources, the policy resource definition maps the relationships between:
Databases and their tables
Tables and their columns
Databases and their UDFs
The resource hierarchy is used to determine the scope of permissions. For example, permissions granted at the database level cascade down to all tables within that database, unless explicitly overridden by a more specific policy.
Represents permissions granted to users, groups, or roles through a resource policy.
permissions
List of permissions being granted
Represents permissions explicitly denied to users, groups, or roles through a resource policy.
permissions
List of permissions being denied
Privacera permissions are mapped to effective permissions for consistent authorization visualization across systems:
all
All Permissions
alter
Metadata Read & Write
create
Metadata Create
data_admin
All Permissions
drop
Data Delete & Metadata Delete
index
Metadata Create, Read, Write & Delete
lock
Non-Data
read
Data Read
refresh
Non-Data
repladmin
Data Read & Metadata Read
select
Data Read
serviceadmin
Metadata Read & Non-Data
tempudfadmin
Metadata Read & Create Data
update
Data Write
write
Data Write
Note: These mappings are specific to Hive resources and are based on Apache Ranger's Hive Commands to Permission Mapping.*
Supported entity types and more information about the Veza-Google connector.
Veza integrates with Google to parse service and resource metadata using native workspace and project APIs, using a service account with read-only permissions.
Veza creates entities in the data catalog to represent the discovered projects, services, resources, and identities.
The identities, resources, and authorization relationships that Veza discovers are limited by the service account role, the project APIs you have enabled, and any limits set on data source extraction.
Veza discovers authorization relationships for federated Azure AD and Okta users with permissions on Google Cloud Platform resources. These correlations are made based on user and and groups assignment to the Google Cloud and Google Cloud SSO Okta Apps and AzureAD Enterprise Applications.
For Okta domains configured to sync to Google Workspace, entities are mapped based on user email address or group name.
For Azure RBAC users, mapping can use email address, name, or service principal. Groups are mapped by name.
Google Domains
Google Workspace Account
Google Role
Google Groups
Google Users
Organization
Project
Folder
Service Account
For projects with the Cloud Storage API enabled:
Storage Service
Storage Bucket
For projects with the Compute Engine API enabled:
Compute Service
Subnet
VPC
Virtual Machine
Network Interface
For projects with the KMS API enabled:
KMS Service
KMS Key Ring
KMS Key
For projects with the BigQuery API enabled:
BigQuery Service
BigQuery Dataset
BigQuery Table
Google Cloud Run Service
parent_id
: ID of the parent project, e.g. projects/696313754797
google_cloud_organization_name
: Organization name, e.g. organizations/475292842812
Google Cloud Run Service Instance
parent_id
: ID of the parent project, e.g. projects/696313754797
google_cloud_organization_name
: Organization name, e.g. organizations/475292842812
allows_unauthenticated_invocation
: Boolean indicating if the service allows unauthenticated invocation ( )
created_at
: Creation time, e.g. 2023-10-11T07:03:04.067573Z
Google Cloud Run Policy
Google Cloud Run Role Binding
Veza automatically discovers the following Kubernetes entities and attributes. To discover cluster-level permissions, use the dedicated Kubernetes integration.
Google Kubernetes Engine Service
parent_id
: ID of the parent project, e.g. projects/696313754797
google_cloud_organization_name
: Organization name, e.g. organizations/475292842812
Google Kubernetes Engine Cluster
parent_id
: ID of the parent project, e.g. projects/696313754797
google_cloud_organization_name
: Organization name, e.g. organizations/475292842812
master_global_access_enabled
: Boolean indicating whether the GKE API endpoint is globally accessible
created_at
: Creation time, e.g. 2023-10-11T07:03:04.067573Z
Google Kubernetes Engine Policy
Google Kubernetes Engine Role Binding
Veza discovers the following entities and attributes when provided optional integration permissions:
Google Cloud SQL Service
parent_id
: ID of the parent project, such as projects/696313754797
google_cloud_organization_name
: Organization name, such as organizations/475292842812
Google Cloud SQL Database Instance
parent_id
: ID of the parent project, such as projects/696313754797
google_cloud_organization_name
: Organization name, such as organizations/475292842812
created_at
: Creation time, such as 2023-10-11T07:03:04.067573Z
Google Cloud SQL Database
parent_id
: ID of the parent database instance, such as google_sql_cloud::project:project1::instance:databaseInstance1
google_cloud_organization_name
: Organization name, such as organizations/475292842812
Google Cloud SQL User
parent_id
: ID of the parent database instance, such as google_sql_cloud::project:project1::instance:databaseInstance1
google_cloud_organization_name
: Organization name, such as organizations/475292842812
user_type
(optional): User type can be CLOUD_IAM_USER
or CLOUD_IAM_SERVICE_ACCOUNT
Google Cloud IAM Effective Permission
Effective Permissions represents the C/R/U/D data and non-data actions a principal can take on a resource. Using Search, specify an EP to show only users who can take those actions. Click Explain Effective Permissions on an un-grouped EP node to show the native actions it represents.
Configuring the Veza integration for Microsoft Active Directory.
Veza discovers Active Directory entities and authorization by connecting as a read-only user with an LDAP certificate. To enable a secure connection to the AD Domain Controller, the integration is typically configured to use an Insight Point deployed within your cloud environment.
See Notes and Supported Entities for more detail on how Veza converts AD User properties for use in search filters or to refine Access Review queries.
To configure a new Active Directory integration, you will need the following:
Either of the following:
IP address of an AD Domain Controller (preferably the domain controller with the PDC emulator FSMO role)
FQDN of a domain controller or load balancer for environments using DNS resolution
Username and password for Active Directory user with Read Only access to the Domain
The FQDN of the AD DS Domain
LDAPS Enabled on the Domain Controller and the Root or Leaf Certification securing LDAPS on the AD DC
An Insight Point with:
Network connectivity to the AD Domain Controller (TCP 636)
DNS resolution capability when using domain controller FQDNs instead of IP addresses
If using a load balancer for your domain controllers:
Configure session persistence (sticky sessions) on the load balancer
Ensure all domain controllers behind the load balancer trust the same root Certificate Authority (CA) that issued the LDAPS certificates
The LDAPS certificate must include the load balancer's FQDN in the Subject Alternative Name (SAN) field
If LDAPS is enabled for Active Directory, Veza requires the public certificate in base64 format (.CER Base-64) to validate the LDAPS connection.
From the Domain Controller, open a new MMC console (Run -> mmc.exe)
Add the Snap-in Certificate (Local Computer)
Open the Personal/Certificates folder
Locate the certificate. The Issued To column shows the FQDN of the domain controller
Right-click the certificate and select All Tasks/Export
Select No, do not export the private key
Select Base-64 encoded X.509 (.CER) format
Specify a file name and location to save the certificate
Complete the export wizard
To test the LDAPS connectivity locally before submitting the certificate to Veza:
Open LDP.exe on the Domain Controller
Click the Connection menu and choose Connect...
Type the Domain Controller FQDN and Port Number as 636 and click OK
You should see "Established connection to [Domain Controller]" and the Base DN details
You can also retrieve the certificate using Python:
import ssl
host = "addc1.domain.local"
cert = ssl.get_server_certificate((host, 636))
path = f"{host.replace('.', '_')}.cert"
with open(path, "w", encoding="utf8") as file:
file.write(cert)
To retrieve an LDAPS certificate using openssl
:
openssl s_client -showcerts -connect addc.domain.local:636
If LDAPS was not already enabled, follow the steps below to generate a new certificate that includes a Subject Alternative Name (SAN). To get a new certificate with certreq.exe:
Please only follow these instructions if you do not already have LDAPS enabled on your AD DC.
Prepare the request.inf
configuration file (see example below)
Generate cert request from the .inf file:
certreq -new request.inf request.req
Submit the request to a CA (output is RequestID).
certreq -submit request.req certnew.cer
You might need to specify a Certificate Template as part of the submit command, for example:
certreq -submit -attrib "certificatetemplate:webserver" request.req
Use the Request ID number to retrieve the certificate:
certreq -retrieve RequestID certnew.cer
Accept the issued certificate:
certreq -accept certnew.cer
The certificate must use the SAN, as shown in the [Extensions]
block in the example configuration:
[Version]
Signature="$Windows NT$"
[NewRequest]
Subject = "CN=corp-ad-01.corp.veza.com"
KeySpec = 1
KeyLength = 1024
; Can be 1024, 2048, 4096, 8192, or 16384.
; Larger key sizes are more secure, but have
; a greater impact on performance.
Exportable = TRUE
MachineKeySet = TRUE
SMIME = False
PrivateKeyArchive = FALSE
UserProtected = FALSE
UseExistingKeySet = FALSE
ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
ProviderType = 12
RequestType = PKCS10
KeyUsage = 0xa0
[EnhancedKeyUsageExtension]
OID=1.3.6.1.5.5.7.3.1 ; Server Authentication
[Extensions]
2.5.29.17 = "{text}"
_continue_ = "dns=corp-ad-01.corp.veza.com"
For more information see the Microsoft documentation to add a subject alternative name to a secure LDAP certificate.
Veza supports authenticating to the Active Directory LDAP server via simple LDAP bind or with Kerberos authentication.
If Kerberos authentication is selected, Veza will generate a simple Kerberos configuration file (krb5.conf
) with the following format:
[libdefaults]
default_realm = <domain>
dns_lookup_kdc = true
dns_lookup_realm = true
[realms]
<domain> = {
kdc = <AD domain fully qualified domain name for cert>
admin_server = <AD domain fully qualified domain name for cert>
}
The integration will request a Ticket Granting Ticket (TGT) and Service Ticket from the hostname provided in the integration configuration before authenticating to the LDAP server with Kerberos password authentication.
In Veza, browse to the Integrations page. Click Add Integration and search for Active Directory. Click on the tile to add an integration.
Insight Point
Use the default selection unless using an for the connection
Name
Name to use for the AD connection in Veza
Host
Either: (1) IP address/FQDN of a single domain controller, or (2) FQDN of a load balancer that distributes traffic across multiple domain controllers
Port
Port serving LDAPS (Default 636)
Username
Active Directory user to bind to the LDAP Connection (Recommended to use the UserPrincipalName)
Password
Password for the Active Directory user
Domains
The FQDN of the AD Domain (Only 1 can be listed)
AD domain fully qualified domain name for cert
Subject Name on the LDAPS Leaf Certificate, should be the AD DC or load balancer FQDN
LDAP Certificate
SSL/TLS certificate used to establish the LDAP connection
Enable Kerberos Authentication
Check this box to use Kerberos authentication when connecting to the Domain Controller
Extract Disabled Users
Uncheck this box to exclude disabled users from metadata extraction
Kerberos SPN
Enable Kerberos authentication and provide a value to set a ServicePrincipalName for the Kerberos connection (Default ldap/<dc_hostname>
)
Security Note: For enhanced security, you can store Active Directory credentials in an external secrets vault instead of directly in Veza. This keeps sensitive credentials in your private network. See Secrets Vaults for configuration details.
To connect to multiple AD domains, you will need add a new integration for each domain to discover
LDAP Certificate
and Password
are secret, and will need to be re-entered if changing the Insight Point used for the AD integration
You can see all extracted AD entities under Data Catalog > Entities. Veza-built queries for Active Directory can be found in Reports and on the Saved Queries page
Active Directory Domain
Active Directory Computer
Active Directory Group
Active Directory User
Active Directory Organizational Unit
Active Directory Managed Service Account
Veza discovers built-in attributes for Active Directory Users, which can be used to specify the scope of Access Reviews and filter search results. In some cases, Veza derives values from other properties, or changes AD property names for consistency with other integrations.
To discover custom properties created in Active Directory, specify them by name and type in the Custom Properties section when configuring the integration
To discover additional built-in properties, please contact our support team with more detail about your case
Account Name
sAMAccountName
Account Type
objectClass (User Object)
Active Directory Domain
userPrincipalName (domain part)
City
l (City)
Common Name
cn (Common Name)
Company
company
Country Code
c (country/region)
Country Or Region
countryCode
Created At
whenCreated
Department
department
Description
description
Display Name
displayName
Distinguished Name
distinguishedName
Domain Admin
memberOf (Domain Admins group)
First Name
givenName
Given Name
givenName
Idp Unique Id
userPrincipalName
Is Active
userAccountControl (Active flag)
Is Locked
userAccountControl (Locked flag)
Job Title
title
Last Name
sn (Surname)
Lower Email
(Derived from mail attribute)
Manager
manager
Manager Principal Name
(Derived from manager attribute)
Office
physicalDeliveryOfficeName
Password Last Set
pwdLastSet
Physical Delivery Office Name
physicalDeliveryOfficeName
Postal Code
postalCode
Primary Group Id
primaryGroupID
Sid
objectSid
State Or Province Name
st (State)
Street Address
streetAddress
Sur Name
sn (Surname)
Title
title
User Principal Name
userPrincipalName
User Password Expiration
(Derived from pwdLastSet and domain policy)
Full Admin
True when a given User is a member of either the Administrators or Domain Admins group
Integrate new AWS accounts in an organization using Landing Zones.
AWS Control Tower allows organizations to easily deploy AWS accounts into an organization, ensure that those accounts adhere to existing security policies, and create a baseline set of standard resources in each account.
Veza integrates with AWS Control Tower to automatically register accounts added to an AWS Control Tower Landing Zone. When an AWS account is provisioned within the OU, the provided CloudFormation template will create the required IAM resources in the AWS account, and create a new Veza integration.
Veza’s AWS Control Tower integration is delivered as an AWS CloudFormation template that can be installed in an organization’s Control Tower root account. The integration consists of three main infrastructure components:
An AWS Lambda function that runs in the Control Tower root account
This Lambda function executes when accounts are created or updated in the Control Tower Landing Zone (either by Service Catalog or Account Factory)
The function interacts with Veza APIs to ensure that the child account is registered as a Cloud Provider in the organization’s Veza instance
An IAM Role and Policy for the Control Tower root account to enable the Lambda function to execute and to read account update events in CloudWatch
An IAM Role and Policy for the child account to allow Veza to assume an IAM Role with read-only access and discover the resources inside the account
The Veza-provided cloud formation script runs on account enrollment and account update. Any existing AWS accounts will need to be re-enrolled to trigger the script in the parent account and integrate the child accounts with Veza.
Before deploying the Veza AWS Control Tower integration, two pieces of data are required from the Veza instance.
Make note of the URL used to connect to the Veza (ex: https://example.cookiecloud.ai
)
Generate an API key for use by the Control Tower root account
The following steps should be completed in the AWS Control Tower root account by an administrator IAM user:
Log into the AWS console, click Services, then search for and select CloudFormation.
In the left navigation bar, click Stacks.
In the right corner of the main pane, click Create Stack, then select With new resources (standard) from the dropdown menu.
In Step 1: Specify Template form, enter https://veza-controltower.s3.us-east-2.amazonaws.com/veza.yaml
as the Amazon S3 URL.
In Step 2: Specify Stack Details, provide the following details:
Stack Name: enter a display name for the CloudFormation Stack.
VezaApiToken: paste in the API key generated for the Veza instance.
VezaApplicationUrl: paste in the URL of the Veza instance copied above.
VezaDiscoveryAccountId: leave the default value unless otherwise instructed.
VezaExternalId: this is the externalId
that Veza will provide when attempting to assume the IAM Role in the child account. It can be set to any value.
VezaManagedAccountTemplateUrl: use the default value unless hosting the CloudFormation templates in a non-Veza S3 bucket.
VezaRDSUser: this is the user account that will be used to discover RDS resources.
For Step 3: Configure Stack Options form, accept the default values, and click Next.
In Step 4: Review, review the entered parameters, scroll to the bottom of the form and accept the IAM Role disclaimer, then click Create Stack.
Once the CloudFormation Stack is provisioned, the integration is enabled.
To see the integration in action, create an AWS account inside the Control Tower Landing Zone
Log into the AWS console, click Services, then search for and select Control Tower.
In the left navigation bar, click Account Factory.
In the right corner of the main pane, click Enroll Account.
Complete the Enroll Account form with the following details:
An email account for the root account user.
A display name for the account.
SSO details for the account user.
Select a parent Organizational Unit where the account will be provisioned.
Click Enroll Account.
The account creation and enrollment process can take up to 30 minutes. Once finished, the account will show Enrolled in the Control Tower Accounts view.
Once the account shows as Enrolled, it will also be automatically integrated with the Veza instance referenced in the CloudFormation setup.
Any currently-enrolled AWS accounts must be re-enrolled to trigger the script and integrate them with Veza. To remove an account from management so that it can be re-enrolled with Control Tower:
Open the AWS Service Catalog.
Open the Provisioned products list.
Choose the account to remove from AWS Control Tower management.
Choose Terminate from the Actions menu and confirm the decision.
When successful, the account status will change to Not Enrolled.
For more information see Unmanage an account in the AWS documentation.
Veza CloudFormation scripts are hosted on AWS S3. You can either use the defaults provided below or host your own modified versions.
If using a customized template, you should update the Amazon S3 URL when creating the CloudFormation stack, and set an appropriate VezaManagedAccountTemplateUrl
when specifying the stack details.
Environment
Root account YAML URL
Managed Account YAML URL
Production
Common patterns for importing identity and permissions metadata from CSV files
This document provides practical examples for mapping data from CSV files into Veza using the integration.
You can use the CSV integration to flexibly model user, group, and role relationships based on data exported from the source application. This document includes examples from basic user data import to modeling more complex organizational structures, which you can adapt based on your needs.
When importing CSV data into Veza, you are typically establishing one or more of these key components:
Entities: Users, groups, and roles that exist in your application
Attributes: Properties that describe each entity (e.g., name
, email
, status
)
Relationships: Connections between entities (user belongs to group, user has role)
Permissions: Actions that roles allow users to perform
The examples below demonstrate different approaches to mapping these components from CSV data into Veza's Authorization Graph.
For a simple file containing user records, one user per row with a list or groups and roles. You can map columns directly:
Example CSV:
Your CSV files may have column names that differ from Veza's standard attribute names.
The CSV integration supports two methods for assigning users to groups and roles:
Use a single column containing comma-separated values to assign a user to multiple groups or roles at once.
Column mapping:
Example CSV:
Key points about list columns:
Values must be comma-separated
Enclose lists in quotes if they contain commas
Whitespace around values is automatically trimmed
Empty values are ignored
Veza automatically creates any groups or roles that don't already exist
Additional properties on Groups and Roles is not supported
You can incrementally assign roles or groups using multiple rows with the same user id
. This approach is useful when:
You have many groups or roles per user
Your source system exports data in this format
You need to include additional details for roles or groups such as custom properties
Example CSV:
Key points about multiple row assignments:
The first occurrence of an entity id
sets all properties for that entity. If the same user or role is listed more than once, the user or role attributes are not updated for rows after the first.
Subsequent rows only process new group and role assignments
The CSV can include a column with a list of permissions for each role. This enables searching and filtering by permission in Veza:
You can assign permissions to roles and then users to roles:
Note: If permissions column is not defined any Roles are automatically assigned the
Member
permission
This example shows how to represent a complex organizational structure with departments, teams, roles with permissions, and user assignments:
Column mapping for this example:
This example CSV will create:
7 user entities with their properties
Department groups (Engineering, Product, Marketing, Finance, HR, Sales)
Team groups (Backend, Architecture, Frontend, Product Management, UX Research, Content, Social, Accounting, Recruiting, Enterprise Sales)
Multiple role assignments per user
Role permission assignments for different functional areas
The CSV integration supports various timestamp formats:
Timestamps are considered unset when the value is never
, null
, none
, false
, or 0
. Invalid timestamps will result in a processing error.
When mapping to boolean attributes like is_active
:
TRUE values: true
, t
, yes
, y
, 1
, active
, enabled
FALSE values: Any other value including false
, f
, no
, n
, 0
, inactive
, disabled
Any column can be mapped to a custom property for any entity type. When mapping to a custom property:
Select Custom Property
as the attribute
Enter a name for the custom property
Select the data type (String
, Number
, Boolean
, Timestamp
, or String List
)
Configuring the Veza integration for GitHub
The GitHub Enterprise integration enables Veza to authenticate with organizations and discover users, repositories, teams, and other , along with searchable metadata (attributes) for these entities. Veza will also map external corporate identities (such as Azure AD Users) to granular GitHub Roles and Permissions.
After configuring the integration you can use Workflows and Search to review access to public and private GitHub repositories within your organization. Built-in Saved Queries for GitHub are available for customization and use in .
This integration supports self-managed and cloud-hosted GitHub environments, including:
GitHub Cloud (e.g. Organizations on github.com)
GitHub Enterprise Cloud
GitHub Enterprise Server
For self-managed GitHub deployments, you should use an to enable the connection, or allow traffic from Veza's .
To authenticate with GitHub, you will need to create a Github App granting Veza access your organization to gather the necessary information. See the instructions for:
for Veza, and install it into the GitHub organizations to discover.
with the GitHub App's credentials.
To integrate with several organizations with a single GitHub App and Veza integration configuration, you can:
Create the GitHub app.
Set it to Public.
Install the app into each GitHub organizations to discover.
For more details, see the GitHub documentation and .
To create and register the application within an organization you administer, open GitHub Settings > Organizations. Click Settings next to the name of the organization containing the members, repositories, and permissions to extract.
If you are not an org admin, you can create the app under your personal Developer Settings > GitHub Apps > Add New. Pick Any Account when choosing where to install the app. You will need to Request installation to any organization you are a member of, which an administrator must approve.
On the Organization's settings page, click Developer Settings > GitHub Apps > Add New
Fill out the following fields:
GitHub App name must be unique (e.g. YourOrg-Veza-Integration-01
)
Homepage URL is not used but required by GitHub. Enter an address such as the URL of your Veza instance (e.g. https://yourorg.vezacloud.com
)
All other fields are optional
Assign the required permissions to the application. Add the following Read-Only
permissions:
Repository permissions - Administration
Repository permissions - Metadata
Repository permissions - Repository security advisories
Organization permissions - Custom repository roles
Support for Custom Repository Roles is only available for Github Enterprise Cloud environments.
Organization permissions - Members
Organization permissions - Administration
Organization permissions - Personal Access Tokens
Enter Only on this account for Where can this app be installed?, or enable the app for other accounts by making it Public.
Click Create GitHub App to open the app settings page
Note the “App ID” towards the top of the screen. Click Generate a private key to download the base64-encoded .pem key file.
Finally, install the App into the Organization(s) you want to discover:
Open the app settings page (Settings > Developer settings > GitHub Apps > your-application
)
Click Install next to the organization name
Unless you want to exclude specific resources, pick All Repositories
Click Install and approve the permissions
Github only publishes user emails that belong to a verified or approved domain for the tenant organization. This intentional behavior allows personal accounts to serve as individual developer portfolios that are portable across companies. To filter users by email or configure identity mappings, you will need to ensure that users in your organization have addresses that match a verified/approved domain.
An organization owner must configure verified/approved domains for GitHub. If such a domain already exists, you should request that all users add an email address belonging to the domain. For more information see the
To add a GitHub integration, use the navigation bar to open the Integrations page. Click Add New Integration and enter the required information using the App Key and ID from the earlier steps.
The Enterprise cloud slug
is optional. When provided, the ID is used to correlate external identities with GitHub users.
Leave Server URL
empty when connecting to GitHub cloud.
Veza uses the app credentials for the initial connection. Future requests use an access token, which the connector will generate at runtime.
After enabling the integration and connecting to GitHub, Veza will discover entities and attributes for:
GitHub Organizations
GitHub Personal Accounts
GitHub Personal Access Tokens
GitHub Teams
GitHub Roles
GitHub Apps
GitHub Repositories
Cross-Service Connections: Veza automatically detects relationships between Okta and Azure AD identities and GitHub user accounts. If your organization implements Single-Sign On (SSO) for another Identity Provider (IdP), you can add to correlate GitHub Personal Accounts with identities from any integrated IdP.
Use the to review all entities Veza has discovered.
Veza uses some common properties for all GitHub entities:
Organizations are shared accounts where teams of users can work together on public and private projects.
A personal account (GitHub User) can be a member of the organization or an "outside collaborator" (who has some permissions on repositories, but is not an org member).
You can explain effective permissions to show the grouped role permissions assigned to the user.
A Personal Access Token (PAT) is a credential used to authenticate GitHub API requests. It can be either a classic token or a fine-grained token with specific permissions.
Token can be connected to a Github Personal Access Token Permission node representing the effective permissions on GitHub resources.
Teams represent groups of users. Assigning GitHub Personal Accounts to teams grants the users permissions on the team's repositories.
Possible roles on repositories are: admin, maintain, push, triage, pull.
Apps on GitHub (Non-human service accounts) enable automation, workflows, and integrations for a user or organization. GitHub App permissions are not assigned with roles, but are individually granted, for example "administration":"read"
,"emails":"read"
,"metadata":"read"
,"members":"read"
,"organization_administration":"read"
.
These roles grant a set of repository permissions to teams or individual users. Roles can also apply to an organization or team.
Configuring the Veza integration for MongoDB and MongoDB Atlas
The Veza integration for MongoDB supports on-premise deployments and the MongoDB Atlas Database-as-a-service (DBaaS) platform. It enables discovery of standalone MongoDB clusters, MongoDB Atlas user permissions, and User permissions on MongoDB databases deployed in Atlas. After configuring the integration, you can use Veza Search, Workflows, and Insights to:
Show all Database Users, and the built-in or custom Database Roles a User has for each Database
Show the effective permissions Database Users have on the Databases and Clusters they have access to.
Show the effective permissions Users have on Clusters, Serverless Instances, and Global Clusters.
Show the Atlas Organizations and Projects accessible by Users in an Atlas Account, and what Atlas Roles users can assume.
Show Atlas Organizations that Atlas Users belong to, and the teams they belong to in those Organizations.
This documentation includes instructions to:
See for more details.
Veza connects to MongoDB Atlas using API Keys. You will need to enter the Public Key and Private Key to configure the integration in Veza. Additionally, Veza will need a username and password of a MongoDB Atlas User authorized for each project in the Organization to discover.
You will need the Organization Owner
permission to grant API access to your Atlas organization.
The clusters to discover need to be accessible over internet, or allow communication with a deployed . Follow to configure network access for MongoDB Atlas. As a user with the Project Owner role, you will need to:
Using the UI: Under the Security section, click Network Access to open the IP Access List tab. Click Add IP Address.
Using Atlas CLI: Use :
Veza does not currently support the MongoDB . If enabled, Veza will not detect programmatic access users might have to MongoDB data.
Create an API Key within the Atlas Organization Veza will connect to. The API key must have the scope Organization Read Only
.
To create a key from the Atlas UI:
Open your organization's Access Manager page
Click Create API Key.
Give the key a name and description.
Assign a new role for the API key with the Organization Read Only
scope.
Click Next to view the Public and Private Keys.
Copy the keys and save them in a secure location. Note that the private key is only shown one time.
Add an API Access List Entry. Enter the IP address or CIDR block corresponding to your Veza Platform or Insight Point. Save the configuration.
Click Done.
See the documentation for more details.
Add database users for each project in the Organization. To create a new user using password authentication with the Atlas UI:
On the left navigation, click Security > Database Access. Click Add New Database User.
Choose Password for the Authentication Method.
Enter a username and password. You can optionally Autogenerate the password. Note that the password and username must be the same for each project user you will create.
Grant the user the Built-in Role AtlasAdmin
. This is the only role granting the viewRole
capability.
Optionally, set a Temporary User duration. You can also opt to Restrict Access to specific clusters and federated databases.
Click Add User.
See the documentation for more details.
To discover a standalone MongoDB cluster, Veza connects as a local user with the following permissions:
listDatabases
on cluster
find
on system.users
collection in any database
viewRole
on any collection in any database
You should deploy an within the same network as the cluster for a secure connection.
Connect to the standalone deployment and run the following command to create a role with the required permissions, and create a user with the role:
After creating a user and assigning the required permissions, configure the integration on Veza by providing the username, password, and the URI of the MongoDB cluster.
After preparing the required credentials, log in to Veza as an administrator to add the integration:
In Veza, open the Integrations page.
Click Add New and pick MongoDB or MongoDB Atlas as the type of integration to add
Enter the required information and Save the configuration
To create the MongoDB Atlas integration, you will need the database URI and the username and password created when
To create the MongoDB Atlas integration, you will need the API credentials, username, and password created when
To discover more than one Organizations in a single Account, click Add Key Pair to add additional API credentials.
Veza supports the following entity types and entity attributes:
Represents the overarching account associated with MongoDB Atlas, typically belonging to an organization or individual.
Represents a user account within MongoDB Atlas, identified by a unique ID and associated with an email address.
ID
Represents an organization in MongoDB Atlas, identifiable by its unique ID and organizational name.
ID
Name
Denotes the role or permissions assigned to a user within a MongoDB Atlas organization, governing their access and privileges.
Represents a project in MongoDB Atlas, identified by a unique ID and a descriptive name, used for grouping related resources.
ID
Name
Represents a team within a MongoDB Atlas project, identifiable by a unique ID and a name, used for collaborative project management.
ID
Name
Refers to a specific deployment of a MongoDB database, characterized by a unique ID, a name, type, and an indication of its operational status (paused or active).
ID
Name
Type
Paused
Represents a user account with specific access rights within a MongoDB database, defined by a username and the associated database name.
Username
Database Name
When configuring a standalone MongoDB cluster, Veza discovers the following entities:
Represents an independent MongoDB database cluster, typically running on a single server or a set of servers, used for data storage and retrieval.
Denotes a user account associated with a standalone MongoDB cluster. MongoDB User entities have a unique ID and includes information about the associated database and the username for authentication.
ID
Database
Username
Represents an individual database within a cluster, used for organizing and storing collections of data.
Denotes a role or set of permissions assigned to a user within a standalone MongoDB cluster, governing their access and privileges to perform operations on databases and collections. It is identified by a unique ID.
ID
Identify overprovisioned and inactive users using CloudTrail logs.
ℹ️ Early Access: Monitoring for AWS is part of , which must be enabled by our support team.
Veza gathers CloudTrail logs to audit user activity and generates Over Provisioned Scores (OPS) to show the percentage of unutilized access. This document provides steps to enable audit log extraction for an integrated AWS account.
Notes
Supported Entities: Veza generates over-provisioned scores for these relationships:
* Requires Activity Monitoring for Okta
Monitoring for multiple AWS accounts: To enable Activity Monitoring across several accounts in your organization, you'll need to repeat these steps for each integration for each account. In Query Builder results, OPS will be N/A
for users from accounts where Activity Monitoring is not enabled.
The Activity Monitoring dashboard shows the dormant and over-provisioned AWS IAM Users, based on the resources they can access and the current Activity Monitoring time range. You can add constraints on OPS to Queries and Rules to enforce policies around user activity and actual resource usage.
Activity Monitoring Attributes: Veza creates properties to track different types of activity based on the resource type:
AWS IAM User:
Last Activity At: Timestamp of the most recent activity where the user was the principal, including activities in services not currently supported in Activity Monitoring (e.g., EC2 RunInstances
)
AWS KMS Key:
Last Activity At: Timestamp of the most recent key usage of any type
Last Viewed: Timestamp of the most recent cryptographic operation that consumed key material (e.g., Decrypt
)
You can enable monitoring for a single AWS account with an account-level trail, or create an organization trail containing events from several regions and accounts:
In AWS, create an organization or account-level trail for activity monitoring, or use an existing one. If you have many accounts where you want to enable monitoring, an organization trail is recommended for easier configuration.
In AWS, ensure the Veza service principal has authorization to discover cloud trails and read the trail in S3.
In Veza, enable audit logs for each AWS account integration. You can specify the same S3 bucket and organization trail (identified by its AWS resource name) for all integrations.
Enabling Activity Monitoring with AWS Control Tower For organizations that use AWS Control Tower to govern a multi-account AWS environment, AWS CloudTrail is configured by default, with two key accounts:
A Management account at the organization root, where Control Tower is configured.
A Log Archive account containing the S3 bucket where audit logs are stored.
In this scenario, you will need to configure Veza to extract audit logs from the log archive account, and skip extraction for the management account and other accounts in the organization:
Integrate the Log Archive account with Veza, if it is not already. To do so, use , or add an .
Ensure that the Log Archive integration trust policy includes a , allowing s3:ListBucket
and s3:GetObject
on the bucket and log files.
for the Log Archive account integration. Enable the option "Extract for Organization" for this account.
Enable audit logs for all other accounts in the organization, choosing the "Skip Extraction" option for each account.
See the following steps for more details. Apply the appropriate policies based on your CloudTrail configuration:
Each account integration connects to a single Trail with event logs for the desired regions, accounts, and resources to gather activity data.
To use an existing Trail, search for CloudTrail on the AWS Console, and save the name and region for configuring the integration in Veza. The trail must include S3, Secret Manager, and IAM events.
If Veza cannot use an existing Trail, see for the current instructions from AWS.
To enable Audit Log Extraction and Activity Monitoring for several AWS account integrations in Veza, you will need to update the within each AWS account to grant access to the S3 bucket and trail.
The AWS IAM Policy used by each Veza-AWS integration must grant permissions to read CloudTrail metadata, and list and retrieve objects in the S3 bucket and path where the CloudTrail logs are stored.
Follow the instructions below for organization or account trails, depending on your AWS architecture.
To update the integration trust policy:
On the AWS IAM Console, open the Policies page and locate the one used by the Veza-AWS Integration.
Search for the following SID, and create it if necessary:
This is required to discover if trails exist in the AWS account. Creating an AWS integration using the recommended policy includes the CloudTrail
statement by default.
Enable access to account and organization-level cloud trails, using the examples below.
Save the changes to the policy.
Policy for audit log extraction
Update the integration IAM policy for the account where the organization trails resides to include the following statement. Depending on your environment, this could be the management account, or a dedicated log archive account. The following statement will allow Veza read access to retrieve logs from S3:
To configure Activity Monitoring, use the organization trail ARN to for accounts in the organization where you want to enable monitoring. Choose "Extract for Organization" for the account where logs are stored. For other accounts in the organization, enter the trail ARN and select "Skip Extraction".
See for more on configuring organization trails in AWS.
To enable audit logs for multiple AWS accounts with account-level trails configured, each AWS account integration must have read permissions to discover trails and retrieve logs from S3.
See for more information about account-level trails.
Integration trust policy
For each account where you want to enable activity monitoring, update the integration policy to include the statement:
The path contains the AWS account ID. In the example above, <path to files for the Veza account>
should have a unique value in each integration trust policy.
Key and bucket policies
You will need to update the S3 bucket policy or ACL, and possibly add a key policy, to ensure the Veza service principal (user or role) for each account integration has permission to read the files in S3. The required privileges are:
s3:ListBucket
on the S3 bucket that CloudTrail logs into
s3:GetObject
on the files logged by this trail in the bucket
kms:Decrypt
on the KMS key (if a key is used to encrypt the trail)
Example bucket policy:
Example key policy:
You can find the file and key location under “General details” on the trail details page.
Testing audit log permissions
To validate if an integration can access a trail in S3, try to download the file with the user or role that Veza assumes to access AWS:
In Veza, enable audit logs for each account where activity monitoring will be active:
On the Veza Integrations page, go to the Integrations page and click Enable Audit Logs next to the name of the AWS integration.
In the modal, enter the values from AWS:
The name of the Trail Veza will connect to, e.g., veza_s3_monitoring
. For Organization trails, use the full ARN as the name, or when the trail is owned by an account other than the integration account.
The AWS region the CloudTrail service resides, e.g., us-east-2
.
For organization trails, check "Extract for Organization" for the management account, and "Skip Extraction" for other accounts in the organization.
If your environment uses a log archive account for trail storage, check "Extract for Organization" for that account, and "Skip Extraction" for all other integrations.
For account trails, leave both checkboxes unchecked.
Save your changes. The integration will gather CloudTrail logs to calculate Over-Provisioned Access Scores during the next extraction cycle.
Repeat this step for each AWS integration where you want to enable Activity Monitoring.
employee_id
local_user
id
Yes
display_name
local_user
name
No
email_address
local_user
No
account_status
local_user
is_active
No
join_date
local_user
created_at
No
last_access
local_user
last_login_at
No
password_updated
local_user
password_last_changed_at
No
termination_date
local_user
deactivated_at
No
groups
local_group
name list
No
roles
local_role
name list
No
employee_id,display_name,email_address,account_status,join_date,last_access,password_updated,termination_date,groups,roles
EMP001,Alex Johnson,[email protected],active,2023-04-15,2025-02-15T09:30:45Z,2024-11-10T08:15:30Z,,"Engineering, DevOps","Developer, System Administrator"
EMP002,Taylor Smith,[email protected],true,2022-09-20,2025-03-01T11:45:20Z,2024-10-05T14:30:15Z,,"Product, UX Research","Product Manager, UX Designer"
EMP003,Jordan Lee,[email protected],inactive,2021-11-05,2024-10-10T16:20:30Z,2024-06-15T09:45:10Z,2025-01-15,"Marketing, Content","Content Creator, Social Media Manager"
EMP004,Casey Morgan,[email protected],1,2023-08-22,2025-02-28T15:10:25Z,2024-12-20T10:30:45Z,,"Finance, Accounting","Financial Analyst, Auditor"
EMP005,Riley Brown,[email protected],0,2022-03-10,2024-11-15T08:45:30Z,2024-08-05T11:20:15Z,2024-12-31,"HR, Recruiting","HR Specialist, Talent Acquisition"
departments, department_names, teams
local_group
name list
job_titles, positions, roles_assigned
local_role
name list
permissions, access_rights
local_role
permissions list
user_id
local_user
id
groups
local_group
name list
roles
local_role
name list
user_id,groups,roles
user1,"Engineering, QA Team, Product Team","Software Engineer, Technical Lead"
user2,Marketing,"Content Writer, Editor"
user3,Finance,"Accountant, Auditor"
user4,HR,HR Specialist
user5,"Support, Training",Customer Support Representative
user_id,name,email,active,group,role,role_description
user1,Alice Smith,[email protected],true,Engineering,Software Engineer,Core development role
user1,Alice Smith,[email protected],true,QA Team,Technical Lead,Testing oversight role
user1,Alice Smith,[email protected],true,Product Team,Technical Lead,Product development leadership
user2,Bob Johnson,[email protected],false,Marketing,Content Writer,Content creation role
user2,Bob Johnson,[email protected],false,Marketing,Editor,Content review role
user_id,name,email,is_active,groups,role,permissions
USR001,Alex Johnson,[email protected],true,"Dev Team",Developer,"view_code, edit_code"
USR001,Alex Johnson,[email protected],true,"Backend Group",Code Reviewer,"approve_pull_requests"
USR002,Taylor Smith,[email protected],yes,"Ops Team",System Administrator,"manage_infrastructure"
USR002,Taylor Smith,[email protected],yes,"Cloud Admin",Release Manager,"deploy_production"
USR003,Jordan Lee,[email protected],1,"Product Team",Product Owner,"create_requirements"
USR003,Jordan Lee,[email protected],1,"Analytics Users",Data Analyst,"view_analytics"
user_id,display_name,email,active,department,team,job_title,role,role_permissions
emp101,John Smith,[email protected],true,Engineering,Backend,"Senior Developer","Developer Lead","read_all,write_backend,deploy_backend"
emp101,John Smith,[email protected],true,Engineering,Architecture,"Senior Developer","Architecture Committee","approve_designs,modify_architecture"
emp102,Jane Doe,[email protected],true,Engineering,Frontend,"UI Developer","Frontend Developer","read_all,write_frontend,deploy_frontend"
emp103,Robert Johnson,[email protected],true,Product,"Product Management","Product Owner","Product Manager","read_all,create_requirements,approve_features"
emp103,Robert Johnson,[email protected],true,Product,"UX Research","Product Owner","User Researcher","conduct_research,analyze_results"
emp104,Maria Garcia,[email protected],true,Marketing,Content,"Marketing Specialist","Content Creator","read_marketing,write_content"
emp104,Maria Garcia,[email protected],true,Marketing,Social,"Marketing Specialist","Social Media Manager","post_social,analyze_metrics"
emp105,David Lee,[email protected],true,Finance,Accounting,"Finance Manager","Financial Controller","approve_expenses,manage_budgets,generate_reports"
emp106,Sarah Wilson,[email protected],true,HR,Recruiting,"HR Specialist","Recruiter","post_jobs,review_applications,conduct_interviews"
emp107,Michael Brown,[email protected],true,Sales,"Enterprise Sales","Sales Executive","Account Manager","manage_clients,create_proposals,close_deals"
user_id
local_user
id
display_name
local_user
name
local_user
active
local_user
is_active
department
local_group
name
team
local_group
name
job_title
local_user
custom property (String
)
role
local_role
name
role_permissions
local_role
permissions list
user_id,name,email,active,created_at,last_login_at,password_last_changed_at,deactivated_at
TS001,Timestamp Example 1,[email protected],true,2023-04-12T15:34:56.123456789Z,2006-01-02T15:04:05Z07:00,20060102150405,
TS002,Timestamp Example 2,[email protected],true,2006-01-30 15:04:05Z07:00,2006-01-30 15:04:05,2006-01-30,2006-01-30T
TS003,Timestamp Example 3,[email protected],true,2006-01-30T15:04:05,2006-01-30T15:04:05Z,never,null
TS004,Timestamp Example 4,[email protected],false,2024-03-15,none,false,0
TS005,Timestamp Example 5,[email protected],true,1/2/2006,1/15/2023,11/22/2024,
user_id,name,email,active
B001,Boolean Example 1,[email protected],true
B002,Boolean Example 2,[email protected],t
B003,Boolean Example 3,[email protected],yes
B004,Boolean Example 4,[email protected],y
B005,Boolean Example 5,[email protected],1
B006,Boolean Example 6,[email protected],active
B007,Boolean Example 7,[email protected],enabled
B008,Boolean Example 8,[email protected],false
B009,Boolean Example 9,[email protected],f
B010,Boolean Example 10,[email protected],no
B011,Boolean Example 11,[email protected],n
B012,Boolean Example 12,[email protected],0
B013,Boolean Example 13,[email protected],inactive
B014,Boolean Example 14,[email protected],disabled
user_id,name,email,active,department,title,office_location,hire_date,employee_type,salary_band,performance_rating,certification,languages,project_ids,manager_id,emergency_contact
CP001,Custom Property Example 1,[email protected],true,Engineering,Senior Developer,New York,2023-01-15,Full-time,B4,Exceeds Expectations,"AWS Certified, Azure Expert","Java, Python, Go","PROJ-001, PROJ-002",MGR-101,John Smith (555-123-4567)
CP002,Custom Property Example 2,[email protected],true,Marketing,Marketing Manager,San Francisco,2022-05-10,Full-time,C2,Meets Expectations,Google Analytics,"English, Spanish",PROJ-003,MGR-102,Mary Johnson (555-987-6543)
CP003,Custom Property Example 3,[email protected],false,Finance,Financial Analyst,Chicago,2023-08-22,Contract,A3,Needs Improvement,CPA,"English, French","PROJ-004, PROJ-005, PROJ-006",MGR-103,Robert Davis (555-456-7890)
Name
Name to identify the configuration
App ID
GitHub App ID
App Key
GitHub App private key
Insight Point
Leave default or use an external Insight Point
Server URL
For Enterprise Server, the address of the GitHub Enterprise server
Enterprise Cloud Slug
For GitHub Enterprise cloud deployments, the Enterprise ID as in https://github.com/enterprises/<ENTERPRISE-SLUG>
Collect personal access tokens
Enable to show GitHub Personal Access Tokens in the Veza Access Graph
Ignore expired personal access tokens
Enable to exclude expired PATs during extraction.
DatasourceID
Veza unique ID for the GitHub data source
ID
Veza global unique identifier
Name
Veza display name
CreatedAt
Creation date (within GitHub)
UpdatedAt
Updated date (within GitHub)
PublicRepos
Number of public repositories
TotalPrivateRepos
Number of private repositories
OwnedPrivateRepos
Number of owned repositories
Is2faEnabled
True if the organization account requires multi-factor authentication
Plan
Organization Payment plan type
DisplayName
GitHub username
Is2faEnabled
Whether the user has enabled MFA
PublicEmail
Email address used for commits (if set)
Emails
List of all user emails matching verified domain
LdapDn
Distinguished Name (DN) the user maps to (GitHub Enterprise only)
FullAdmin
True if the user is Site Admin
UserType
GitHub users are classified as "Human" identities
IdentityUniqueID
GitHub LoginName
AccessAllRepositories
True if token has access to all repos in the organization
CanExpire
Whether the token has an expiration date
Classic
True if this is a classic PAT (vs fine-grained)
CreatedAt
Timestamp when the token was created
ExpiresAt
Expiration timestamp (if set)
IsActive
Whether the token is currently active
LastUsedAt
Last time the token was used to authenticate
OwnerLogin
GitHub username of the token owner
Repositories
List of specific repositories the token can access
Scopes
List of OAuth scopes (for classic tokens)
RepositoryPermissions
List of repository-level permissions (fine-grained tokens)
OrganizationPermissions
List of organization-level permissions (fine-grained tokens)
ParentTeam
The team in your organization's hierarchy under which this group is nested
LdapDn
Distinguished Name (DN) the team maps to (GitHub Enterprise only)
Permissions
List of permissions assigned to the app
IsArchived
True if repository is archived
IsDisabled
True if repository is disabled
IsFork
True if repository is a fork
ForkCount
Number of repository forks
GithubInternalID
Repository ID
Permissions
list of permissions granted by the role
# Create an access list entry for the IP address 192.0.2.15 in the project with ID 5e2211c17a3e5a48f5497de3:
atlas accessList create 192.0.2.15 --type ipAddress --projectId 5e2211c17a3e5a48f5497de3 --comment "IP address for app server 2" --output json
use admin
db.createRole(
{
role: "veza-extractor-role",
privileges: [
{ resource: { cluster: true }, actions: [ "listDatabases" ] },
{ resource: { db: "", collection: "system.users" }, actions: [ "find" ] },
{ resource: { db: "", collection: "" }, actions: [ "viewRole" ] }
],
roles: []
}
)
db.createUser(
{
user: "veza-extractor-user",
pwd: passwordPrompt(), // or cleartext password
roles: [
{ role: "veza-extractor-role", db: "admin" }
]
}
)
Insight Point
Choose the Insight Point to use for the connection.
Name
Enter a friendly name to identify the unique MongoDB integration
Database URI
Cluster Connection String e.g. mongodb://mongodb0.example.com:28015
Username
Database user name for the integration
Password
Database user password for the integration
Insight Point
Choose the Insight Point to use for the connection, or use the internal Veza Insight Point.
Public Key
Public API Key created for the Atlas Organization
Private Key
Private API Key created for the Atlas Organization
Username
Username of the database user(s) for project-level discovery
Password
Password of the database user(s) for project-level discovery
AWS IAM User
AWS S3 Bucket
AWS IAM User
AWS Secrets Manager Secret
AWS IAM User
AWS KMS Key
Okta Identity*
AWS S3 Bucket
Okta Identity*
AWS Secrets Manager Secret
Okta Identity*
AWS KMS Key
{
"Sid": "CloudTrail",
"Effect": "Allow",
"Action": [
"cloudtrail:GetTrail"
],
"Resource": "*"
}
{
"Sid": "CloudTrail",
"Effect": "Allow",
"Action": [
"cloudtrail:GetTrail"
],
"Resource": "*"
},
{
"Sid": "CloudTrail-S3",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::<bucket name>/AWSLogs/<organization id>/*",
"arn:aws:s3:::<bucket name>"
]
}
{
"Sid": "CloudTrail-S3",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::<bucket name>/AWSLogs/<path to the files for the veza account>/*",
"arn:aws:s3:::<bucket name>"
]
}
{
"Sid": "sid",
"Effect": "Allow",
"Principal": {
"AWS": "<ARN of the Veza user or role>"
},
"Action": [
"s3:GetObject"
],
"Resource": "arn:aws:s3:::<bucket name>/AWSLogs/<path to the files for the veza account>/*",
}
{
"Sid": "sid",
"Effect": "Allow",
"Principal": {
"AWS": "<ARN of the Veza user or role>"
},
"Action": [
"s3:ListBucket",
],
"Resource": [
"arn:aws:s3:::<bucket name>"
]
}
{
"Sid": "sid",
"Effect": "Allow",
"Principal": {
"AWS": "<ARN of the Veza user or role>"
},
"Action": "kms:Decrypt",
"Resource": "<the key ARN>"
}
aws s3api get-object --bucket <the S3 bucket for the trail> --key <any log file in the bucket> <path to save the file>
Configuring the Veza integration for Oracle E-Business Suite
The Oracle E-Business Suite (EBS) integration enables organizations to review and analyze user permissions and access within their EBS environment. This integration is particularly valuable for organizations needing to ensure proper Separation of Duties (SOD) and maintain visibility into user capabilities across ERP systems.
The integration enables:
Mapping of Users to Responsibilities, with or without Roles
Tracking Function and Concurrent Program access through Responsibilities
Visibility into data access controls via Profile Options, Security Profiles, and Data Access Sets to resources such as Ledgers and Operating Units.
Analysis and review of user entitlements and potential toxic permission combinations
EBS is a customer-managed application that is deployed within your infrastructure. EBS uses an Oracle database as its backend. Veza connects to this database and uses SQL queries to retrieve entity and authorization metadata.
Access to the Oracle EBS database, sometimes also referred to as SERVICE_NAME
.
Database user credentials with read permissions to required tables
Properly configured SESSION_PER_USER
database parameter for the integration user (see )
Deploying an is recommended for secure integration connectivity. For testing purposes, you can skip deploying an Insight Point, in which case must allow communication with your Veza tenant.
The database user must have SELECT permissions on the following tables:
APPS.FND_APPLICATION_VL
APPS.FND_CONCURRENT_PROGRAMS_VL
APPS.FND_FORM_FUNCTIONS_VL
APPS.FND_MENU_ENTRIES_VL
APPS.FND_MENUS_VL
APPS.FND_PROFILE_OPTION_VALUES
APPS.FND_PROFILE_OPTIONS_VL
APPS.FND_REQUEST_GROUP_UNITS
APPS.FND_REQUEST_GROUPS
APPS.FND_REQUEST_SET_PROGRAMS
APPS.FND_REQUEST_SET_STAGES_VL
APPS.FND_REQUEST_SETS_VL
APPS.FND_RESP_FUNCTIONS
APPS.FND_RESPONSIBILITY_VL
APPS.FND_USER
APPS.GL_ACCESS_SET_NORM_ASSIGN
APPS.GL_ACCESS_SETS
APPS.GL_LEDGER_SET_NORM_ASSIGN
APPS.GL_LEDGER_SETS_V
APPS.GL_LEDGERS
APPS.HR_OPERATING_UNITS
APPS.ORG_ORGANIZATION_DEFINITIONS
APPS.PER_ALL_PEOPLE_F
(optional, for user enrichment)
APPS.PER_SECURITY_ORGANIZATIONS
APPS.PER_SECURITY_PROFILES_V
APPS.WF_ROLE_HIERARCHIES
APPS.WF_ROLES
APPS.WF_USER_ROLES
APPS.PO_AGENTS
You can create this user with the following setup script:
Replace "Password123" with a strong password. The script assumes the Oracle EBS objects are under the 'apps' schema. If your configuration is different, adjust the schema name as required.
In Veza, go to the Integrations page.
Click Add Integration and search for Oracle EBS. Click on the tile to open the integration configuration form.
Enter the required configuration options.
Click Create Integration to validate and save the configuration.
The Oracle EBS integration requires the SESSION_PER_USER
parameter to be set appropriately to prevent the ORA-02391: exceeded simultaneous SESSIONS_PER_USER limit
error during data extraction.
For Oracle EBS integrations with Veza, we recommend setting the SESSION_PER_USER
parameter to at least 5 for the database user used for integration. Veza creates 3 data sources for Oracle EBS that can connect and create sessions in parallel. The integration runs discovery processes that can create additional concurrent connections (typically 4 max concurrent sessions).
If you are using the same database user for multiple Veza tenants or have other integrations using the same user account, you may need to increase the SESSION_PER_USER
value further. Adjust based on your specific environment requirements.
Set this parameter for the Veza integration user by creating and applying a profile:
The integration models several types of effective relationships within Oracle EBS:
Responsibility to Function
Effective Profile Option Binding
These relationships are shown when using "Effective" .
Configuring the EBS integration enables three data sources for extracting IAM entities (users and responsibilities), Actions (functions and concurrent programs), and Resources such as ledgers and operating units within EBS.
Oracle EBS Instance
Core container representing a single Oracle E-Business Suite installation.
Represents individual users within the EBS system.
Attributes:
updated_at
, created_at
start_date
, end_date
, last_logon_date
description
, email
first_name
, last_name
is_buyer
Defines a collection of permissions and access rights.
Attributes:
updated_at
, created_at
description
A key security component defining user access and capabilities.
Attributes:
application_id
, group_application_id
request_group_id
, responsibility_id
menu_id
, description
Links responsibilities to functions.
Attributes:
application_id
, group_application_id
request_group_id
, responsibility_id
menu_id
, description
Hierarchical structure of options and functions.
Attributes:
menu_id
, menu_type
, description
Note: System Query Mode Only
Specifies excluded menu items for responsibilities.
Attributes:
application_id
, responsibility_id
action_id
, rule_type
Note: System Query Mode Only
Represents specific actions or operations.
Attributes:
application_id
, parameters
function_type
, description
function_id
, user_function_name
Defines excluded functions for responsibilities.
Attributes:
application_id
, responsibility_id
action_id
, rule_type
Note: System Query Mode Only
Represents a specific module within the EBS suite.
Attributes:
application_id
, short_name
Collection of concurrent programs and request sets.
Attributes:
application_id
, group_id
description
, group_code
Group of concurrent programs that can be run together.
Attributes:
application_id
, request_set_id
start_stage
, concurrent_program_id
user_request_set_name
, description
Executable programs for background processing.
Attributes:
application_id
, program_name
executable_id_application_id
, executable_id
request_set_flag_name
, user_program_name
description
, program_id
System-wide or user-specific configuration settings.
Attributes:
profile_option_id
, profile_option_name
user_profile_option_name
, application_id
start_date_active
, end_date_active
hierarchy_type
, description
updated_at
, created_at
Defines ledger access permissions.
Attributes:
access_set_id
, access_set_name
default_ledger_id
, description
updated_at
, created_at
Controls access to HR information.
Attributes:
security_profile_id
, security_profile_name
business_group_id
, business_group_name
program_update_date
updated_at
, created_at
Collection of ledgers for financial reporting.
Attributes:
ledger_set_name
, ledger_id
short_name
, description
updated_at
, created_at
Financial reporting entity for business transactions.
Attributes:
ledger_id
, ledger_name
short_name
, description
updated_at
, created_at
Organization partitioning data for multiple companies.
Attributes:
operating_unit_name
, organization_id
business_group_id
, date_from
, date_to
short_code
, set_of_books_id
default_legal_context_id
, ledger_name
Links profile options to responsibilities.
Attributes:
responsibility_id
, application_id
Mapping of users to responsibilities.
Attributes:
user_name
, user_id
last_name
, first_name
user_description
, role_names
application_id
, group_application_id
request_group_id
, responsibility_id
responsibility_name
, menu_id
menu_name
, user_menu_name
menu_is_azn
-- Create a new user
CREATE USER ebs_integration IDENTIFIED BY "Password123"
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
QUOTA UNLIMITED ON users;
-- Grant basic connect role
GRANT CREATE SESSION TO ebs_integration;
-- Grant object permissions
GRANT SELECT ON apps.FND_APPLICATION_VL TO ebs_integration;
GRANT SELECT ON apps.FND_CONCURRENT_PROGRAMS_VL TO ebs_integration;
GRANT SELECT ON apps.FND_FORM_FUNCTIONS_VL TO ebs_integration;
GRANT SELECT ON apps.FND_MENU_ENTRIES_VL TO ebs_integration;
GRANT SELECT ON apps.FND_MENUS_VL TO ebs_integration;
GRANT SELECT ON apps.FND_PROFILE_OPTIONS_VL TO ebs_integration;
GRANT SELECT ON apps.FND_PROFILE_OPTION_VALUES TO ebs_integration;
GRANT SELECT ON apps.FND_REQUEST_GROUPS TO ebs_integration;
GRANT SELECT ON apps.FND_REQUEST_GROUP_UNITS TO ebs_integration;
GRANT SELECT ON apps.FND_REQUEST_SET_PROGRAMS TO ebs_integration;
GRANT SELECT ON apps.FND_REQUEST_SETS_VL TO ebs_integration;
GRANT SELECT ON apps.FND_REQUEST_SET_STAGES_VL TO ebs_integration;
GRANT SELECT ON apps.FND_RESPONSIBILITY_VL TO ebs_integration;
GRANT SELECT ON apps.FND_RESP_FUNCTIONS TO ebs_integration;
GRANT SELECT ON apps.FND_USER TO ebs_integration;
GRANT SELECT ON apps.GL_ACCESS_SETS TO ebs_integration;
GRANT SELECT ON apps.GL_ACCESS_SET_NORM_ASSIGN TO ebs_integration;
GRANT SELECT ON apps.GL_LEDGERS TO ebs_integration;
GRANT SELECT ON apps.GL_LEDGER_SETS_V TO ebs_integration;
GRANT SELECT ON apps.GL_LEDGER_SET_NORM_ASSIGN TO ebs_integration;
GRANT SELECT ON apps.HR_OPERATING_UNITS TO ebs_integration;
GRANT SELECT ON apps.ORG_ORGANIZATION_DEFINITIONS TO ebs_integration;
GRANT SELECT ON apps.PER_ALL_PEOPLE_F TO ebs_integration;
GRANT SELECT ON apps.PER_SECURITY_ORGANIZATIONS TO ebs_integration;
GRANT SELECT ON apps.PER_SECURITY_PROFILES_V TO ebs_integration;
GRANT SELECT ON apps.WF_ROLES TO ebs_integration;
GRANT SELECT ON apps.WF_ROLE_HIERARCHIES TO ebs_integration;
GRANT SELECT ON apps.WF_USER_ROLES TO ebs_integration;
GRANT SELECT ON apps.PO_AGENTS TO ebs_integration;
Set the Insight Point
Choose whether to use the default data plane or a deployed Insight Point.
Name
A friendly name to identify the unique integration.
Server Address
The IP address of the Oracle database service.
Server Port
The port number to use (default: 1521).
Database Name
The Oracle service name for the EBS database.
Username
Database user with required read permissions.
Password
Password for the database user.
-- Create a profile with the SESSION_PER_USER limit
CREATE PROFILE ebs_integration_profile LIMIT
SESSIONS_PER_USER 5;
-- Assign this profile to the integration user
ALTER USER ebs_integration PROFILE ebs_integration_profile;
Configuring the Veza integration for AWS
There are several ways to configure Veza to connect to Amazon Web Services (AWS). The method you choose depends on your security requirements and the data sources in your environment. Typically, Veza should connect by assuming an IAM role.
If you need to discover non-cloud native data sources within an AWS account, you should use an Insight Point for secure authentication. As a less secure but easy-to-establish connection method, you can optionally connect to AWS as an IAM user.
If possible, you should integrate your primary AWS Organization account, to enable full extraction of Service Control Policies (SCPs) and Organizational Units (OUs). When a primary OU is configured, other accounts not yet connected to Veza can still be audited using the Veza Access Graph.
After establishing an AWS Control Tower Landing Zone, you can Automatically Add New AWS Accounts in your AWS Organization to Veza. Once enabled, Veza will register accounts whenever they are enrolled or provisioned into an OU governed by AWS Control Tower.
To programmatically add all current accounts in an Organization with AWS CloudFormation, see Add existing AWS accounts
Whether connecting using an IAM role or IAM user, you will need to create an IAM policy that grants Veza permission to make read-only API calls.
If your organization uses AWS CloudFormation with Terraform, you can use the following configuration to automate creation of a new policy and role:
To create the role manually using AWS IAM Console, choose Policies > Create and select the JSON tab. Copy the policy shown below, and give it a name (for example veza-aws-connector
):
This policy grants the attached principal (IAM user, role, or Insight Point EC2 Instance Profile) the privileges required to discover Organization, IAM, and tags metadata for the AWS account. It enables Veza to gather entities and authorization relationships for:
S3 Buckets
EC2 Instances
RDS Databases (MySQL, PostgreSQL)
Redshift Data Warehouses
To enable discovery of AWS IAM Identity Center entities, Trusted Access needs to be enabled for the service using either the AWS IAM Identity Center console or the AWS Organizations console:
From the AWS Organizations console, navigate to Services.
Choose AWS IAM Identity Center.
Choose Enable trusted access.
Check the box to show the option to enable trusted access without performing additional setup steps.
Type "enable" to confirm the change, then click to enable trusted access.
See Enabling trusted access with IAM Identity Center for detailed instructions.
Notes:
Full extraction of Redshift and RDS requires a local user, which you will need to create and identify in the Veza access policy. For detailed instructions, see the setup guides for RDS MySQL, PostgreSQL, and AWS Redshift.
More details are available on the Administration > Events page and the integration details view when required permissions are unavailable, or credentials are invalid.
If you want to limit the extraction of specific AWS services and resources, you can do so when adding the provider to Veza or using the "Edit Integration" menu.
Service control policies (SCPs) and organization units (OUs) are discovered only when connecting to an AWS organization management account.
See Notes & Supported Entities for more details on the Veza-AWS integration and supported services
AWS discovery using an assumed IAM role is the recommended method, especially when you don't need to discover additional, non-AWS-native data sources such as SQL databases or a Trino server. This method is reliable to implement, secure, and doesn't require additional steps to deploy an Insight Point to your cloud.
The steps below will enable a Veza AWS principal to assume a new role within your organization's AWS account for identity, resource, and authorization discovery.
You will need the ID of the Veza AWS account the role will apply to. To get this value:
Go to Veza Integrations > Add Integration
Select AWS and add a new AWS account
Choose "Assume AWS IAM Role" as the Authentication Method.
You can use any values to populate the required fields, or use the actual account ID and region of the account you intend to configure.
Click "Save". A policy will display the Veza account ID, such as:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::[[ACCOUNT_ID]]:role/[[TENANT_ID]]-insight-point"
}
}
]
}
When creating the role in AWS, ensure that the principal AWS account and external ID values match the ones in the Veza-provided policy.
To create the AWS role, you will need administrator access to the AWS account. Complete the steps below using the AWS Management Console:
Navigate to IAM > Roles. Click “Create a role”.
Select "AWS account" as the trusted entity, then choose "Another AWS account" as the trusted entity type. Provide the Veza AWS account ID retrieved using the steps above, or provided by your support team.
Check the box to require an External ID and give it a unique value. Copy down this External ID, and supply it when adding the AWS account to Veza using the New Cloud Provider wizard.
If you've already saved the Veza configuration, verify that the External IDs are the same.
Attach the IAM policy that will permit Veza to extract information about your AWS account.
Add optional tags, and give the role a name, description, and verify the trusted entity is correct.
Keep note of the new role's name, as it will be required to finish adding the provider on the Veza Integrations page.
Connecting using a role or user will allow Veza to extract information for cloud-native data services using the appropriate APIs (such as AWS S3 and Redshift). However, for data services (for example SQL Server on EC2 Instance, or Oracle on EC2 Instance) that are not cloud-native or not available to external callers, Veza will need to establish connections directly to the entity using an Insight Point deployed to your cloud or local environment.
If you are connecting the account using an Insight Point, the AWS IAM policy must be updated to enable connection to the Veza ECR repository. Instead of attaching the policy to an IAM user, you will apply the policy to the role assigned to an Insight Point's EC2 instance profile.
See the full Insight Point instructions for detailed steps. You will need to deploy the Insight Point, and:
Create an AWS IAM role with EC2 as the trusted entity.
Attach the Veza IAM policy to the role.
Assign the role to your Insight Point instance profile.
From your AWS account dashboard, create an IAM user and attach the appropriate policy:
From the Specify User Details interface, input a user name (such as veza_connector
) and click Next.
Select the policy you created earlier, and attach it to the new user.
Once you have created the IAM user, copy the Access Key ID and Secret Access Key (you will need to repeat the previous steps if the key is lost).
To enable the provider as a new data source for Veza, navigate to Veza Integrations > Add Integration > AWS. Depending on the authentication method you select in Step 2 above, some different information will be required:
Assuming an AWS IAM Role: This is the recommended method for conducting discovery on AWS and allows Veza to assume an IAM role with the appropriate privileges.
You will need to provide a display name
for the AWS account, and the Account ID
.
For the Role Name
, provide the name of the AWS IAM role you configured with the Veza IAM account as a trusted entity. Use the role name as it appears in the AWS UI (not the full ARN).
The External ID
must match the IAM role "trusted entity":
If you have created the AWS role, enter the External ID
you provided from the AWS console.
If you haven't created the role at this point, copy the random identifier that appears here,and provide it as the External ID
when adding Veza as the trusted entity in AWS.
When you click Save, a policy will display, showing the UUID that will be used as the external ID and the trusted AWS account number. If the values aren't the same, you should copy the policy on this screen, and update the Veza connector policy in AWS to match.
Using an IAM user Access Key ID / Secret Access Key: While user credentials are easy to generate and configure, this option should be considered less secure than IAM role assumption.
Provide the AWS Access Key ID
and Secret Access Key
for the IAM user created in Step 2.
Using an Insight Point: Once you have deployed an Insight Point, you can opt to conduct discovery using the IAM role assigned to the Insight Point's EC2 instance profile.
Provide a Name
to display for the new provider, the AWS Account ID
, and the local DB Username
.
From the Insight Point
list, choose the Insight Point associated with the policy to use for discovery.
AWS configuration fields
Insight Point
Leave default unless using an Insight Point for discovery.
Authentication Method
See options below (assuming an AWS IAM Role is recommended).
Account ID
AWS account ID.
Role name
IAM role to assume.
External ID
Role external ID (if assuming an AWS IAM role).
Regions
Regions to discover (required).
AWS Access Key ID
For the IAM user to connect as (optional).
AWS Secret Access Key
For the IAM user to connect as (optional).
Extraction Policy Name
If provided, Veza will check that the specified policy exists in the AWS account and contains all required permissions.
Gather system tables
Option to gather additional RDS MySQL system tables sys
, performance_schema
, mysql
, and information_schema
.
DB User
Database local username for all RDS and Redshift extraction (optional).
Redshift DB User
Local username for Redshift extraction (optional).
RDS MySQL DB User
Local username for MySQL extraction (optional).
RDS PostgreSQL DB User
Local username for MySQL extraction (optional).
You can additionally set allow and deny lists to databases and buckets, or by choosing Limit Services Extracted and selecting the services to enable. See Limiting Extractions for more information.
Supported entity types and more information about the Veza-AWS connector.
Veza integrates with AWS to parse service and resource metadata using native API calls. You can enable a read-only connection via an IAM user, an assumed IAM role, or using an Insight Point running on EC2.
Veza creates entities in the data catalog to represent discovered resources and identities, including tags and attributes applied within AWS. To gather granular metadata for database services such as RDS, Veza requires additional permissions to connect as a local user and execute queries when data APIs aren't available.
Veza analyzes cross-service connections between discovered entities, calculates effective permissions, and identifies authorization paths, including the cumulative effects of permission boundaries, service control policies, group memberships, and hierarchical policy statements. These relationships can be searched in the Authorization Graph, or audited using Workflows or the Query Builder.
To show external identities with access to AWS resources, Veza supports identity federation, displaying permissions for external users and groups from providers such as Okta, Azure AD, and custom identity providers.
Note that by default, all regions and services are extracted. Allow/deny lists can contain string lists (including wildcards) of resources names to ignore.
Supported entities:
Cognito Service
Cognito Identity Pool
Supported entities:
EC2 Service
EC2 VPC
EC2 Security Group
EC2 Instance
As of Veza
2021.2.1
, EC2 discovery is supported for up to 1000 instances per AWS account.
Supported entities:
ECR Service
ECR Private Registry
ECR Private Repository
ECR Public Registry
ECR Public Repository
Supported entities:
EKS Service
EKS Cluster
Supported entities:
EMR Service
EMR Cluster
EMR Node
EMR Studio
EMR Notebook Execution
The EMR service to discover must use EC2 (EMR on EKS isn't yet supported). See EMR for more details.
Supported entities:
Redshift Cluster
Redshift Database
Redshift Schema
Redshift Effective Permission
Redshift Local User
Redshift Database Instance
Redshift Group
Redshift Table
Redshift Service
The default policy only includes API permissions to get authorization metadata for Redshift clusters. To connect to Redshift databases for full discovery, a local Redshift user with the
redshift:GetClusterCredentials
IAM privilege must be available.
Supported entities:
S3 Service
S3 Bucket
S3 Bucket Policies
S3 Bucket Policy Statement
As of release
2022.2.1
, effective permissions to S3 now consider object-level permissions granted via IAM policy. Access Points are not yet supported. S3 bucket objects can have individual Access Control Lists. Since Veza doesn't parse individual bucket objects, object-level permissions may not be authoritative for buckets allowing ACLs.
Supported entities:
DynamoDB Service
DynamoDB Table
DynamoDB Secondary Index
DynamoDB Stream
See DynamoDB for more information.
Identity and Access Management
Supported entities:
AWS Accounts
IAM Groups
IAM Users
IAM Roles
IAM Policies
IAM Permissions
AWS IAM Policy entities have the attribute Permissions Boundary Usage Count, enabling queries on unused policies with no relationship to any principals.
Supported entities:
Identity Center Service
Identity Center User
Identity Center Group
Identity Center Permission Set
Identity Center is a service only available in the management account of an organization. To discover Identity Center entities, the region configured for the AWS account integration must match the region IAM Identity Center is enabled in. For example, if the IAM Identity Center is enabled in
us-east-1
, the AWS Integration must have theus-east-1
region defined. Otherwise, AWS IAM Identity Center will not appear as a Data Source.
Supported entities:
KMS Service
KMS Customer Managed Key (CMK)
KMS Policy
KMS Policy Statements
KMS Permissions
KMS Customer Managed Key Permissions
In order for a CMK to be discoverable, its Key Policy must have IAM permissions enabled, or grant the Veza AWS IAM principal directly.
Supported entities:
Lambda Service
Lambda Function
Supported entities:
AWS Organization Unit
AWS Organization Account
You can track org unit accounts not yet configured for discovery using the assessments
AWS Accounts that are part of an organization but not managed
.
Supported entities:
RDS Service
RDS Instance
RDS Cluster
RDS Cluster Instance
RDS MySQL
Supported entities:
RDS MySQL Database
RDS MySQL Function
RDS MySQL Instance
RDS MySQL Local User
RDS MySQL Local User Instance
RDS MySQL Procedure
RDS MySQL Role
RDS MySQL Role Instance
RDS MySQL Service
RDS MySQL Table
RDS MySQL Trigger
RDS PostgreSQL
Supported entities:
PostgreSQL User
PostgreSQL Database
PostgreSQL Group
PostgreSQL Instance
PostgreSQL Schema
PostgreSQL Table
PostgreSQL Procedure
PostgreSQL Trigger
PostgreSQL Permissions
To get database-level metadata, users, and privileges, Veza will need to execute database queries as a local Postgres or MySQL user.
Supported entities:
Secrets Manager Service
Secrets Manager Secret
The Authorization Graph includes some additional support for searching AWS entities:
To see the native AWS permissions for an Effective Permission, select an ungrouped EP node and choose Explain Effective Permissions on the actions sidebar
To view an AWS IAM policy, select a Policy node and choose Show JSON Document from the actions sidebar
AWS IAM Role relationships may be nested (a role assignment can imply membership in another). When this is the case, an icon will indicate that the node has a hierarchical relationship. Choose Show Hierarchy to open a detailed view. Entities will have a hierarchical_level
to enable search on nested nodes.
When multiple AWS accounts are connected, entities with the same name (such as built-in IAM roles) are numbered for differentiation. Toggle the AWS Account Label search option to add additional color-coding by account name.
You can highlight authorization paths available via role assumption using the Entities of Interest graph search option.
Following best practices for AWS client applications, Veza implements an exponential backoff mechanism for requests (see the AWS documentation on Error Retries and Exponential Backoff for more information). This should prevent hitting endpoint rate limits, and provide ample room for other services to consume the same APIs.
By default, exponential backoff is configured for up to 10 attempts, with a max wait of 300 seconds.
You can use the management API to configure AWS connectors programmatically.
For example:
curl -X POST '{baseurl}/api/v1/providers/aws
-d {
"values": [
{
"name": "AWS-Org",
"type": "AWS",
"data_plane_id": "a2e32a80-9d64-4725-b4a9-8de6ffd0682b",
"status": "SUCCESS",
"account_id": "123456789010",
"credentials_type": "ASSUME_CUSTOMER_ROLE",
"access_key_id": null,
"assume_role_name": "veza-connector",
"assume_role_external_id": "0477997275",
"regions": [],
"db_user": "veza_db_user",
"services": [],
"redshift_database_allow_list": [],
"redshift_database_deny_list": [],
"rds_database_allow_list": [],
"rds_database_deny_list": [],
"s3_bucket_allow_list": [],
"s3_bucket_deny_list": []
}
]
}
Note that by default, all regions and services are extracted. Allow/deny lists can contain string lists (including wildcards) of resources names to ignore.
Veza does not currently support all AWS policy conditions operators and keys.
The unsupported conditions include ones that are difficult to parse or meaningless in Veza's graph representation, such as DateGreaterThan
:aws:CurrentTime
. However, unsupported conditions CAN have a meaningful impact on the actual access granted to principals shown in Graph.
When Veza detects an unsupported condition, the boolean property Unsupported Condition
is set to True
for the corresponding Policy Statement and Permission nodes.
This property can be included in an Attribute Filter to display query results that are or are not impacted by unsupported conditions.
Import identity and authorization data from CSV files into Veza
Use CSV Upload to integrate identity and authorization metadata from sources that don't have built-in Veza connectors, but can export or provide data in tabular format.
You can create a CSV integration in Veza to:
Import user and authorization data from legacy or custom applications
Integrate with SaaS applications that support CSV exports
Model employee access to homegrown or specialized systems
Upload employee metadata from your HRIS as a source of identity for Lifecycle Management workflows
The integration uses the Open Authorization API (OAA) to map CSV data to supported OAA templates:
Application - Models Users, Groups, Roles, and Resources across applications for a wide variety of authorization use cases. An introduction to the Application Template can be found here.
Human Resource Information Systems (HRIS) - Models employee information from HR sources for use with Lifecycle Management (LCM).
Application Template - Use Custom Applications to model business applications and access permissions:
Models Users, Groups, Roles, and Resources across applications
For example, you can upload user permissions from a homegrown CRM system, data store, or any other application users can access.
HRIS Template - Use for employee data from HR systems
Models employee information and organizational structure
For example, you can uploading employee data for manager-based Access Reviews and automated provisioning with Lifecycle Management.
CSV integration is ideal for systems that export tabular data but lack dedicated Veza connectors:
Legacy applications with user permission exports
Custom business applications built in-house
HR systems for employee lifecycle management
Specialized industry tools without native APIs
CSV import enables modeling identity and permissions metadata for any application not natively supported by Veza, with flexible column mapping, custom properties, and support for multiple data formats.
To create an integration from CSV, you will need:
A CSV file containing relevant data with column headers
Sufficient permissions in Veza (Administrator or CSV Manager role)
Understanding of the data model for the source application
A plan for mapping between CSV columns and Veza attributes
CSV (Comma-Separated Values) is a widely used file format that stores tabular data in plain text. Each row represents a record or a relationship between entities (e.g., User to Role), and columns represent attributes.
When importing from CSV:
The first row must contain column headers
Each column can be mapped to a specific Veza attribute or custom attribute
Columns can be ignored after uploading the file
At minimum, you must map columns for unique identifiers (such as user ID or Name) for each entity type you plan to import (e.g., Users, Groups, Roles, or Employees).
To create a new CSV integration:
Go to Integrations > Add Integration
Choose Upload CSV from the options
Upload a logo for the provider (optional) - This will appear throughout the Veza UI, including in Graph search, to identify the integration and entity types.
Enter an integration name
Use a title that uniquely identifies this integration source
Avoid generic terms like "application" or "CSV"
If you have multiple environments, consider including that in the name
Select a data source template (currently supports Application and HR Systems)
Enter template-specific information (fields will vary based on the selected template):
For Application Template:
Name: A unique identifying name for this specific application instance (e.g., "Marketing CRM - Prod", "HR Portal - Dev").
Type: The general category or system type (e.g., "CRM", "DevOps Tool"). In Veza, the type appears as a prefix on entity names, e.g., CRM User, DevOps Tool Role.
For HR System Template:
Name: A unique identifying name for the HR system (e.g., "Workday - Production", "HR Portal - Dev")
Type: The type of HR system (e.g., "HRIS", "ATS", "Benefits")
URL: The URL of the HR system
Note: Naming is critical for easy search in Veza. For Applications, the Type enables searching for all entities of that category, while the Name differentiates between multiple instances of the same system type.
Upload the CSV file - Veza will read the column headers and show them for mapping
Map your columns to Veza attributes (see Column Mapping section)
Click Create Integration to trigger extraction and parsing
The CSV integration allows you to map columns in your file to specific Veza attributes. After uploading the CSV, Veza automatically detects all columns and presents them for mapping.
For each column, you can:
Select to include or exclude the column
Select the target entity type for mapping (available entities depend on the selected template)
Select the specific entity attribute to map to (only attributes applicable to the selected entity type will be shown)
For custom properties, specify a name and data type
Example: Mapping CSV columns to Application template entities and attributes
For more examples and detailed mapping patterns, see CSV Import Examples.
For all entities, an ID or Name is required. If ID is not provided, Name is automatically used as the unique identifier for the entity. Both are also supported.
The available entity types and attributes depend on the template you select. Each template supports different entity types.
Application Template Entities
User Attributes
ID
Unique identifier for the user
Name
Display name for the user
Is Active
Boolean indicating if the user is active
Created At
Timestamp when the user was created
Last Login At
Timestamp of the user's last login
Deactivated At
Timestamp when the user was deactivated
Password Last Changed At
Timestamp of the last password change
User's email address
Custom Properties
Map any column to a custom user property (type varies)
Group Attributes
ID
Unique identifier for the group
Name
Name of the group (supports list format)
Created At
Timestamp when the group was created
Custom Properties
Map any column to a custom group property (type varies)
Role Attributes
ID
Unique identifier for the role
Name
Name of the role (supports list format)
Permissions
Permissions assigned to the role (supports list format)
Custom Properties
Map any column to a custom role property (type varies)
HR System Template Entities
Employee Attributes
ID
Unique identifier for the employee
Name
Employee name (typically full name)
Employee Number
Alternative employee identifier
Company
Employee's company
First Name
Employee's first name
Last Name
Employee's last name
Preferred Name
Employee's preferred name
Display Full Name
Complete display name
Canonical Name
Standardized name format
Username
Employee's username
Primary email address
IDP ID
Identity Provider ID
Personal Email
Personal email address
Home Location
Employee's home location
Work Location
Employee's work location
Cost Center
Cost center assignment
Department
Employee's department
Managers
Employee's manager(s) (supports list format)
Groups
Group memberships (supports list format)
Employment Status
Current employment status
Is Active
Boolean indicating active employment
Start Date
Employment start date
Termination Date
Employment end date
Job Title
Employee's job title
Employment Types
Types of employment (supports list format)
Primary Time Zone
Employee's primary time zone
Custom Properties
Map any column to a custom employee property (type varies)
The following values are treated as TRUE
(case-insensitive):
true
, t
yes
, y
1
active
enabled
Any other value is treated as FALSE
.
Veza supports multiple timestamp formats:
2023-04-12T15:34:56.123456789Z
(RFC3339 with nanoseconds)
2006-01-02T15:04:05Z07:00
(RFC3339)
20060102150405
(Active Directory format)
2006-01-30 15:04:05Z07:00
2006-01-30 15:04:05
2006-01-30
2006-01-30T
2006-01-30T15:04:05
2006-01-30T15:04:05Z
1/2/2006
(MM/DD/YYYY format)
Timestamps are considered unset when the value is never
, null
, none
, false
, 0
or empty. Invalid timestamps will result in a processing error.
For attributes that support lists (like Role Name List, and Group Name List), values should be comma-separated within the cell and the list enclosude by quotes "
.
Incremental updates are not supported; you must submit the complete data set for each update.
⚠️ Warning: Configuration Updates
When updating the configuration fields or mappings for an existing CSV integration, changes are not reflected until after the next CSV Upload is processed. For example when updating the HRIS Type field, changing this field alone and saving the integration will not immediately change the type Veza system. Then new type will not be availble in graph or in other features such as Lifecycle Management (LCM) until after the next upload is processed.
Required Process for changing configurations:
Update the configuration fields in the integration settings
Re-upload the complete CSV file to apply the changes
Allow the Veza platform to complete the extraction and parse process
Verify that entity names are consistent across all Veza components
Find the CSV integration on the Veza Integrations page
Click on the integration name to view details
Under Data Sources, click Upload CSV
Select your updated CSV file and click Upload
Find the CSV integration on the Veza Integrations page
Click on the integration name to view details
Click Edit
In the integration configuration, click Edit above the table of current mappings
Modify your column mappings as needed
Click Save Configuration to apply the changes
Veza provides a limited privilege "CSV Manager" role for users that need permission to manage a CSV integration, but should not have access to other functionality in Veza. Users with this role can:
Create new CSV integrations
Upload new CSV data
Edit existing CSV integrations, including delete
This role can be combined with Teams to further limit a user's scope. When a user with the CSV manager role is added to a non-root team, they can only manage CSV integrations assigned to their team.
Multiple Rows per Entity: If the same entity (user, group, or role) appears in multiple rows, Veza processes them as follows:
Properties are set based on the first row where the entity ID (or Name if it is being used as the unique ID) appears
For subsequent rows with the same identifier, only relationship assignments are processed (for example user to group, or user to role)
Role permissions are the only properties that are additive across all rows
Ignored Columns: Columns that are not mapped (unchecked) are ignored during processing
Additional Columns: CSV files can contain more columns than are mapped - extra columns are ignored
Entity Identifiers: Every entity type (user, group, role) requires an ID or Name (or both). If only one is provided, the same value is used for both fields and must be unique.
Identity Mapping: When using the Application template, you can choose the column(s) used to connect external identities.
Supported entity types and more information about the Veza-Azure connector.
Veza to parse service and resource metadata using Microsoft Graph APIs, connecting as an Enterprise Application granted read-only permissions. Veza creates entities in the to represent the discovered tenants, subscriptions, resources, and identities.
You can interact with the catalog using Veza's interfaces, or get immediate insights using built-in reporting queries.
See the sections in this document for more information about the supported entity types for Microsoft Azure:
Veza can collect and display risk information for users in your Azure AD tenant. This includes the user's risk level, risk state, risk details, and when the risk status was last updated. This feature requires a Microsoft Entra ID P2 license and the IdentityRiskyUser.Read.All
permission for the Microsoft Graph API.
The following risk-related properties are collected:
riskLevel
: Indicates the level of risk for the user (low, medium, high, hidden, none)
riskState
: Shows the current state of the user's risk (none, confirmedSafe, remediated, dismissed, atRisk, confirmedCompromised)
riskDetail
: Provides detailed information about the risk state
riskLastUpdatedDateTime
: Indicates when the user's risk status was last updated
This information can help identify and monitor potentially compromised or risky user accounts in your Azure AD environment.
The integration supports Azure CosmosDB NoSQL databases, for visibility into database accounts, role assignments, and access patterns. The integration discovers:
CosmosDB Account Services
Database Accounts
SQL Role Definitions and Assignments
Effective Permissions
Database Instances
CosmosDB extraction is disabled by default. To enable this functionality:
When configuring the Azure integration, select "Limited services" under Limit Services
In the services selection list, choose "Azure CosmosDB" along with all other services you want to extract.
Authorization & Access
CosmosDB uses three authorization mechanisms:
Role-Based Access Control (RBAC) with Azure Active Directory
Primary/Secondary Keys
Resource Tokens
Veza focuses on RBAC permissions to show connections between Azure AD identities and CosmosDB resources. This provides visibility into:
Which users and groups have access to CosmosDB accounts and databases
How these permissions are assigned through role memberships
The effective permissions users have on CosmosDB resources
Scope & Limitations
Only CosmosDB NoSQL (core) API accounts are supported at present
Container-level resources and permissions are not included in extraction
Database-level users and permissions typically used for application end-users are not extracted
Required Permissions
The Veza service principal needs the Cosmos DB Account Reader
role for extraction, which provides access to:
Microsoft.DocumentDB/databaseAccounts/read
Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/read
Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/read
Microsoft.DocumentDB/databaseAccounts/databases/read
These permissions allow Veza to discover core CosmosDB resources. No additional Microsoft Graph API permissions are required beyond the standard set used for Azure integration.
Azure Subscription
Azure Tenant
Azure Management Group
Azure Resource Group
Azure Managed Identity
Azure Role
Azure Classic Administrator
Azure Deny Assignment
Azure Role Assignment
Azure RBAC Effective Permission
Azure Key Vault
Azure Infrastructure Service
Azure Virtual Machine
Azure Virtual Network
Network Security Group
Network Interface Card
Azure Subnet
AzureAD entities appear on left in Authorization Graph results, and can have federated access (cross-service connections) to external resources such as Snowflake tables or AWS S3 buckets.
If Veza cannot automatically detect your single sign-on configuration, you can add a to correlate Azure AD users with local accounts in other integrations.
Azure AD Domain
Azure AD User
Azure AD Group
Azure AD Role
Azure AD Enterprise Application
Azure AD App Role
Azure AD Effective Permission
An Azure AD Premium P1/P2 license is required to gather Azure AD User last login dates. The Veza integration must also have the AuditLog.Read.All
graph permission.
If your organization uses Azure AD as an identity provider, but no other services, you might want to to skip extracting unnecessary resources.
To enable optional discovery of SharePoint Online, you will need to upload a valid LDAP certificate and ensure the service account has the required API permissions. See for more details.
SharePoint Online (service)
SharePoint User
SharePoint Group
SharePoint Site
SharePoint Library
SharePoint Folder
SharePoint Effective Permission
Azure Blob Service
Azure Blob Container
Datalake Filesystem
Datalake Directory
No additional configuration is needed to discover Azure Data Lake Storage (ADLS). You can enable or disable ADLS as a data source using the provider configuration menu for the Azure tenant Select Services to Enable.
ADLS Gen. 1 is not supported. The max directory extraction depth is 2 levels.
Storage accounts have new properties: allowBlobPublicAcccess
, allowSharedKeyAccess
(default value null
is equivalent to false), is_adls_gen2_enabled
Storage containers now indicate if publicAccess
is enabled
If a filesystem or directory has an access control list, the full ACL string is shown as a property when viewing node details
To collect granular authorization for each Azure SQL database, you will need to create a local SQL user that Veza can use to execute read-only queries. See for instructions to create a SQL database user for Veza.
SQL Server Service
SQL Server Instance
SQL Server Login
SQL Server Role
Microsoft Intune requires .
Intune Managed Device
Intune Role Assignment
Intune Role
Intune Resource Action
The Azure integration can discover teams, channels, and guest users for Microsoft Teams, providing visibility into your Azure AD user and group permissions on shared resources, and access for external organization users.
Required permissions:
Team.ReadBasic.All
TeamMember.Read.All
Channel.ReadBasic.All
ChannelMember.Read.All
User.Read.All
Supported entities:
Team
Channel
External Organization User
Represents a team or channel member from an external organization, which might not exist as a discovered Azure AD User.
Note that the following metadata is not available from the current version of Graph API:
Membership Settings For Shared And Private Channels
Public Channel Moderators
Configuring the Veza integration for Microsoft Azure
Veza connects to Azure tenants using an App Registration granted read-only permissions for the Microsoft Graph API. You will need an app client ID, client secret, and the Azure tenant ID to enable the connection in Veza.
Adding an Azure tenant will parse all its services, including Azure AD as an Identity Provider (IdP), and Microsoft SharePoint Online as an additional data source.
See Notes & Supported Entities for more details and supported Microsoft services.
To integrate with Microsoft Azure, you will need to create an App Registration with read-only permissions for the services to discover. You will enter the App Registration's credentials when adding the Veza integration:
From your Azure tenant profile, navigate to App Registrations > New Registration
Name the new application (for example Veza Integration
)
Select Accounts in this organizational directory only (tenantname
only - Single tenant), and click "Register" to save your changes.
For more information, see the full instructions from Microsoft.
With the new app registration selected, choose Manage > API Permissions and click "Add a Permission"
Select Microsoft Graph. Click "Application Permissions" and add the permissions:
Application.Read.All
AuditLog.Read.All
(Required to collect last login date for users)
CustomSecAttributeAssignment.Read.All
(Required to gather custom security attributes)
DeviceManagementManagedDevices.Read.All
(Required to collect Intune devices)
DeviceManagementRBAC.Read.All
(Required to collect Intune roles)
Device.Read.All
(Required to collect Entra ID devices)
Directory.Read.All
Files.Read.All
Group.Read.All
GroupMember.Read.All
IdentityRiskyUser.Read.All
InformationProtectionPolicy.Read.All
(Required for sensitivity labels extraction)
Policy.Read.All
(Used to evaluate Conditional Access policies)
PrivilegedAccess.Read.AzureAD
(Required for PIM roles and groups)
Reports.Read.All
(Required when connecting to SharePoint Online)
RoleManagement.Read.All
(Required for PIM roles and groups)
Sites.Read.All
User.Read.All
Enable "Grant Admin Consent" on the API permissions screen.
The delegated
User.Read
permission should be granted automatically. If it isn't present, add the permission from Add a Permission > Microsoft Graph > Delegated Permissions.
Additional API permissions are required if you plan to connect to SharePoint Online. To grant read-only access for Veza, choose SharePoint on the app registration "Add a Permission" screen, and grant the application permissions:
User.Read.All
Sites.Read.All
The app registration will also need the Reports.Read.All
Microsoft Graph permission from the previous step.
For a complete overview and visual guide, see the official Azure documentation on configuring client application access.
Enable audit log parsing for activity-based extraction
Audit log extraction for SharePoint is provided as an Early Access feature. Please contact your support team to enable this configuration option.
When audit log extraction is enabled for an Azure tenant, Veza will gather audit logs using the Office 365 Management Activity API, and only connect to SharePoint Online for a full update when changes occur.
Enabling activity-based scheduling should help reduce lag between extractions, reducing the total time required to ingest large SharePoint environments. Please see below for the requirements and optional steps to enable:
Auditing must be enabled in the Microsoft Purview compliance portal
Go to https://compliance.microsoft.com
and sign in. Click Audit.
If auditing isn't enabled, a banner will prompt to Start recording user and admin activity.
Click the banner to enable auditing, and wait for the changes to propogate.
Alternatively, use the Exchange Power Shell:
Set-AdminAuditLogConfig -UnifiedAuditLogIngestionEnabled $true
The Enterprise App used by Veza must have ActivityFeed.Read
permission on the Office 365 Management API:
When adding permisions to Enable SharePoint integration (optional), add the additional permission for the app registration: API permissions → Office 365 Management APIs → Application permissions → ActivityFeed.Read
After you finish integrating the Azure tenant, enable audit log extraction under Veza Configuration → Cloud Providers. The audit log status column should update to show that extraction is enabled:
From Certificates & Secrets, click "New Client Secret" and select an expiration date. Click "Add" to generate a new client secret value and ID.
Copy the client secret Value
, which you'll use to configure the integration within Veza.
Open the Overview screen for the new application. Copy the Application (client) ID
.
Copy the value for Directory (tenant) ID.
You will need both values when adding the provider to Veza.
Reader
role for the Veza appFor each Azure subscription to discover, you will need to add the new Veza app as a Reader. If you don't have any subscriptions (as will be the case if only integrating with Azure AD as an identity provider), this step is optional.
From the Azure Subscription, select Access control (IAM)
Click on "+ Add" -> "Add role assignment"
Select "Reader" as the role
Select User, Group, or Service Principal" under Assign Access To
Select or search for the Veza app, and assign it the "Reader" role
(Optional) Assign the "Reader and Data Access" role to discover storage accounts and keys.
Save your changes
To discover Azure CosmosDB resources, assign the Cosmos DB Account Reader
role to the Veza app:
Navigate to your CosmosDB account in Azure Portal
Select Access control (IAM)
Click "+ Add" -> "Add role assignment"
Select "Cosmos DB Account Reader" as the role
Choose "User, Group, or Service Principal" under Assign access to
Search for and select the Veza app
Save the role assignment
This role provides the minimum required permissions to discover CosmosDB accounts, SQL role definitions, SQL role assignments, and databases. See Azure CosmosDB Support for more details.
To connect to Azure Key Vault, a Key Vault access policy must grant the Veza app List
permissions on Keys, Secrets, and Certificates. To create this policy:
On the Key Vaults services page, choose the vault Veza will discover.
Select Access policies.
Click + Create.
Select List under Key Permissions, Secret permissions, and Certificate permissions.
Click Next.
Search and select the Veza app as the Authorized Application.
Click Next, Next, and Create to save the policy.
After completing the steps above, you can add the credentials and enable discovery by navigating to Veza Integrations > Add Integration. Choose Azure as the Integration Type.
Insight Point
Leave default unless using an Insight Point
Name
Friendly name for the account
Tenant ID
Azure tenant ID to discover
Application ID
App UUID
Client Secret Value
App client secret value
Auth Certificate
Optional certificate for connecting to SharePoint
Auth certificate password
Password for SharePoint certificate (optional)
Limit Azure services extracted
Choose individual services to discover (See below)
Domains
Comma-separated list of domains to discover, ignoring any others
Dynamics 365 CRM Environments
Optional list of Dynamics 365 CRM environments to discover, e.g. https://org50e57fbd.crm.dynamics.com
.
Dynamics 365 ERP Environments
Optional list of Dynamics 365 ERP environments to discover, e.g. https://company.operations.dynamics.com
.
Azure Gov Cloud
Azure Government Cloud region where the tenant is located (currently supported: "None," "US").
Extract PIM Eligibility
Optionally discover temporary role assumptions based on Privileged Identity Management scheduling rules.
Veza will gather metadata for all discovered Azure AD (Entra ID) domains for the tenant. Use the Domains list to only include the specified domains in the extraction.
Additional options on the "add provider" panel enable limits on the data sources and identities extracted:
Gather disabled users
Whether to include disabled users
Gather guest users
Whether to parse identity metadata for Azure AD Guest users
Gather personal sites
Whether to include personal SharePoint sites
Data source allow/deny lists
Indicate resources to ignore by name or *
Custom Properties
Indicate to gather
If the initial connection fails with the status "Insufficient privileges to complete the operation," validate that the correct API Permissions are granted, and are granted with the type application and not delegated.
You can connect to SharePoint Online by uploading a .PFX certificate generated for app-only access, and optionally providing a password for the certificate. For information about generating the certificate, please see the Microsoft documentation. You will also need to update the permissions granted the Veza app to include User.Read.All
and Sites.Read.All
, as outlined in the SharePoint setup instructions.
Veza can optionally gather and show custom security attributes on Azure AD objects. The custom properties to discover must be identified by name and type in the Azure tenant configuration.
An Azure AD Premium P1 or P2 license is required to use Custom Attributes for Azure AD. The Enterprise Application used by Veza must have the
CustomSecAttributeAssignment.Read.All
Microsoft Graph permission.
To enable custom property extraction:
Add or edit a new Azure cloud provider configuration.
On the provider configuration modal, click + Add Custom Property.
Provide the type
and name
of the custom property.
For Azure AD, the name is the attribute name
of the custom security attribute. The data type is a property of the custom security attribute (Boolean, Integer, or String).
For example: (EngineeringCertification
, Boolean
), (MarketingLevel
, String
).
If the custom properties are part of an Attribute Set, include the attribute set name as a prefix, for example <AttributeSetName>_<AttributeName>
.
Save the configuration. The custom attributes will be collected the next time the data source is parsed.
Veza supports Azure Privileged Identity Management (PIM) for both roles and groups. For more information about PIM support, see the Azure AD documentation.
To enable PIM extraction:
Ensure the required permissions are granted to the Veza app:
RoleManagement.Read.All
PrivilegedAccess.Read.AzureAD
Group.Read.All
When configuring the Azure integration, set the "Extract PIM Eligibility" option to "Yes"
Save the configuration. PIM assignments will be collected during the next extraction
The Microsoft Azure integration includes optional support for Microsoft Dynamics 365. This integration allows Veza to discover connections between Azure AD Users, Groups, and Service Principals, and the permissions they can assume within Dynamics 365 environments.
Veza supports both Dynamics 365 CRM and Dynamics 365 ERP environments:
Dynamics 365 CRM - Customer relationship management environments (URLs such as https://orgXXXXXXX.crm.dynamics.com
)
Dynamics 365 ERP - Enterprise resource planning environments (URLs such as https://xxx.operations.dynamics.com
)
For full setup instructions and supported entities, see the specific integration guides.
The Microsoft Azure integration includes optional support for Intune, including Managed Devices and Role Definitions. Veza discovers and shows connections between Azure AD Users and Groups, and the Devices and Roles to which they are assigned in Intune.
In order to extract Intune, Veza requires the following Application Permissions for the Microsoft Graph API:
DeviceManagementManagedDevices.Read.All
DeviceManagementRBAC.Read.All
To discover Microsoft Teams resources, including teams, channels, and relationships to external organization users, Veza requires the additional Graph API permissions:
Team.ReadBasic.All
TeamMember.Read.All
Channel.ReadBasic.All
ChannelMember.Read.All
User.Read.All
Enabling PostgreSQL database discovery for the Azure integration.
The Azure integration includes built-in support for PostgreSQL on Azure Database. After enabling the feature, you can use search, insights, and workflows to:
Find principles with permissions on PostgreSQL Servers, Databases, Tables, and Schemas.
Identify principles with privileged permissions (such as Delete
) on PostgreSQL entities
This document provides steps to create the required database user, and configure the integration. See notes and supported entities for more details.
To enable the connection between Veza and Azure PostgreSQL, you will need to:
Deploy an Insight Point in the same virtual network as the databases to discover, or a peered virtual network.
Using an Insight Point is recommended when connecting to production environments. For testing purposes, you can use the internal Insight Point, assuming that firewall rules allow communication with Veza.
Create local PostgreSQL user(s) Veza can use to log in.
Enable PostgreSQL discovery by creating an Azure integration or editing an existing configuration.
Create a PostgreSQL user for Veza
For each server you want to discover, create a local user with read-only permissions on the required system tables. All Veza PostgreSQL users for different servers within a single Azure tenant must share the same username and password.
Log in as an administrator using your client of choice, and create a user with the required permissions. Replace [db_user]
with the desired username:
CREATE USER [db_user] WITH LOGIN PASSWORD '[password]';
GRANT SELECT ON
pg_catalog.pg_user,
pg_catalog.pg_group,
pg_catalog.pg_namespace,
pg_catalog.pg_class,
pg_catalog.pg_database,
pg_catalog.pg_auth_members,
pg_catalog.pg_attribute,
pg_catalog.pg_roles,
pg_catalog.pg_trigger,
pg_catalog.pg_proc,
pg_catalog.pg_collation,
pg_catalog.pg_conversion,
pg_catalog.pg_type,
pg_catalog.pg_event_trigger,
pg_catalog.pg_extension,
pg_catalog.pg_foreign_data_wrapper,
pg_catalog.pg_foreign_table,
pg_catalog.pg_language,
pg_catalog.pg_largeobject_metadata,
pg_catalog.pg_operator,
pg_catalog.pg_opclass,
pg_catalog.pg_opfamily,
pg_catalog.pg_policy,
pg_catalog.pg_publication,
pg_catalog.pg_sequence,
pg_catalog.pg_foreign_server,
pg_catalog.pg_statistic_ext,
pg_catalog.pg_subscription,
pg_catalog.pg_tablespace,
pg_catalog.pg_ts_config,
pg_catalog.pg_ts_dict,
pg_catalog.pg_parameter_acl
TO [db_user];
Explicitly granting the pg_catalog
permissions is required for Single server deployments. When configuring the user for Azure Flexible Servers, new users will already have access to pg_catalog
tables, and a no privileges were granted
warning will appear.
You will enter the local username and password when configuring the Azure integration on the Veza platform.
Troubleshooting
To verify that new user can read the required tables, you can log in as the new user ( \c postgres [db_user]
in psql) and run the following script:
DO $$
DECLARE
result integer;
BEGIN
SELECT 1 FROM pg_catalog.pg_user LIMIT 1 INTO result;
SELECT 1 FROM pg_catalog.pg_group LIMIT 1 INTO result;
SELECT 1 FROM pg_catalog.pg_namespace LIMIT 1 INTO result;
SELECT 1 FROM pg_catalog.pg_class LIMIT 1 INTO result;
SELECT 1 FROM pg_catalog.pg_database LIMIT 1 INTO result;
SELECT 1 FROM pg_catalog.pg_auth_members LIMIT 1 INTO result;
SELECT 1 FROM pg_catalog.pg_attribute LIMIT 1 INTO result;
SELECT 1 FROM pg_catalog.pg_roles LIMIT 1 INTO result;
SELECT 1 FROM pg_catalog.pg_trigger LIMIT 1 INTO result;
SELECT 1 FROM pg_catalog.pg_proc LIMIT 1 INTO result;
SELECT 1 FROM pg_catalog.pg_collation LIMIT 1 INTO result;
SELECT 1 FROM pg_catalog.pg_conversion LIMIT 1 INTO result;
SELECT 1 FROM pg_catalog.pg_type LIMIT 1 INTO result;
SELECT 1 FROM pg_catalog.pg_event_trigger LIMIT 1 INTO result;
SELECT 1 FROM pg_catalog.pg_extension LIMIT 1 INTO result;
SELECT 1 FROM pg_catalog.pg_foreign_data_wrapper LIMIT 1 INTO result;
SELECT 1 FROM pg_catalog.pg_foreign_table LIMIT 1 INTO result;
SELECT 1 FROM pg_catalog.pg_languageLIMIT 1 INTO result;
SELECT 1 FROM pg_catalog.pg_largeobject_metadata LIMIT 1 INTO result;
SELECT 1 FROM pg_catalog.pg_operator LIMIT 1 INTO result;
SELECT 1 FROM pg_catalog.pg_opclass LIMIT 1 INTO result;
SELECT 1 FROM pg_catalog.pg_opfamily LIMIT 1 INTO result;
SELECT 1 FROM pg_catalog.pg_policy LIMIT 1 INTO result;
SELECT 1 FROM pg_catalog.pg_publication LIMIT 1 INTO result;
SELECT 1 FROM pg_catalog.pg_sequence LIMIT 1 INTO result;
SELECT 1 FROM pg_catalog.pg_foreign_server LIMIT 1 INTO result;
SELECT 1 FROM pg_catalog.pg_statistic_ext LIMIT 1 INTO result;
SELECT 1 FROM pg_catalog.pg_subscription LIMIT 1 INTO result;
SELECT 1 FROM pg_catalog.pg_tablespace LIMIT 1 INTO result;
SELECT 1 FROM pg_catalog.pg_ts_config LIMIT 1 INTO result;
SELECT 1 FROM pg_catalog.pg_ts_dict LIMIT 1 INTO result;
SELECT 1 FROM pg_catalog.pg_parameter_acl LIMIT 1 INTO result;
RAISE NOTICE 'All queries were successful';
EXCEPTION
WHEN OTHERS THEN
RAISE NOTICE 'A read query failed';
END $$;
See How to create database users in Azure Database for PostgreSQL for more details.
Log in to Veza as an administrator to finish configuring the integration. You can enable PostgreSQL for an existing integration, or when creating one.
In Veza, open the Integrations page..
To add an integration, Click Add Integration > Azure and complete the steps to configure Microsoft Azure.
To modify an existing integration, find the provider on the main list and click Edit.
From the Insight Point dropdown, pick the one you created for connecting to the PostgreSQL server.
Go to the Limit Services tab.
If you have already limited the services to discover, remember to enable Azure PostgreSQL.
Scroll to the bottom and enter the username and password for the PostgreSQL user.
Optionally, enter a comma-separated list of databases and schema to allow or deny. If the allow list is populated, only those resources are discovered. If the deny list is populated, the specified resources are skipped.
The integration supports flexible server and single server deployments. Azure Arc enabled PostgreSQL is not supported.
Veza discovers the following PostgreSQL entities and attributes:
PostgreSQL User
An individual account or identity, assigned specific permissions to control access to databases, schemas, tables, and other database objects.
ID
Provider ID
Datasource ID
Is Super User
Can Create DB
Can Initiate Streaming Replication
Can Bypass All Row Level Security
External Account Type
PostgreSQL Database
A logical container within an Azure PostgreSQL service instance that stores data, organized into tables. Several databases can exist within a single PostgreSQL instance, each serving a distinct purpose or application.
Name
ID
Provider ID
Datasource ID
Owner
Server ID
PostgreSQL Group
Represents a logical grouping of database users or roles. Groups manage access control and permissions by assigning specific privileges to several users with common roles.
Name
ID
Provider ID
Datasource ID
PostgreSQL Instance
A PostgreSQL instance in Azure represents a dedicated, managed PostgreSQL database server hosted on Azure infrastructure. Each instance has its own connection endpoint, configurations, and access controls.
Name
ID
Provider ID
Datasource ID
Server ID
Azure Tenant ID
PostgreSQL Schema
A container within a PostgreSQL database that helps organize database objects, such as tables and views. Schemas logically group and manage database objects, making it easier to maintain and navigate a complex database structure.
Name
ID
Provider ID
Datasource ID
Owner
PostgreSQL Table
A fundamental database object that stores structured data in rows and columns, allowing for efficient querying and manipulation of data.
Name
ID
Provider ID
Datasource ID
Owner
PostgreSQL Procedure
A fundamental database object that allowing user to write and execute functions written in supported languages, such as C.
Name
ID
Provider ID
Datasource ID
Owner
PostgreSQL Trigger
A fundamental database object that automatically executes a particular function whenever a certain type of operation is performed.
Name
ID
Provider ID
Datasource ID
Owner
PostgreSQL Permissions
Veza creates additional entities to represent capabilities users can have on PostgreSQL resources:
PostgreSQL Privilege: Configured permissions, shown in System query mode.
PostgreSQL Effective Permission: Effective permissions, shown in Effective query mode.
Configuring the Veza integration for PostgreSQL
The Veza PostgreSQL integration provides visibility into your PostgreSQL database security posture by discovering resources, permissions, and access controls. This integration enables security teams and database administrators to:
Map and monitor access across databases, schemas, tables, and other database objects
Analyze role-based access control (RBAC) including privilege inheritance
Identify users and groups with elevated privileges
Track permission delegation through grant options
Monitor administrative capabilities and sensitive operations
For managed PostgreSQL instances, see Azure PostgreSQL or RDS PostgreSQL documentation.
Before configuring the integration, you must have:
Network connectivity from Veza to your PostgreSQL server via:
A deployed Insight Point in your network (recommended for production)
Direct connection using Veza's internal Insight Point (suitable for testing)
A PostgreSQL service account with appropriate permissions
PostgreSQL server connection information (hostname, port, and database name)
The integration requires a PostgreSQL user with SELECT privileges on system catalog tables. To create a properly-scoped service account:
Log in to your PostgreSQL server with an administrator account:
psql -U postgres
Create a dedicated service account with a strong password:
CREATE ROLE veza_service WITH LOGIN PASSWORD 'your-strong-password-here';
Grant minimum required permissions:
-- Grant read access to required system catalogs
GRANT SELECT ON
pg_catalog.pg_user,
pg_catalog.pg_group,
pg_catalog.pg_namespace,
pg_catalog.pg_class,
pg_catalog.pg_database,
pg_catalog.pg_auth_members,
pg_catalog.pg_attribute,
pg_catalog.pg_roles,
pg_catalog.pg_trigger,
pg_catalog.pg_proc,
pg_catalog.pg_collation,
pg_catalog.pg_conversion,
pg_catalog.pg_type,
pg_catalog.pg_event_trigger,
pg_catalog.pg_extension,
pg_catalog.pg_foreign_data_wrapper,
pg_catalog.pg_foreign_table,
pg_catalog.pg_language,
pg_catalog.pg_largeobject_metadata,
pg_catalog.pg_operator,
pg_catalog.pg_opclass,
pg_catalog.pg_opfamily,
pg_catalog.pg_policy,
pg_catalog.pg_publication,
pg_catalog.pg_sequence,
pg_catalog.pg_foreign_server,
pg_catalog.pg_statistic_ext,
pg_catalog.pg_subscription,
pg_catalog.pg_tablespace,
pg_catalog.pg_ts_config,
pg_catalog.pg_ts_dict,
pg_catalog.pg_parameter_acl
TO veza_service;
Verify the service account permissions:
-- Connect as service account
\connect - veza_service
-- Test access to system catalogs
SELECT * FROM pg_catalog.pg_roles LIMIT 1;
In Veza, go to the Integrations page
Click Add Integration and search for PostgreSQL
Click Next to add an integration
Configure the following settings:
Insight Point: Choose whether to use the default data plane or a deployed Insight Point
Name: A friendly name to identify the unique integration
Host: The hostname or IP address of the PostgreSQL server.
Port: The port number on which the PostgreSQL server is listening (default is usually 5432).
Username: The username to authenticate with the PostgreSQL server.
Password: The password associated with the provided username.
Database: The name of the specific database to connect to.
Click Create Integration to save the configuration
PostgreSQL (since version 8.1) implements all users and groups as roles, using the following model:
The login attribute determines the role type: "true" for users, "false" for groups
Roles can receive privileges either directly or through inheritance
Users can join groups as members, inheriting all group privileges
Roles can grant their privileges to other roles. The receiving role (grantee) inherits these privileges when their inherit attribute is "true"
Veza models these PostgreSQL resources and access controls using the following graph entities:
PostgreSQL Instance
The server instance that hosts databases and manages authentication.
server_id
The unique identifier for the PostgreSQL server
azure_tenant_id
The Azure tenant ID for Azure-hosted PostgreSQL instances
aws_account_id
The AWS account ID associated with the PostgreSQL instance, if applicable
aws_account_name
The name of the AWS account associated with the PostgreSQL server instance
PostgreSQL User
Represents a role with login privileges.
is_super_user
Indicates whether the user has superuser privileges
can_create_db
Specifies if the user can create new databases
can_create_role
Indicates if the user has the ability to create roles
can_initiate_streaming_replication
Defines if the user can initiate streaming replication
can_bypass_all_row_level_security
Specifies whether the user can bypass row-level security
external_account_type
Describes the type of external account associated with the user, if any
iam_connect_enabled
Indicates if AWS IAM authentication is enabled for the user
aws_account_id
Specifies the AWS account ID if applicable
aws_account_name
Provides the name of the AWS account associated with the user
PostgreSQL Group
Represents a role without login privileges, used for grouping permissions.
is_super_group
Indicates whether the group has superuser privileges
can_create_db
Specifies if the group can create new databases
can_create_role
Indicates if the group has the ability to create roles
can_initiate_streaming_replication
Defines if the group can initiate streaming replication
can_bypass_all_row_level_security
Specifies whether the group can bypass row-level security
aws_account_id
Specifies the AWS account ID associated with the group, if applicable
aws_account_name
Provides the name of the AWS account associated with the group
The integration supports the following database objects:
PostgreSQL Database
A collection of schemas and database-wide configurations.
id
A unique identifier for the PostgreSQL database
server_id
The ID of the server where the database resides
name
The name of the PostgreSQL database
owner
The owner of the PostgreSQL database
raw_privileges
The raw privilege information for the database, if available
PostgreSQL Schema
A namespace that contains named database objects such as tables, views, and functions.
id
A unique identifier for the schema
server_id
The ID of the server where the schema is hosted
database
The name of the database containing this schema
name
The name of the schema
owner
The owner of the schema
raw_privileges
The raw privilege information for the schema, if available
PostgreSQL Table
Represents tables, views, and materialized views, grouped together as they share similar security properties.
id
A unique identifier for the table
server_id
The ID of the server where the table is hosted
database
The name of the database containing the table
schema
The schema name containing the table
name
The name of the table
owner
The owner of the table
raw_privileges
The raw privilege information for the table, if available
PostgreSQL Trigger
Represents functions and procedures, grouped due to similar security characteristics.
id
A unique identifier for the trigger
server_id
The ID of the server where the trigger is hosted
database
The name of the database containing the trigger
schema
The schema name containing the trigger
table
The name of the table associated with the trigger
name
The name of the trigger
owner
The owner of the trigger
raw_privileges
The raw privilege information for the trigger, if available
PostgreSQL uses a granular privilege system that controls access to different types of database objects. Privileges can be:
Granted directly to roles
Inherited through role membership
Granted with GRANT OPTION, allowing the recipient to grant the privilege to others
Veza models PostgreSQL's native privilege system to generate Effective Permissions, showing the cumulative access granted by a role's directly-assigned and inherited access. These effective permission types include:
Data Read: Abilities to read or view data
Data Write: Abilities to create or modify data
Data Delete: Abilities to remove data
Metadata Write: Abilities to modify database structures and permissions
Non Data: Special privileges like USAGE or CONNECT that are not related to data.
Example Privilege to Effective Permission Mapping
Database privileges control basic access and administrative capabilities. Example mappings include:
CREATE
C
Metadata Create
Create schemas
TEMPORARY
T
Data Read
Create temporary tables
CONNECT
c
Non Data
Basic connection access
Schema privileges determine access to contained objects:
USAGE
U
Non Data
Access objects in schema
CREATE
C
Metadata Create
Create new objects
ALTER
C
Metadata Write
Modify schema
Table privileges provide granular control, including column-level access.
SELECT
r
Data Read
Yes
Read data
INSERT
a
Data Write
Yes
Add data
UPDATE
w
Data Write
Yes
Modify data
DELETE
d
Data Delete
No
Remove rows
TRUNCATE
D
Data Delete
No
Remove all data
REFERENCES
x
Non Data
No
Reference in constraints
TRIGGER
t
Non Data
No
Create triggers
Permission Inheritance
Veza analyzes the following factors when determining effective permissions:
Default Privileges for Object Owners: PostgreSQL automatically grants some privileges to object owners:
Database owners: C*T*c*
(Create, Temporary, Connect)
Schema owners: U*C*
(Usage, Create)
Table owners: a*r*w*d*D*x*t*
(All table privileges)
Public Privileges: PostgreSQL uses the PUBLIC role as a way to apply privileges to all other roles in the system. For some database objects, PostgreSQL assigns default public privileges, which allows all users to perform the specified actions. Object owners can revoke these default privileges. Administrators can adjust these defaults with the ALTER DEFAULT PRIVILEGES
command.
DATABASE
Tc
DOMAIN
U
FUNCTION
, PROCEDURE
X
LANGUAGE
U
TYPE
U
Role Membership: When a role is granted membership in another role, it inherits all privileges of that role. Veza tracks these inheritance chains to show the resulting effective permissions.
Grantable Privileges: For privileges granted WITH GRANT OPTION
, Veza represents a "Grantable" version of the privilege node (e.g., "GrantableSelect"), indicate that a user can grant or revoke a specific privilege on a specific resource. As Effective Permissions, these are represented as Metadata Write
, indicating the ability to modify the permission metadata of a resource.
Administrative Privileges
Some privileges require superuser status or special grants:
Event trigger management
Foreign data wrapper configuration
Tablespace creation
Language installation
Veza maps these administrative privileges to Metadata Write
to help identify roles with elevated access.
Alter Roles
Super users can change the properties of other users via the Alter Role command. Also, a role granted admin privileges to another role can call Alter Role on that role. In Graph, you can identify roles with permission to alter other roles:
System Mode: Veza shows an *Alter Role` privilege node in the path connecting Postgre SQL User > Alter Role > PostgreSQL Instance. This indicates that a user can change the properties of another user in the PostgreSQL server.
Effective Mode: Grantable system privilege nodes map to Metadata Update
, indicating a user can change the metadata properties - privileges in this case - of another role.
Configuring the Veza integration for Exchange Online
This extension to the Microsoft Azure integration enables visibility into Exchange Online mailboxes, permissions, and distribution groups. It uses Exchange Online REST APIs to execute PowerShell cmdlets remotely, providing insights into mail-related permissions and access controls within Microsoft 365. This includes:
Mapping Exchange Online users to Azure AD identities
Discovering mailbox delegations and permissions
Identifying shared mailbox access
Showing distribution group configurations
Visibility to folder-level permission
Architecture: The integration connects to Exchange Online using Azure service authentication patterns and makes REST API calls that execute PowerShell cmdlets. All data collection is read-only and focuses on mailbox permissions, folder permissions, and distribution group configurations. The integration uses client credential flow with Azure to obtain OAuth tokens for Exchange Online API access, with the requested scope: https://outlook.office365.com/.default
The Exchange Online integration uses a configured for certificate-based authentication. You will need to:
Grant additional API permissions to the existing Azure application:
Add Application permission: Office 365 Exchange Online > Exchange.ManageAsApp
Grant admin consent for the permission in your organization
Assign the following Microsoft Entra roles to the application:
Exchange Administrator
To enable extraction for Exchange Online, you will need to enable the optional service for your Azure integration:
On the Veza Integrations page, find the Azure integration and click Actions > Edit
In the configuration details, scroll down to Limit Services
Click Limited Services
In the Select Services dropdown, select Exchange Online
Ensure that all other services you want to extract are selected.
Click Save Configuration at the top right to update the integration settings
Note that Exchange is not enabled by default when All Services is chosen.
The Exchange Online integration supports the following relationships between graph entities:
User Relationships: Azure AD users are mapped to their corresponding Exchange Online user or mail user accounts.
Exchange Online Instances have direct relationships to:
Users (HAS_USER)
Mail Users (HAS_MAIL_USER)
Mailboxes (HAS_MAILBOX)
Distribution Groups (HAS_DISTRIBUTION_GROUP)
Users and Mail Users can have permissions:
Mailbox Permissions (HAS_MAILBOX_PERMISSION)
Controls overall mailbox access
Points to target mailbox via ON_MAILBOX relationship
Folder Permissions (HAS_MAILBOX_FOLDER_PERMISSION)
Controls access to specific folders
Points to target folder via ON_MAILBOX_FOLDER relationship
Recipient Permissions (HAS_RECIPIENT_PERMISSION)
Can target either mailboxes or distribution groups
Uses ON_MAILBOX or ON_DISTRIBUTION_GROUP relationships
Send-on-Behalf Permissions (HAS_SEND_ON_BEHALF_PERMISSION)
Allows sending mail as another identity
Can target mailboxes or distribution groups
Mailbox Structure:
Mailboxes contain folders (HAS_MAILBOX_FOLDER)
Each folder can have its own permissions
Folders maintain parent-child relationships through folder IDs
Root entity representing an Exchange Online environment.
Represents users with Exchange Online mailboxes.
Notable Field Values:
recipient_type_details
: Includes "UserMailbox" for standard user mailboxes
identity_type
: Default is "human"
Represents external mail users (without mailboxes).
Notable Field Values:
identity_type
: Default is "human"
is_active
: Inverse of account_disabled value
Represents email mailboxes.
Represents folders within mailboxes.
Notable Field Values:
container_class
: Common values include "IPF.Note" (mail), "IPF.Calendar", "IPF.Contact", "IPF.Task"
Represents email distribution groups.
Represents send-as rights.
Controls access to mailboxes.
Notable Field Values:
inheritance_type
:
"None"
"All" (default)
"Children"
"Descendents"
"SelfAndChildren"
access_rights
:
"ChangeOwner"
"ChangePermission"
"DeleteItem"
"ExternalAccount"
"FullAccess"
"ReadPermission"
Controls access to mailboxes or distribution groups.
Notable Field Values:
inheritance_type
: Same values as Mailbox Permission
Controls access to specific folders.
Notable Field Values:
access_rights
:
"None" - No access
"CreateItems" - Create items in folder
"CreateSubfolders" - Create subfolders
"DeleteAllItems" - Delete all items
"DeleteOwnedItems" - Delete own items
"EditAllItems" - Edit all items
"EditOwnedItems" - Edit own items
"FolderContact" - Folder contact
"FolderOwner" - Folder owner
"FolderVisible" - View folder
"ReadItems" - Read items
"AvailabilityOnly" - View calendar availability
"LimitedDetails" - View availability with subject/location
Pre-defined Permission Roles:
Author: CreateItems, DeleteOwnedItems, EditOwnedItems, FolderVisible, ReadItems
Contributor: CreateItems, FolderVisible
Editor: CreateItems, DeleteAllItems, DeleteOwnedItems, EditAllItems, EditOwnedItems, FolderVisible, ReadItems
NonEditingAuthor: CreateItems, DeleteOwnedItems, FolderVisible, ReadItems
Owner: All permissions
PublishingAuthor: CreateItems, CreateSubfolders, DeleteOwnedItems, EditOwnedItems, FolderVisible, ReadItems
PublishingEditor: CreateItems, CreateSubfolders, DeleteAllItems, DeleteOwnedItems, EditAllItems, EditOwnedItems, FolderVisible, ReadItems
Reviewer: FolderVisible, ReadItems
Configuring the Veza integration for Microsoft Dynamics 365 CRM
Veza's integration with Microsoft Dynamics 365 CRM allows you to discover and visualize permissions data from your Dynamics 365 CRM environments, including Business Units, Users, Teams, Application Users, and Security Roles. This integration shows connections between Azure AD Users, Groups, and Service Principals, and the permissions they can assume within Dynamics 365 CRM.
Before setting up the Dynamics 365 CRM integration:
Complete the . The integration will use the enterprise application created during setup.
When configuring the Dynamics 365 CRM integration, you must provide the correct URL, which can be found on the organizations page:
Log in to
Click on Environments
Select the Environment you are integrating
Locate the URL shown under the Environment URL field (the top field)
Copy the full URL which should look like: https://orgXXXXXXX.crm.dynamics.com
Important: URLs must include the
https://
protocol and must NOT include any trailing slashes at the end. For example, usehttps://org1.crm.dynamics.com
nothttps://org1.crm.dynamics.com/
.
In order for Veza to extract Dynamics 365 CRM data, you need to grant your Azure AD Enterprise Application access to the Dynamics 365 environments:
Visit and choose the environment to connect to
Go to Settings > Users + Permissions > Application Users and click New app user
Select the Microsoft Azure AD enterprise application you created during Azure integration setup
Pick the Business unit and assign a Service Reader
security role to enable read access
Optionally add other security roles necessary for accessing the Dynamics 365 environment
Confirm with Create
Enabling Enterprise App to access your Dynamics 365 CRM Environment does not use a paid license.
After setting up the necessary permissions:
Log in to Veza and navigate to Integrations
Edit your existing Microsoft Azure integration (or add a new one)
In the Dynamics 365 CRM Environments field, enter a comma-separated list of environments to discover
Example: https://org1.crm.dynamics.com,https://org2.crm.dynamics.com
Addresses must include the https://
protocol and omit any trailing /
Save the configuration.
Monitor the extraction progress in the Integrations dashboard
Verify successful extraction by checking that Dynamics 365 CRM entities appear in search results
The Dynamics 365 CRM integration operates as part of the Microsoft Azure integration rather than as a standalone connector. It leverages the same Enterprise Application credentials used for the Azure integration to access Dynamics 365 CRM environments.
The integration discovers organizational structure, security roles, and permission assignments within Dynamics 365 CRM environments and maps them to Azure AD identities. This allows you to visualize which Azure AD users, groups, and applications have access to Dynamics 365 CRM resources.
Veza discovers the following resources and permissions in Dynamics 365 CRM:
The Dynamics 365 CRM environment serves as the top-level container for all CRM resources.
Type: Dynamics365Environment
Key Properties:
environment_url
- The URL used to access the environment
environment_id
- Unique identifier for the environment
environment_region
- Geographic region where the environment is hosted
datacenter_id
- Identifier for the datacenter hosting the environment
organization_version
- Version of the Dynamics 365 organization
organization_id
- Unique identifier for the organization
tenant_id
- Azure AD tenant ID associated with the environment
Business Units are organizational divisions that structure a company within Dynamics 365, separating access to business data while sharing core information.
Type: Dynamics365BusinessUnit
Key Properties:
cost_center
- Cost center associated with the business unit
description
- Description of the business unit
disabled_reason
- Reason for disabling the business unit (if applicable)
division_name
- Name of the business division
website_url
- URL of the business unit's website
workflow_suspended
- Whether workflows are suspended for this business unit
is_disabled
- Whether the business unit is disabled
created_at
- When the business unit was created
updated_at
- When the business unit was last updated
Users represent people who access the Dynamics 365 system, mapped to Azure AD accounts, with permissions defined by their security roles and business unit assignments.
Type: Dynamics365User
Key Properties:
access_mode
- User's access mode (read-write, admin, etc.)
application_id
- Associated application ID (if applicable)
azure_ad_object_id
- Azure AD object ID for the user
user_license_type
- Type of license assigned to the user
on_prem_license_type
- On-premises license type (if applicable)
disabled_reason
- Reason for disabling the user (if applicable)
display_in_service_views
- Whether the user appears in service views
domain_name
- Domain name for the user
primary_email_status
- Status of the user's primary email
employee_id
- Employee ID for the user
invitation_status
- Status of the user's invitation
integration_user_mode
- Whether the user is an integration user
is_licensed
- Whether the user has a license
is_synced_with_directory
- Whether the user is synced with Azure AD
job_title
- User's job title
outgoing_email_delivery_method
- Method for delivering outgoing emails
owner_id
- ID of the owner of this user record
personal_email
- User's personal email address
setup_user
- Whether the user is a setup user
windows_live_id
- Windows Live ID for the user
business_unit_id
- ID of the business unit the user belongs to
hierarchy_position
- User's position in the organizational hierarchy
parent_user_id
- ID of the user's parent in the hierarchy
organization_id
- ID of the organization the user belongs to
email
- User's primary email address
first_name
- User's first name
last_name
- User's last name
Teams are groups of users who share common access permissions, providing a way to manage access across business functions or project boundaries.
Type: Dynamics365Team
Key Properties:
azure_ad_object_id
- Azure AD object ID for teams mapped to Azure AD groups
administrator_id
- ID of the team administrator
description
- Description of the team
email
- Team's email address
is_default
- Whether this is a default team
is_sas_token_set
- Whether a SAS token is set for the team
membership_type
- Type of team membership
business_unit_id
- ID of the business unit the team belongs to
organization_id
- ID of the organization the team belongs to
owner_id
- ID of the team owner
is_system_managed
- Whether the team is system-managed
team_type
- Type of team
created_at
- When the team was created
updated_at
- When the team was last updated
Application Users represent non-interactive service accounts or applications that need programmatic access to Dynamics 365 data using service principals.
Type: Dynamics365ApplicationUser
Key Properties:
application_user_id
- Unique identifier for the application user
application_type
- Type of application
business_unit_id
- ID of the business unit the application user belongs to
can_impersonate_system_user
- Whether the application can impersonate system users
component_state
- State of the application component
is_managed
- Whether the application user is managed
solution_id
- ID of the solution associated with the application
state_code
- Code representing the application state
status_code
- Code representing the application status
created_at
- When the application user was created
updated_at
- When the application user was last updated
Security Roles define permission sets that control which actions users can perform on different record types, determining create, read, write, and delete access levels.
Type: Dynamics365SecurityRole
Key Properties:
is_inherited
- Whether the security role is inherited
is_managed
- Whether the security role is managed
solution_id
- ID of the solution associated with the role
business_unit_id
- ID of the business unit the role belongs to
organization_id
- ID of the organization the role belongs to
created_at
- When the security role was created
updated_at
- When the security role was last updated
The Dynamics 365 CRM integration discovers the following relationship types:
The integration currently does not support custom entity types in Dynamics 365 CRM
Field-level security permissions are not currently extracted
Limited to API-accessible security metadata; does not include permissions managed through custom code
If you encounter issues connecting to your Dynamics 365 CRM environment:
Verify the URL is formatted correctly with https://
and no trailing /
Confirm the Azure AD Enterprise Application has been properly set up as an Application User in Dynamics 365
Ensure the Application User has at least the Service Reader
security role
Check the extraction logs for any specific error messages
Verify that the Enterprise Application has all required permissions for Microsoft Graph API
Ensure that there are no network restrictions preventing access to the Dynamics 365 CRM environment
For more details about managing application users in Power Platform, see the Microsoft documentation:
Has environment
Connects Azure AD tenant to Dynamics 365 Environment
Has business unit
Connects Environment to Business Unit entities
Has user
Connects Business Unit to User entities
Has group
Connects Business Unit to Team entities
Has service principal
Connects Business Unit to Application User entities
In group
Connects Users to their Team memberships
Has role assignment
Connects Users/Teams to their assigned Security Roles
Assumes user
Maps Azure AD users to their corresponding Dynamics 365 identities
Assumes group
Maps Azure AD groups to their corresponding Dynamics 365 teams
Standard instance properties
Various
Common properties for all instances
guid
String
Global unique identifier
identity
String
User identity
entity_name
String
Display name
alias
String
Email alias
email_addresses
String[]
List of email addresses
primary_smtp_address
String
Primary email address
recipient_type_details
String
Type of recipient
created_at
Timestamp
Creation timestamp
updated_at
Timestamp
Last update timestamp
user_principal_name
String
User principal name
exchange_user_account_control
String
Account control settings
account_disabled
Boolean
Account status
identity_type
String
Type of identity
is_active
Boolean
Active status
guid
String
Global unique identifier
identity
String
User identity
entity_name
String
Display name
alias
String
Email alias
email_addresses
String[]
List of email addresses
primary_smtp_address
String
Primary email address
recipient_type_details
String
Type of recipient
created_at
Timestamp
Creation timestamp
updated_at
Timestamp
Last update timestamp
user_principal_name
String
User principal name
exchange_user_account_control
String
Account control settings
account_disabled
Boolean
Account status
identity_type
String
Type of identity
is_active
Boolean
Active status
guid
String
Global unique identifier
identity
String
Mailbox identity
entity_name
String
Display name
alias
String
Email alias
email_addresses
String[]
List of email addresses
primary_smtp_address
String
Primary email address
recipient_type_details
String
Type of recipient
created_at
Timestamp
Creation timestamp
updated_at
Timestamp
Last update timestamp
hidden_from_address_lists_enabled
Boolean
Hidden from GAL status
is_mailbox_enabled
Boolean
Mailbox enabled status
is_resource
Boolean
Resource mailbox flag
is_shared
Boolean
Shared mailbox flag
linked_master_account
String
Linked master account
role_assignment_policy
String
Role assignment policy
identity
String
Folder identity
folder_path
String
Full folder path
entity_name
String
Folder name
folder_type
String
Type of folder
items_in_folder
Number
Item count
created_at
Timestamp
Creation timestamp
updated_at
Timestamp
Last update timestamp
folder_id
String
Unique folder ID
parent_folder_id
String
Parent folder ID
container_class
String
Container class
guid
String
Global unique identifier
identity
String
Group identity
entity_name
String
Display name
alias
String
Email alias
email_addresses
String[]
List of email addresses
primary_smtp_address
String
Primary email address
recipient_type_details
String
Type of recipient
created_at
Timestamp
Creation timestamp
updated_at
Timestamp
Last update timestamp
group_type
String
Type of group
hidden_group_membership_enabled
Boolean
Hidden membership status
hidden_from_address_lists_enabled
Boolean
Hidden from GAL status
require_sender_authentication_enabled
Boolean
Require sender auth
managed_by
String[]
List of managers
No additional properties
-
-
inheritance_type
String
Type of inheritance
access_rights
String[]
List of access rights
deny
String
Deny flag
is_inherited
Boolean
Inheritance status
access_control_type
String
Type of access control
access_rights
String[]
List of access rights
inheritance_type
String
Type of inheritance
is_inherited
Boolean
Inheritance status
identity
String
Permission identity
access_rights
String[]
List of access rights
folder_name
String
Associated folder name
sharing_permission_flags
String
Sharing permission flags
Configuring the Veza integration for Google Cloud
The Veza Integration for Google Cloud Platform (GCP) enables discovery of Google Cloud Workspace and Google Cloud IAM entities, along with authorization metadata for the organization, projects, and folders. Veza additionally discovers authorization to resources such as Storage, Compute, BigQuery, and KMS, using read-only permissions and native project APIs.
Before starting the integration setup:
You need Workspace super admin permissions to create and assign custom admin roles
You need administrator access to the Google Cloud Organization
For Workload Identity Federation: Obtain Veza's AWS Role ARN from: https://<tenant>/api/v1/providers/google_cloud:aws_role_arn
See Notes & Supported Entities for details on the Veza-Google connector and supported services.
Veza supports two methods for authenticating with Google Cloud:
Workload Identity Federation (Recommended)
Eliminates the need to manage service account keys
Uses temporary credentials through AWS-Google Cloud trust
Follows Google Cloud security best practices
Service Account Key Authentication (Alternative)
Traditional method using service account key files
Use only when Workload Identity Federation cannot be implemented
Complete these steps regardless of your chosen authentication method.
To discover complete authorization metadata for Google Cloud, the project containing the integration service account must have the following data APIs enabled.
Click the Enable API links in the following list to enable each API. Ensure that the project where you created the service account is selected before enabling the API.
You can also enable APIs for each project to discover by opening Google Cloud console API Library page, and choosing the Google Cloud project where the service account resides. Use the Search for APIs & Services find and enable APIs for the services to discover.
Mandatory APIs
These APIs must be enabled in your project:
Cloud Resource Manager API (Enable API)
Required for organization, project, and folder discovery
Cloud Identity API (Enable API)
Required for identity management
Admin SDK API (Enable API)
Required for workspace administration
Groups Settings API (Enable API)
Required for group management
Identity and Access Management (IAM) API (Enable API)
Required for identity and access management
(Optional) IAM API v2 to discover Deny Policies and use iam.denypolicies.get
and iam.denypolicies.list
permissions
Optional APIs
Enable these APIs based on the services you want to discover:
Service Usage API (Enable API)
Cloud Storage API (Enable API)
KMS API (Enable API)
BigQuery API (Enable API)
Compute Engine API (Enable API)
Cloud Run Admin API (Enable API)
Kubernetes Engine API (Enable API)
Cloud SQL Admin API (Enable API)
Secret Manager API (Enable API)
From your Google Workspace domain's Admin console, choose Security > Access and data control > API controls
Under Domain wide delegation, select Manage Domain Wide Delegation
Click Add new
Enter the service account's client ID
Add these OAuth scopes:
https://www.googleapis.com/auth/admin.directory.user.readonly
https://www.googleapis.com/auth/admin.directory.domain.readonly
https://www.googleapis.com/auth/admin.directory.rolemanagement.readonly
https://www.googleapis.com/auth/apps.groups.settings
Click Authorize
You'll need to create a custom Workspace role with the required API permissions, and assign the role to the integration service account:
In Admin console, go to Admin roles. You may need to click "show more" on the home page for the option to appear:
Click Create new role
Enter a name and description
Under Admin API Privileges, enable:
Users > Read
Groups > Read
Organization Units > Read
After creating the role, assign it to your service account:
On the role Admins panel, choose Assign role > Assign service accounts
Enter the email address of the service account
For more information, see Assign specific admin roles - Google Workspace Admin Help.
From your Google Cloud console, create a role to bind to the Veza service account. You can create this role using the UI, or the Google Cloud CLI. Go to IAM & Admin, and select Roles from the menu on the left side.
When creating the organization role, ensure your Organization (not an individual project) is selected:
Create a role in Google Cloud Organization with these minimum permissions:
iam.roles.get
iam.roles.list
iam.serviceAccounts.list
iam.denypolicies.get
iam.denypolicies.list
resourcemanager.folders.getIamPolicy
resourcemanager.folders.list
resourcemanager.organizations.get
resourcemanager.organizations.getIamPolicy
resourcemanager.projects.getIamPolicy
resourcemanager.projects.list
resourcemanager.projects.get
serviceusage.services.list
resourcemanager.tagValues.list
resourcemanager.tagValues.get
resourcemanager.tagKeys.list
resourcemanager.tagKeys.get
compute.instances.listTagBindings
storage.buckets.listTagBindings
bigquery.datasets.listTagBindings
bigquery.tables.listTagBindings
cloudkms.keyRings.listTagBindings
cloudkms.cryptoKeys.listTagBindings
run.services.listTagBindings
cloudsql.instances.listTagBindings
secretmanager.secrets.listTagBindings
Note: The permissions list includes resource-specific tag binding permissions (e.g.,
compute.instances.listTagBindings
) which replaced the deprecatedresourcemanager.resourceTagBindings.list
permission. These resource-specific permissions are required to discover tags attached to GCP resources.
After creating the role, bind it to the integration service account:
From the IAM & Admin page of the Google console, click IAM
Ensure that your Organization (not an individual Project) is active in the top left corner
Click + Grant Access to apply the role to the Veza service account:
Enter the service account email in the New Principals field
Under Select a Role, pick "Custom" and specify the Veza role
This will grant the service account the required permissions for the current organization and its children (all Projects and Folders).
You can create this role using the Google Cloud CLI:
gcloud iam roles create VEZA_ROLE_NAME --organization=YOUR_ORG_ID --permissions=\
iam.roles.get,\
iam.roles.list,\
iam.serviceAccounts.list,\
iam.denypolicies.get,\
iam.denypolicies.list,\
resourcemanager.folders.getIamPolicy,\
resourcemanager.folders.list,\
resourcemanager.organizations.get,\
resourcemanager.organizations.getIamPolicy,\
resourcemanager.projects.getIamPolicy,\
resourcemanager.projects.list,\
resourcemanager.projects.get,\
serviceusage.services.list,\
resourcemanager.tagValues.list,\
resourcemanager.tagValues.get,\
resourcemanager.tagKeys.list,\
resourcemanager.tagKeys.get,\
compute.instances.listTagBindings,\
storage.buckets.listTagBindings,\
bigquery.datasets.listTagBindings,\
bigquery.tables.listTagBindings,\
cloudkms.keyRings.listTagBindings,\
cloudkms.cryptoKeys.listTagBindings,\
run.services.listTagBindings,\
cloudsql.instances.listTagBindings,\
secretmanager.secrets.listTagBindings,\
storage.buckets.getIamPolicy,\
storage.buckets.list,\
compute.instances.list,\
compute.instances.getIamPolicy,\
compute.networks.list,\
compute.regions.list,\
compute.subnetworks.getIamPolicy,\
compute.subnetworks.list,\
compute.zones.list,\
cloudkms.locations.get,\
cloudkms.locations.list,\
cloudkms.cryptoKeyVersions.get,\
cloudkms.cryptoKeyVersions.list,\
cloudkms.cryptoKeyVersions.viewPublicKey,\
cloudkms.cryptoKeys.getIamPolicy,\
cloudkms.cryptoKeys.get,\
cloudkms.cryptoKeys.list,\
cloudkms.keyRings.get,\
cloudkms.keyRings.list,\
cloudkms.keyRings.getIamPolicy,\
bigquery.datasets.getIamPolicy,\
bigquery.datasets.get,\
bigquery.tables.getIamPolicy,\
bigquery.tables.get,\
bigquery.tables.list,\
run.services.list,\
run.services.getIamPolicy,\
run.locations.list,\
cloudsql.instances.list,\
cloudsql.users.list,\
cloudsql.databases.list,\
container.clusters.list,\
secretmanager.secrets.list,\
secretmanager.secrets.get,\
secretmanager.secrets.getIamPolicy,\
secretmanager.versions.list,\
secretmanager.versions.get,\
secretmanager.locations.get,\
secretmanager.locations.list,\
secretmanager.secrets.listEffectiveTags,\
secretmanager.secrets.listTagBindings,\
logging.logEntries.list
To run gcloud
commands, install the SDK, or open the CLI from the web console:
To add additional permissions later (if new functionality is required), use:
gcloud iam roles update <<role_name>> --organization=<<ORG_ID>> --add-permissions=<<PERMISSIONS>>
Storage Buckets
Required Permissions:
storage.buckets.getIamPolicy
storage.buckets.list
storage.buckets.listTagBindings
Required API: Cloud Storage API
Compute
Required Permissions:
compute.instances.list
compute.instances.getIamPolicy
compute.instances.listTagBindings
compute.networks.list
compute.regions.list
compute.subnetworks.getIamPolicy
compute.subnetworks.list
compute.zones.list
Required API: Compute Engine API
Key Management
Required Permissions:
cloudkms.cryptoKeyVersions.get
cloudkms.cryptoKeyVersions.list
cloudkms.cryptoKeyVersions.viewPublicKey
cloudkms.cryptoKeys.get
cloudkms.cryptoKeys.list
cloudkms.cryptoKeys.getIamPolicy
cloudkms.cryptoKeys.listTagBindings
cloudkms.keyRings.get
cloudkms.keyRings.list
cloudkms.keyRings.getIamPolicy
cloudkms.keyRings.listTagBindings
cloudkms.locations.get
cloudkms.locations.list
Required API: KMS API
BigQuery
Required Permissions:
bigquery.datasets.getIamPolicy
bigquery.datasets.get
bigquery.datasets.listTagBindings
bigquery.tables.getIamPolicy
bigquery.tables.get
bigquery.tables.list
bigquery.tables.listTagBindings
Required Permissions for Activity Monitoring:
logging.logEntries.list
logging.privateLogEntries.list
Required API: BigQuery API
Cloud Run
Required Permissions:
run.services.list
run.services.getIamPolicy
run.services.listTagBindings
run.locations.list
Required API: Cloud Run Admin API
Cloud SQL
Required Permissions:
cloudsql.instances.list
cloudsql.instances.listTagBindings
cloudsql.users.list
cloudsql.databases.list
Required API: Cloud SQL Admin API
Kubernetes Engine
Required Permissions: container.clusters.list
Required API: Kubernetes Engine API
Secret Manager
Required Permissions:
secretmanager.secrets.list
secretmanager.secrets.get
secretmanager.secrets.getIamPolicy
secretmanager.versions.list
secretmanager.versions.get
secretmanager.locations.get
secretmanager.locations.list
secretmanager.secrets.listEffectiveTags
secretmanager.secrets.listTagBindings
Required API: Secret Manager API
Each Google Workspace account has a customer ID, which Veza will need to authenticate. Take note of the customer ID for configuring the integration:
From the Admin console Home page, go to Account settings > Profile.
Under Customer ID, find your organization's unique ID.
Save the customer ID, which you will need when configuring the connection in Veza.
Note: the customer ID should start with a C, for example:C06k34uds.
For information, see Find your customer ID - Google Workspace Admin Help.
In Veza, go to the Integrations page
Click Add Integration
Select Google Cloud Platform
Configure the integration:
Insight Point
The for discovery
Name
A friendly name to identify this integration
Workspace email
Email address of the Workspace user to assume
Customer ID
Workspace Customer ID from Admin console (e.g., C06k34uds
)
Credentials.json
WIF configuration file or service account key file
Limit Google Cloud Services
Optional
Identity Mapping Configurations
Configure
Configuring the Veza integration for Microsoft Azure AD (Entra ID).
Veza discovers Authorization metadata for Azure Active Directory, including roles, groups, users, and service principals, for any Microsoft Azure tenant integrated with Veza.
Enabling this integration can help:
Identify privileged access paths, including time-bound and just-in-time assignments
Track group-based inheritance of privileged roles
Conduct access reviews direct and group-based assignments
If your organization only utilizes Azure AD, and doesn't require Veza discovery of entities such as storage resources, virtual machines, or SQL databases, you can disable those services and data sources when editing or adding an Azure integration.
Veza can optionally gather and show custom security attributes on Azure AD objects. To enable this, the Enterprise Application used by Veza to connect must have the CustomSecAttributeAssignment.Read.All
Microsoft Graph permission. Attributes to gather must be specified in the Azure integration configuration.
Microsoft Entra Privileged Identity Management (PIM) is a service for managing and monitoring access to important resources within an organization. PIM provides time-based and approval-based role activation to mitigate the risks of excessive, unnecessary, or misused access permissions.
To support PIM discovery, the Veza Enterprise Application in Azure AD requires the following Microsoft Graph API permissions:
RoleManagement.Read.All
PrivilegedAccess.Read.AzureAD
Group.Read.All
When available, Veza can provide visibility into both direct assignments and group-based assignments:
PIM for Roles: Just-in-time access to Azure AD administrative roles
PIM for Groups: Just-in-time membership and ownership of security groups or Microsoft 365 groups
In Azure PIM, assignments can be either active (direct access without activation) or eligible (requiring activation when needed). Veza distinguishes between these statuses in the Authorization Graph:
Eligible assignments appear with an Azure AD Role Eligibility Schedule
node between the user and role
Active assignments (including activated PIM assignments) appear as direct connections without the eligibility schedule node
Understanding this distinction can help identify both current access and potential future access.
Veza represents different PIM assignment types in the Authorization Graph with paths between graph nodes:
User assigned (Active) to Role: Azure AD User → Azure AD Role
User assigned (Active) to Role via Group: Azure AD User → Azure AD Group → Azure AD Role
User Eligible for a Role: Azure AD User → Azure AD Role Eligibility Schedule → Azure AD Role
User Eligible for a Role via Group: Azure AD User → Azure AD Group → Azure AD Role Eligibility Schedule → Azure AD Role
User with Activated Eligible Assignment: Azure AD User → Azure AD Role
(temporarily present during activation period)
User with Activated Eligible Assignment via Group: Azure AD User → Azure AD Group → Azure AD Role
(temporarily present during activation period)
Note that the queries above require System Query Mode.
When evaluating PIM eligibility, the following conditions apply:
Only assignments that have started (past their start date) and have not expired are shown in the graph
Future assignments and expired assignments are not displayed
When a user activates an eligible assignment, Microsoft creates a temporary active assignment (typically for up to 8 hours). Veza represents this as a direct connection, assuming data source extraction and parsing runs after activation and before expiration.
Groups cannot activate themselves; only individual members of a group can activate their eligible assignments
Permanent assignments (with no end date) are shown as active assignments
Veza discovers and maps Azure AD (Entra ID) entities and their relationships to enable queries based on attributes and relationships in your identity environment.
The integration standardizes Application and Directory role permissions to effective create, read, update, and delete actions, and detects the following relationships between entities:
User and group membership, including nested groups
Service principal assignments to roles and resources
Role eligibility and assignments
Group ownership and management
Conditional access policy application to users and groups
Cross-cloud identity relationships with systems like AWS, GCP, Kubernetes, and databases
Federation and trust relationships with external identity providers
See below for all supported entities and attributes.
Represents a user identity in Microsoft Entra ID (formerly Azure AD). User objects store authentication and profile information for organizational members, guests, and external identities. Users can sign into Microsoft Entra ID, access protected resources, and be assigned to groups, roles, and applications.
Entity Type Group: IDP_USER
account_enabled
BOOLEAN
Optional
Whether the user account is enabled
azure_tenant_id
STRING
Required
The Azure tenant ID associated with the user
country_or_region
STRING
Optional
User's country or region
created_at
TIMESTAMP
Optional
When the user was created
datasource_id
STRING
Optional
ID of the data source
default_mfa_method
STRING
Optional
User's default multi-factor authentication method
deleted_at
TIMESTAMP
Optional
When the user was deleted, if applicable
department
STRING
Optional
User's department
email
STRING
Optional
User's primary email address
employee_id
STRING
Optional
User's employee ID
employee_type
STRING
Optional
Type of employee (e.g., contractor, full-time)
external_user_state
STRING
Optional
State of external user if applicable
first_name
STRING
Optional
User's first name
full_admin
BOOLEAN
Optional
Whether the user has full administrative privileges
guest
BOOLEAN
Optional
Whether the user is a guest account
id
STRING
Required
Unique identifier for the user
identity_type
STRING
Required
Type of identity
idp_unique_id
STRING
Required
Unique identifier from the identity provider
is_active
BOOLEAN
Required
Whether the account is active
is_admin
BOOLEAN
Optional
Whether the user has administrative privileges
is_licensed
BOOLEAN
Optional
Whether the user has any licenses assigned
is_mfa_capable
BOOLEAN
Optional
Whether the user can use MFA for sign-in
is_mfa_registered
BOOLEAN
Optional
Whether the user has registered for MFA
is_passwordless_capable
BOOLEAN
Optional
Whether the user can use passwordless authentication
is_sspr_capable
BOOLEAN
Optional
Whether self-service password reset is available for the user
is_sspr_enabled
BOOLEAN
Optional
Whether SSPR is enabled for the user
is_sspr_registered
BOOLEAN
Optional
Whether the user has registered for SSPR
is_system_preferred_authentication_method_enabled
BOOLEAN
Optional
Whether system-preferred authentication is enabled
job_title
STRING
Optional
User's role or job title
last_login_at
TIMESTAMP
Optional
When the user last logged in
last_name
STRING
Optional
User's last name
last_successful_login_at
TIMESTAMP
Optional
When the user last successfully logged in
licenses
STRING_LIST
Optional
List of licenses assigned to the user
mail_nickname
STRING
Optional
User's mail nickname
manager
STRING
Optional
The user's manager
manager_id
STRING
Optional
ID of the user's manager
manager_principal_name
STRING
Optional
Principal name of the user's manager
methods_registered
STRING_LIST
Optional
Authentication methods registered by the user
name
STRING
Required
Display name of the user
nickname
STRING
Optional
User's nickname
office
STRING
Optional
User's office location
on_premises_distinguished_name
STRING
Optional
Distinguished name from on-premises AD
on_premises_sam_account_name
STRING
Optional
SAM account name from on-premises AD
on_premises_sync
BOOLEAN
Required
Whether the user is synchronized from on-premises AD
on_premises_user_principal_name
STRING
Optional
UPN from on-premises AD
other_mails
STRING_LIST
Optional
Additional email addresses
owners
STRING
Optional
List of user owners
password_policies
STRING_LIST
Required
Password policies applied to the user
password_profile_force_change_password_next_sign_in
BOOLEAN
Optional
Whether password change is required at next sign-in
password_profile_force_change_password_next_sign_in_with_mfa
BOOLEAN
Optional
Whether password change with MFA is required at next sign-in
principal_name
STRING
Required
User principal name (UPN)
provider_id
STRING
Optional
ID of the identity provider
risk_score
NUMBER
Optional
Risk score assigned to the user
street_address
STRING
Optional
User's street address
system_preferred_authentication_methods
STRING_LIST
Optional
System-preferred authentication methods
usage_location
STRING
Optional
User's usage location for licensing
user_preferred_method_for_secondary_authentication
STRING
Optional
User's preferred secondary authentication method
user_type
STRING
Optional
Type of user (Member, Guest, etc.)
Represents a collection of users in Microsoft Entra ID used for assigning access rights and permissions. Groups can be security groups (used to manage access to shared resources) or Microsoft 365 groups (providing collaboration opportunities), with support for dynamic membership rules and nested groups.
Entity Type Group: IDP_GROUP
allow_external_senders
BOOLEAN
Optional
Whether external senders can send to this group
azure_tenant_id
STRING
Required
The Azure tenant ID associated with the group
classification
STRING
Optional
Sensitivity classification of the group
created_at
TIMESTAMP
Optional
When the group was created
datasource_id
STRING
Optional
ID of the data source
deleted_at
TIMESTAMP
Optional
When the group was deleted, if applicable
description
STRING
Optional
Description of the group
expires_at
TIMESTAMP
Optional
When the group expires, if applicable
group_types
STRING_LIST
Optional
Types of the group (e.g., "Unified" for M365 groups)
has_member_with_license_errors
BOOLEAN
Optional
Whether any members have license errors
hide_from_address_lists
BOOLEAN
Optional
Whether the group is hidden from address lists
hide_from_outlook_clients
BOOLEAN
Optional
Whether the group is hidden from Outlook clients
hierarchical_in_cycle
BOOLEAN
Optional
Whether the group is part of a circular reference
hierarchical_level
NUMBER
Required
Depth in the nested group hierarchy
id
STRING
Required
Unique identifier for the group
idp_unique_id
STRING
Required
Unique identifier from the identity provider
is_assignable_to_role
BOOLEAN
Optional
Whether the group can be assigned to roles
is_owner_group
BOOLEAN
Optional
Whether the group is used for ownership assignments
is_security_group
BOOLEAN
Optional
Whether the group is a security group
mail_enabled
BOOLEAN
Optional
Whether the group can receive emails
managed_by
STRING_LIST
Optional
List of entities that manage this group
name
STRING
Required
Display name of the group
on_premises_distinguished_name
STRING
Optional
Distinguished name from on-premises AD
on_premises_last_sync_date_time
TIMESTAMP
Optional
Last synchronization time from on-premises AD
on_premises_sam_account_name
STRING
Optional
SAM account name from on-premises AD
on_premises_sync
BOOLEAN
Required
Whether the group is synchronized from on-premises AD
owners
STRING
Optional
List of group owners
preffered_data_location
STRING
Optional
Preferred data location for the group
preffered_language
STRING
Optional
Preferred language for the group
principal_name
STRING
Required
Principal name of the group
provider_id
STRING
Optional
ID of the identity provider
renewed_at
TIMESTAMP
Optional
When the group was last renewed
risk_score
NUMBER
Optional
Risk score assigned to the group
visibility
STRING
Optional
Visibility setting (Public, Private, or HiddenMembership)
Represents administrative roles within Microsoft Entra ID that define permissions for managing tenant resources. Roles can be built-in (predefined by Microsoft) or custom roles created by administrators, and are assigned to users, groups, or service principals to delegate identity management tasks.
Entity Type Group: ROLE
azure_tenant_id
STRING
Required
The Azure tenant ID associated with the role
builtin
BOOLEAN
Optional
Whether the role is a built-in Microsoft role
datasource_id
STRING
Optional
ID of the data source
description
STRING
Optional
Description of the role
enabled
BOOLEAN
Optional
Whether the role is currently enabled
id
STRING
Required
Unique identifier for the role
is_privileged
BOOLEAN
Optional
Whether the role grants privileged access
name
STRING
Required
Display name of the role
owners
STRING
Optional
List of role owners
permissions
STRING_LIST
Optional
List of permissions granted by the role
provider_id
STRING
Optional
ID of the identity provider
risk_score
NUMBER
Optional
Risk score assigned to the role
Represents a service principal in Microsoft Entra ID, which is the local representation of an application in a specific tenant. Service principals define what an application can do within your tenant, including what resources it can access and what authentication methods it uses. They serve as the security identity for applications accessing resources secured by Microsoft Entra ID.
Entity Type Group: SERVICE_ACCOUNT
app_role_assignment_required
BOOLEAN
Optional
Whether users need explicit assignment to use the app
application_id
STRING
Required
Unique application identifier
application_owners
STRING_LIST
Optional
List of users/groups designated as application owners
application_template
STRING
Required
Template used to create the application
application_template_id
STRING
Optional
ID of the template used to create the application
application_type
STRING
Optional
Type of application
azure_tenant_id
STRING
Required
The Azure tenant ID associated with the application
datasource_id
STRING
Optional
ID of the data source
domain_service_now
STRING
Optional
ServiceNow domain if applicable
enabled
BOOLEAN
Optional
Whether the service principal is enabled
github_enterprise_cloud_enterprise
STRING
Optional
GitHub Enterprise Cloud organization if applicable
github_enterprise_server_domain
STRING
Optional
GitHub Enterprise Server domain if applicable
id
STRING
Required
Unique identifier for the service principal
identity_type
STRING
Required
Type of identity
is_active
BOOLEAN
Required
Whether the service principal is active
name
STRING
Required
Display name of the service principal
owners
STRING
Optional
List of service principal owners
permissions
STRING_LIST
Optional
List of permissions granted to the application
provider_id
STRING
Optional
ID of the identity provider
risk_score
NUMBER
Optional
Risk score assigned to the service principal
snowflake_domain
STRING
Optional
Snowflake domain if applicable
Represents a device registered or joined to Microsoft Entra ID. Devices can be Azure AD joined, hybrid joined, or registered, and are used in conditional access policies and device-based access controls. Device objects store information about platform, compliance state, and management status for making authentication and authorization decisions.
Entity Type Group: SERVICE_ACCOUNT
approximate_last_signed_in_at
TIMESTAMP
Optional
Most recent sign-in from this device
azure_tenant_id
STRING
Required
The Azure tenant ID associated with the device
compliance_expires_at
TIMESTAMP
Optional
When device compliance status expires
datasource_id
STRING
Optional
ID of the data source
device_category
STRING
Optional
Category of the device
device_id
STRING
Required
Unique device identifier
device_ownership
STRING
Optional
Ownership type of the device
enrollment_profile_name
STRING
Optional
Name of the enrollment profile
enrollment_type
STRING
Optional
Type of enrollment
id
STRING
Required
Unique identifier for the device
identity_type
STRING
Required
Type of identity
is_active
BOOLEAN
Required
Whether the device is active
is_compliant
BOOLEAN
Optional
Whether the device meets compliance policies
is_managed
BOOLEAN
Optional
Whether the device is managed by Intune or another MDM
is_rooted
BOOLEAN
Optional
Whether the device is rooted/jailbroken
management_type
STRING
Optional
Type of management for the device
manufacturer
STRING
Optional
Device manufacturer
mdm_app_id
STRING
Optional
ID of the MDM application managing the device
model
STRING
Optional
Device model
name
STRING
Required
Display name of the device
operating_system
STRING
Optional
Device operating system
operating_system_version
STRING
Optional
Version of the operating system
owners
STRING
Optional
List of device owners
profile_type
STRING
Optional
Type of device profile
provider_id
STRING
Optional
ID of the identity provider
registered_at
TIMESTAMP
Optional
When the device was registered
risk_score
NUMBER
Optional
Risk score assigned to the device
trust_type
STRING
Optional
Azure AD Joined, Hybrid Joined, or Registered
Represents roles defined within applications for role-based access control (RBAC). App roles allow developers to define authorization parameters within their applications and enable administrators to assign these roles to users, groups, or service principals. When a user signs in, Microsoft Entra ID emits a roles claim for each assigned role, which applications can use for authorization decisions.
Entity Type Group: APPLICATION_ROLE
aws_iam_role_arn
STRING
Optional
AWS IAM role ARN if applicable
azure_tenant_id
STRING
Required
The Azure tenant ID associated with the app role
datasource_id
STRING
Optional
ID of the data source
id
STRING
Required
Unique identifier for the app role
name
STRING
Required
Display name of the app role
provider_id
STRING
Optional
ID of the identity provider
risk_score
NUMBER
Optional
Risk score assigned to the app role
saml_provider_arn
STRING
Optional
SAML provider ARN if applicable
Represents Microsoft Entra ID's policy engine for enforcing security controls based on specific conditions. Conditional Access policies function as if-then statements that evaluate signals (like user, device, location, and risk) when authentication occurs and enforce organizational access requirements such as MFA, device compliance, or session controls before granting access to resources.
Entity Type Group: POLICY
conditional_access_policy_state
STRING
Required
Enabled, Disabled, or Report-only
datasource_id
STRING
Optional
ID of the data source
id
STRING
Required
Unique identifier for the policy
name
STRING
Required
Display name of the policy
provider_id
STRING
Optional
ID of the identity provider
risk_score
NUMBER
Optional
Risk score assigned to the policy
Represents a DNS domain associated with a Microsoft Entra ID tenant. Domains are used for user principal names (UPNs), email addresses, and application identifiers. Domains can be the initial onmicrosoft.com domain or custom verified domains that prove ownership of the namespace for use with Microsoft Entra ID services.
Entity Type Group: DOMAIN
azure_tenant_id
STRING
Required
The Azure tenant ID associated with the domain
datasource_id
STRING
Optional
ID of the data source
id
STRING
Required
Unique identifier for the domain
name
STRING
Required
Domain name
provider_id
STRING
Optional
ID of the identity provider
risk_score
NUMBER
Optional
Risk score assigned to the domain
Represents a product license assigned to users in Microsoft Entra ID that grants access to Microsoft cloud services and applications. Licenses determine which features and capabilities are available to users, including Microsoft 365 services, Entra ID Premium features (like Conditional Access), and other Microsoft cloud products.
Entity Type Group: ROLE
datasource_id
STRING
Optional
ID of the data source
id
STRING
Required
Unique identifier for the license
name
STRING
Required
Name of the license
owners
STRING
Optional
List of license owners
provider_id
STRING
Optional
ID of the identity provider
risk_score
NUMBER
Optional
Risk score assigned to the license