All pages
Powered by GitBook
Couldn't generate the PDF for 142 pages, generation stopped at 100.
Extend with 50 more pages.
1 of 100

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...

Adobe Enterprise

Configuring the Veza integration for Adobe Enterprise.

Overview

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

Prerequisites

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}

Finding Your Organization ID

The Organization ID is a unique identifier in the format {hex_number}@AdobeOrg (e.g., A495E53@AdobeOrg). You can find this value:

  1. In the Adobe Admin Console URL path when logged in

  2. In the Adobe IO Console under your User Management integration settings

Generating Adobe Credentials

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).

Configuring Adobe Enterprise on the Veza Platform

  1. In Veza, use the main menu to open the Integrations page.

  2. Click Add Integration and search for Adobe Enterprise.

  3. Click on Adobe Enterprise and to open the configuration form.

  4. Enter the required information:

    Field
    Description
    Required
    Format/Notes

    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

  5. Click Create Integration to save the configuration.

Verifying the Integration

  1. To check integration status:

    1. On the Veza Integrations list, click the integration name to view details.

    2. On the details page, review the list of data sources.

    3. Use the Status column to check if the data source is unavailable or has an error.

    4. Click on an individual status to show more details.

  2. To view discovered entities:

    1. On the Veza Integrations list, click View Dashboard to show an overview of the entities Veza has discovered.

    2. Click an entity type to view the results in Query Builder.

    3. Review the entities to validate that results and attributes are as expected.

Notes and Supported Entities

Application

Type: "Adobe Enterprise"

Users

Attribute
Description

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

Groups

Attribute
Description

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

Built-in Roles and Permissions

The integration supports three built-in administrative roles:

Role
Permission
Description

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

Attribute
Description

id

Role identifier (matches name)

name

Name of the role ("org", "deployment", or "support")

permissions

List of permissions associated with the role

Permission Properties

Attribute
Description

name

Name of the permission (matches role name)

permissionType

Type of permission (always "uncategorized")

Relationships

Relationship Type
Description

Group Membership

Associates users with their groups

Role Assignment

Associates users with administrative roles

Permission Grant

Associates roles with their corresponding permissions

Additional Resources

  • Adobe User Management API Documentation

  • Adobe Admin Console

Jenkins

Configuring the Veza integration for Jenkins

Overview

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:

Jenkins Setup

Create a user and API token for the Veza integration:

  1. 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.

  2. Assign them a role with the Overall Read permission under Manage Jenkins > Manage and Assign Roles.

  3. Get an API token for the user. Browse to your Jenkins instance, log in and go to (Your Username) > Configure > API Token.

  4. Click Add New Token. Give the token a name and save the value.

Veza Setup

Add the integration to Veza:

  1. Browse to your Veza instance and log in.

  2. Go to Integrations.

  3. Click Add Integration. Select Jenkins as the integration to add. Click Next.

  4. 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.

  5. Click Save to enable the integration.

Supported Entities

ID and Name are collected for both users and roles. Veza discovers and processes all permissions found in Jenkins.

Jenkins User

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.

Property
Description

full_name

Full name for the user

absolute_url

URL for the user. The ID is part of the absolute URL

Jenkins Role

A Jenkins Role is a set of capabilities assigned to a Jenkins User or group of users within Jenkins.

Property
Description

Name

Name of the role

Type

Currently only "USER" type roles. (no groups).

Microsoft SharePoint Server

Configuring the Veza integration for SharePoint Server (on-premises).

Overview

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

Prerequisites

  • 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)

Configuring the Azure Integration for SharePoint Server

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:

  1. Go to the Integrations page and add or edit an Azure integration, following the instructions in Microsoft Azure.

  2. 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

  3. Enable SharePoint discovery by providing a certificate for app-only access and granting optional API permissions as documented in Microsoft SharePoint Online.

  4. If you are limiting the services discovered by the integration, ensure that SharePoint is enabled under Limited Services in the integration configuration.

  5. (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.

  6. Save your changes to the integration configuration after supplying the X.509 certificate and password, if encrypted.

  7. 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.

Okta MFA status

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:

Background

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).

Resolution

There are 2 options to allow Veza to fully collect MFA enrollment.

  1. 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:

        1. IF User's IP is "in zone" (Add the Zone for Veza's Cloud IP Addresses)

        2. AND User is accessing "Okta"

        3. 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.

  2. 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.

Microsoft SQL Server

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>;

Configure Veza

To add the connection, go to Configuration > Integrations_ > Create Integration and choose "SQL Server".

  1. If you are using an external Insight Point for discovery, change the selection from the default internal Insight Point to the one you deployed.

  2. Enter the server Host, Port, Login user and Password.

  3. 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.

  4. 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.

Beeline

Configuring the Veza integration for Beeline

Overview

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.

Configuring Beeline

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.

  1. Ensure that the RaaS feature is enabled.

  2. 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.

    1. Note the ClientSecret, UserName and UserAPIKey from the API Authentication Page

  3. 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.

  4. 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.

Configuring the Beeline Integration on Veza

  1. On the Veza Integrations page, click Add Integration and locate the Beeline tile.

  2. Configure the integration with the following fields:

    1. Name - Name for the integration

    2. Site ID - Customer or Project identifier for the Beeline instance

    3. Client Secret - Client secret value from the API key generated

    4. User Name - User name for corresponding API key

    5. User API Key - The API key value

    6. Report ID - UUID identifier for published report

    7. 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.

  3. 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.

Notes and Supported Entities

Beeline Employee

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

Concur

Configuring the Veza integration for Concur

Overview

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.

Configuring Concur

Pre-requisites

Before configuring Concur, you must create a new integration application within Concur and generate OAuth 2.0 credentials. Follow these steps:

  1. Navigate to the in Concur and create a new app.

    • Provide a name and description for the app.

  2. Add allowed grants:

    • refresh_token, password

  3. 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.

  4. Submit and note down the Client ID and Client Secret values.

  5. Go to the page. Enter the app ID and click submit.

  6. Note the Company UUID and Request Token. You will exchange the temporary token for a refresh token prior to configuring the integration in Veza.

Generating a Refresh Token

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.

Configuring Concur in Veza

  1. In Veza, open the Integrations page.

  2. Click Add New and pick Concur as the type of integration to add

  3. Enter the Client ID, Client Secret, and Refresh Token, then Save the configuration

Field
Notes

Supported Entities and Properties

Concur User

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 Role

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

Egnyte

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.

Egnyte Setup

Before adding the integration to Veza, you need a token to make authenticated requests on the Egnyte platform:

  1. 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.

  2. Follow the official to generate an API Token from your API Key and Client ID.

  3. Copy the generated API Token returned from the API call.

Veza Setup

To enable Veza to gather data from Egnyte:

  1. Log in to your Veza platform.

  2. Go to Integrations.

  3. In the main pane, click Add Integration > Egnyte.

  4. 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).

  5. Click Save to enable the integration.

Supported Entities

Veza creates the following entities to represent Egnyte identities and access controls, along with some additional attributes:

Egnyte User

Property
Description

Egnyte Role

Property
Description

Egnyte Group

Property
Description

DocuSign

Configuring the Veza integration for DocuSign

Overview

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

Requirements

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.

Create a DocuSign App

Using a DocuSign developer account, and get the Client ID and Client Secret:

  1. Go to Apps and Keys in DocuSign. Click Add App and Integration Key, and complete the required fields.

  2. Under Authentication, click Add Secret Key and save it to use as Client Secret.

  3. Save your changes and save the Integration Key to use as a Client ID.

Obtain a Refresh Token

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:

Retrieve the DocuSign Base URI

After obtaining an access token, you can retrieve your DocuSign base URI by making an API request:

Copy the base_url from the response.

Configuring DocuSign on the Veza Platform

To enable Veza to gather data from DocuSign, follow these steps:

  1. Log in to Veza and go to Integrations

  2. In the main pane, click Add Integration. Click DocuSign.

  3. 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

AWS DynamoDB

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.

Notes

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.xyou will need to update the policy attached to the Insight Point, IAM user, or IAM role used for discovery.

Supported Resources / Sub-resources

  • 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

OAuth 2.0 Application Management screen
Company Request Token

Name

User name

ID

User unique ID

last_active

Timestamp for when the user last logged in

email

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

API Key Guide
Insight Point
{
    "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>"
Create an App
How to get an access token with Authorization Code Grant
  {
      "Sid": "DynamoDB",
      "Effect": "Allow",
      "Action": [
        "dynamodb:ListTables",
        "dynamodb:DescribeTable",
        "dynamodb:ListStreams",
        "dynamodb:DescribeStream"
        ],
      "Resource": "*"
  }
recommended policy

Veza Integrations

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.

Identity Providers

  • Active Directory

  • AWS IAM

  • AzureAD

  • GCP IAM

  • Google Workspace

  • Okta

  • OneLogin

  • Oracle Cloud IAM

  • PingOne

  • Auth0

Cloud Services

Amazon Web Services (AWS)

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

Microsoft Azure**

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

Google Cloud Platform (GCP)

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)

Oracle Cloud Infrastructure (OCI)

See Oracle Cloud Infrastructure for setup instructions.

  • OCI IAM

  • OCI Object Store

Salesforce Commerce Cloud

See Salesforce Commerce Cloud for setup instructions.

  • Salesforce Business Manager

Data Lakes

  • Databricks (Unity Catalog)

  • Databricks (Workspace)

  • FiveTran (Supported via SCIM)

  • MongoDB Atlas

  • Snowflake Data Cloud

  • Trino SQL Query Engine (formerly PrestoDB)

SaaS Applications and Platforms

  • 1Password

  • Adobe Enterprise

  • Anaplan

  • Atlassian Cloud (Confluence, Jira, BitBucket)

  • BlackLine

  • BambooHR

  • Beeline

  • Boomi

  • Box.com

  • Bullhorn

  • Celonis (Supported via SCIM)

  • Cerner (Early Access)

  • Cisco Duo

  • Clickhouse

  • Concur

  • Confluent

  • Coupa

  • Coupa Contingent Workforce

  • Crowdstrike Falcon

  • Delinea Secret Server

  • Device42

  • DocuSign

  • DropBox

  • Egnyte

  • Envoy (Supported via SCIM)

  • Exchange Online (Microsoft 365)

  • Expensify

  • Fastly

  • GitHub (Enterprise Cloud and Server)

  • GitLab

  • Google Drive

  • Harness (Supported via SCIM)

  • HashiCorp Vault

  • HiBob

  • Hubspot

  • IBM Aspera

  • iManage

  • IronClad (Supported via SCIM)

  • Ivanti Neurons

  • Jamf Pro

  • Jenkins

  • JFrog Artifactory

  • LastPass

  • Looker

  • Microsoft Dynamics 365

  • Netsuite

  • New Relic

  • OpenAI

  • Oracle E-Business Suite (EBS)

  • Oracle EPM

  • Oracle Fusion Cloud

  • oracle JD Edwards EnterpriseOne

  • Palo Alto Networks SASE / Prisma Access

  • PagerDuty

  • Power BI

  • Privacera

  • Qualys

  • QNXT

  • Ramp

  • Redis Cloud

  • Rollbar

  • Salesforce

  • SAP SucessFactors

  • ServiceNow

  • SharePoint Online / OneDrive (Configured through the Azure Integration)

  • Sigma Computing (Supported via SCIM)

  • Slack

  • SmartSheet

  • Spotio

  • Sumo Logic

  • Tableau

  • Teleport

  • Terraform

  • ThoughtSpot

  • Thousand Eyes (Supported via SCIM)

  • Trello

  • Twingate (Supported via SCIM)

  • UKGPro

  • Veza

  • Workato

  • Workday

  • YouTrack

  • Zapier (Supported via SCIM)

  • Zendesk

  • Zip

  • Zoom

  • Zscaler

On-Premises Data Systems

  • Apache Cassandra

  • Bitbucket Data Center

  • Confluence Server

  • Jira Data Center / Jira Server

  • Microsoft SQL Server

  • MongoDB

  • Oracle Database

  • PostgreSQL

  • PTC Windchill

  • SharePoint Server

  • Solarwinds Platform

  • Windows Servers + SMB

  • Veza

CSV Upload

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.

Generic SCIM Connector

Veza supports the collection of authorization metadata from applications with Users and Groups SCIM endpoints with our in-platform Generic SCIM Connector.

Open Authorization API (OAA)

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.

BlackLine

Configuring the Veza integration for BlackLine

Overview

The Veza integration for BlackLine enables gathering User, Group and Role assignments from the BlackLine financial automation platform.

Configuring BlackLine

  1. Create a BlackLine user for API access

    • The user must have the API Role and be a System Administrator to make the necessary requests

  2. Generate an API key for the user for the BlackLine API Administration Portal or Financial Close System

  3. 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.

Configuring BlackLine on the Veza Platform

  1. 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.

Notes and Supported Entities

BlackLine Users

Attribute
Notes

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

BlackLine Group

Attribute
Notes

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

BlackLine Product (as Resource)

Attribute
Notes

name

Product Name

BlackLine Role

Attribute
Notes

name

Role Name

Roles are assigned to Users or Groups to either BlackLine Application or specific BlackLine Product (resource) as configured in BlackLine.

Crowdstrike Falcon

Configuring the Veza integration for Crowdstrike

Overview

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.

Risk Score Import/Export (Optional)

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.

Configuring Crowdstrike

Before adding the integration to Veza, create an API client on the Crowdstrike platform for the connection.

  1. Browse to your Crowdstrike Falcon instance (ex: https://falcon.us-2.crowdstrike.com/) and log in

  2. Click the hamburger icon in the upper-left corner to open the navigation bar

  3. 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

  4. Click Create API client in the upper-right corner of the screen

  5. 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

  6. Click Create at the bottom of the modal

  7. From the API client created window, record the Client ID, Secret, and Base URL output values

  8. Click Done to close the modal

Configuring Crowdstrike on the Veza Platform

To enable Veza to gather data from the Crowdstrike Falcon platform:

  1. In Veza, open the Integrations page.

  2. Click Add New and pick Crowdstrike as the type of integration to add

  3. Enter the required information and Save the configuration

Field
Notes

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

Notes and Supported Entities

The connector discovers the following entities and attributes:

Crowdstrike User

Attribute
Notes

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)

Crowdstrike Role

Attribute
Notes

description

A description of the role

Risk Score Import

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:

Tag Name
Description

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

IBM Aspera

Configuring the Veza integration for IBM Aspera on Cloud

Overview

The Veza integration for IBM Aspera on Cloud enables gathering User, Groups, Roles and Workspace memberships for the cloud-based file transfer platform.

Configuring Aspera

  1. Generate a key pair to use for authentication (if creating a new user):

    1. Use the command to generate the private portion ssh-keygen -t rsa -b 4096 -m PEM -f jwtRS256.key.

    2. Do not set a password.

    3. Create a public key from the private key: openssl rsa -in jwtRS256.key -pubout -outform PEM -out jwtRS256.key.pub.

  2. Create or use an existing user for authentication:

    1. For a new user, set the user's public key to the public portion of the generated key pair.

    2. For an existing user and key pair set, use the corresponding public key to configure the integration in Veza.

  3. Go to Integrations -> API clients to create an API client:

    1. Enter a name.

    2. Enter the Veza URL for the Redirect URI.

    3. Enable Enable JWT Grant type.

    4. Deselect Client can retrieve token for all users and pick the configured user.

    5. Click create and note the Client ID and Client Secret

  4. Note the Aspera Organization name. This is your Aspera sub-domain, for example https://<org_name>.ibmaspera.com.

Configuring Aspera on the Veza Platform

  1. On the Veza Integrations page, add a Aspera Integration with the following fields:

    1. Name - Name for integration

    2. Client Id - Client ID from the API client

    3. Client Secret - Corresponding Client Secret

    4. Username - Username for API client user with public key.

    5. Organization Name - Aspera Organization name

Notes and Supported Entities

Aspera Users

Attribute
Notes

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

Attribute
Notes

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

Attribute
Notes

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

Oracle EPM

Configuring the Veza integration for Oracle Enterprise Performance Management (EPM)

Overview

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.

Configuring Oracle EPM

  1. Create a service account in Oracle EPM for Veza to use:

    1. From Account Type list select Basic Auth and set a username and password

    2. Account must have Service Administrator role

    3. Note the username and password

    4. For more information on Service Accounts see Oracle Documentation

  2. Note the URL of the Oracle EPM instance

Configuring Veza Platform

  1. In Veza, open the Integrations page.

  2. Click Add New and pick Oracle EPM as the type of integration to add

  3. Enter the required information and Save the configuration

Field
Notes

URL

URL of Oracle EPM instance

Username

Username for service account

Password

Password for service account

Notes and Supported Entities

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

Oracle EPM User

Attribute (type)
Description

id (text)

User login

name (text)

User display name (first + last)

email (text)

User email address

Oracle EPM Group

Attribute (type)
Description

name (text)

Group name

Oracle EPM Role

Attribute (type)
Description

name (text)

Role Name

Note: Oracle EPM API does not return information on role configurations and permissions

MySQL

Configuring the Veza integration for MySQL

Overview

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.

Configuring MySQL

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];

Configuring MySQL on the Veza Platform

  1. 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)

  2. 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.

  3. Click Create Integration to save the configuration

Supported Entities

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

Power BI

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

Overview

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.

Configuring Power BI

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:

  1. Create a new Application and generate credentials. If you are using an existing app created for Azure discovery, skip this step.

    1. Generate a client ID and Secret value for the application to use for authentication.

  2. Note the Tenant ID of the application.

  3. Create an Entra (Azure AD) Security Group, used to authorize the Application to use the Power BI admin API.

  4. Add the Application to the Security Group.

From the Power BI Admin Portal:

  1. Navigate to Admin API settings

    1. Under Service principals can access read-only admin APIs ensure that it is enabled.

    2. 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

Configuring Power BI on the Veza Platform

  1. On the Veza Integrations page select Add Integration and locate the Power BI tile. Configure the integration with the following fields:

    1. Name - Name for the integration

    2. Tenant ID - The Azure Tenant ID that Power BI is connected to where the app registration is created

    3. Client ID - The client ID of the app registration.

    4. Client Secret - The ID of the secret generated for the app registration.

Notes and Supported Entities

Power BI User and Groups

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.

Power BI Roles

Attributes
Notes

id

Power BI group ID

name

Name of the group

Power BI Workspace

Attributes
Notes

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

PagerDuty

Configuring the Veza integration for PagerDuty

Overview

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.

Configuring PagerDuty

To authenticate with PagerDuty, Veza requires an API key for a PagerDuty user. To generate this API key (also referred to as a token):

  1. Log in to PagerDuty.

  2. Click the Integrations menu button in the middle of the PagerDuty screen, then click API Access Keys.

  3. Click the Generate new API Key button to obtain an access token.

  4. 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.

Configuring PagerDuty on the Veza Platform

  1. In Veza, open the Integrations page..

  2. Click Add Integration and pick PagerDuty as the type of integration to add.

  3. Enter the required information and Save the configuration.

Field
Notes

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

Notes and Supported Entities

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.

PagerDuty User

