Overview of Azure AD SCIM Connector

The EmpowerID Azure Active Directory (Azure AD) SCIM Connector provides organizations with a comprehensive solution for managing and synchronizing user, group, role, license, application, and other data hosted in their Azure Cloud. By integrating this data into EmpowerID, organizations can ensure consistent management and synchronization across all connected back-end user directories, enhancing their identity governance and access management capabilities.

Architecture Overview

The EmpowerID Azure AD SCIM Connector's architecture is designed to securely interface with Azure Active Directory (Azure AD), facilitating the management and synchronization of user identities, groups, roles, licenses, and related data. The architecture comprises several key components that interact to ensure seamless data exchange between EmpowerID and Azure AD.

System Components and Data Flow

The EmpowerID Azure AD SCIM Connector architecture comprises several key components that enable secure and efficient data exchange between EmpowerID and Azure AD. Central to this architecture are the EmpowerID Web & App Server Containers, which host the necessary services and applications. These containers execute inventory and job tasks to collect and process data from Azure AD, storing the results in the EmpowerID Identity Warehouse – an SQL-based database for managing user identities, groups, roles, and other related attributes.

The system uses certificate-based authentication to establish secure communication between EmpowerID and the Azure AD tenant. This approach ensures that the EmpowerID Azure AD SCIM App Service can interact securely with Azure AD, maintaining data integrity and preventing unauthorized access.

The EmpowerID Azure AD SCIM App Service is deployed within the customer’s Azure tenant and serves as the interface between EmpowerID and Azure AD. It utilizes the SCIM 2.0 protocol to manage and synchronize data. The App Service communicates with Azure AD via the Microsoft Graph API, performing CRUD (Create, Read, Update, Delete) operations on resources such as users, groups, roles, and licenses.

In the Azure environment, the SCIM App Service uses a Managed Identity to interact securely with Azure AD and other Azure services. Azure automatically manages managed identities, streamlining the authentication and authorization processes and eliminating the need for manual credential management.

The Microsoft Graph API allows the SCIM App Service to access and manipulate Azure AD data directly. The service can retrieve and update user data, group memberships, roles, licenses, and other critical resources through the API, ensuring that the information is consistent across both EmpowerID and Azure AD.

Secure Data Inventory and Management

The EmpowerID Azure AD SCIM Connector offers several data management capabilities, allowing organizations to efficiently manage their Azure AD resources within EmpowerID.

Account Management

  • Inventory User Accounts: Collect and manage user account data from Azure AD.

  • Create, Update, and Delete User Accounts: Perform CRUD operations on user accounts directly from EmpowerID.

  • Enable and Disable User Accounts: Manage the active status of user accounts.

  • Reset User Account Passwords: Initiate password resets for user accounts.

Group Management

  • Inventory Groups and Group Memberships: Collect and manage group data, including membership details.

  • Create and Delete Groups: Perform CRUD operations on groups within Azure AD.

  • Add and Remove Group Memberships: Manage user memberships within groups.

  • Add or Remove Group Members: Directly manage individual users within group memberships.

Role Management

  • Inventory Azure Roles and Role Memberships: Collect and manage role data and role memberships from Azure AD.

  • Create Azure RBAC and Custom Directory Roles: Define and manage RBAC roles and custom directory roles.

  • Assign Users to Azure Roles: Assign or modify user roles directly within EmpowerID.

License Management

  • Inventory License Bundles, License Pools, and Tenant Subscriptions: Collect and manage licensing data from Azure AD.

  • Add or Remove License Assignments for Users: Manage individual user license assignments.

  • Add or Remove License Assignments for Groups: Manage group-based license assignments.

