All pages
Powered by GitBook
1 of 1

Loading...

Custom Identity Mappings

Correlating identities across integrations when automatic matching does not apply

Overview

Custom identity mappings define relationships between user identities and groups across the systems integrated with Veza. When your access federation does not produce these connections on its own, you can specify the attributes Veza compares to correlate identities between two systems, for example connecting an Okta user tom.shaw@veza.com to a SQL Server login DOMAIN\tshaw.

Veza correlates many identities without any configuration. Read first: it lists the attributes Veza compares for each identity provider and the integrations that correlate on their own. A mapping that repeats what Veza already matches automatically produces no additional relationships.

Use custom identity mappings to:

  • Connect identity provider users, such as Okta users, to local accounts, such as Trino users

  • Connect identity provider groups to groups in downstream systems, such as an Active Directory group to an Okta group, or an Entra ID group to a GitHub team

  • Correlate identities on an attribute Veza does not compare automatically, such as an employee ID, an email alias, or a custom property

  • Define mapping rules for each integration, or use one rule to link identities or groups across multiple connected systems

  • Correlate identities in a to those in another integrated provider such as Okta

  • Map identity provider users to local users in a , as an alternative to setting in the payload

  • Define access-granting relationships for any user or group that shares a name, email address, or other property in Access Graph

  • Identify local account ownership using consistent naming patterns

When you use more than one identity provider, a single person exists as a separate identity in each one, and Access Graph holds a distinct user entity for every provider. For example, the same employee can appear as an Okta user, an Active Directory user, and an Azure AD user. Veza assesses risk for each identity independently and records each risk on the identity that a risk query matches. Correlating a person's identities does not combine or transfer their risk scores, so covering every identity provider comes down to making sure a risk query evaluates each provider's users.

Built-in Veza risk queries are rooted at specific provider user types, such as Okta and Active Directory users. A query rooted at one provider's user type evaluates only that provider, so a provider that has no risk queries of its own, such as Azure AD, can be left without risk coverage.

To assess risk uniformly across every identity provider, author your risk queries against a user supertype instead of a single provider's user type. Every provider's user type derives from a shared user supertype, so one supertype query evaluates users from every identity provider and records risk on each. This reaches providers that have no built-in queries of their own, without maintaining a separate query for each provider. See for selecting an entity type or supertype as the query source, and for assigning risk levels.

Configure a mapping when any of these apply:

  • The two systems have no automatic correlation between them. See for what Veza covers.

  • The only value the two systems share is an attribute Veza does not compare automatically, such as an employee ID, a secondary email address, an email alias, or a custom property.

  • The values are equivalent but not identical, and need a domain removed, punctuation ignored, or a naming convention applied.

  • You are connecting a custom application or custom identity provider built with the

Before configuring identity mappings:

  • Integrate both the source and destination systems with Veza, and confirm each has completed an extraction

  • Verify you have permission to modify integration configurations

  • Identify the attribute or pattern that correlates identities across the two systems

An OAA application appears in the destination list only after it has pushed data at least once, because Veza builds that list from the entity types present in Access Graph.

To enable custom mappings for an identity or cloud provider:

  1. Go to the Integrations page.

  2. Select a cloud or identity provider from the list and select Edit.

  3. Open the Mapping Configuration step.

  4. Select Add Mapping Configuration.

Each mapping configuration covers one destination data source type per mapping mode. To correlate both identities and groups with the same destination, add two mappings, one in each mode. A mapping cannot target the source provider itself, such as one Okta domain to another, and Veza rejects a set of mappings that would form a loop between providers.

A property matcher names the property to compare on each side. Both dropdowns offer the same five options:

  • Unique ID: the identity's unique identifier. Veza reads the identity_unique_id, identity_unique_ids, and idp_unique_id properties.

  • Email: the identity's email address. Veza reads the email and emails properties.

The two sides do not have to use the same option. Mapping the Okta Property employee_id to a custom application's Custom Property employee_id is the supported way to correlate on employee ID, which Veza does not compare automatically.

Transformations adjust values on both sides before Veza compares them:

  • Ignore Special: removes characters that are not letters or digits from the name portion of the value. A domain, if present, stays intact.

  • Ignore Domain: removes the domain portion of the value. Veza recognizes both user@domain and DOMAIN\user forms.

Enable both to compare DOMAIN\j.smith with jsmith.

When more than one property matcher is defined, an OR and AND toggle appears in the upper-right corner of the property matchers section:

  • OR, the default: a match on any property matcher correlates the identities. Use OR when identities may follow different conventions across systems.

  • AND: all property matchers must match. Use AND for stricter correlation when you need high-confidence matches based on multiple attributes.