Attribute
Description

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

PagerDuty Group

Attribute
Description

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

PagerDuty Team (as Resource)

Attribute
Description

id

PagerDuty Team ID

name

PagerDuty Team name

Hubspot

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.

Configuring the HubSpot Integration

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.

Create a HubSpot private app and access token

  1. In HubSpot, click the settings icon in the main navigation bar.

  2. On the left sidebar, open Integrations > Private Apps.

  3. Click Create Private App.

  4. 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.

  5. Click the Scopes tab to add required scopes:

    • settings.users.teams.read

    • settings.users.read

  6. Click Create App in the top right to save your changes.

  7. On the Auth tab of the application details, click Show Token and copy the app access token:

Enable the HubSpot integration in Veza

  1. In Veza, open the Integrations page.

  2. Click Add New and pick HubSpot as the type of integration to add.

  3. Enter the required information and Save the configuration.

Field
Notes

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.

Notes and Supported Entities

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:

Entity
Property
Description

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

CSV Upload API

Automating updating CSV integration data

Overview

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.

Using the Upload CSV REST API

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.

Retrieving Integration IDs

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:

  1. On the Veza Integrations page, click the CSV integration to view details

  2. On the Data Source tab, click the data source name to view details

  3. Copy the values from the Properties table:

    1. The unique data source "Id"

    2. The "Provider Id"

    Both values are in UUID format, e.g., 19b0c736-6686-4708-87e2-92171db6afb3.

    Retrieving IDs from Datasources details view

Uploading the Data

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="
}

Example using Curl

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}\"}"

Example using Python

#!/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)

Azure SQL Database

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.

Create a local database user the Veza service principal can assume

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]

Grant Reader role to the Azure subscription

The 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):

The reader role may already be assigned
  1. 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:

  2. Click Next, and choose Select members on the next screen. Select the Veza app registration.

  3. 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.

Delinea Secret Server

Configuring the Veza integration for Delinea Secret Server

Overview

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.

Configuring Delinea Secret Server

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:

Configuring Delinea Secret Server on the Veza Platform

To enable Veza to gather data from the Delinea Secret Server platform:

  1. In Veza, open the Integrations page.

  2. Click Add New and pick Delinea as the type of integration to add.

  3. Enter the required information and Save the configuration.

Field
Notes

Notes and Supported Entities

The connector discovers the following entities and attributes:

Delinea Secret Server User

Attribute
Notes

Delinea Secret Server Group

Attribute
Notes

Delinea Secret Server Role

Attribute
Notes

GitLab

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.

Setup

Generate a GitLab access token

  1. 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.

Add the integration to Veza

To enable the integration:

  1. Browse to the Veza platform and log in.

  2. Go to Integrations.

  3. Click Create Integration. Select GitLab as the integration to add.

  4. 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.

  5. Click Create Integration to save and enable the configuration.

Notes and supported entities

This connector creates the following entities to map applications and identities to permissions:

GitLab
Entity

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

Entity
Property
Values

Limitations

  • Attributes above marked with * are only available on self-hosted with an admin token

  • Does not currently process external users

Kubernetes

Configuring the Veza integration for Kubernetes

Overview

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.

Configuring Kubernetes

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.

Configuring Kubernetes on the Veza Platform

  1. In Veza, open the Integrations page.

  2. Click Add Integration and pick Kubernetes as the type of integration to add

  3. Enter the required information and Save the configuration.

Field
Notes

Generic Kubernetes Deployment

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.

AWS Elastic Kubernetes Service (EKS)

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

Microsoft Azure Kubernetes Service (AKS)

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.

Google Kubernetes Engine (GKE)

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

Notes and Supported Entities

Kubernetes Cluster

Kubernetes clusters contain groups of nodes that work together to run containerized applications and services.

Attribute
Description

Kubernetes Group

Attribute
Description

Kubernetes Role

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.

Attribute
Description

Kubernetes Role Binding

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.

Attribute
Description

Kubernetes Service Account

An identity used by applications running in the Kubernetes cluster to authenticate and interact with the Kubernetes API server.

Attribute
Description

Kubernetes User

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.

Dropbox

Configuring the Veza integration for Dropbox

Overview

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.

Configuring Dropbox

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

Configuring Dropbox on the Veza Platform

To add a Dropbox account for discovery:

  1. In Veza, go to the Integrations page.

  2. Click Add Integration and search for Dropbox. Choose it and click Next to add an integration.

  3. Enter the required information

  4. Click Authorize to approve the connection in Dropbox. Log in as a Dropbox administrator and click Allow to enable the integration.

  5. Click Create Integration to save the configuration.

Field
Notes

Notes and Supported Entities

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:

Dropbox Tenant

Top-level entity representing a Dropbox Team.

  • Tenant Unique ID: Dropbox Team ID (e.g dbtid:asdasdaskjdnajksdakjdkasgAQDLO_eiMaQ)

Dropbox User

  • 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

Dropbox Group

  • Group Unique ID: Unique identifier for the group

Dropbox Group Membership

Represents a User > Group assignment in Dropbox.

Dropbox Permission

  • Permissions: Can be owner, editor, viewer, viewer_no_comment, traverse, other.

Dropbox Folder

The Dropbox Folder entity represents a folder in the Dropbox file system.

LastPass

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.

Requirements

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.

Veza setup

To enable Veza to gather data from the LastPass platform:

  1. Browse to your Veza instance

  2. In the left navigation, expand Configuration, then click Integrations

  3. In the main pane, click Add Integration. Pick LastPass.

  4. 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.

Notes and supported entities

LastPass User

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:

Attribute (type)
Description

LastPass Group

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:

Attribute (type)
Description

LastPass Folder

LastPass folders have the following attributes:

Attribute (type)
Description

LastPass Application Roles

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.

LastPass Folder Roles

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:

LastPass Configuration
State
Veza Role

A user may have multiple roles on a folder based on the pairings of these permissions.

Palo Alto Networks SASE/Prisma Access

Configuring the Veza integration for Palo Alto Networks SASE / Prisma Access

Overview

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.

Configuring Palo Alto Networks SASE / Prisma Access

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:

  1. Browse to your Strata Cloud Manager instance as an administrator.

  2. In the left navigation pane, click the Settings gear. Click Identity & Access.

  3. 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.

  4. 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

  5. Click Next.

  6. On the Client Credentials screen that appears, copy and save the Client ID and Client Secret. Click Next.

  7. 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.

Configuring Palo Alto Networks on the Veza Platform

To enable Veza to gather data from the Palo Alto Networks platform, follow these steps:

  1. In Veza, open the Integrations page.

  2. Click Add New and pick Palo Alto Networks as the type of integration to add. Click Next.

  3. Enter the required information (below) and Save the configuration.

Field
Notes

Notes and Supported Entities

The connector discovers the following entities and attributes:

Palo Alto Applications

The connector discovers the following applications on the Palo Alto Networks platform:

Application

Palo Alto Networks User

The connector discovers human users and service account users.

Attribute
Notes

Palo Alto Networks Role

The connector discovers both built-in and custom roles and their permissions.

Attribute
Notes

BambooHR

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.

Requirements

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:

  1. 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.

  2. Click API Keys.

  3. On the following page, click on Add New Key.

  4. 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.

Adding a BambooHR Integration to Veza

To enable Veza to gather data from the BambooHR platform:

  1. Browse to your Veza instance.

  2. In the left navigation, expand Configuration, then click Integrations.

  3. In the main pane, click Add Integration and choose BambooHR.

  4. 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.

Notes and Supported Entities

Veza discovers and shows the following metadata for BambooHR User entities, which can be used to narrow searches and access reviews using attribute filters:

Attribute (type)
Description

Expensify

Configuring the Veza integration for Expensify

Overview

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.

Configuring Expensify

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.

Configuring Expensify on the Veza Platform

  1. In Veza, open the Integrations page.

  2. Click Add Integration and pick Expensify as the type of integration to add

  3. Enter the required information and Save the configuration

Field
Notes

Notes and Supported Entities

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

Expensify Users represent individual employees who log to report or approve expenses, or any other task on the platform.

Attribute
Notes

Expensify Workspaces (as Groups)

Expensify Workspaces define common rules for expense management, used to organize departments, teams, or other groups of users.

Attribute
Notes

Expensify Roles

Roles define the relationship an individual users has to a Workspace, such as Policy Admin, Auditor or Employee, and represent a set of permissions.

Attribute
Notes

Oracle Fusion Cloud

Configuring the Veza integration for Oracle Fusion

Overview

The Veza integration for Oracle Fusion Cloud supports collecting Users, Groups, and Roles for the Oracle Fusion Cloud ERP platform.

See for more details.

Configuring Oracle Fusion

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.

  1. 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.

  2. Upload the Veza_v2.catalog file to the BI Catalog.

    1. Navigate to the instance's Catalog page: https://<instance>.oraclecloud.com/analytics/saw.dll?catalog

    2. Under Shared Folders/Custom select Unarchive and upload the Veza.catalog file

    3. 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.

    4. Ensure the intended user has permission on both the Data Model and Report objects.

Configuring Oracle Fusion Integration on Veza Platform

  1. In Veza, open the Integrations page.

  2. Click Add New and pick Oracle Fusion Cloud as the type of integration to add

  3. Enter the required information and Save the configuration

Field
Notes

Notes and Supported Entities

Oracle Fusion Cloud User

Attribute
Notes

Oracle Fusion Cloud Role

Attribute
Notes

Oracle Fusion Security Context (as Resource)

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.

Attribute
Notes

AWS KMS

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.

Configuration

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

View Group Roles
View Groups
View Roles
View Teams
View Users

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

Notes and Supported Entities
GitLab access token
Insight Point

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).

Notes and Supported Entities
Insight Point (Helm Chart Installation)
Insight Point

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

notes and supported entities

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

notes and supported entities

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

notes and supported entities
official documentation

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

notes and supported entities
10KB
Veza_v2.catalog
{
  "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": "*"
  }
Key Management Service (KMS)
IAM policies

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

https://admin.lastpass.com
https://admin.lastpass.com/dashboard
Advanced > Enterprise API
Where can I find the CID (account number) and API secret?

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.

Authentication
Insight Point

Cassandra

Configuring the Veza integration for Apache Cassandra

Overview

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.

Configuring Apache Cassandra

Requirements

  • 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.

Commands to Create a Role with Minimal Permissions

  1. Log in to the Cassandra database as a superuser, or as a user with permission to create roles.

  2. 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.

Configuring Apache Cassandra on the Veza Platform

To configure the integration in Veza:

  1. In Veza, go to the Integrations page.

  2. Click Add Integration and search for Apache Cassandra. Select it and click Next to open the configuration editor.

  3. Enter the required information.

  4. Click Create Integration to save the configuration.

Field
Notes

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.

Notes and Supported Entities

Cassandra Database

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.

Cassandra Role

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.

Role Attributes

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.

Cassandra Role Effective Permission

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.

Cassandra Table Effective Permission

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.

Cassandra Keyspace

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.

Cassandra Table

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.

Microsoft SharePoint Online

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:

  1. Copy the script full script on this page: Setting up an Azure AD app for app-only access.

  2. Save the script with a text editor Create-SelfSignedCertificate.ps1

  3. Open PowerShell as an Administrator and invoke the script

    .\Create-SelfSignedCertificate.ps1 -CommonName "MyCompanyName" -StartDate 2017-10-01 -EndDate 2019-10-01
  4. When prompted, enter a password for encryption.

  5. 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.

  1. From your Microsoft Azure Portal, go to Azure Active Directory and select "App Registrations"

  2. Select the app registration used by Veza for discovery of the Azure tenant

  3. Click on API permissions, and "Add a permission" Grant the following Application Permissions.

    1. For SharePoint:

      • User.Read.All

      • Sites.Read.All

    2. For Microsoft Graph:

      • Directory.Read.All

      • Files.Read.All

      • Sites.Read.All

      • Reports.Read.All

    3. Verify that "Grant Admin Consent" is enabled on the API permissions screen.

    See the Expanded Functionality section below for optional permissions.

  4. Go to the app registration's Certificates & Secrets, click "Upload certificate," and provide the public key from the key pair from step 1.

  5. 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:

  1. From the Office 365 admin center, go to Settings > Org Settings > Services

  2. Select Reports

  3. 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.

Expanded Functionality

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:

Entity / Property
API 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:

Value
Description

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.

Oracle JD Edwards EnterpriseOne

Configuring the Veza integration for Oracle JD Edwards Enterprise One (JDE)

Overview

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.

Prerequisites

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)

Database Configuration

Oracle Database

  1. Connect to a common user with the CREATE USER privilege.

  2. If the JDE is installed on an Oracle 12c pluggable DB (pdb), switch to the proper pluggable DB.

    ALTER SESSION SET CONTAINER=<pdb_name>;
  3. 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>;

Microsoft SQL Server

  1. Connect to SQL Server Management Studio as a sysadmin.

  2. 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.

Enable the Oracle JDE Integration in Veza

  1. In Veza, go to the Integrations page.

  2. Click Add Integration.

  3. Search for Oracle JDE. Select it and click Next.

  4. 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.

  5. Click Save to test the connection and save the configuration.

  6. 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.

Notes and Supported Entities

The integration discovers the following entities, along with attributes for filtering queries and fine-tuning the scope of access review.

Oracle JDE User

Represents an Oracle JDE user.

Attribute
Description

ID

User login name

Email

User email address

Employee ID

User employee ID

Oracle JDE Role

Represents an Oracle JDE role.

Attribute
Description

Name

Role name

Troubleshooting

  • 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.

Coupa

Configuring the Veza integration for Coupa

Overview

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.

Configuring Coupa

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:

  1. Go to Setup > Oauth2/OpenID Connect Clients

  2. Click Create and pick Client Credentials for the Grant type

  3. Enter the required fields and enable the scope:

    • core.users.read

  4. Save the Client and note the Client Identifier and Client Secret

See the Coupa documentation for more details.

Configuring Coupa on the Veza Platform

  1. In Veza, open the Integrations page.

  2. Click Add New and pick Coupa as the type of integration to add

  3. Enter the required information and Save the configuration

Field
Notes

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)

Notes and Supported Entities

Roles and Permissions

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:

  1. Go to Setup > Company Setup > Permissions

  2. 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.

Coupa User

Attribute
Notes

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 Group

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.

Attribute
Notes

group_type

What type of group the local group is

is_active

True if the group is active

Coupa Role

Attribute
Notes

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.

Looker

This integration is provided as an Open Authorization API (OAA) connector package. Download the source code on GitHub.

Looker OAA Connector

Overview

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.

OAA Application Mappings

This connector uses the OAA Application template. The following table shows how Looker entities are mapped to the template.

Looker
OAA Application

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

Attributes

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

Setup

Prerequisite

  1. Generate a Looker API3 key for a user with sufficient privileges to see all users, roles and models. The following scopes are required:

    1. see_users

    2. manage_models

  2. 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.

Command Line

  1. With Python 3.8+ install the requirements either into a virtual environment or otherwise:

    pip3 install -r requirements.txt
  2. 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....."
  3. 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.

Databricks (Unity Catalog)

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.

Requirements

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.

Configure a Veza service principal

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:

  1. Go to User management.

  2. Under Service principals, click Add service principal.

  3. Enter a name and click Add.

  4. On the Roles tab, enable Account admin to enable account-level API calls.

Assign your service principal to identity federated workspaces.

  1. Open Workspaces and click your workspace name.

  2. Go to Permissions > Add permissions.

  3. 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:

  1. In the Databricks account console, open User management.

  2. On the Service principals tab, find the service principal.

  3. Under OAuth secrets, click Generate secret.

  4. Copy the Secret and Client ID, and then click Done.

For more details see OAuth M2M in the Databricks documentation.

Create a Databricks cluster

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.

Assign the Veza user to Databricks workspaces

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:

  1. Click your username in the top bar of the Databricks workspace and select Admin Settings.

  2. Open Identity and access.

  3. Go to Users > Manage > Add User.

  4. Click Add new to create a new user and enter the email of the Veza service account.

  5. Click Add.

  6. On the list of users, click the user.

  7. Click the Entitlements tab.

  8. Click the toggle next to Admin access.

See Manage Users for more detail.

Enable Databricks extraction

Databricks extraction is disabled by default. To enable the service, edit the AWS, Google Cloud Platform, or Microsoft Azure integration:

  1. Go to the Veza Integrations page.

  2. Find the integration on the list and click Edit.

  3. In the third section Limit Services, tick Limit {Integration} Services

  4. Click Select All to enable all services, or tick the boxes for services your company uses. Tick the box next to Databricks.

  5. Go to the Details section.

  6. 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

  7. Click Save Integration to enable the connection.

Bitbucket Data Center

Configuring the Veza integration for self-managed BitBucket Data Center.

Overview

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 .

Configuring Bitbucket Data Center

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 .

Recommended configuration: username and password

For full discovery, the integration calls the Bitbucket Admin API as an admin user, configured for username and password authentication.

  1. 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.

Alternate configuration with a Personal Access Token

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.

Configure the Veza integration for BitBucket Data Center

To enable the integration and queue the first extraction:

  1. In Veza, go to Integrations.

  2. Click Add Integration and pick Bitbucket Data Center as the type of integration to add.

  3. Enter the required information and Save the configuration.

Field
Notes

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.

Notes and Supported Entities

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

Bitbucket Data Center User

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.

Attribute
Description

Bitbucket Data Center Group

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.

Attribute
Description

Bitbucket Data Center Project

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.

Attribute
Description

Bitbucket Data Repository

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

Attribute
Description

Jamf Pro

Configuring the Veza integration for Jamf Pro

Overview

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.

Prerequisites

  • A Jamf Pro instance

  • Administrator permissions to create a Jamf API role and API client

Create an API Role

To grant privileges to an API client in Jamf Pro, you must first create an API role that defines a set of permissions:

  1. In Jamf Pro, click Settings in the sidebar.

  2. In the System section, click API Roles and Clients.

  3. Open the API Roles tab at the top of the pane.

  4. Click New.

  5. Enter a name for the API role.

  6. 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.

  7. Click Save.

Create an API Client

Add an API client Veza will use for authentication. Attach the new role to the API client:

  1. In Jamf Pro, click Settings in the sidebar.

  2. In the System section, click API Roles and Clients.

  3. Click the API Clients tab at the top of the pane.

  4. Click New.

  5. Enter a display name for the API client.

  6. In the API Roles field, add the role you created for the Veza integration.

  7. Under Access Token Lifetime, enter the time in seconds that you want access tokens to be valid for.

  8. Click Save.

  9. Click Edit.

  10. Click Enable API Client to allow the client to be used to generate a client secret.

  11. Click Save.

Generate Client Secret

Create a secret for authenticating the API client:

  1. In Jamf Pro, open the API client to generate an access token.

  2. Click Generate Client Secret. A confirmation dialog appears.

  3. 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.

Add Jamf Integration to Veza

To enable Veza to gather data from the Jamf Pro platform:

  1. Browse to your Veza instance.

  2. On the navigation bar, click Integrations, then click Add Integration.

  3. Find Jamf Pro and click Next.

  4. 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/.