Application Management

  • Inventory Azure Applications, Credentials, App Roles, Scopes, App Role Assignments, and Scope Assignments: Collect and manage application-related data.

  • Create Azure OIDC, SAML (Non-Gallery), and SAML (Gallery) Applications: Define and manage different applications within Azure AD.

  • Edit and Delete Azure Applications: Perform CRUD operations on Azure AD applications.

  • Create and Delete Client Secrets and Certificates: Manage application secrets and certificates.

  • Create and Delete Scopes and App Roles: Define and manage application scopes and roles.

  • Update API Permissions and Token Configurations: Modify permissions and token settings for Azure AD applications.

Data Synchronization and Lifecycle Management

Once data from Azure AD is inventoried and mapped in EmpowerID, it becomes part of the platform's broader identity lifecycle management processes. The following sections outline how the connector handles data synchronization and supports key lifecycle events.

Data Synchronization

The EmpowerID Azure AD SCIM Connector enables synchronization between Azure AD and EmpowerID. This synchronization ensures that any changes made in Azure AD, such as updates to user roles, group memberships, or application assignments, are promptly reflected in EmpowerID. Synchronization is bidirectional, meaning that updates made in EmpowerID can also be propagated back to Azure AD if needed.

Lifecycle Management

The EmpowerID Azure AD SCIM Connector integrates with EmpowerID’s lifecycle management processes, allowing for seamless user, group, and role lifecycle management based on Azure AD data. The following processes are supported:

  • Provisioning: Automatically create new users, groups, and roles in EmpowerID based on Azure AD data, ensuring these entities are assigned the correct attributes and access rights defined in Azure AD.

  • Updating: Synchronize changes made to existing users, groups, and roles in Azure AD with EmpowerID, reflecting modifications such as role changes, group reassignments, or updates to user attributes across both systems.

  • Deprovisioning: When users, groups, or roles are removed from Azure AD, they can be automatically deprovisioned in EmpowerID. This process ensures that deactivated entities are appropriately handled, including removing access rights and deleting them as required.

Attribute Mapping

To ensure seamless integration, the EmpowerID Azure AD SCIM Connector maps attributes from Azure AD to the appropriate fields within EmpowerID. This mapping process ensures that all relevant data is captured and aligns with the data models used by EmpowerID. Below is an example of how key attributes are mapped:

Azure AD Attribue

EmpowerID Person Attribute

Azure AD Attribue

EmpowerID Person Attribute

profileUrl

AboutMe

active

Active

phoneNumbers[?@.type=='work'].value

BusinessPhone

city

City

companyName

Company

employeeOrgData.costCenter

CostCenter

country

Country

usageLocation

CustomAttribute10

['urn:ietf:params:scim:schemas:extension:enterprise:2.0:User'].['department']

Department

description

Description

employeeOrgData.division

Division

endDateTime

effectiveEndDate

startDateTime

EffectiveStartDate

emails[?@.type=='work'].value

Email

externalId

EmailAlias

['urn:ietf:params:scim:schemas:extension:enterprise:2.0:User'].['employeeNumber']

EmployeeID

employeeType

EmployeeType

['urn:ietf:params:scim:schemas:extension:azureOnPremData:2.0:User'].['onPremisesExtensionAttributes'].['extensionAttribute1']

ExtensionAttribute1

['urn:ietf:params:scim:schemas:extension:azureOnPremData:2.0:User'].['onPremisesExtensionAttributes'].['extensionAttribute10']

ExtensionAttribute10

['urn:ietf:params:scim:schemas:extension:azureOnPremData:2.0:User'].['onPremisesExtensionAttributes'].['extensionAttribute11']

ExtensionAttribute11

['urn:ietf:params:scim:schemas:extension:azureOnPremData:2.0:User'].['onPremisesExtensionAttributes'].['extensionAttribute12']

ExtensionAttribute12

['urn:ietf:params:scim:schemas:extension:azureOnPremData:2.0:User'].['onPremisesExtensionAttributes'].['extensionAttribute13']

ExtensionAttribute13

['urn:ietf:params:scim:schemas:extension:azureOnPremData:2.0:User'].['onPremisesExtensionAttributes'].['extensionAttribute14']

ExtensionAttribute14