An OR configuration such as this matches any of john.smith, jsmith, or john.smith@company.com for a user named John Smith:

An AND configuration such as this correlates a user only when both attributes align, which reduces false positives where names or email domains are shared:

A Template property matcher compares transformed values instead of raw ones, which correlates identities that follow different naming conventions in each system. A template expression can reference any property on the entity and chain functions such as LOWER, REMOVE_DOMAIN, and SUB_STRING.

For the template syntax, the properties Veza provides, and every supported transformation function, see .

Identity matchers correlate two specific identities by name, for the accounts your property matchers cannot cover:

  1. Select Add Identity Matcher.

  2. In the leftmost dropdown, choose an identity from the source integration.

  3. In the rightmost dropdown, choose the corresponding identity in the destination data source.

Veza evaluates identity matchers only for destination identities that no property matcher resolved, so they act as exceptions rather than overrides. Identity matchers are available when editing an existing integration, after both sides have extracted, and are not available for OAA-based sources.

Saving a mapping does not create relationships on its own. Veza applies the configuration during the next extraction and parse of the source integration, and the relationships appear when that completes. To apply a mapping sooner, run an extraction on the source integration.

Query paths become available as soon as you save, so a query can reference the relationship before any relationships exist.

  • Comparison ignores case on both sides. Jane.Doe@company.com and jane.doe@company.com are equivalent.

  • Empty values do not match, including when a transformation reduces a value to an empty string.

  • Every match creates a relationship. If a destination identity matches several source identities, Veza creates a relationship for each, so keep the compared values unique when you need a single correlation.

Configure mappings for one or more target data sources based on entity attributes, or use templates to correlate identities and groups across multiple destination data sources.

  1. Active Directory to SQL Server:

    • Source: Active Directory user email admin@yourdomain.com

    • Destination: SQL login YOURDOMAIN\admin

  1. Entra ID to GitHub:

    • Source: Entra ID group Engineering-Team

    • Destination: GitHub team Engineering Team

AWS integrations support mapping IAM roles directly to local users in downstream applications. This is useful when IAM roles represent service accounts or federated identities that correspond to application-level users.

  1. AWS IAM role to custom application user:

    • Source: AWS IAM role DataAnalyticsRole

    • Destination: custom application user analytics-service

To configure role to user mapping:

  1. Edit your AWS integration and open Mapping Configuration.

  2. Select Roles to Users as the mapping mode.

  3. Choose a destination data source type, such as Custom Application, Snowflake, or SQL Server.

  4. Add property matchers to define how role attributes map to user attributes.

Configure a mapping on the source integration. These integrations can hold a mapping configuration:

  • Active Directory, Entra ID (Azure AD), Google Workspace, Okta, OneLogin, and PingOne

  • AWS, which also supports the Roles to Users mapping mode

  • Workday

  • Sources built with OAA: custom identity providers, secret stores, and HRIS sources, including CSV HRIS uploads, Database HRIS, LDAP, and HRIS connectors such as HiBob, Personio, and Oracle HCM

Available destinations:

  • Identity providers: Active Directory, Entra ID (Azure AD), Google Workspace, Okta, OneLogin, PingOne, AWS Identity Center, Oracle Cloud IAM domains, CyberArk Identity

  • Databases and warehouses: Snowflake, Trino, SQL Server and Azure SQL (server logins and per-database users), Oracle Database, AWS Redshift, AWS RDS for MySQL, AWS RDS for PostgreSQL

  • Cloud and platform: AWS IAM, Databricks workspaces and AWS Databricks accounts, HashiCorp Vault namespaces, Privacera

To map identities to many destinations from one configuration, contact your Veza support representative to enable that capability. When enabled, Destination Data Source Types accepts more than one selection.

  • for the attributes Veza compares without configuration

  • for template expressions and transformation functions

  • for setting identity values in an OAA payload