Notes and Supported Entities

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

Boomi

Configuring the Veza integration for Boomi

Overview

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 .

Configuring Boomi

Step one: Create an Account in Boomi

Create an account for the integration user in Boomi:

  1. Log in to Boomi Enterprise Platform as an administrator.

  2. Go to Settings > User Management.

  3. Create a new role and assign the following Privileges. The new role should not inherit from any other role. API Access Account Administration

  4. 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.

Step two: Generate an API token

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.

  1. Log in to Boomi as the integration user.

  2. Navigate to Settings > My User Settings > AtomSphere API Tokens.

  3. Generate and copy the API token.

Save the token to use when configuring the integration in Veza.

See for more details.

Configuring Boomi on the Veza Platform

  1. In Veza, go to the Integrations page.

  2. Click Add Integration and search for Boomi. Click on it and click Next to add an integration.

  3. 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.

  4. Click Create Integration to save the configuration.

Custom identity mappings for Boomi

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 .

Notes and Supported Entities

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.

Boomi Account Users

Represents a local Boomi user, with the attributes:

Attribute
Notes

Boomi Account Roles

A built-in or custom role:

Attribute
Notes

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 .

Boomi Account Privileges

An individual system permission assigned to a role or directly to a user:

Attribute
Notes

Roles define a group of system permissions within Boomi. Example Roles and Privileges:

Confluent

Configuring the Veza Integration for Confluent

Overview

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.

Configuring Confluent

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:

  1. Before creating an API key associated with a service account, use to restrict access to applications that use the key.

  2. From the Administration menu, click Cloud API keys or go to .

  3. Click Add key.

  4. Choose Granular Access as the scope.

  5. Choose whether to create the key associated with your user account or a service account.

    The API key and secret are generated and displayed.

  6. 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.

  7. (Optional, but recommended) Enter a description of the API key to describe the intended use and distinguish it from other API keys.

  8. Select the check box to confirm you have saved your key and secret.

  9. Click Save. The key is added to the keys table.

Using Confluent CLI:

  1. Sign in to your cluster using the command.

    Enter your Confluent Cloud credentials:

  2. Before creating a Cloud API key associated with a service account, use to restrict access to applications that use the key.

  3. 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.

  4. 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.

Configuring Confluent on the Veza Platform

To enable Veza to gather data from the Confluent Cloud Platform:

  1. In Veza, navigate to Configuration > Integrations

  2. Click Add Integration and select Confluent as the type of integration to add.

  3. Enter the required information and click Create Integration

Field
Notes

Notes and Supported Entities

The Confluent integration discovers the following entities and attributes:

Confluent Cluster

Attribute
Notes

Confluent Environment

Attribute
Notes

Confluent Group

Attribute
Notes

Confluent User

Attribute
Notes

Confluent Role

Confluent roles are discovered and assigned to security principals; no additional metadata is gathered.

Check Google Cloud Permissions

Method
Syntax

Description

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:

Name
Type
Req.
Description

Example request

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.

Example response

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.

Ivanti Neurons

Configuring the Veza HRIS integration for Ivanti Neurons

Overview

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).

Configuring Ivanti

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.

Configuring the Ivanti Nurons Integration on Veza

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.

  1. On the Veza Integrations page, click Add Integration and locate the Ivanti Nurons HR tile.

  2. Configure the integration with the following fields:

    1. Set the Insight Point - Select the Insight Point that will have access to the Ivanti Nurons instance

    2. Name - Name for the integration

    3. URL - URL for Ivanti Nurons instance

    4. Additional Properties - Additional employee properties to collect from the API response. See below.

  3. Provisioning Source (optional): Check to enable Ivanti Neurons as a provisioning source for Life Cycle Management Workflows.

Notes and Supported Entities

Ivanti Employee

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.

Employee Property
API Field
Notes

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

Notes and Supported Entities
Atlassian Cloud Connector
Insight Point
allow inbound traffic from Veza in your firewall rules
Users and Groups: Creating a User
Personal Access Tokens
Global Permissions: User and Group Access
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

email

The user's email address

resource_name

The Confluent Resource name / URI of the environment resource

Notes and Supported Entities
Cloud API Keys
RBAC
https://confluent.cloud/settings/api-keys
confluent login
RBAC

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": []
}
Google provider integration
API key
integration role

ID

RecID

Name

DisplayName

First Name

FirstName

Last Name

LastName

User Name

NetworkUserName

Employee Number

LoginID

Email

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

documentation to create a Key Group and API key

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.

API Authentication
Jamf Pro API Scalability Best Practices
Adding an API role in Jamf pro

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"}
    ]
}
notes and supported entities
Adding a user and assigning roles
AtomSphere API Tokens settings
Custom Identity Mappings
User Roles and Privileges: Common Examples

Box

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.

Configuration - Box

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.

  1. Log in to your Box account and open the Developer Console.

  2. Click the "Create New App" button and select "Custom App".

  3. Select Server Authentication (with JWT) as the Authentication Method

  4. Click "Create App".

Configure the custom app in Box:

  1. For "App Access Level" select App + Enterprise Access.

  2. Under the Application Scopes section ensure the following boxes are checked:

  3. Under the Advanced Features section ensure the following boxes are checked:

  4. Save the changes.

Generate a key pair and authorize the custom app:

  1. 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.

  2. Under the Authorization tab click Review and Submit to make your new app available.

  3. From the Box Admin console, navigate to Integrations > Platform Apps Manager to see the pending authorization.

  4. 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"
}

Configuration - Veza

  1. In Veza, go to Configuration > Integrations

  2. Click Add New and choose Box as the integration type

  3. Complete the required fields:

Field
Description

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

Supported Entities

  • Box Enterprise

  • Box User

  • Box Group

  • Box Role

  • Box Effective Permission

  • Box Folder

  • Box Home Folder

Entity Attributes and notes:

Box User

A Box user represents an account on the platform used to access personal files and collaborate with others.

User Properties
Details

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.

Box Role

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.

Role Properties
Details

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 Folder

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.

Folder Properties
Details

has_external_collaborators

True if there are external collaborators

external_collaborators

List of external collaborators

Qualys

Configuring the Veza integration for Qualys.

Overview

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

Prerequisites

  1. A Qualys platform account. The integration is tested with the "Small Business" Qualys package.

  2. 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

  3. 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

Configuring Qualys

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)

Configuring Qualys on the Veza Platform

  1. In Veza, go to the Integrations page

  2. Click Add Integration and search for Qualys

  3. Click on the Qualys integration to open the configuration.

  4. Enter the required fields

  5. Click Create Integration to save the configuration

Configuration Options

Field
Notes

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

Notes and Supported Entities

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

Users

Attribute
Notes

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)

Asset Groups

Attribute
Notes

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