['urn:ietf:params:scim:schemas:extension:azureOnPremData:2.0:User'].['onPremisesExtensionAttributes'].['extensionAttribute15']

ExtensionAttribute15

['urn:ietf:params:scim:schemas:extension:azureOnPremData:2.0:User'].['onPremisesExtensionAttributes'].['extensionAttribute2']

ExtensionAttribute2

['urn:ietf:params:scim:schemas:extension:azureOnPremData:2.0:User'].['onPremisesExtensionAttributes'].['extensionAttribute3']

ExtensionAttribute3

['urn:ietf:params:scim:schemas:extension:azureOnPremData:2.0:User'].['onPremisesExtensionAttributes'].['extensionAttribute4']

ExtensionAttribute4

['urn:ietf:params:scim:schemas:extension:azureOnPremData:2.0:User'].['onPremisesExtensionAttributes'].['extensionAttribute5']

ExtensionAttribute5

['urn:ietf:params:scim:schemas:extension:azureOnPremData:2.0:User'].['onPremisesExtensionAttributes'].['extensionAttribute6']

ExtensionAttribute6

['urn:ietf:params:scim:schemas:extension:azureOnPremData:2.0:User'].['onPremisesExtensionAttributes'].['extensionAttribute7']

ExtensionAttribute7

['urn:ietf:params:scim:schemas:extension:azureOnPremData:2.0:User'].['onPremisesExtensionAttributes'].['extensionAttribute8']

ExtensionAttribute8

['urn:ietf:params:scim:schemas:extension:azureOnPremData:2.0:User'].['onPremisesExtensionAttributes'].['extensionAttribute9']

ExtensionAttribute9

phoneNumbers[?@.type=='fax'].value

Fax

name.givenName

FirstName

displayName

FriendlyName

name.honorificSuffix

GenerationalSuffix

phoneNumbers[?@.type=='home'].value

HomeTelephone

name.familyName

LastName

userName

Login

manager

ManagerPersonID

name.middleName

MiddleName

phoneNumbers[?@.type=='mobile'].value

MobilePhone

addresses[?@.type=='other'].formatted

Office

externalAudience

OofAudience

scheduledEndDateTime

OofEndDate

externalReplyMessage

OofExternalMsg

internalReplyMessage

OofInternalMsg

scheduledStartDateTime

OofStartDate

status

OofStatus

photos[?@.type=='work'].value

PhotoURL

addresses[?@.type=='work'].postalCode

PostalCode

preferredLanguage

PreferredLanguage

state

State

addresses[?@.type=='work'].streetAddress

StreetAddress

phoneNumbers[?@.type=='other'].value

Telephone

title

Title

Permissions Requirements

The EmpowerID Azure AD SCIM Connector requires specific permissions to interact effectively with various APIs and services. These permissions must be assigned to the Managed Identity used by the SCIM App Service and the Service Principal to ensure the connector can perform the necessary operations within Azure AD and Azure services.

Graph REST API Permissions

The following table outlines the required permissions for each Graph API operation performed by the SCIM Connector:

Operation Description

Microsoft Graph API v1.0 Endpoint

Least Privileged Permission Needed

Operation Description

Microsoft Graph API v1.0 Endpoint

Least Privileged Permission Needed

Check Deleted Group

Get group

Group.Read.All

Check Deleted User

List users

User.Read.All

Create Group

Create group

Group.Create

Create User

Create user

User.ReadWrite.All

Get All Deleted Groups

Get delta (group)

Group.Read.All

Get All Deleted Users

Get delta (user)

User.Read.All

Get All Org Contacts

Get contact

Contacts.Read

Get Applications

Get application

Application.ReadWrite.OwnedBy

Get AppRole Assignments

Get appRoleAssignment

Directory.Read.All

Get/Delete/Update Directory Role by ID

List members

RoleManagement.Read.Directory

 

Add or Remove directory role member

RoleManagement.ReadWrite.Directory