whose identity values do not match an attribute Veza compares.
  • Enable Use email by default to compare email addresses when no property matcher is configured. Any property matcher you add takes precedence, and Veza ignores this setting.

  • For Mapping Mode, choose:

    • Users to correlate individual identities across systems

    • Groups to connect source and destination groups

    • Roles to Users (AWS only) to map AWS IAM roles to application local users

  • For Destination Data Source Type, select the target system. Applications built with OAA appear as the application type followed by the data source type, such as MyApp (Custom Application).

  • Select Add Property Matcher and choose the source and destination properties, described in .

  • Optionally select Transformations, described in .

  • Add more property matchers as needed. With more than one matcher, an OR and AND toggle appears, described in Combining matchers with OR and AND.

  • Select Save Configuration.

  • Property: any other property on the entity, entered by name, such as employee_id, user_principal_name, or account_name. Use this to correlate on an attribute that automatic matching does not compare. Property names are not case-sensitive, and id and name are valid values.

  • Custom Property: a custom property on an OAA entity, entered without the customprop_ prefix, such as employee_id.

  • Template: an expression that transforms property values before comparing them, for matching different naming conventions. See Identity Mapping Templates.

  • Relationships created by a mapping are distinct from those created by automatic matching, which is why both can exist between the same two systems.

    Configuration: map Email to Unique ID, with Ignore Domain enabled
  • Okta to a custom application:

    • Source: Okta user email jane.doe@company.com

    • Destination: application username jdoe

    • Configuration: map Email to Custom Property username

  • Okta to a custom application, correlating on employee ID:

    • Source: Okta Property employee_id

    • Destination: application Custom Property employee_id

    • Configuration: use this when the two systems share only an employee ID, which automatic matching does not compare

  • Entra ID to PingOne:

    • Source: Entra ID Property user_principal_name, holding admin@company.com

    • Destination: PingOne user Email admin@company.com

    • Configuration: correlates principal name to email for cross-service access reviews

  • Configuration: map name to name, with Ignore Special enabled
  • Okta to Snowflake:

    • Source: Okta group DataAnalysts

    • Destination: Snowflake role DATA_ANALYSTS

    • Configuration: map name to name, using a template with the UPPER function

  • Okta to a custom application:

    • Source: Okta group Engineering-Team

    • Destination: custom application group Engineering-Team

    • Configuration: map name to name for group-based access visibility in OAA applications

  • Multiple destinations:

    • Source: Active Directory security group Finance-Staff

    • Destinations: Salesforce group Finance Users, AWS IAM group finance-users, and Box group Finance Department

    • Configuration: a single mapping configuration applying to multiple destination systems

  • Configuration: map role name to custom property service_account
  • AWS IAM role to Snowflake user:

    • Source: AWS IAM role DataEngineerRole

    • Destination: Snowflake user data_engineer

    • Configuration: map role name to unique ID

  • Applications: GitHub users and organizations, Salesforce, Salesforce Commerce Cloud, Box, ServiceNow, Workday, SAP ECC, Oracle E-Business Suite, Veza
  • Built with OAA: custom applications, custom principals, and custom identity providers

  • Template: {FirstName}.{LastName} OR
    Template: {FirstInitial}{LastName} OR
    Property: email
    Property: email AND
    Property: department

    Cross-IdP risk coverage

    Veza assesses and records risk separately for each identity. Correlating a person's identities with identity mappings lets you see their access across providers together, but it does not combine their risk scores. To cover every provider, author your risk queries against a user supertype.

    When you need a custom mapping

    For Active Directory to Entra ID and Okta to Google Workspace, configuring a mapping replaces the automatic correlation between those two providers. Remove the mapping to restore the automatic behavior.

    For every other combination, a mapping is additive: it creates its own relationships alongside anything Veza matched automatically.

    Prerequisites

    Enabling Identity Correlation

    If you configure any property matchers, Veza ignores the Use email by default setting. For example, with Use email by default enabled and a property matcher for username to user_id, Veza uses only the username matcher.

    Property matchers

    For Property and Custom Property, Veza compares the first value when a property holds a list. For Unique ID, Email, and Template, Veza compares every value in the list.

    Transformations

    Combining matchers with OR and AND

    Template transformations

    Transformation functions

    Identity matchers

    When a mapping takes effect

    How Veza compares values

    Examples

    User identity mapping

    Group identity mapping

    Role to user identity mapping (AWS only)

    The Roles to Users mapping mode is available for AWS integrations only.

    Supported sources and destinations

    A CSV-uploaded application cannot hold a mapping configuration. Configure the mapping on the identity provider instead, and select the application as the destination. CSV HRIS uploads do hold their own mapping configuration.

    For SQL Server and Azure SQL, the destination list includes the server entry for logins and the database entry for per-database users. Choose the SQL Server Database or Azure SQL Database entry when the mapping needs to reach Windows-authenticated database users that have no corresponding server login.

    A mapping whose destination is the generic CUSTOM_APPLICATION type is read-only. You can keep or remove it, but not edit it. Create new mappings against a specific application type instead.

    Related

    custom identity provider
    custom application
    identity values
    Query Builder
    Risks
    Automatic Identity Matching
    Open Authorization API
    Identity Mapping Templates
    Automatic Identity Matching
    Identity Mapping Templates
    Cross-service connections
    Automatic Identity Matching
    Property matchers
    Transformations