Permissions and Access Controls

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.`,

Clickhouse

Configuring the Veza integration for ClickHouse.

Overview

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.

Prerequisites

  • 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

Configuring the Veza integration for ClickHouse

Retrieve a ClickHouse API Key

  1. In the ClickHouse Cloud Console, select API Keys from the left menu.

    Choose API Keys on the navigation menu.
  2. Click New API Key in the top-right corner. For new accounts, you'll see a prompt to create your first key.

  3. Configure the API key:

    • Enter a descriptive Key Name

    • For Organization Permissions, select Developer

    • Set an appropriate expiration time

  4. Click Generate API Key

    API Key Creation Form
  5. Copy and securely store both the Key ID and Key Secret. These values cannot be retrieved after leaving this page.

Add the ClickHouse Integration to Veza

  1. Browse to your Veza instance

  2. In the left navigation, choose Integrations

  3. Click Add Integration and select ClickHouse

  4. Enter the following values:

    • Client ID: The Key ID from your ClickHouse API key

    • Client Secret: The Key Secret from your ClickHouse API key

  5. Click Create Integration to save your changes

Notes and Supported Entities

Organization Level Properties

The integration captures organization-level metadata for a ClickHouse Cloud deployment. Note that the integration currently supports connecting to a single organization only.

Veza Field Name
Description
Property Type

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

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.

Veza Field Name
Description
Property Type

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

Services represent individual ClickHouse database instances within your organization. Each service represents a deployable database with specific configuration options across cloud providers and regions.

Veza Field Name
Description
Property Type

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

Roles

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

Permissions

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

OneLogin

Configuring the Veza integration for OneLogin

Overview

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

Configuring OneLogin

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.

Prerequisites

  • OneLogin administrator account

  • API credentials with Read All scope

Creating OneLogin API Credentials

  1. Log in to OneLogin as an account owner or administrator.

  2. Navigate to Developers > API Credentials.

  3. Click New Credential.

  4. Select "Read All" scope.

  5. Click Save and securely store the client ID and secret.

See the Working with API Credentials documentation for more details.

Configuring OneLogin on the Veza Platform

  1. In Veza, go to the Integrations page.

  2. Click Add Integration and search for OneLogin.

  3. Click on the OneLogin tile to open the configuration form.

  4. Enter the required information.

  5. Click Create Integration to save the configuration.

Field
Description

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.

Notes and Supported Entities

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)

OneLogin Domain

A OneLogin tenant containing and managing users, applications, groups, and roles. The domain serves as the root node for discovering identity and access relationships.

OneLogin User

Identities in OneLogin, including core attributes and authentication status. Users can belong to groups and be assigned roles.

Attribute
Description

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

OneLogin App

SAML Applications integrated with OneLogin define what users can access through OneLogin SSO.

Attribute
Description

oneLoginConnectorId

OneLogin connector identifier (required)

samlProviderIds

Associated SAML provider IDs (optional)

createdAt

Application creation timestamp

updatedAt

Last modification timestamp

OneLogin Group

Groups represent collections of users, used for role-based access control at scale.

OneLogin Role

Admin role assignments in OneLogin grant access to platform management capabilities. Roles track administrative access with admin ID mappings.

Attribute
Description

adminIds

List of administrative user IDs (optional)

Cisco Duo

Configuring the Veza integration for Cisco Duo

Overview

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.

Prerequisites

  • 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

Configuring Cisco Duo

Creating API Credentials

  1. Log in to the and navigate to Applications

  2. Click Protect an Application

  3. Locate Admin API in the applications list. Click Protect to configure the application

  4. 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.

Configuring API Permissions

  1. In the Admin API application settings, grant the following minimum required permissions:

    • Grant administrators: Read

    • Grant resource: Read

Configuring Cisco Duo on the Veza Platform

  1. In Veza, go to the Integrations page

  2. Click Add Integration and search for Cisco Duo

  3. Click on the Cisco Duo icon and click Next

  4. Configure the integration with the following information:

    Field
    Notes
  5. Click Create Integration to save the configuration

Notes and Supported Entities

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

Users

Attribute
Description

Groups

Attribute
Description

Access Credentials

Phone Authentication

Attribute
Description

Hardware Tokens

Attribute
Description

WebAuthn Credentials

Attribute
Description

Administrative Roles

The integration maps Duo administrative roles to permissions. Each role has specific capabilities mapped Veza canonical permissions:

Role
Key Capabilities
Mapped Permissions

CSV Upload Troubleshooting

Solutions for common CSV import issues in Veza

This document helps you identify and resolve common issues when importing CSV files into Veza.

Understanding CSV Import Behavior

Before troubleshooting, it's important to understand how the CSV import process works:

File Requirements

  • 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

Entity Requirements

  • 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

Processing Rules

  • 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

Common Issues and Solutions

Configuration and Integration Issues

Issue
Solution

Mapping Issues

Issue
Solution

Data Format Issues

Issue
Solution

List Column Issues

Issue
Solution

Preparation Best Practices

  1. 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

  2. Validate CSV format

    • Ensure proper comma delimitation

    • Quote fields containing commas

    • Use consistent data formats across rows

  3. 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

  4. Consider data quality

    • Standardize identifiers (case consistency, no trailing spaces)

    • Use consistent naming for groups and roles

    • Validate data formats before import

Current Limitations

Be aware of these current limitations in the CSV import functionality:

  1. No application resources support

    • Resources within applications are not currently supported

  2. 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

  3. No column transformations

    • The system cannot combine or transform column values during import

    • Column transformations or combinations are not supported

  4. Full replacement updates

    • Each update completely replaces the previous data

    • Incremental updates are not supported

  5. 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

  6. Default permissions

    • If no column is mapped to role permissions, Veza assigns a default "Uncategorized" permission.

  7. 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

Getting Support

If you continue to experience issues after reviewing this guide:

  1. Review the for details on supported formats and mapping options

  2. Check the for guidance on structuring your CSV files

  3. Contact Veza Support with:

    • A sample of your CSV file (with sensitive data removed)

    • Your mapping configuration

    • A description of the unexpected behavior

Oracle Cloud Infrastructure

Enabling the Veza integration for OCI

Overview

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.

Prerequisites

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:

  1. Go to Identity and Security > Domains > Default (or another top level domain)> Groups > Create Group

  2. Assign a name to the group (such as veza-oci-integration) and add a description

  3. Click Create

Create a new user:

  1. From the main navigation menu, choose Identity & Security. Under Identity, click Users

  2. Click Create User

  3. Add a name, description, and email address. Click Create.

On the user details page, add the users to the group:

  1. Click Groups

  2. Click Add User to Group

  3. 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})

  1. Scroll down and select API Keys under resources

  2. Select Add API Key, and then Download private key

  3. Copy and save the values in the configuration file preview

Create a group policy

  1. From the main navigation menu, choose Identity & Security. Under Identity, click Policies

  2. Click Create Policy. Provide a name and description for the policy

  3. Under Policy Builder, click Show manual editor to open the editor.

  4. 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.

Configuration

Once you have created the Oracle Cloud user credentials, you can enable the Veza->Oracle integration under Configuration > Cloud Providers:

  1. Navigate to Configuration > Cloud Providers > Add New

  2. Choose Oracle Cloud Infrastructure from the dropdown menu.

  3. Fill out the required fields, using the Oracle Cloud configuration file for reference:

Click Save to begin the initial discovery and extraction.

Notes

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.

NetSuite

Configuring the Veza integration for NetSuite

Overview

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.

Configuring NetSuite

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:

Ensure that REST API and Oauth2 are enabled

  1. Navigate to Setup -> Company -> Enabled Features

  2. Under the Analytics tab:

    • In the SuiteAnalytics Workbook section, enable SUITEANALYTICS WORKBOOK if it is not enabled.

  3. 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

Create a Role for Veza discovery

  1. Navigate to Setup -> Users/Roles -> Manage Roles and create a new role

  2. Provide a name for the role such as "Veza Discovery"

  3. Under Subsidiary Restrictions set Accessible Subsidiaries to All Subsidiaries

  4. 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

Assign the role to a user

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.

Create an integration

  1. Navigate to Setup > Integration > Manage Integrations and create a new integration

  2. Provide a name for the integration such as "Veza Discover" and an optional description

  3. Under the Oauth2 section enable CLIENT CREDENTIALS (MACHINE TO MACHINE) GRANT and Scope REST Web Services

  4. 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."

Configure client credentials

  1. Generate a new x509 Certificate to use.

    1. 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.

  2. 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​

Configuring NetSuite on the Veza Platform

​To enable the NetSuite integration in Veza you will need the following:​

  1. In Veza, open the Integrations page.

  2. Click Add New and pick NetSuite as the type of integration to add

  3. 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

Notes and Supported Entities

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.

NetSuite User

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.

Attribute
Notes

NetSuite Role

Roles are configurations defining the level of access and sets of permissions users can have.

Attribute
Notes

NetSuite Subsidiary Resource

Subsidiaries represent separate, hierarchical legal entities (distinct companies) within NetSuite.

Attribute
Notes

Confluence Server

Early Access: This integration is provided as an Open Authorization API (OAA) connector package. Contact our support team for more information.

Veza Confluence Server Connector

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.

Proprties

Entity
Property
Description

Note: Connector currently only discovers Global spaces

Confluence Setup

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.

  1. Create a user authenticated by a password and grant access to perform SELECT operation on the following tables in the Confluence database:

    1. cwd_user

    2. user_mapping

    3. cwd_group

    4. cwd_membership

    5. cwd_user_attribute

    6. SPACES

    7. SPACEPERMISSIONS

    For example with database name confluence_db and user veza:

  2. User must be able to connect to the database over the network.

Veza Setup

  1. Generate an API token for your Veza user. For detailed instructions consult the Veza User Guide.

Running the Connector

There are multiple options to run the connector. Instructions are included for running from the command line and building a Docker container.

Command Line

  1. Install the requirements with Python 3.8+:

    Install the specific database platform requirements:

    • MySQL

    • PostgreSQL

  2. 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.

  3. Run the connector:

Application Parameters / Environmental Variables

Parameter
Environmental Variable
Required
Notes

Oracle Database (AWS RDS)

Configuring the Veza integration for Oracle Database on AWS RDS.

Overview

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.

Configure Oracle Database discovery for AWS RDS

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.

Update Veza-AWS extraction policy

  • In the AWS account console, ensure that the includes the rds:DescribeTenantDatabases capability. The RDS section should look like:

Create local database users

Create a local user in each Oracle database to discover (including tenant databases):

  1. Log in to the Oracle Database instance as an administrator.

  2. Create a local user. This user must have the same name and password for all Oracle databases the integration will discover.

  3. Grant permissions: GRANT SELECT ANY DICTIONARY TO veza_db_user;

  4. Repeat this process for each database to extract authorization metadata.

Enable Oracle Database discovery and extraction

  1. In Veza, go to the Integrations page.

  2. Search for the parent AWS account integration and click Edit.

  3. In the configuration, check that the DB User matches the name of the user you created.

  4. Enter the user Password.

  5. Save the configuration.

Notes and Supported Entities

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:

OracleDB Database

Represents an Oracle database instance. Multitenant configurations can have more than one database within a single RDS Oracle instance.

Attribute
Description

OracleDB Object Privilege Grants

Represents the privilege grants for objects in the Oracle database. These are granted explicitly to Users and Roles and apply to specific Tables.

Attribute
Description

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).

OracleDB Roles

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.

Attribute
Description

OracleDB Schema

Represents a schema within the Oracle database. A schema within an OracleDB Database contains individual tables. Users can be assigned to Schema as owners.

Attribute
Description

OracleDB User

Represents a user within the Oracle database. OracleDB Users are local accounts within a database.

Attribute
Description

OracleDB Table

Represents a table within the Oracle database. Veza shows effective permissions from OracleDB Users to OracleDB Tables.

Attribute
Description

OpenAI

Configuring the Veza integration for OpenAI

Overview

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.

Configuring OpenAI

To integrate OpenAI with Veza, you'll need to obtain your Organization ID and generate an API key.

Get your Organization ID

  1. Sign in to the OpenAI

  2. Click Manage Account from the user dropdown in the upper right corner

  3. Navigate to the Settings section

  4. Note your Organization ID (will begin with "org-")

Generate an API Key

  1. While in the OpenAI Dashboard, navigate to API Keys

  2. Click Create new secret key

  3. Give your key a name that indicates it's for Veza integration (e.g., "Veza-Integration")

  4. Copy the API key immediately, as you won't be able to see it again

See the for more details.

Configuring OpenAI on the Veza Platform

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.

Prerequisites

  1. Contact your Veza support representative to obtain the preview OAA connector.

  2. Generate an for your Veza user.

Command Line Setup

  1. Install the requirements with Python 3.8+:

  2. Export the required environmental variables:

  3. Run the connector:

Docker Setup

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.

  1. Build the container:

  2. Run the container with all required parameters:

Configuration Options

Parameter
Environmental Variable
Required
Notes

Notes and Supported Entities

The OpenAI integration discovers users and their respective roles within your OpenAI organization.

Organization Properties

Entity
Property
Description

User Properties

Entity
Property
Description

Supported Roles and Permissions

The integration maps OpenAI roles to specific permissions:

Role
Permissions

Custom Permissions

Permission
Description

AWS RDS PostgreSQL

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.

Prerequisites

  • 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.

Granting Veza Access

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.

IAM Policy for RDS Discovery

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 .

Google Drive

Configuring the Veza integration for Google Drive

Overview

The Veza integration for Google Drive discovers shared drives, folders, and permissions within Google Drive file systems.

How It Works

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

Drive and Folder Permissions

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.

Shared Drive Sharing Settings

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 Shared Drive Setting
Veza Property
Value when Checked

Setup

Google Setup

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:

  1. Log into Google Cloud Console https://console.cloud.google.com/

  2. Create a new project https://developers.google.com/workspace/guides/create-project and select that project

  3. Navigate to APIs & Services

  4. Select Enabled APIs & Services from the left and click + Enable APIs and Services from the top to enable a new API

    1. Search for "Google Drive API", select it from the results, and select Enable

  5. Return to APIs & Services and select OAuth Consent Screen

  6. Select Internal for the App type and click Create

    1. Provide a name and the contact emails

    2. Click Save and Continue

    3. Click Add or Remove Scopes

    4. Add the https://www.googleapis.com/auth/drive.readonly scope

      1. The drive.readonly scope is required to list Shared Drives

    5. Click Save and Continue

  7. Return to APIs & Services and select Credentials

    1. Create credentials by click + Create Credentials and selecting OAuth Client ID

    2. Select Web Application for Application Type and enter a name

    3. Under Authorized redirect URLs add https://oauth2-redirect.on.vezacloud.com

    4. Save and download the JSON file from the creation modal

Configuring Google Drive on the Veza Platform

  1. In Veza, open the Integrations page.

  2. Click Add New and pick Google Drive as the type of integration to add

  3. Enter the required information and Save the configuration

Field
Notes
  1. Click the Authorize button and complete the flow through the Google consent screens.

  2. After being redirected to the Edit Integration page, save the integration.

AWS RDS MySQL

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.

Prerequisites

  • 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 .

Support for Amazon Aurora

  • 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.

Anaplan

Configuring the Veza integration for Anaplan

Overview

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.

Configuring Anaplan

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.

Create a User

To create a user, sign in to Anaplan with an account that has the User Admin role and follow these steps or see:

  1. In Users > Internal, click New. The Create new internal user dialog displays.

  2. Complete the new user dialog prompts for First Name, Last Name, and Email Address.

  3. Click Create user to create the user account or click Cancel to cancel the account creation.

  4. In the dialog, select the workspaces the user can access.

    • Click the select all box to select all the workspaces in your tenant.

  5. Deselect the Notify user when added to workspaces to prevent additional notification emails.

  6. 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

  1. Access the .

  2. Go to Access Control > Assignments

  3. Pick the internal user for the Veza integration from the list.

  4. Click the checkbox next to User Administration role to assign it.

  5. 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.

(Optional) Configure Certificate Authentication

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:

  1. Access from the Application menu.

  2. Select Security > Certificates.

  3. Select Add Certificates.

  4. Select Choose File to locate the .pem certificate that you want to add.

  5. Select Import Certificates.

Configuring Anaplan on the Veza Platform

To enable Veza to gather data from the Anaplan platform:

  1. In Veza, open the Integrations page.

  2. Click Add New and choose Anaplan as the type of integration to add.

  3. 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:

Notes and Supported Entities

Anaplan User

Anaplan Workspace

Anaplan Model

Note: Anaplan APIs do not provide model permissions information. Available model metadata is gathered for display only.

AWS Redshift

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:GetClusterCredentialsIAM 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.

1. Update AWS IAM policy

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:

The db_user username must be the same as the "Redshift DB User User" specified when configuring the AWS account on the Veza Integrations page.

Connect to the Redshift warehouse and create the user:

2. Grant Redshift database permissions

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.

For further reference, see the in the official AWS documentation.

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

Custom Fields

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

CSV Import documentation
CSV Import Examples
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.

Notes
Managing Users
Create Policy
Policies
group_name
verb
resource-type
compartment_name
condition

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

notes and supported entities
{
  "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.

AWS integration
Notes and Supported Entities
AWS Integration
Insight Point
IAM policy for the Veza Integration
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)

notes and supported entities
Dashboard
official OpenAI API documentation
API token
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>"
}
connecting an AWS account to Veza
DB Authentication
Insight Point
security group inbound rules
AWS account
adding the AWS account

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

notes and supported entities
Integration API v2
SCIM API
Create a new internal user
Assign or unassign roles for internal users
Administration console
Security Certificates
Manage your certificates
Administration
{
    "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];
AWS connector policy
read-only database permissions
Grant Database Permissions
Example policy for using GetClusterCredentials

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

email

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

notes and supported entities
Duo Admin Panel
Protect an Application in Duo Admin Panel.
Example of API credentials screen.
Permission settings for required Read Grant Administrators and Read Grant Resource permissions.
{
  "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];
connecting an AWS account to Veza
Insight Point
security group inbound rules
IAM DB Authentication-enabled
From Aurora MySQL clusters, you can drill down to each instance or up to permissions, users, and groups

Coupa Contingent Workforce

Configuring the Veza integration for Coupa Contingent Workforce

Overview

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

Requirements

Prerequisites

  • Coupa CCW environment

  • User account with Customer Integration Admin privileges

  • Network connectivity from Veza to your Coupa CCW instance

Permissions

The integration requires an API consumer application with the following scope:

  • ccw.contingent_workers

Configuring Coupa Contingent Workforce

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.

  1. Log into the Coupa CCW platform as a user with Customer Integration Admin privileges.

  2. Navigate to Integration Toolkit -> API Consumer Apps and click Create.

  3. Provide the following information to create an API app:

    1. Application Name: Enter a name that identifies the API app

    2. Application Description: Describe what the app is used for

    3. Contact First/Last/Email Address: The technical contact responsible for the application

    4. Application Type: Select Machine to Machine (Only OpenId Connect apps that require faceless Machine to Machine integrations with Client Credential grant types are supported)

    5. Application Category: Partner

    6. Active: Check this to enable the application

    7. Credential Type: Shared Secret

    8. Client ID: This field is autogenerated; copy its value for later use

    9. API User: Choose a pre-defined API user

    10. Scopes: ccw.contingent_workers

  4. 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.

Configuring Coupa Contingent Workforce on the Veza Platform

To enable Veza to gather contingent workforce metadata:

  1. Log into Veza as an administrator.

  2. Navigate to the Integrations page.

  3. Click Add New and select CoupaCCW as the type of integration to add.

  4. Enter the required information:

    1. Url: The URL of your Coupa CCW instance (e.g., https://yourcompany.coupacloud.com)

    2. Client ID: The API consumer app client ID recorded earlier

    3. Client Secret: The API consumer app client secret recorded earlier

    4. Is Staging: Check this if the Coupa CCW tenant is non-production

  5. Click Save to create the integration.

Verifying Integration Status

After configuring the integration:

  1. Navigate to the Integrations page in Veza.

  2. Locate the Coupa CCW integration in the list.

  3. Check the Status column to confirm the integration is connected.

  4. Click on the integration to view detailed extraction status on the Data Sources tab.

  5. After a successful extraction, check the Integration Overview to verify that contingent worker data appears in Veza Graph as expected.

Technical Notes

Authentication

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 Synchronization

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.

Supported Entities and Attributes

The Veza integration for Coupa CCW discovers the following entities and attributes:

Contingent Employee

Attribute
Notes

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

Email

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 Segment / Cost Center / Department

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:

Attribute
Notes

Code

The numeric code of the entity

Name

The name of the entity

Type

Account Segment, Cost Center, or Department

Hiring Manager

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:

Attribute
Notes

Email

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

Atlassian Cloud Products

Configuring the Veza integration for Atlassian Cloud Admin, Jira Cloud, and Confluence Cloud.

Overview

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.

Configuring Atlassian Cloud

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

Why is an administrator key required?

To provide a complete and accurate view of your users and groups, Veza needs to access Atlassian's User Management and Organizations REST APIs. These APIs contain authorization metadata that is not available using product-level APIs for non-admin users.

Veza uses the administrator key strictly for read-only purposes. The integration does not perform any administrative actions or make changes within your Atlassian Cloud environment.

Create a User for the Integration

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.

  1. Log in to the Admin portal at admin.atlassian.com.

  2. Open the Users List and click Invite Users.

  3. Enter an email address for the invitation.

  4. 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.

Retrieve an Admin API Key

Veza connects to the Cloud Admin APIs to collect information about groups and users.

  1. Log in to admin.atlassian.com.

  2. Go to Settings > API Keys.

  3. Choose Create API key.

  4. Enter an identifying name for API key.

  5. By default, keys expire in one week. To change the expiration date, pick a new Expires on date.

  6. Select Create to save the API key Copy the Organization ID and API key values for configuring the integration on Veza.

  7. Click Done. The key will appear in the list of API keys.

Retrieve Product API Key for a User

Atlassian product APIs enable access to individual services just as Jira or Confluence.

  1. As the integration user, log in to https://id.atlassian.com/manage-profile/security/api-tokens.

  2. Click Create API Token.

  3. Enter a label for the token and click Create.

  4. Copy the token, which will only appear once.

Configuring Atlassian Cloud on the Veza Platform

To enable the integration:

  1. In Veza, go to Integrations and choose Add Integration.

  2. Pick Atlassian Cloud as the integration to add and click Next.

  3. Enter the required information and Save the configuration.

Field
Notes

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.

Notes and Supported Entities

Atlassian Cloud Admin

  • 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

  • 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 Cloud

  • Confluence User

    • account_type

    • email

    • external_collaborator

  • Confluence Space

    • type

    • status

    • id

    • unlicensed_access

    • anonymous_access

Jira Cloud

  • 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>

iManage

Configuring the Veza integration for iManage

Overview

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.

Configuring iManage

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.

  1. Request the Veza - iManage Integration app. The app must have access to the iManage Control Center.

  2. Log in to iManage. Your account needs the App Management, Group Management, Role Management, and User Management privileges to access and use the integration.

  3. The user must have access to the Veza - iManage Integration application to get Client ID and Client Secret for configuration.

  4. Click on the left menu Applications and Add Application button on the right side to configure a new application.

  5. Select Veza - iManage Integration application and click Authentication.

  6. Update authentication settings if required, otherwise, click Access.

  7. Update Access settings if required, otherwise, click Review.

  8. Review before clicking Add application. Enable the application as shown below if not enabled.

  9. Click on Finish to add application. Once the application is added successfully, you should be able to see it on the Applications list.

Add an iManage integration to Veza

To configure the iManage integration in Veza:

  1. Log in to your Veza instance.

  2. Choose Integrations from the main navigation to open the overview page.

  3. In the main pane, click Add Integration.

  4. 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

Notes and Supported Entities

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

User Attributes

  • 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.

Group Attributes

  • 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.

Role Attributes

  • id: Role's ID.

  • name: Role's name.

  • description: Indicates the description of the role.

  • database: Indicates the database of the role.

Permission Attributes

  • 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.

Device42

Configuring the Veza integration for Device42.

Overview

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

Prerequisites

  • A Device42 instance with administrator access

  • API access enabled in your Device42 environment

  • Veza platform access with permissions to add new integrations

Configuring Device42

Generate API Credentials

  1. Log in to your Device42 account as a superuser.

  2. Open the Resources tab.

  3. In the Secrets section, click on API Clients.

  4. Click Add to create a new API client.

    Add an API client.
  5. Assign a resource owner for the token.

  6. Set the Token Time to Live (TTL) for the token.

  7. Click Yes, I saved my keys to confirm that you have saved your Client Key and Client Secret Key.

  8. 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.

Configuring Device42 on the Veza Platform

  1. In Veza, use the main menu to open the Integrations page.

  2. Click Add Integration and search for Device42.

  3. Click on Device42 and then click Next.

  4. Enter the required information:

    Field
    Description
    Required

    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

  5. Click Create Integration to save the configuration.

Verifying the Integration

  1. To check integration status:

    1. On the Veza Integrations list, click the integration name to view details.

    2. On the details page, review the list of data sources.

    3. Use the Status column to check if the data source is unavailable or has an error.

    4. Click on an individual status to show more details.

  2. To view discovered entities:

    1. On the Veza Integrations list, click View Dashboard to show an overview of the entities Veza has discovered.

    2. Click an entity type (e.g., Users or Groups) to view the results in Query Builder.

    3. Review the entities to validate that results and attributes are as expected.

Supported Entities and Attributes

Users (Admin Users)

Attribute
Description

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)

Groups (Admin Groups)

Attribute
Description

id

Unique identifier of the group

name

Name of the group

Built-in Queries

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

User-related Queries

  • 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

Group-related Queries

  • 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

Identity Correlation Queries

  • 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

Additional Resources

  • Official Device42 API Documentation

Databricks (Single Workspace)

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.

Requirements

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:

  1. As a Databricks administrator, click your username in the top bar of the Azure Databricks workspace and click Admin Settings.

  2. Open Workspace Settings.

  3. Toggle Workspace Access Control and Cluster, Pool and Jobs Access Control.

  4. Click Confirm.

See Enable Access Control for details.

Authentication

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.

  1. Create a new Databricks Admin user Veza can connect as.

    1. As an account admin, log in to the account console.

    2. Click Account Console > User management.

    3. On the Users tab, click Add User.

    4. Provide a name and email address for the user.

    5. Click Send invite.

  2. Generate a personal access token.

    1. Click Settings in the lower left corner of your Databricks workspace.

    2. Click User Settings.

    3. Go to the Access Tokens tab.

    4. Click the Generate New Token button. Optionally enter a description (comment) and expiration period.

    5. Click Generate. Copy the generated token, and store it securely.

  3. Assign the admin role to the user.

    1. As an account admin, log in to the account console.

    2. Click Account Console > User management.

    3. Find and click the user you created.

    4. On the Roles tab, turn on Account admin.

See Authentication using Databricks personal access tokens for more information.

Creating a cluster

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.

Veza Configuration

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:

Field
Details

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:

  1. 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.

  2. 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.

  3. 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.

Provider
Datasource ID

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)

Notes

  • 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

Entity
Details

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.

PingOne

Configuring the Veza integration for Ping Identity

Overview

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.

Setting up the PingOne Integration

Create a new application to access all environments

Complete the following steps in Ping to create a new application and retrieve client credentials:

  1. In one of your environments, navigate to Connections > Applications.

  2. Click on + to add a new application.

  3. Provide a name and select the application type as Worker. Confirm by clicking Save.

  4. In the Roles tab, click Grant roles.

  5. Search for a role named Configuration Read Only under Organization and select it. Confirm by clicking Save.

  6. 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.

Add the integration in Veza

  1. Within Veza, navigate to Integrations.

  2. Click Add New and choose Ping One as the integration type.

  3. Provide the necessary details and click Save.

Field
Notes

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.

Notes and Supported Entities

After enabling the integration, Veza will discover the following entity types and attributes:

Ping One Organization

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

Ping One Environment

Each PingOne Environment houses distinct sets of Users, Groups, Applications, and Identity Providers.

Attributes supported by Veza:

  • OrganizationID

  • Region

  • Description

  • EnvironmentType

Ping One User

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:

  • EMail

  • CreatedAt

  • UpdatedAt

  • UserLastLogin

  • UserIsActive

  • UserIsLocked

  • MFAActive

  • FirstName

  • LastName

  • NickName

  • IDPUniqueID

  • CountryCode

  • Region

  • EmailVerified

  • ExternalID

  • LifecycleStatus

  • VerifyStatus

  • Title

  • Username

  • RoleAssignments

Ping One Application

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

Ping One Group

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

Ping One Population

In addition to groups, Ping Identity introduced Populations that can be associated with Users and Groups.

Attributes supported by Veza:

  • Default

  • Description

  • Population

Ping One Role

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

PTC Windchill

Configuring the Veza integration for PTC Windchill

Overview

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.

Configuring PTC Windchill

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:

  • Create Administrator and End User

  • Authentication

  • SSL/TLS Client Authentication

Configuring PTC Windchill on the Veza Platform

To add the integration in Veza:

  1. In Veza, go to the Integrations page.

  2. Click Add Integration, search for PTC Windchill, and select it. Then click Next.

  3. Enter the required configuration options.

  4. Click Create Integration to save the configuration.

Configuration Option
Description

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.

Notes and Supported Entities

Windchill Group

Attribute
Notes

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.

Windchill Group User

Attribute
Notes

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.

Windchill Organization

Attribute
Notes

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.

Windchill Project

Attribute
Notes

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.

Microsoft Dynamics 365 ERP

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.

Prerequisites

Before setting up the Dynamics 365 ERP integration:

  1. Complete the Microsoft Azure integration guide. The integration will use the enterprise application created during setup.

Finding the Dynamics 365 ERP Environment URL

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, use https://company.operations.dynamics.com not https://company.operations.dynamics.com/.

Grant Azure AD Enterprise Application access to Dynamics 365 ERP

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:

  1. In Azure, find the Enterprise App used for the Veza-Azure integration and add the Connector.FullAccess permission under Permissions > Dynamics ERP

  2. 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.

Configure Dynamics 365 ERP in Veza

  1. Log in to Veza and navigate to Integrations

  2. Edit your existing Microsoft Azure integration (or add a new one)

  3. 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 /

  4. Save the configuration.

  5. Monitor the extraction progress in the Integrations dashboard

  6. Verify successful extraction by checking that Dynamics 365 ERP entities appear in search results

Integration Architecture

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.

Supported Entities and Attributes

Veza discovers the following entities in Dynamics 365 ERP:

Environment

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

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

Groups (Teams) are collections of users who share common access permissions.

  • Type: DynamicsERPGroup

  • Key Properties:

    • Standard group properties (name, description, etc.)

Entra ID Applications

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

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

Relationship Types

The Dynamics 365 ERP integration discovers the following relationship types:

Relationship
Description

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

Technical Limitations

  • 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

Using AWS Secrets Manager for RDS Extraction

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.

Overview

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.

Grant Access to Secrets

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:

Secrets Manager and RDS in a single AWS account

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:

Secrets Manager and RDS in different AWS accounts

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.

Secrets API

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.

Operation
Method
Path

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:

Get Secrets Mapping

List all resource-to-secret mappings for an AWS Integration

GET <BASE URL>/private/providers/{provider_id}/secrets

Response:

Set Secrets Mapping

Set a mapping of all secrets for an AWS integration.

PUT <BASE URL>/private/providers/{provider_id}/secrets

Request body:

Clear Secrets Mapping

Delete all secrets mapped for an integration, specified by AWS integration ID.

DELETE <BASE URL>/private/providers/{provider_id}/secrets

Delete Secrets Mapping

Remove a single mapping, specified by ID.

DELETE <BASE URL>/private/providers/{provider_id}/secret/{resource_id}

Get Mapping for Resource

Return the secret id for a specified resource.

GET <BASE URL>/private/providers/{provider_id}/secret/{resource_id}

Request body:

Set Mapping for Resource

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:

Auth0

Early Access: This integration is provided as an Open Authorization API (OAA) connector package. Contact our support team for more information.

Auth0 IdP OAA Connector

Overview

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.

Collected Attributes

Entity
Property
Value

Setup Instructions

Auth0

  1. Create a new application

    1. Provide the application a name

    2. Select "Machine to Machine Applications and click Create

    3. Select the Auth0 Management API

    4. Add the following permissions:

      1. read:users

      2. read:connections

      3. read:custom_domains

      4. read:mfa_policies

    5. Click Authorize to finish creation process

  2. From the newly created Application page not the Domain, Client ID, Client Secret

  3. Under Application Properties ensure that Token Endpoint Authentication Method is set to Post

Veza

  1. 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.

Running the connector

Command Line

  1. With Python 3.8+, install the requirements into either a virtual environment or the system.

  2. Set the Veza API key, Auth0 Client ID, and Secret environment variables:

  3. Run the connector:

Parameters

Parameter
Environment Variable Name
Value

Add Existing AWS Accounts

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.​

Integration Details

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:

  1. 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

  2. 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

  3. 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.

Installation

Before deploying the Veza AWS Organizations integration, three pieces of data are required.

  1. Make note of the URL used to connect to Veza (ex: https://example.vezacloud.com)

  2. Generate an on the Veza platform for use by the CloudFormation template

  3. Generate a UUID value for use as the ExternalId when Veza assumes the read-only IAM role

AWS Configuration

The following steps should be completed in the AWS Organizations root account by a user with permission to deploy CloudFormation StackSets.

  1. Log into the AWS console, click Services, then search for and select CloudFormation.

  2. In the left navigation bar, click StackSets.

  3. In the right corner of the main pane, click Create StackSet.

  4. 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.

  5. In Step 2: Specify StackSet Details, provide the following:

    1. StackSet Name: enter a display name for the CloudFormation StackSet

    2. StackSet Description: enter an optional description of the CloudFormation StackSet

    3. RemoveVezaIntegrationOnDelete: set to true to remove AWS accounts from the Veza platform if this StackSet is deleted (default: true)

    4. VezaApiToken: paste in the API key generated on the Veza platform

    5. VezaApplicationUrl: paste in the URL of the Veza instance copied above

    6. 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.

    7. 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.

    8. VezaRDSUser: this is an existing local user account with read privileges that will be used to discover RDS resources.

  6. In Step 3: Configure StackSet options, add any desired tags, ensure Managed execution is set to Inactive, and click Next

  7. In Step 4: Set Deployment Options, provide the following, leaving the remaining options with their default values:

    1. Deployment Targets: select either Deploy to organization or Deploy to organizational units (OUs).

      1. If Deploy to organizational units is selected, provide up to 10 AWS OU IDs and an optional Account Filter Type

    2. 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.

  8. 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.

S3 Information

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

branch protection policies
cluster
single sign-on
Insight Point
{
  "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 Secrets Mapping

GET

/private/providers/{provider_id}/secrets

Set Secrets Mapping

PUT

/private/providers/{provider_id}/secrets

Clear Secrets Mapping

DELETE

/private/providers/{provider_id}/secrets

Delete Secrets Mapping

DELETE

/private/providers/{provider_id}/secret/{resource_id}

Get Mapping for Resource

GET

/private/providers/{provider_id}/secret/{resource_id}

Set Mapping for Resource

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>"
}
AWS account integration
Secrets Manager and RDS in a single AWS account
Secrets Manager and RDS in different AWS accounts
integration IAM policy
API key

HashiCorp Vault

Configuring the Veza integration for HashiCorp Vault Server

Overview

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.

Configuring HashiCorp Vault

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 a policy for the Veza role

Create the policy to attach to the Veza AppRole. Paste the following policy into a text file and save it veza-policy.hcl.

Veza extraction policy for HashiCorp Vault
path "/sys/namespaces" {
  capabilities = ["list"]
}

# entities

path "/identity/entity/id" {
  capabilities = ["list"]
}

path "/identity/entity/id/*" {
  capabilities = ["read"]
}

# groups

path "/identity/group/id" {
  capabilities = ["list"]
}

path "/identity/group/id/*" {
  capabilities = ["read"]
}

# auth methods

path "/sys/auth" {
  capabilities = ["read"]
}

path "/auth/+/role" {
  capabilities = ["list"]
}

path "/auth/+/role/*" {
  capabilities = ["read"]
}

path "/auth/+/roles" {
  capabilities = ["list"]
}

path "/auth/+/roles/*" {
  capabilities = ["read"]
}

path "/auth/+/users" {
  capabilities = ["list"]
}

path "/auth/+/users/*" {
  capabilities = ["read"]
}

path "/auth/+/groups" {
  capabilities = ["list"]
}

path "/auth/+/groups/*" {
  capabilities = ["read"]
}

# policies

path "/sys/policies/acl" {
  capabilities = ["list"]
}

path "/sys/policies/acl/*" {
  capabilities = ["read"]
}

# secrets engines

path "/sys/mounts" {
  capabilities = ["read"]
}

path "/+/metadata/*" { # kv2
  capabilities = ["list", "read"]
}

path "/+/roles" { # aws, azure
  capabilities = ["list"]
}

path "/+/roles/*" { # aws, azure
  capabilities = ["read"]
}

path "/+/rolesets" { # gcp
  capabilities = ["list"]
}

path "/+/rolesets/*" { # gcp
  capabilities = ["read"]
}

path "/+/static-accounts" { # gcp
  capabilities = ["list"]
}

path "/+/impersonated-accounts" { # gcp
  capabilities = ["list"]
}

Namespaces: If the policy is not defined for all namespaces on the cluster, extraction will fail. For each namespace, copy and edit each path block to define the same capabilities for all namespaces.

For example, for namespaces namespace-1 and namspace-1/namespace-2, duplicate the /sys/namespaces block to include:

path "/sys/namespaces" {
  capabilities = ["list"]
}

path "/namespace-1/sys/namespaces" {
  capabilities = ["list"]
}

path "/namespace-1/namespace-2/sys/namespaces" {
  capabilities = ["list"]
}

Do the same for all path blocks in the policy.

For a few namespaces, you can duplicate the policy in a text editor, and prefix the namespace to each path. For many namespaces, this should be done programmatically.

To get all namespaces in your Vault Server, use the command vault namespace list.

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

Create an Application Role

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.

Configuring HashiCorp Vault on the Veza Platform

To enable the integration:

  1. In Veza, go to the Integrations page.

  2. Click Add Integration and pick HashiCorp Vault as the type of integration to add. Click Next under the list of integrations.

  3. Enter the required information and Save the configuration

Field
Notes

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

Identity Mappings

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.

Notes and Supported Entities

HashiCorp Vault Cluster

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.

HashiCorp Vault Namespace

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.

HashiCorp Vault Group

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.

HashiCorp Vault Alias

Aliases represent principals that can access Vault resources. These are identities that can be used for authentication and authorization purposes in Vault.

HashiCorp Vault System Backend

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.

HashiCorp Vault Auth Method

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.

HashiCorp Vault Auth Method Subresource

Can have a policy attached. Auth method subresources are specific configurations or resources within an authentication method, such as roles or bindings.

HashiCorp Vault Secrets Engine

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

HashiCorp Vault Secrets Engine Subresource

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.

HashiCorp Vault Policy

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

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.

Effective Permissions and Cross-Service Connections

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.

Limitations

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.

Oracle Database

Configuring the Veza integration for Oracle Database.

Overview

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.

Prerequisites

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.

Configure Oracle Database Discovery

Create Database User

Create a common user in the Oracle Database:

  1. Connect to a common user with the CREATE USER privilege and ensure the current container is the root container.

  2. Create a user, with the prefix "C##" or "c##".

  3. 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.

Enable the Oracle Database Integration in Veza

  1. In Veza, go to the Integrations page.

  2. Click Add Integration.

  3. Search for OracleDB. Select it and click Next.

  4. 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.

  5. Click Save to test the connection and save the configuration.

  6. 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.

Notes and Supported Entities

The integration discovers the following entities, along with attributes for filtering queries and fine-tuning the scope of access reviews.

OracleDB Database

Represents an Oracle database instance. Multi-tenant configurations can have more than one database within a single Oracle Database instance.

Attribute
Description

Name

The name of the Oracle database.

Id

Unique identifier for the database.

Type

The type of the database entity.

OracleDB Object Privilege Grants

Represents the privilege grants for objects in the Oracle database. These are granted explicitly to Users and Roles and apply to specific Tables.

Attribute
Description

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.

OracleDB Roles

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.

Attribute
Description

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.

OracleDB Schema

Represents a schema within the Oracle database. A schema within an OracleDB Database contains individual tables. Users can be assigned to Schema as owners.

Attribute
Description

Name

The name of the schema.

Id

Unique identifier for the schema.

Type

The type of the schema entity.

OracleDB User

Represents a user within the Oracle database. OracleDB Users are local accounts within a database.

Attribute
Description

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.

OracleDB Table

Represents a table within the Oracle database. Veza shows effective permissions from OracleDB Users to OracleDB Tables.

Attribute
Description

Name

The name of the table.

Id

Unique identifier for the table.

Type

The type of the table entity.

OracleDB View

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.

OracleDB Materialized View

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.

OracleDB Procedure

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.

OracleDB Trigger

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.

Jira Data Center

Configuring the Veza integration for Jira Data Center

Overview

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.

Configuring Jira Data Center

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.

Create a Jira User for the integration

  1. Log in to Jira as an administrator or system administrator.

  2. Click the Administration icon at the top right and pick User Management from the dropdown. Click Create user.

  3. Enter a username, password, and email address and save the changes.

  4. 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.

Generate a Personal Access token

Create a Personal Access Token for a user with Admin-level permissions.

  1. Log in to Jira with the new user account.

  2. In Jira, click your profile picture at the top right of the screen to open the Profile. Choose Personal Access Tokens.

  3. Click Create Token and give it a name. Optionally, you can set a date for the token to expire.

  4. 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.

Configuring Jira Data Center on the Veza Platform

To enable the integration and queue the first extraction:

  1. In Veza, go to Integrations.

  2. Click Add Integration and pick Jira Data Center as the type of integration to add.

  3. Enter the required information and Save the configuration.

Field
Notes

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.

Notes and Supported Entities

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.

Jira Data Center Project

Attribute
Description

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.

Jira Data Center Group

Attribute
Description

name

Group Id

name

Group name

Jira Data Center User

Attribute
Description

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, and lastChangeAt.

Jira Data Center Role

Attribute
Description

project_key

Key of the project for respective role

Fastly

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.

Configuring the Fastly Integration

Generate a Fastly API Token

To create an API token:

  1. Log in to the Fastly UI.

  2. Navigate to Account > Personal Profile > API Tokens.

    Managing Fastly API Tokens
  3. Click Create Token.

  4. Enter your password to re-authenticate.

  5. Fill out the "Create a Token" field. The token scope must be either Read-only access or Global API access.

    Creating a Fastly API Token
  6. Click Create Token to save the token.

For detailed instructions, see Using API Tokens.

Configuring Fastly on the Veza Platform

To enable the integration:

  1. In Veza, go to the Integrations page.

  2. Click Add Integration, search for Fastly, select it, and click Next.

  3. Enter the required information.

  4. Click Create Integration to save the configuration.

Field
Description

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.

Notes and Supported Entities

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

Fastly Customer

A Fastly customer account is the base object that owns users and services.

Fastly User

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.

Fastly Field Name
Veza Field Name
Description
Property Type

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

Fastly Service

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.

Fastly Field Name
Veza Field Name
Description
Property Type

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

Fastly Roles

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.

JFrog Artifactory

Configuring the Veza integration for JFrog Artifactory

Overview

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

Prerequisites

  • 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.

Artifactory Configuration

Generating an Access Token

  1. Log in to JFrog Artifactory as an administrator

  2. Under "User Management," select "Access Tokens"

    Navigate to Access Tokens
  3. Click the "Generate Token" button

    Create a token
  4. 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)

    Token details
  5. Click the "Generate" button

  6. 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.

Veza Platform Configuration

Adding the Integration

  1. In Veza, go to the Integrations page

  2. Click Add Integration and search for Artifactory

  3. Click on it and click Next to add an integration

  4. Configure the integration settings (see Configuration Fields below)

  5. Click Create Integration to save the configuration

Configuration Fields

Field
Description
Example

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.

Supported Entities

Users

Attribute
Description

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.

Groups

Attribute
Description

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

Roles

Attribute
Description

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)

Repositories

Attribute
Description

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

Projects

Attribute
Description

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

Permission Mappings

Repository-Level Permissions

Artifactory Permission
Veza Mapped Permissions

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

Project-Level Permissions

Artifactory Permission
Veza Mapped Permissions

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

Permission Categories

Permission Category
Description

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

Okta

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.

Integrating with Okta

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.

Overview Video - Okta Integration

Authentication using OAuth 2.0 Credentials

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.

  1. Go to Applications after logging into your Okta account. Record your Okta organization's URL, omitting https://

  2. Create a new app:

    • Click on Create App Integration.

    • Choose API Services as the integration type.

  3. 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.

  4. 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

  5. On the Admin Roles tab, click Edit Assignments > Add Assignment. Assign the Read-only Administrator role and save the changes.

  6. (Optional) To gather and show metadata for Okta Admin Roles, the Veza app needs the Super Administrator role.

    1. 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.

Authenticate with an admin user API token

Create a user for Veza and assign an administrator role:

  1. Open Directory > People and click Add Person.

  2. Enter user details for the profile (such as VezaIntegration). Click Save.

  3. Open Security > Administrators and click Add Administrator.

  4. In the Grant Administrator Role To field, enter the name of the Veza user.

  5. Pick Read-Only Administrator for the assigned role.

  6. 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 of read-only admin.

Get an access token for the Okta user

  1. Sign in to your Okta domain with the read-only admin username and password.

  2. Go to Security > API using the admin console menu. Open the Tokens tab.

  3. Click Create Token.

  4. Give it a name and click Create Token.

  5. Save the token value, which will only appear once.

For more information, see Create an API Token in the Okta documentation.

Configure the Veza integration for Okta

Go to the Veza Integrations page to enable the Okta integration:

  1. Click Integrations on the main navigation.

  2. Click Add Integration > Okta*.

  3. Enter your organization's Okta Domain to authenticate with.

  4. Pick the Credential Type: API token or OAuth.

  5. For OAuth authentication, enter your client ID and private key ID. Upload the RSA private key.

  6. For API token authentication, enter the token generated for your Okta user.

  7. 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.

  1. Click Next to specify any custom properties you want Veza to discover.

  2. Click Create Integration to save the configuration.

  3. 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.

Enable Audit Logs for Okta

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:

  1. Open the Integrations overview and locate the Okta integration.

  2. Click Actions > Enable Audit Logs.

To disable activity monitoring and incremental extraction, toggle the option to Disable Audit Logs.

Okta Custom properties

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.

  1. On Edit Integration > Custom Properties tab, click Add Custom Property.

  2. Enter the variable name region as the property name to collect.

  3. Pick String as the property type.

  4. 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.

Okta custom identity mappings

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:

  1. Open the Okta provider configuration menu (Configuration > Identity Providers > Add or Edit)

  2. Click Identity Mapping Configurations

  3. Pick the Destination Datasource Type. The mapping will apply to all resources of the chosen provider (such as SQL Server).

  4. 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.

Notes and supported entities

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)

MuleSoft

Configuring the Veza integration for MuleSoft Anypoint Platform

Overview

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.

Configuring MuleSoft

To set up the integration, you'll need to create a Connected App in MuleSoft with appropriate permissions.

Requirements

  • 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.

Creating a Connected App

  1. Navigate to Access Management in your MuleSoft Anypoint Platform

  2. Click Connected Apps in the navigation menu

    MuleSoft connected apps.
  3. In the Owned Apps section, click Create App

    Configure a connected app.
  4. Complete the following fields:

    • Name: Enter a unique name for your integration

    • Type: Select "App acts on its own behalf (client credentials)"

  5. Click Save to create the Connected App

Configuring Required Scopes

  1. Click "Add Scopes" and select the following required scopes:

    • Access Controls Viewer

    • View Organization

    • View Users in a particular organization

  2. Save the scope configuration

  3. Note down the Client ID and Client Secret for use in Veza configuration

Add scopes for the connected app.

See the MuleSoft Access Management documentation for more details.

Configuring MuleSoft on the Veza Platform

  1. In Veza, go to the Integrations page

  2. Click Add Integration and search for MuleSoft. Click on the tile to add an integration

  3. Enter the required information

  4. Click Create Integration to save the configuration

Field
Notes

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

Notes and Supported Entities

Organization

The organization entity represents your MuleSoft Anypoint Platform organization and its configuration.

Attribute
Notes

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

Users represent individuals with access to the MuleSoft platform.

Attribute
Notes

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 (Teams)

Groups represent organizational structures within MuleSoft.

Attribute
Notes

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

Roles define sets of permissions that can be assigned to users and groups.

Attribute
Notes

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

Connected App Ownership

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.

HiBob

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.

Prerequisites

  • 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)

Configuring HiBob

Create an API Service User, and retrieve the user ID and token for authentication:

  1. In Bob, open Bob products > System settings.

  2. Click Integrations.

  3. From the All categories menu, choose Automation.

  4. Click on Service users > Manage.

  5. Click + New service user. Enter a display name and a description and click Next.

  6. A popup will show the service user info. Copy the ID and Token and securely save them to configure the Veza integration.

  7. Click Done.

See the help topic for complete instructions.

Create a service user permission group with the required permissions to read default employee fields:

  1. In Bob, go to Bob products > System settings

  2. Choose Account > Permission groups

  3. Click Create permission group

  4. Choose Service user. Give the group a name, description, and optional tags

  5. In the Group members section, choose the Veza service user and click Apply.

  6. Click Create, then Confirm.

  7. 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.

  8. Under People's data > Access rights, choose employees these permissions apply to. By default, the permissions apply to all Employed employees.

  9. Click Save, then click Apply.

Additional Properties Permissions

The permissions listed above are sufficient for the default employee fields supported by the Veza integration. If you need to access additional custom properties (such as internal.lifecycleStatus), you may need to grant additional permissions in HiBob according to their API documentation.

For example, to access full employee lifecycle history data, the service user requires:

  • People's Data > Lifecycle > View all other employees' Lifecycle section histories

  • People's Data > Access data for > Make sure the employee is in the list

Refer to the for specific permission requirements for each endpoint and custom property.

For more information, see .

Configuring HiBob on the Veza Platform

  1. In Veza, go to the Integrations page.

  2. Click Add Integration and search for HiBob. Click on it and click Next to add an integration.

  3. Enter the required information.

  4. Click Create Integration to save the configuration.

Field
Notes

Notes and Supported Entities

The integration gathers employee metadata to support identity governance and Access Reviews, automated provisioning/de-provisioning, and access analysis.

HiBob User Attributes:

  • 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

Bullhorn

Early Access: This integration is provided as an Open Authorization API (OAA) connector package. Contact our support team for more information.

Bullhorn Connector for Veza

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.

Application Mappings

The Bullhorn connector uses the OAA Custom Application model. The following table shows how Veza Custom Application entities correspond to Bullhorn entities.

Bullhorn
Veza

Properties

The following entity properties are imported:

Entity
Property
Description

Running the Importer

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.

Bullhorn

  1. Export the User list from Bullhorn and convert to CSV file. The exported data should include the following required headers. Additional columns are ignored:

  1. 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.

Veza

  1. 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.

Running the Connector

Command Line

  1. Install the requirements:

  2. Set the secrets:

  3. Run the connector:

Parameters

CLI Parameter
Environment Variable
Description

New Relic

This integration is provided as an Open Authorization API (OAA) connector package. Contact our support team for more information.

Veza NewRelic Connector

Veza Connector for NewRelic. Enables discover of NewRelic Users along with Organizations, Groups and their Roles.

Veza Application Mapping

NewRelic
OAA Application
Notes

Discovered Properties

Entity
Property
Description

Setup

NewRelic

  1. 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.

  2. Note the API key is need to run the Integration.

Veza

  1. 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.

Running the Connector

Command Line

  1. Install the requirements:

  2. Set the Secrets:

  3. Run the connector:

Parameters

CLI Parameter
Environment Variable
Description

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.

Manage Service Users
HiBob API documentation
Create and Update Service User Permission Groups

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

Generate API Key here

Privacera

Configuring the Veza integration for Privacera

Overview

The Veza integration for Privacera provides visibility into your Privacera environment, including users, groups, roles, resource policies, and their associated permissions.

Configuring Privacera

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:

  1. Read user profiles (GetUserProfile)

  2. List users (GetUsers)

  3. List groups (GetGroups)

  4. List roles (GetRoles)

  5. List resource policies (GetResourcePolicies)

Create a Privacera User and API key

  1. Sign in to Privacera Cloud using your account ID or alias.

  2. 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.

  3. 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.

  4. 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.

Create a Privacera integration on Veza

​To enable the Privacera integration in Veza you will need the following:​

  1. In Veza, open the Integrations page.

  2. Click Add New and select Privacera as the type of integration to add

  3. Enter the required information and Save the configuration

Required Configuration Fields:

Field
Description

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)

Notes

  • 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)

Supported Entities

The integration currently supports the following Privacera entities and attributes:

Privacera Instance

The root entity representing your Privacera environment. Contains users, groups, roles, and resource policies.

Attribute
Notes

account_id

The unique identifier for your Privacera account

Privacera User

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.

Attribute
Notes

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

Privacera Group

A collection of Privacera Users. Groups can have roles assigned and can be granted or denied permissions through resource policies.

Attribute
Notes

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

Privacera Role

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.

Attribute
Notes

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

Resource Policy

Defines access control rules for resources. Policies can grant or deny permissions to users, groups, and roles.

Attribute
Notes

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

Policy Resource Definition

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.

Attribute
Notes

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.

Grant Assignment

Represents permissions granted to users, groups, or roles through a resource policy.

Attribute
Notes

permissions

List of permissions being granted

Deny Assignment

Represents permissions explicitly denied to users, groups, or roles through a resource policy.

Attribute
Notes

permissions

List of permissions being denied

Permission Mapping

Privacera permissions are mapped to effective permissions for consistent authorization visualization across systems:

Privacera Permission
Veza Abstract Permission

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.*

Notes & Supported Entities

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.

Cross-Service Connections

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.

Supported Entities

Workspace, Group, and Domain Entities

  • Google Domains

  • Google Workspace Account

  • Google Role

  • Google Groups

  • Google Users

Google Cloud Project Entities

  • Organization

  • Project

  • Folder

  • Service Account

Google Cloud Storage Entities

For projects with the Cloud Storage API enabled:

  • Storage Service

  • Storage Bucket

Google Cloud Compute Entities

For projects with the Compute Engine API enabled:

  • Compute Service

  • Subnet

  • VPC

  • Virtual Machine

  • Network Interface

Key Management Service Entities

For projects with the KMS API enabled:

  • KMS Service

  • KMS Key Ring

  • KMS Key

BigQuery Entities

For projects with the BigQuery API enabled:

  • BigQuery Service

  • BigQuery Dataset

  • BigQuery Table

Cloud Run

  • 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

Google Kubernetes Engine

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

Cloud SQL Entities

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

Effective Permissions

  • 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.

Microsoft Active Directory

Configuring the Veza integration for Microsoft Active Directory.

This topic is for legacy Active Directory Domain Services. Azure AD is automatically parsed for configured Azure tenants.

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.

Veza for Active Directory

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.

Prerequisites

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

When using domain names for connection, ensure your LDAPS certificates include the appropriate FQDNs in the Subject Alternative Name (SAN) field. This includes both individual domain controller FQDNs and load balancer FQDNs if used.

Load Balancer Configuration

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

Get or Generate an LDAP certificate

If LDAPS is enabled for Active Directory, Veza requires the public certificate in base64 format (.CER Base-64) to validate the LDAPS connection.

Using Microsoft Management Console (MMC) - Recommended Method

  1. From the Domain Controller, open a new MMC console (Run -> mmc.exe)

  2. Add the Snap-in Certificate (Local Computer)

  3. Open the Personal/Certificates folder

  4. Locate the certificate. The Issued To column shows the FQDN of the domain controller

  5. Right-click the certificate and select All Tasks/Export

  6. Select No, do not export the private key

  7. Select Base-64 encoded X.509 (.CER) format

  8. Specify a file name and location to save the certificate

  9. Complete the export wizard

Test LDAPS Connectivity

To test the LDAPS connectivity locally before submitting the certificate to Veza:

  1. Open LDP.exe on the Domain Controller

  2. Click the Connection menu and choose Connect...

  3. Type the Domain Controller FQDN and Port Number as 636 and click OK

  4. You should see "Established connection to [Domain Controller]" and the Base DN details

Alternative Methods

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.

  1. Prepare the request.inf configuration file (see example below)

  2. Generate cert request from the .inf file: certreq -new request.inf request.req

  3. 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

  4. Use the Request ID number to retrieve the certificate: certreq -retrieve RequestID certnew.cer

  5. Accept the issued certificate: certreq -accept certnew.cer

The certificate must use the SAN, as shown in the [Extensions] block in the example configuration:

request.inf
[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.

Kerberos Authentication

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:

krb5.conf
[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.

Creating an Active Directory integration in Veza

In Veza, browse to the Integrations page. Click Add Integration and search for Active Directory. Click on the tile to add an integration.

Field
Description

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

Notes and Supported Entities

  • 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

Attribute
Standard AD User Property

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)

Email

mail

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

Automatically Add New AWS Accounts

Integrate new AWS accounts in an organization using Landing Zones.

Overview

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.

Integration Details

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:

  1. 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

  2. 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

  3. 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.

Installation

Before deploying the Veza AWS Control Tower integration, two pieces of data are required from the Veza instance.

  1. Make note of the URL used to connect to the Veza (ex: https://example.cookiecloud.ai)

  2. Generate an API key for use by the Control Tower root account

AWS Configuration

The following steps should be completed in the AWS Control Tower root account by an administrator IAM user:

CloudFormation

  1. Log into the AWS console, click Services, then search for and select CloudFormation.

  2. In the left navigation bar, click Stacks.

  3. In the right corner of the main pane, click Create Stack, then select With new resources (standard) from the dropdown menu.

  4. In Step 1: Specify Template form, enter https://veza-controltower.s3.us-east-2.amazonaws.com/veza.yaml as the Amazon S3 URL.

  5. In Step 2: Specify Stack Details, provide the following details:

    1. Stack Name: enter a display name for the CloudFormation Stack.

    2. VezaApiToken: paste in the API key generated for the Veza instance.

    3. VezaApplicationUrl: paste in the URL of the Veza instance copied above.

    4. VezaDiscoveryAccountId: leave the default value unless otherwise instructed.

    5. 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.

    6. VezaManagedAccountTemplateUrl: use the default value unless hosting the CloudFormation templates in a non-Veza S3 bucket.

    7. VezaRDSUser: this is the user account that will be used to discover RDS resources.

  6. For Step 3: Configure Stack Options form, accept the default values, and click Next.

  7. 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.

Control Tower

To see the integration in action, create an AWS account inside the Control Tower Landing Zone

  1. Log into the AWS console, click Services, then search for and select Control Tower.

  2. In the left navigation bar, click Account Factory.

  3. In the right corner of the main pane, click Enroll Account.

  4. 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.

  5. 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.

Re-enroll member accounts

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:

  1. Open the AWS Service Catalog.

  2. Open the Provisioned products list.

  3. Choose the account to remove from AWS Control Tower management.

  4. Choose Terminate from the Actions menu and confirm the decision.

  5. When successful, the account status will change to Not Enrolled.

For more information see Unmanage an account in the AWS documentation.

S3 Information

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

CSV Upload Examples

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.

Mapping Concepts

When importing CSV data into Veza, you are typically establishing one or more of these key components:

  1. Entities: Users, groups, and roles that exist in your application

  2. Attributes: Properties that describe each entity (e.g., name, email, status)

  3. Relationships: Connections between entities (user belongs to group, user has role)

  4. 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.

Basic User Mapping Example

For a simple file containing user records, one user per row with a list or groups and roles. You can map columns directly:

CSV Column
Entity Type
Veza Attribute
Required?

Example CSV:

Your CSV files may have column names that differ from Veza's standard attribute names.

CSV Column
Entity Type
Suggested Mapping

Group and Role Assignment Methods

The CSV integration supports two methods for assigning users to groups and roles:

Method 1: Using List Columns

Use a single column containing comma-separated values to assign a user to multiple groups or roles at once.

Column mapping:

CSV Column
Entity Type
Veza Attribute

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

Method 2: Using Multiple Rows Per User

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

Advanced Role Permissions

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

Real-World Example: Complex Organization Structure

This example shows how to represent a complex organizational structure with departments, teams, roles with permissions, and user assignments:

Column mapping for this example:

CSV Column
Entity Type
Veza Attribute

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

Supported Timestamp Formats

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.

Boolean Value Handling

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

Example CSV:

Custom Properties Example

Any column can be mapped to a custom property for any entity type. When mapping to a custom property:

  1. Select Custom Property as the attribute

  2. Enter a name for the custom property

  3. Select the data type (String, Number, Boolean, Timestamp, or String List)

Example CSV:

GitHub

Configuring the Veza integration for GitHub

Overview

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 .

Configuration

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:

  1. Create the GitHub app.

  2. Set it to Public.

  3. Install the app into each GitHub organizations to discover.

For more details, see the GitHub documentation and .

GitHub setup instructions

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.

  1. On the Organization's settings page, click Developer Settings > GitHub Apps > Add New

  2. 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

  3. 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

  4. Enter Only on this account for Where can this app be installed?, or enable the app for other accounts by making it Public.

  5. 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.

  6. Finally, install the App into the Organization(s) you want to discover:

    1. Open the app settings page (Settings > Developer settings > GitHub Apps > your-application)

    2. Click Install next to the organization name

    3. Unless you want to exclude specific resources, pick All Repositories

    4. Click Install and approve the permissions

Discovering user email addresses

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

Veza setup instructions

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.

Field
Notes
  • 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.

Notes and supported entities

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:

Property
Notes

GitHub Organization

Organizations are shared accounts where teams of users can work together on public and private projects.

Property
Notes

GitHub Personal Account

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).

Property
Notes

You can explain effective permissions to show the grouped role permissions assigned to the user.

GitHub Personal Access Token

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.

Property
Notes

Token can be connected to a Github Personal Access Token Permission node representing the effective permissions on GitHub resources.

GitHub Team

Teams represent groups of users. Assigning GitHub Personal Accounts to teams grants the users permissions on the team's repositories.

Property
Notes

Possible roles on repositories are: admin, maintain, push, triage, pull.

GitHub App

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".

Property
Notes

GitHub Repository

Property
Notes

GitHub Role

These roles grant a set of repository permissions to teams or individual users. Roles can also apply to an organization or team.

Property
Notes

MongoDB

Configuring the Veza integration for MongoDB and MongoDB Atlas

Overview

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.

Configuring MongoDB Atlas

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.

AWS IAM Roles (Early Access): AWS customers can optionally use the “Assume AWS Role” connection type when creating a MongoDB Atlas integration. This can be a new role or the same one used for the . To configure the MongoDB connection, you will provide the:

  • Role ARN: The ARN of the AWS IAM role that will be used to perform the extraction.

  • External ID: AWS IAM role external ID (similar to the “External ID” input in AWS integration)

When creating MongoDB Atlas database users in the following section, instead of adding usernames and passwords, choose the option to and use the role ARN.

Generate Atlas Administration API credentials for the MongoDB organization

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:

  1. Open your organization's Access Manager page

  2. Click Create API Key.

  3. Give the key a name and description.

  4. Assign a new role for the API key with the Organization Read Only scope.

  5. Click Next to view the Public and Private Keys.

  6. Copy the keys and save them in a secure location. Note that the private key is only shown one time.

  7. Add an API Access List Entry. Enter the IP address or CIDR block corresponding to your Veza Platform or Insight Point. Save the configuration.

  8. Click Done.

See the documentation for more details.

Create a database user for each of the projects in the MongoDB organization

Add database users for each project in the Organization. To create a new user using password authentication with the Atlas UI:

  1. On the left navigation, click Security > Database Access. Click Add New Database User.

  2. Choose Password for the Authentication Method.

  3. 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.

  4. Grant the user the Built-in Role AtlasAdmin. This is the only role granting the viewRole capability.

  5. Optionally, set a Temporary User duration. You can also opt to Restrict Access to specific clusters and federated databases.

  6. Click Add User.

See the documentation for more details.

Configuring MongoDB (standalone)

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.

Create local user and role

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.

Configuring MongoDB on the Veza Platform

After preparing the required credentials, log in to Veza as an administrator to add the integration:

  1. In Veza, open the Integrations page.

  2. Click Add New and pick MongoDB or MongoDB Atlas as the type of integration to add

  3. Enter the required information and Save the configuration

Standalone MongoDB

To create the MongoDB Atlas integration, you will need the database URI and the username and password created when

Field
Notes

MongoDB Atlas

To create the MongoDB Atlas integration, you will need the API credentials, username, and password created when

Field
Notes

To discover more than one Organizations in a single Account, click Add Key Pair to add additional API credentials.

Notes and Supported Entities

Veza supports the following entity types and entity attributes:

MongoDB Atlas Account

Represents the overarching account associated with MongoDB Atlas, typically belonging to an organization or individual.

MongoDB Atlas User

Represents a user account within MongoDB Atlas, identified by a unique ID and associated with an email address.

  • ID

  • E-mail

MongoDB Atlas Organization

Represents an organization in MongoDB Atlas, identifiable by its unique ID and organizational name.

  • ID

  • Name

MongoDB Atlas Organization Role

Denotes the role or permissions assigned to a user within a MongoDB Atlas organization, governing their access and privileges.

MongoDB Atlas Project

Represents a project in MongoDB Atlas, identified by a unique ID and a descriptive name, used for grouping related resources.

  • ID

  • Name

MongoDB Atlas Team

Represents a team within a MongoDB Atlas project, identifiable by a unique ID and a name, used for collaborative project management.

  • ID

  • Name

MongoDB Database Deployment

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

MongoDB Database User

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:

MongoDB Cluster

Represents an independent MongoDB database cluster, typically running on a single server or a set of servers, used for data storage and retrieval.

MongoDB User

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

MongoDB Database

Represents an individual database within a cluster, used for organizing and storing collections of data.

MongoDB Role

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

Activity Monitoring for AWS

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:

    Source Entity
    Destination Entity

    * 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)

Enabling Activity Monitoring for AWS

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:

  1. Integrate the Log Archive account with Veza, if it is not already. To do so, use , or add an .

  2. Ensure that the Log Archive integration trust policy includes a , allowing s3:ListBucket and s3:GetObject on the bucket and log files.

  3. for the Log Archive account integration. Enable the option "Extract for Organization" for this account.

  4. 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:

Step 1: Retrieve CloudTrail region and trail name

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.

Step 2: Update AWS integration permissions

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:

  1. On the AWS IAM Console, open the Policies page and locate the one used by the Veza-AWS Integration.

  2. 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.

  3. Enable access to account and organization-level cloud trails, using the examples below.

  4. 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:

Step 3: Enable Audit Logs for the AWS Integration

In Veza, enable audit logs for each account where activity monitoring will be active:

  1. On the Veza Integrations page, go to the Integrations page and click Enable Audit Logs next to the name of the AWS integration.

  2. 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.

  3. Save your changes. The integration will gather CloudTrail logs to calculate Over-Provisioned Access Scores during the next extraction cycle.

  4. Repeat this step for each AWS integration where you want to enable Activity Monitoring.

https://veza-controltower.s3.amazonaws.com/veza-controltower.yaml
https://veza-controltower.s3.amazonaws.com/veza-controltower-managed-account.yaml

employee_id

local_user

id

Yes

display_name

local_user

name

No

email_address

local_user

email

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

email

local_user

email

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)
CSV Upload
CSV Upload Examples
Mapping Concepts
Basic User Mapping Example
Group and Role Assignment Methods
Method 1: Using List Columns
Method 2: Using Multiple Rows Per User
Advanced Role Permissions
Real-World Example: Complex Organization Structure
Supported Timestamp Formats
Boolean Value Handling
Custom Properties Example

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

entities
Reports
Insight Point
cloud IPs
creating a read-only GitHub App
adding the integration to Veza
Creating GitHub Apps
Making a GitHub App Public or Private
Verifying or Approving a Domain for your Organization
Custom Identity Mappings
Access Intelligence Overview
# 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

Configure MongoDB Atlas
Configure standalone MongoDB
Add a MongoDB integration (Atlas or standalone) to Veza
notes and supported entities
Insight Point
this guide
atlas accessLists create
Atlas Data API
AWS integration
use an AWS IAM role
Configure API Access
Add MongoDB Users
Insight Point
Configuring MongoDB (standalone)
Configuring MongoDB Atlas

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>
Access Monitoring
Cloud Formation for AWS Organizations
AWS Account Integration
policy for audit log extraction
Enable audit logs
Creating a Trail
integration trust policy
enable audit logs
Creating a trail for an organization
Creating a trail for your AWS account
Enabling audit logs.
Enabling an organization trail for the owner account.
Insight Point
Integrating Okta with Veza

Oracle E-Business Suite (EBS)

Configuring the Veza integration for Oracle E-Business Suite

Overview

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

Configuring Oracle EBS Integration

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.

Prerequisites

  • 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.

Required Permissions

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.

Configuring Oracle EBS on the Veza Platform

  1. In Veza, go to the Integrations page.

  2. Click Add Integration and search for Oracle EBS. Click on the tile to open the integration configuration form.

  3. Enter the required configuration options.

  4. Click Create Integration to validate and save the configuration.

Configuration Options

Field
Notes

Configuring SESSION_PER_USER

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.

Recommended Setting

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:

Notes and Supported Entities

Effective Relationships

The integration models several types of effective relationships within Oracle EBS:

  1. Responsibility to Function

  2. Effective Profile Option Binding

These relationships are shown when using "Effective" .

Data Sources

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.

Supported Entities

Oracle EBS Instance

Core container representing a single Oracle E-Business Suite installation.

Oracle EBS User

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

Oracle EBS Role

Defines a collection of permissions and access rights.

  • Attributes:

    • updated_at, created_at

    • description

Oracle EBS Responsibility

A key security component defining user access and capabilities.

  • Attributes:

    • application_id, group_application_id

    • request_group_id, responsibility_id

    • menu_id, description

Oracle EBS Effective RF Binding

Links responsibilities to functions.

  • Attributes:

    • application_id, group_application_id

    • request_group_id, responsibility_id

    • menu_id, description

Oracle EBS Menu

Hierarchical structure of options and functions.

  • Attributes:

    • menu_id, menu_type, description

  • Note: System Query Mode Only

Oracle EBS Menu Exclusion

Specifies excluded menu items for responsibilities.

  • Attributes:

    • application_id, responsibility_id

    • action_id, rule_type

  • Note: System Query Mode Only

Oracle EBS Function

Represents specific actions or operations.

  • Attributes:

    • application_id, parameters

    • function_type, description

    • function_id, user_function_name

Oracle EBS Function Exclusion

Defines excluded functions for responsibilities.

  • Attributes:

    • application_id, responsibility_id

    • action_id, rule_type

  • Note: System Query Mode Only

Oracle EBS Application

Represents a specific module within the EBS suite.

  • Attributes:

    • application_id, short_name

Oracle EBS Request Group

Collection of concurrent programs and request sets.

  • Attributes:

    • application_id, group_id

    • description, group_code

Oracle EBS Request Set

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

Oracle EBS Concurrent Program

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

Oracle EBS Profile Option

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

Oracle EBS Data Access Set

Defines ledger access permissions.

  • Attributes:

    • access_set_id, access_set_name

    • default_ledger_id, description

    • updated_at, created_at

Oracle EBS Security Profile

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

Oracle EBS Ledger Set

Collection of ledgers for financial reporting.

  • Attributes:

    • ledger_set_name, ledger_id

    • short_name, description

    • updated_at, created_at

Oracle EBS Ledger

Financial reporting entity for business transactions.

  • Attributes:

    • ledger_id, ledger_name

    • short_name, description

    • updated_at, created_at

Oracle EBS Operating Unit

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

Oracle EBS Effective Profile Option Binding

Links profile options to responsibilities.

  • Attributes:

    • responsibility_id, application_id

Oracle EBS Responsibility Binding

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 SESSION_PER_USER
Insight Point
firewall rules and filters
Query Mode

Amazon Web Services

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

1. Create a Veza-AWS connector policy

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:

7KB
AWS_Terraform_Veza.tf

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):

Trust Policy for Veza 2023.12.4
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "STS",
      "Effect": "Allow",
      "Action": [
        "sts:GetCallerIdentity"
      ],
      "Resource": "*"
    },
    {
      "Sid": "Tag",
      "Effect": "Allow",
      "Action": [
        "tag:GetResources"
      ],
      "Resource": "*"
    },
    {
      "Sid": "SSO",
      "Effect": "Allow",
      "Action": [
        "sso:ListAccountAssignments",
        "sso:ListPermissionSets",
        "sso:ListAccountsForProvisionedPermissionSet",
        "sso:ListInstances",
        "sso:DescribePermissionSet",
        "sso:ListTagsForResource",
        "identitystore:DescribeUser",
        "identitystore:DescribeGroup",
        "identitystore:ListUsers",
        "identitystore:ListGroups",
        "identitystore:ListGroupMemberships"
      ],
      "Resource": "*"
    },
    {
      "Sid": "IAM",
      "Effect": "Allow",
      "Action": [
        "iam:ListPolicies",
        "iam:GetPolicy",
        "iam:GetPolicyVersion",
        "iam:ListRoles",
        "iam:ListGroupsForUser",
        "iam:ListAttachedRolePolicies",
        "iam:ListAttachedUserPolicies",
        "iam:ListUsers",
        "iam:ListAttachedGroupPolicies",
        "iam:ListGroups",
        "iam:GetUser",
        "iam:GetRole",
        "iam:ListUserPolicies",
        "iam:ListGroupPolicies",
        "iam:ListRolePolicies",
        "iam:GetUserPolicy",
        "iam:GetGroupPolicy",
        "iam:GetRolePolicy",
        "iam:ListSAMLProviders",
        "iam:GetSAMLProvider",
        "iam:ListAccessKeys",
        "iam:GetAccessKeyLastUsed",
        "iam:ListInstanceProfiles",
        "iam:ListAccountAliases",
        "iam:ListMFADevices",
        "iam:GetLoginProfile"
      ],
      "Resource": "*"
    },
    {
      "Sid": "EC2",
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeVpcs",
        "ec2:DescribeInstances"
      ],
      "Resource": "*"
    },
    {
      "Sid": "Redshift",
      "Effect": "Allow",
      "Action": [
        "redshift:DescribeClusters",
        "redshift:GetClusterCredentials",
        "redshift-data:ExecuteStatement",
        "redshift-data:GetStatementResult",
        "redshift-data:DescribeStatement"
      ],
      "Resource": "*"
    },
    {
      "Sid": "RDS",
      "Effect": "Allow",
      "Action": [
        "rds:DescribeDBClusters",
        "rds:DescribeDBInstances",
        "rds-db:connect",
        "rds:DescribeTenantDatabases"
      ],
      "Resource": "*"
    },
    {
      "Sid": "DynamoDB",
      "Effect": "Allow",
      "Action": [
        "dynamodb:ListTables",
        "dynamodb:DescribeTable",
        "dynamodb:ListStreams",
        "dynamodb:DescribeStream"
      ],
      "Resource": "*"
    },
    {
      "Sid": "EMR",
      "Effect": "Allow",
      "Action": [
        "elasticmapreduce:ListClusters",
        "elasticmapreduce:DescribeCluster",
        "elasticmapreduce:ListNotebookExecutions",
        "elasticmapreduce:DescribeNotebookExecution",
        "elasticmapreduce:ListInstanceGroups",
        "elasticmapreduce:ListInstanceFleets",
        "elasticmapreduce:ListInstances",
        "elasticmapreduce:ListStudios",
        "elasticmapreduce:DescribeStudio"
      ],
      "Resource": "*"
    },
    {
      "Sid": "S3",
      "Effect": "Allow",
      "Action": [
        "s3:GetBucketPolicy",
        "s3:ListAllMyBuckets",
        "s3:GetBucketLocation",
        "s3:GetBucketPublicAccessBlock",
        "s3:GetAccountPublicAccessBlock",
        "s3:GetBucketObjectLockConfiguration",
        "s3:GetEncryptionConfiguration",
        "s3:GetBucketLogging",
        "s3:GetBucketOwnershipControls",
        "s3:GetBucketRequestPayment",
        "s3:GetReplicationConfiguration",
        "s3:GetBucketWebsite",
        "s3:GetBucketPolicyStatus"
      ],
      "Resource": "*"
    },
    {
      "Sid": "KMS",
      "Effect": "Allow",
      "Action": [
        "kms:GetKeyPolicy",
        "kms:ListAliases",
        "kms:ListKeyPolicies",
        "kms:ListKeys",
        "kms:ListResourceTags",
        "kms:DescribeKey"
      ],
      "Resource": "*"
    },
    {
      "Sid": "Organization",
      "Effect": "Allow",
      "Action": [
        "organizations:DescribeOrganization",
        "organizations:DescribePolicy",
        "organizations:ListChildren",
        "organizations:DescribeOrganizationalUnit",
        "organizations:ListPolicies",
        "organizations:ListPoliciesForTarget",
        "organizations:ListRoots",
        "organizations:DescribeAccount"
      ],
      "Resource": "*"
    },
    {
      "Sid": "Cognito",
      "Effect": "Allow",
      "Action": [
          "cognito-identity:DescribeIdentityPool",
          "cognito-identity:GetIdentityPoolRoles",
          "cognito-identity:ListIdentityPools"
      ],
      "Resource": "*"
    },
    {
      "Sid": "Lambda",
      "Effect": "Allow",
      "Action": [
        "lambda:ListFunctions",
        "lambda:ListTags",
        "lambda:GetFunctionConfiguration"
      ],
      "Resource": "*"
    },
    {
      "Sid": "EKS",
      "Effect": "Allow",
      "Action": [
        "eks:ListClusters",
        "eks:DescribeCluster"
      ],
      "Resource": "*"
    },
    {
      "Sid": "SecretsManager",
      "Effect": "Allow",
      "Action": [
        "secretsmanager:DescribeSecret",
        "secretsmanager:ListSecrets"
      ],
    "Resource": "*"
    },
    {
    "Sid": "ECR",
    "Effect": "Allow",
    "Action": [
      "ecr:DescribeRegistry",
      "ecr:DescribeRepositories",
      "ecr:ListTagsForResource",
      "ecr-public:DescribeRepositories",
      "ecr-public:ListTagsForResource"
    ],
    "Resource": "*"
  },
  {
    "Sid": "CloudTrail",
    "Effect": "Allow",
    "Action": [
      "cloudtrail:GetTrail"
    ],
    "Resource": "*"
  }
  ]
}

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:

  1. From the AWS Organizations console, navigate to Services.

  2. Choose AWS IAM Identity Center.

  3. Choose Enable trusted access.

  4. Check the box to show the option to enable trusted access without performing additional setup steps.

  5. 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

2. Configure AWS discovery

Using an IAM role

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:

  1. Go to Veza Integrations > Add Integration

  2. 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:

  1. Navigate to IAM > Roles. Click “Create a role”.

  2. 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.

  3. 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.

  4. Attach the IAM policy that will permit Veza to extract information about your AWS account.

  5. 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.

Using an Insight Point

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:

  1. Create an AWS IAM role with EC2 as the trusted entity.

  2. Attach the Veza IAM policy to the role.

  3. Assign the role to your Insight Point instance profile.

Using an IAM user

From your AWS account dashboard, create an IAM user and attach the appropriate policy:

  1. From the Specify User Details interface, input a user name (such as veza_connector) and click Next.

  2. Select the policy you created earlier, and attach it to the new user.

  3. 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).

3. Add the AWS account to Veza

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

Field
Details

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.

Notes & Supported Entities

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.

Supported Services and Entities

Note that by default, all regions and services are extracted. Allow/deny lists can contain string lists (including wildcards) of resources names to ignore.

Amazon Cognito

Supported entities:

  • Cognito Service

  • Cognito Identity Pool

Amazon EC2

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.

Amazon Elastic Container Registry (ECR)

Supported entities:

  • ECR Service

  • ECR Private Registry

  • ECR Private Repository

  • ECR Public Registry

  • ECR Public Repository

Amazon Elastic Kubernetes Service (EKS)

Supported entities:

  • EKS Service

  • EKS Cluster

Amazon Elastic MapReduce (EMR)

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.

Amazon Redshift

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.

Amazon S3

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.

AWS DynamoDB

Supported entities:

  • DynamoDB Service

  • DynamoDB Table

  • DynamoDB Secondary Index

  • DynamoDB Stream

See DynamoDB for more information.

AWS IAM

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.

AWS IAM Identity Center

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 the us-east-1 region defined. Otherwise, AWS IAM Identity Center will not appear as a Data Source.

AWS Key Management Service (KMS)

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.

AWS Lambda

Supported entities:

  • Lambda Service

  • Lambda Function

AWS Organizations and Organizational Units

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.

AWS RDS

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.

AWS Secrets Manager

Supported entities:

  • Secrets Manager Service

  • Secrets Manager Secret

Search for AWS Entities

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.

API Rate Limits

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.

Adding Accounts with Veza APIs

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.

Unsupported Conditions in Policy Statements

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.

CSV Upload

Import identity and authorization data from CSV files into Veza

Overview

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.

  • Learn more about the Application Template

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.

Which template should I choose? If your CSV contains information about who can access what resources, choose Application. If it contains employee information like departments and managers, choose HRIS.

When to Use CSV Integration

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.

Adding a CSV Integration

Prerequisites

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

Format Requirements

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:

  1. The first row must contain column headers

  2. Each column can be mapped to a specific Veza attribute or custom attribute

  3. Columns can be ignored after uploading the file

  4. 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).

Create a CSV Integration

To create a new CSV integration:

  1. Go to Integrations > Add Integration

  2. Choose Upload CSV from the options

  3. 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.

  4. 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

  5. Select a data source template (currently supports Application and HR Systems)

  6. 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.

  7. Upload the CSV file - Veza will read the column headers and show them for mapping

  8. Map your columns to Veza attributes (see Column Mapping section)

  9. Click Create Integration to trigger extraction and parsing

CSV Column Mapping

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:

  1. Select to include or exclude the column

  2. Select the target entity type for mapping (available entities depend on the selected template)

  3. Select the specific entity attribute to map to (only attributes applicable to the selected entity type will be shown)

  4. For custom properties, specify a name and data type

Example: Mapping CSV columns to Application template entities and attributes

CSV Mapping Interface with column selection and attribute mapping options

For more examples and detailed mapping patterns, see CSV Import Examples.

Supported Entity Types and Attributes

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

Attribute
Description

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

Email

User's email address

Custom Properties

Map any column to a custom user property (type varies)

Group Attributes

Attribute
Description

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

Attribute
Description

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

Attribute
Description

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

Email

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)

Data Type Handling

Boolean Values

The following values are treated as TRUE (case-insensitive):

  • true, t

  • yes, y

  • 1

  • active

  • enabled

Any other value is treated as FALSE.

Timestamp Formats

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.

String Lists

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 ".

Updating a CSV Integration

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:

  1. Update the configuration fields in the integration settings

  2. Re-upload the complete CSV file to apply the changes

  3. Allow the Veza platform to complete the extraction and parse process

  4. Verify that entity names are consistent across all Veza components

Push new data for an existing integration

  1. Find the CSV integration on the Veza Integrations page

  2. Click on the integration name to view details

  3. Under Data Sources, click Upload CSV

  4. Select your updated CSV file and click Upload

Update mappings for an integration

  1. Find the CSV integration on the Veza Integrations page

  2. Click on the integration name to view details

  3. Click Edit

  4. In the integration configuration, click Edit above the table of current mappings

  5. Modify your column mappings as needed

  6. Click Save Configuration to apply the changes

CSV Manager Role

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.

Processing Rules

  • 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.

Related Documentation

  • Open Authorization API (OAA) Templates

  • Managing Teams and Permissions

  • Creating Custom Reports

  • Understanding the Veza Access Graph

  • Automating CSV Upload

Notes & Supported Entities

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:

User Risk Information

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.

Azure CosmosDB Support

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:

  1. When configuring the Azure integration, select "Limited services" under Limit Services

  2. 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 RBAC

  • 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 Cloud Infrastructure

  • Azure Infrastructure Service

  • Azure Virtual Machine

  • Azure Virtual Network

  • Network Security Group

  • Network Interface Card

  • Azure Subnet

Azure AD

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.

SharePoint Online

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

Storage

  • Azure Blob Service

  • Azure Blob Container

  • Datalake Filesystem

  • Datalake Directory

Azure Data Lake

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

Azure SQL

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

Microsoft Intune requires .

  • Intune Managed Device

  • Intune Role Assignment

  • Intune Role

  • Intune Resource Action

Microsoft Teams

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

integrates with Azure
data catalog
search
custom identity mapping
set limits
SharePoint Online
Azure SQL
additional Microsoft Graph API permissions

Microsoft Azure

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.

Integrating with Microsoft Azure

Veza for Azure

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:

1. Register a new application for Veza

  1. From your Azure tenant profile, navigate to App Registrations > New Registration

  2. Name the new application (for example Veza Integration)

  3. 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.

2. Grant permissions for the new app

  1. With the new app registration selected, choose Manage > API Permissions and click "Add a Permission"

  2. 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

  3. Enable "Grant Admin Consent" on the API permissions screen.

Check that Admin Consent is granted

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.

3. Enable SharePoint integration (optional)

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:

Adding additional SharePoint 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:

  1. Auditing must be enabled in the Microsoft Purview compliance portal

    1. Go to https://compliance.microsoft.com and sign in. Click Audit.

    2. If auditing isn't enabled, a banner will prompt to Start recording user and admin activity.

    3. Click the banner to enable auditing, and wait for the changes to propogate.

    4. Alternatively, use the Exchange Power Shell:

      1. Set-AdminAuditLogConfig -UnifiedAuditLogIngestionEnabled $true

  2. The Enterprise App used by Veza must have ActivityFeed.Read permission on the Office 365 Management API:

    1. 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

  3. 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:

enabling audit log extraction

4. Generate a Client Secret

  1. From Certificates & Secrets, click "New Client Secret" and select an expiration date. Click "Add" to generate a new client secret value and ID.

  2. Copy the client secret Value, which you'll use to configure the integration within Veza.

Mark down the client secret

5. Get the Application and Directory unique identifier

  1. Open the Overview screen for the new application. Copy the Application (client) ID.

  2. Copy the value for Directory (tenant) ID. You will need both values when adding the provider to Veza.

Retrieving Azure IDs

6. Assign the Reader role for the Veza app

For 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.

Assigning the reader role
  1. From the Azure Subscription, select Access control (IAM)

  2. Click on "+ Add" -> "Add role assignment"

  3. Select "Reader" as the role

  4. Select User, Group, or Service Principal" under Assign Access To

  5. Select or search for the Veza app, and assign it the "Reader" role

  6. (Optional) Assign the "Reader and Data Access" role to discover storage accounts and keys.

  7. Save your changes

(Optional) Assign the Cosmos DB Account Reader role

To discover Azure CosmosDB resources, assign the Cosmos DB Account Reader role to the Veza app:

  1. Navigate to your CosmosDB account in Azure Portal

  2. Select Access control (IAM)

  3. Click "+ Add" -> "Add role assignment"

  4. Select "Cosmos DB Account Reader" as the role

  5. Choose "User, Group, or Service Principal" under Assign access to

  6. Search for and select the Veza app

  7. 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.

7. Add Key Vault Permissions (Optional)

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:

  1. On the Key Vaults services page, choose the vault Veza will discover.

  2. Select Access policies.

  3. Click + Create.

  4. Select List under Key Permissions, Secret permissions, and Certificate permissions.

  5. Click Next.

  6. Search and select the Veza app as the Authorized Application.

  7. Click Next, Next, and Create to save the policy.

Key Vault permissions for the Veza enterprise app.

8. Add the Azure tenant to Veza

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.

Field
Notes

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.

Limit Services

Additional options on the "add provider" panel enable limits on the data sources and identities extracted:

Option
Details

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

Troubleshooting

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.

Connecting to SharePoint

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.

Custom Security Attributes

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:

  1. Add or edit a new Azure cloud provider configuration.

  2. On the provider configuration modal, click + Add Custom Property.

  3. Provide the type and name of the custom property.

    1. 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).

    2. For example: (EngineeringCertification, Boolean), (MarketingLevel, String).

    3. If the custom properties are part of an Attribute Set, include the attribute set name as a prefix, for example <AttributeSetName>_<AttributeName>.

  4. Save the configuration. The custom attributes will be collected the next time the data source is parsed.

Enable Privileged Identity Management (PIM)

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:

  1. Ensure the required permissions are granted to the Veza app:

    • RoleManagement.Read.All

    • PrivilegedAccess.Read.AzureAD

    • Group.Read.All

  2. When configuring the Azure integration, set the "Extract PIM Eligibility" option to "Yes"

  3. Save the configuration. PIM assignments will be collected during the next extraction

Enable Dynamics 365

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.

Enable Microsoft Intune

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

Enable Microsoft Teams

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

Azure PostgreSQL Database

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.

Configuring Azure Database for PostgreSQL

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.

Enable PostgreSQL for the Azure integration

Log in to Veza as an administrator to finish configuring the integration. You can enable PostgreSQL for an existing integration, or when creating one.

  1. In Veza, open the Integrations page..

    1. To add an integration, Click Add Integration > Azure and complete the steps to configure Microsoft Azure.

    2. To modify an existing integration, find the provider on the main list and click Edit.

  2. From the Insight Point dropdown, pick the one you created for connecting to the PostgreSQL server.

  3. Go to the Limit Services tab.

  4. If you have already limited the services to discover, remember to enable Azure PostgreSQL.

  5. Scroll to the bottom and enter the username and password for the PostgreSQL user.

  6. 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.

Notes and Supported Entities

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.

custom security attributes

PostgreSQL

Configuring the Veza integration for PostgreSQL

Overview

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.

Prerequisites

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)

Creating the Service Account

The integration requires a PostgreSQL user with SELECT privileges on system catalog tables. To create a properly-scoped service account:

  1. Log in to your PostgreSQL server with an administrator account:

    psql -U postgres
  2. Create a dedicated service account with a strong password:

    CREATE ROLE veza_service WITH LOGIN PASSWORD 'your-strong-password-here';
  3. 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;
  4. 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;

Configuring PostgreSQL on the Veza Platform

  1. In Veza, go to the Integrations page

  2. Click Add Integration and search for PostgreSQL

  3. Click Next to add an integration

  4. 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.

  5. Click Create Integration to save the configuration

Notes and Supported Entities

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:

SQL Server Objects

PostgreSQL Instance

The server instance that hosts databases and manages authentication.

Attribute
Description

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.

Attribute
Description

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.

Attribute
Description

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

Database Objects

The integration supports the following database objects:

PostgreSQL Database

A collection of schemas and database-wide configurations.

Attribute
Description

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.

Attribute
Description

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.

Attribute
Description

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.

Attribute
Description

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 Privileges and Effective Permissions

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:

PostgreSQL Privilege
Symbol
Veza Effective Permission
Capability

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:

PostgreSQL Privilege
Symbol
Veza Effective Permission
Capability

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.

PostgreSQL Privilege
Symbol
Veza Abstract Permission
Column-Aware
Capability

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:

  1. 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)

  2. 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.

    Object
    Default PUBLIC Privileges

    DATABASE

    Tc

    DOMAIN

    U

    FUNCTION, PROCEDURE

    X

    LANGUAGE

    U

    TYPE

    U

  3. 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.

  4. 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.

Exchange Online (Microsoft 365)

Configuring the Veza integration for Exchange Online

Overview

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

Azure Integration Requirements

Azure App Configuration

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

Enable Exchange Online for the Azure Integration

To enable extraction for Exchange Online, you will need to enable the optional service for your Azure integration:

  1. On the Veza Integrations page, find the Azure integration and click Actions > Edit

  2. In the configuration details, scroll down to Limit Services

  3. Click Limited Services

  4. In the Select Services dropdown, select Exchange Online

  5. Ensure that all other services you want to extract are selected.

  6. 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.

Notes and Supported Entities

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:

  1. Mailbox Permissions (HAS_MAILBOX_PERMISSION)

    • Controls overall mailbox access

    • Points to target mailbox via ON_MAILBOX relationship

  2. Folder Permissions (HAS_MAILBOX_FOLDER_PERMISSION)

    • Controls access to specific folders

    • Points to target folder via ON_MAILBOX_FOLDER relationship

  3. Recipient Permissions (HAS_RECIPIENT_PERMISSION)

    • Can target either mailboxes or distribution groups

    • Uses ON_MAILBOX or ON_DISTRIBUTION_GROUP relationships

  4. 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

Exchange Online Instance

Root entity representing an Exchange Online environment.

Attribute
Type
Description

Exchange Online User

Represents users with Exchange Online mailboxes.

Attribute
Type
Description

Notable Field Values:

  • recipient_type_details: Includes "UserMailbox" for standard user mailboxes

  • identity_type: Default is "human"

Exchange Online Mail User

Represents external mail users (without mailboxes).

Attribute
Type
Description

Notable Field Values:

  • identity_type: Default is "human"

  • is_active: Inverse of account_disabled value

Exchange Online Mailbox

Represents email mailboxes.

Attribute
Type
Description

Exchange Online Mailbox Folder

Represents folders within mailboxes.

Attribute
Type
Description

Notable Field Values:

  • container_class: Common values include "IPF.Note" (mail), "IPF.Calendar", "IPF.Contact", "IPF.Task"

Exchange Online Distribution Group

Represents email distribution groups.

Attribute
Type
Description

Exchange Online Send-On-Behalf Permission

Represents send-as rights.

Attribute
Type
Description

Exchange Online Mailbox Permission

Controls access to mailboxes.

Attribute
Type
Description

Notable Field Values:

  • inheritance_type:

    • "None"

    • "All" (default)

    • "Children"

    • "Descendents"

    • "SelfAndChildren"

  • access_rights:

    • "ChangeOwner"

    • "ChangePermission"

    • "DeleteItem"

    • "ExternalAccount"

    • "FullAccess"

    • "ReadPermission"

Exchange Online Recipient Permission

Controls access to mailboxes or distribution groups.

Attribute
Type
Description

Notable Field Values:

  • inheritance_type: Same values as Mailbox Permission

Exchange Online Mailbox Folder Permission

Controls access to specific folders.

Attribute
Type
Description

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

Microsoft Dynamics 365 CRM

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.

Prerequisites

Before setting up the Dynamics 365 CRM integration:

  1. Complete the . The integration will use the enterprise application created during setup.

Finding the Dynamics 365 CRM Environment URL

When configuring the Dynamics 365 CRM integration, you must provide the correct URL, which can be found on the organizations page:

  1. Log in to

  2. Click on Environments

  3. Select the Environment you are integrating

  4. Locate the URL shown under the Environment URL field (the top field)

  5. 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, use https://org1.crm.dynamics.com not https://org1.crm.dynamics.com/.

Grant Azure AD Enterprise Application access to Dynamics 365 CRM

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:

  1. Visit and choose the environment to connect to

  2. Go to Settings > Users + Permissions > Application Users and click New app user

  3. Select the Microsoft Azure AD enterprise application you created during Azure integration setup

  4. Pick the Business unit and assign a Service Reader security role to enable read access

  5. Optionally add other security roles necessary for accessing the Dynamics 365 environment

  6. Confirm with Create

Enabling Enterprise App to access your Dynamics 365 CRM Environment does not use a paid license.

Configure Dynamics 365 CRM in Veza

After setting up the necessary permissions:

  1. Log in to Veza and navigate to Integrations

  2. Edit your existing Microsoft Azure integration (or add a new one)

  3. 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 /

  4. Save the configuration.

  5. Monitor the extraction progress in the Integrations dashboard

  6. Verify successful extraction by checking that Dynamics 365 CRM entities appear in search results

Integration Architecture

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.

Supported Entities and Attributes

Veza discovers the following resources and permissions in Dynamics 365 CRM:

Environment

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

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

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

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

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

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

Relationship Types

The Dynamics 365 CRM integration discovers the following relationship types:

Relationship
Description

Technical Limitations

  • 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

Troubleshooting

If you encounter issues connecting to your Dynamics 365 CRM environment:

  1. Verify the URL is formatted correctly with https:// and no trailing /

  2. Confirm the Azure AD Enterprise Application has been properly set up as an Application User in Dynamics 365

  3. Ensure the Application User has at least the Service Reader security role

  4. Check the extraction logs for any specific error messages

  5. Verify that the Enterprise Application has all required permissions for Microsoft Graph API

  6. 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

Microsoft Azure integration guide
Power Platform admin center
Power Platform Admin Center
Manage Application Users
Connect as an App

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

Azure integration's
Enabling optional services for the Azure integration

Google Cloud

Configuring the Veza integration for Google Cloud

Overview

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.

Prerequisites

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.

Authentication Methods

Veza supports two methods for authenticating with Google Cloud:

  1. 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

  2. Service Account Key Authentication (Alternative)

    • Traditional method using service account key files

    • Use only when Workload Identity Federation cannot be implemented

Option 1: Workload Identity Federation (Recommended)

Workload Identity Federation allows Veza to access Google Cloud resources securely without storing long-lived credentials. It uses a trust relationship between Veza's AWS role and your Google Cloud service account.

Integration Flow:

  1. Veza's AWS role requests access to Google Cloud resources.

  2. AWS generates a signed token proving Veza's identity.

  3. Google Cloud validates the token via the established trust relationship.

  4. Google Cloud issues temporary credentials for the service account.

  5. Veza uses these temporary credentials to access authorized resources.

To enable Workload Identity Federation, enable the required APIs for your Google Cloud project, then create a Workload Identity Pool and configure AWS as the identity provider. After configuring service account impersonation to grant access to Veza's AWS role, you can download the credential configuration file for integration setup.

Prerequisites

  1. Retrieve Veza's AWS Role ARN:

    • Contact your Veza support representative to obtain the AWS Role ARN for your tenant. This ARN is required to configure the trust relationship between Google Cloud and Veza.

    • You will need the account ID and role name from this ARN to configure the integration in Google Cloud.

    • Example ARN format: arn:aws:iam::123456789012:role/veza-integration-role

  2. Complete the common Google Cloud setup steps (excluding service account key creation):

    • Enable domain-wide delegation.

    • Create and assign a custom admin role.

    • Create and bind an organizational role.

    • Enable required APIs.

Step 1: Create Service Account

  1. Navigate to IAM & Admin > Service Accounts

  2. Click Create Service Account

  3. Provide a name, ID, and description

  4. Note the service account email address

Step 2: Enable Required APIs

Enable the following APIs for your Google Cloud project:

  • IAM API

  • Cloud Resource Manager API

  • IAM Service Account Credentials API

  • Security Token Service API

Step 3: Create Workload Identity Pool

To create a pool, choose IAM & Admin > Workload Identity Pools from the Google Cloud Console. Follow these steps to add a pool for the Veza integration:

  1. In the Google Cloud console, go to New workload provider and pool

  2. Provide a pool name (e.g., veza-federation-pool)

  3. Add a description

  4. Click Continue

Step 4: Add AWS as Identity Provider

  1. Select AWS as the provider

  2. Configure the provider details:

    • Provider name: e.g., Veza AWS Provider

    • Provider ID: Add a unique identifier, e.g. veza-aws-prod

    • AWS Account ID: Enter the AWS account ID from the role ARN provided by your Veza support representative, e.g., 012345678901

  3. Click Continue

  4. Configure the attribute mapping to extract the role name from Veza's AWS ARN:

    • For Google field: enter attribute.aws_role

    • For AWS field: enter assertion.arn.extract('assumed-role/{role}/')

  5. Under 'Attribute Conditions', add:

    attribute.aws_role == 'ROLE_NAME'

    Replace ROLE_NAME with your Veza integration role name.

    Note: The attribute mappings transform AWS role information into a format Google Cloud can use, while the condition acts as a security control by only allowing the specific Veza integration role to use this federation. This prevents any other AWS roles from accessing your Google Cloud resources.

  6. Click Save

Step 5: Configure Service Account Impersonation

  1. Go to the pool details page

  2. Select Grant Access

  3. In the dialog, select Grant access using Service Account impersonation

  4. Choose the service account created for the Veza integration from the Select service account dropdown

  5. Under Select Principals:

    1. Choose "AWS Role" as the attribute name

    2. Enter your Veza AWS Role ARN as the attribute value.

  6. Click Save and Dismiss

Step 6: Download Configuration

  1. On the provider details page, select Connected service accounts

  2. Find the integration service account and click Download

  3. Select the AWS provider and click Download config

The configuration file will look similar to:

{
   "universe_domain": "googleapis.com",
   "type": "external_account",
   "audience": "//iam.googleapis.com/projects/<project_id>/locations/global/workloadIdentityPools/<pool_name>/providers/<provider_name>",
   "subject_token_type": "urn:ietf:params:aws:token-type:aws4_request",
   "token_url": "https://sts.googleapis.com/v1/token",
   "credential_source": {
      "environment_id": "aws1",
      "regional_cred_verification_url": "https://sts.{region}.amazonaws.com?Action=GetCallerIdentity&Version=2011-06-15"
   }
}

Save this file for use in the Veza integration setup.

See Google's Workload Identity Federation Documentation for detailed instructions.

Troubleshooting

If you encounter the error Permission 'iam.serviceAccounts.getAccessToken' denied on resource (or it may not exist), follow these steps:

  1. Enable audit logging for Workload Identity Federation:

    • Go to IAM & Admin --> Audit Logs in the Google Cloud Console

    • Find the project where you configured Workload Identity Federation

    • Enable audit logging for "Identity and Access Management (IAM) API"

  2. Check STS token exchange logs in Log Explorer:

    • Open Observability-->Logging

    • Set the resource to audited_resource

    • Filter for resource.labels.service="sts.googleapis.com"

    • Look for principalSubject in the logs to verify the AWS role ARN attempting federation

      Example log entry:

      principalSubject: "arn:aws:sts::123456789012:assumed-role/veza-integration-role/veza-gcp-federation"

The log explorer will show whether the correct AWS role is attempting access and help identify any misconfigurations in the identity pool settings. For more details about Workload Identity Federation audit logging, see Google's Audit Logging Documentation.

Option 2: Service Account Key Authentication (Alternative)

This traditional method uses a service account key for authentication. While supported, it should only be used when Workload Identity Federation cannot be implemented.

Step 1: Create Service Account

  1. Navigate to IAM & Admin > Service Accounts

  2. Click Create Service Account

  3. Provide a name, ID, and description

  4. Note the service account email address

Step 2: Generate Service Account Key

  1. Go to Service Accounts

  2. Select your project

  3. Click the Keys tab

  4. Select Create New Key

  5. Choose JSON format

  6. Download and securely store the key file

Note: If you receive a message about iam.disableServiceAccountKeyCreation being enforced, you may need to modify your organization policy to allow key creation.

Required Configuration Steps

Complete these steps regardless of your chosen authentication method.

Enable Google Cloud APIs

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)

Enable Domain-Wide Delegation

  1. From your Google Workspace domain's Admin console, choose Security > Access and data control > API controls

  2. Under Domain wide delegation, select Manage Domain Wide Delegation

  3. Click Add new

    Enabling domain wide delegation
  4. Enter the service account's client ID

  5. 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
  6. Click Authorize

Create a Custom Admin Role

You'll need to create a custom Workspace role with the required API permissions, and assign the role to the integration service account:

  1. In Admin console, go to Admin roles. You may need to click "show more" on the home page for the option to appear:

    Creating a custom admin role
  2. Click Create new role

  3. Enter a name and description

  4. Under Admin API Privileges, enable:

    • Users > Read

    • Groups > Read

    • Organization Units > Read

Assigning custom role permissions

After creating the role, assign it to your service account:

  1. On the role Admins panel, choose Assign role > Assign service accounts

  2. Enter the email address of the service account

    Assign workspace role

For more information, see Assign specific admin roles - Google Workspace Admin Help.

Create an Organization Role

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:

Confirm that the organization is active, and change if needed.

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 deprecated resourcemanager.resourceTagBindings.list permission. These resource-specific permissions are required to discover tags attached to GCP resources.

Bind the Role to the Service Account

After creating the role, bind it to the integration service account:

  1. From the IAM & Admin page of the Google console, click IAM

  2. Ensure that your Organization (not an individual Project) is active in the top left corner

  3. 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).

Working with the Google Cloud CLI

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:

Opening the gcloud console

To add additional permissions later (if new functionality is required), use:

gcloud iam roles update <<role_name>> --organization=<<ORG_ID>> --add-permissions=<<PERMISSIONS>>

Additional Service 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

Retrieve your Workspace Customer ID

Each Google Workspace account has a customer ID, which Veza will need to authenticate. Take note of the customer ID for configuring the integration:

  1. From the Admin console Home page, go to Account settings > Profile.

  2. 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.

Adding the Integration to Veza

  1. In Veza, go to the Integrations page

  2. Click Add Integration

  3. Select Google Cloud Platform

  4. Configure the integration:

Field
Details

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

Insight Point
extraction limits
Identity Mappings

Microsoft Azure AD

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

Search for Azure AD Users

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.

Custom Security Attributes

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.

Privileged Identity Management (PIM)

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

PIM Assignment Types and Status

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.

Authorization Graph Representation

Veza represents different PIM assignment types in the Authorization Graph with paths between graph nodes:

  1. User assigned (Active) to Role: Azure AD User → Azure AD Role

    User assigned Active to Role
  2. User assigned (Active) to Role via Group: Azure AD User → Azure AD Group → Azure AD Role

    User assigned Active to Role via Group.png
  3. User Eligible for a Role: Azure AD User → Azure AD Role Eligibility Schedule → Azure AD Role

    User Eligible for a Role
  4. User Eligible for a Role via Group: Azure AD User → Azure AD Group → Azure AD Role Eligibility Schedule → Azure AD Role

    User Eligible for a Role via Group
  5. User with Activated Eligible Assignment: Azure AD User → Azure AD Role (temporarily present during activation period)

  6. 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

Supported Entities and Attributes

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.

Azure AD User

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

Attribute
Type
Required
Description

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.)

Azure AD Group

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

Attribute
Type
Required
Description

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)

Azure AD Role

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

Attribute
Type
Required
Description

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

Azure AD Enterprise Application

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

Attribute
Type
Required
Description

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

Azure AD Device

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

Attribute
Type
Required
Description

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

Azure AD App Role

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

Attribute
Type
Required
Description

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

Azure AD Conditional Access Policy

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

Attribute
Type
Required
Description

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

Azure AD Domain

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

Attribute
Type
Required
Description

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

Azure AD License

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

Attribute
Type
Required
Description

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