Get/Delete/Update Group by ID

Get group

Group.Read.All

 

Delete group

Group.ReadWrite.All

 

Update group

Group.ReadWrite.All

Get/Delete/Update Service Principal by ID

Get servicePrincipal

Application.ReadWrite.OwnedBy

 

Delete servicePrincipal

Application.ReadWrite.OwnedBy

 

Update servicePrincipal

Application.ReadWrite.OwnedBy

Get/Delete/Update User by ID

Create a User

User.ReadWrite.All

 

Get a User

User.Read.All

 

Delete a user

User.ReadWrite.All

 

Update a user

User.ReadWrite.All

Get Directory Role Member

List members

RoleManagement.Read.Directory

Get Directory Role Template

List unifiedRoleDefinitions

RoleManagement.Read.Directory

Get Directory Role

Get directoryRole

RoleManagement.Read.Directory

 

Activate directoryRole

RoleManagement.ReadWrite.Directory

 

Add or Remove member

RoleManagement.ReadWrite.Directory

Get Domain

List domains

Directory.Read.All

Get Group Member

List members

User.Read.All

 

Add members

GroupMember.ReadWrite.All

Get New or Updated Groups

Get delta (group)

Group.Read.All

Get New or Updated Users

Get delta (user)

User.Read.All

Get Subscribed Skus

Get subscribedSku

Organization.Read.All

Get Service Principals

Get service principal

Application.ReadWrite.OwnedBy

Get Unified Role Assignment

Get unifiedRoleAssignment

RoleManagement.Read.Directory

Get Sign-In Activity

List sign-ins

AuditLog.Read.All

Query Groups

Get group

Group.Read.All

 

Delete group

Group.ReadWrite.All

 

Update group

Group.ReadWrite.All

Query Users

Get a User

User.Read.All

 

Update a User

User.ReadWrite.All

 

Delete a user

User.ReadWrite.All

Reset User Password

Update a User

Directory.AccessAsUser.All

Azure REST API Permissions

Operation Description

Azure REST API Endpoint

Permission Needed

Operation Description

Azure REST API Endpoint

Permission Needed

Create Managed Identity

User Assigned Identities - Create

Microsoft.ManagedIdentity/userAssignedIdentities/write

Create Role Assignment

Role Assignments - Create

Microsoft.Authorization/roleAssignments/write

Delete Role Assignment

Role Assignments - Delete

Microsoft.Authorization/roleAssignments/read

Get Classic Administrators

Classic Administrators - List

Microsoft.Authorization/classicAdministrators/read

Get/Delete/Update Managed Identity by ID

User Assigned Identities - List By Resource Group / Subscription

Microsoft.ManagedIdentity/userAssignedIdentities/read

 

User Assigned Identities - Delete

Microsoft.ManagedIdentity/userAssignedIdentities/delete

 

User Assigned Identities - Create Or Update (UPDATE)

Microsoft.ManagedIdentity/userAssignedIdentities/write

Get/Delete/Update Role Assignment by ID

Role Assignments - Get

Microsoft.Authorization/roleAssignments/read

 

Role Assignments - Delete

Microsoft.Authorization/roleAssignments/delete

 

Role Assignments - Create

Microsoft.Authorization/roleAssignments/write

Get/Delete/Update Role Definition by ID

Role Definitions - Get

Microsoft.Authorization/roleDefinitions/read

 

Role Definitions - Create

Microsoft.Authorization/roleDefinitions/write

 

Role Definitions - Delete

Microsoft.Authorization/roleDefinitions/delete

 

Role Definitions - Update

Microsoft.Authorization/roleDefinitions/write

Get Managed Identities

User Assigned Identities - List By Resource Group / Subscription

Microsoft.ManagedIdentity/userAssignedIdentities/read

Get Management Group by Name

Management Groups - Get

domain

Get Management Groups

Management Groups - Get

Microsoft.Management/managementGroups/read

Get Resource Groups

Resource Groups - List

Microsoft.Resources/subscriptions/resourceGroups/read

Get Resources

Resources - List

Microsoft.Resources/subscriptions/resources

Get Role Assignments

Role Assignments - List

Microsoft.Authorization/roleAssignments/read

Get Role Definitions

Role Definitions - List

Microsoft.Authorization/roleDefinitions/read

Get Tenant

Tenants - List

Microsoft.Resources/tenant/read

Get Subscriptions

Subscriptions

Microsoft.Resources/subscriptions/read

Get Subscription Usage by ID

Usage Details - List

Microsoft.Consumption/usageDetails/read

Service Principal Permissions

The Service Principal requires Reports.Read.All permissions.

Configuration Parameters and Required Permissions

Enabling certain configuration parameters in the Azure AD Resource System within EmpowerID requires the following permissions to function correctly. Below is a detailed explanation of each configuration parameter, its purpose, and the associated permissions required.

EnableAzureApplicationInventory

Description: When set to True, this parameter allows EmpowerID to inventory Azure application data.

Inventory data and Required Permissions:

Inventory Data

Least Privileged Permission

Higher Privileged Permissions

Inventory Data

Least Privileged Permission

Higher Privileged Permissions

Azure Applications

Application.ReadWrite.OwnedBy

Application.ReadWrite.All, Directory.Read.All

Azure Application Templates

Same as above

Same as above

Conditional Access Policies

Policy.Read.All

N/A

Application.ReadWrite.OwnedBy

User.ReadWrite.All

Application.ReadWrite.All, Directory.Read.All

Application Role Assignments for Service Principals

Directory.Read.All

Directory.ReadWrite.All

EnableAzureLicenseInventory

Description: When set to True, this parameter allows EmpowerID to inventory Azure license data.

Inventory Data and Required Permissions:

Inventory Data

Least Privileged Permission

Higher Privileged Permissions

Inventory Data

Least Privileged Permission

Higher Privileged Permissions

Subscribed SKU

Organization.Read.All

Directory.Read.All, Organization.ReadWrite.All, Directory.ReadWrite.All

EnableAzureRbacInventory (H4)

Description: When set to True, this parameter allows EmpowerID to inventory Azure RBAC (Role-Based Access Control) data.

Inventory Data and Required Permissions:

Inventory Data

Permissions

Inventory Data

Permissions

Management Groups

Microsoft.Management/managementGroups/read

Subscriptions

Microsoft.Resources/subscriptions/read

Resource Groups

Microsoft.Resources/subscriptions/resourceGroups/read

RBAC Role Definitions

Microsoft.Authorization/roleDefinitions/readResources

Resources

Microsoft.Resources/subscriptions/resources/read

RBAC Role Assignments

Microsoft.Authorization/roleAssignments/read

Managed Identities

Microsoft.ManagedIdentity/userAssignedIdentities/read

Classic Administrators

Microsoft.Authorization/classicAdministrators/read

EnableDirectoryRoleMemberInventoryWithScope (H4)

Description: When set to True, this parameter allows EmpowerID to inventory Azure directory role member data. It includes data scoped to applications and directories.

Inventory Data and Required Permissions:

Inventory Data

Least Privileged Permission

Higher Privileged Permissions

Inventory Data

Least Privileged Permission

Higher Privileged Permissions

Directory Role Members Scoped to Directory

RoleManagement.Read.Directory

Directory.Read.All, Directory.ReadWrite.All, RoleManagement.ReadWrite.Directory

Directory Role Members Scoped to Application

Same as above

Same as above

EnableSignInActivityInventory

Description: When set to True, this parameter allows EmpowerID to inventory Azure sign-in activity data.

Inventory Data and Required Permissions:

Inventory Data

Least Privileged Permission

Higher Privileged Permissions

Inventory Data

Least Privileged Permission

Higher Privileged Permissions

Azure Sign-In Activity

Reports.Read.All

Reports.Read.All