Skip to content

Directory Services

VeraID integrates with enterprise directory services to synchronize user and group data, enabling human-to-NHI relationship mapping, ownership tracking, and automated offboarding cascades. When an employee leaves your organization, VeraID can automatically suspend or revoke all NHIs they own or manage.

Okta

Capabilities

  • User Sync — Import users from Okta with their profile attributes, group memberships, and status.
  • Group Sync — Sync Okta groups to VeraID teams for role-based NHI ownership and access policies.
  • Status Tracking — Monitor user status transitions across ACTIVE, SUSPENDED, and DEPROVISIONED states to trigger automated NHI governance actions.

Synced User Fields

Okta FieldVeraID FieldDescription
idexternalIdOkta user ID
profile.loginemailUser email address
profile.firstNamefirstNameFirst name
profile.lastNamelastNameLast name
profile.departmentdepartmentDepartment for ownership mapping
profile.titletitleJob title
statusstatusACTIVE, SUSPENDED, or DEPROVISIONED
lastLoginlastLoginAtLast login timestamp

Status-Based Automation

When a user’s Okta status changes, VeraID can automatically trigger governance actions:

Okta StatusVeraID Action
ACTIVENo action — NHIs remain active
SUSPENDEDSuspend all NHIs owned by this user; notify designated backup owners
DEPROVISIONEDRevoke all NHIs owned by this user; transfer ownership to manager or team lead

Azure Active Directory

Capabilities

  • User Sync — Import users from Azure AD with their profile, group memberships, directory roles, and sign-in activity.
  • App Registration Sync — Discover and import Azure AD app registrations as NHIs, including their client secrets, certificates, and API permissions.
  • Service Principal Sync — Track service principals and their credential lifecycle, including expiring client secrets and certificates.
  • Risk Assessment — Evaluate third-party app registrations based on permission scope, consent type, and publisher verification status.

App Registration Risk Factors

VeraID automatically assesses risk for Azure AD app registrations based on the following criteria:

FactorWeightDescription
Unverified publisherHighApp is from an unverified publisher
Admin-consented permissionsHighApp has permissions that required admin consent
Mail.ReadWrite or similarHighApp has broad data access permissions
Multi-tenant appMediumApp is available to multiple tenants
No sign-in activity (90d)MediumApp has not been used in 90 days
Client secret expiringLowClient secret expires within 30 days
Certificate-based authLow (positive)Reduces risk compared to client secrets

Client Secret Monitoring

VeraID tracks all client secrets associated with Azure AD app registrations:

{
"appRegistration": {
"displayName": "Production API Service",
"appId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"credentials": [
{
"type": "CLIENT_SECRET",
"displayName": "Production Key",
"expiresAt": "2026-06-15T00:00:00Z",
"daysUntilExpiry": 88,
"status": "ACTIVE"
},
{
"type": "CERTIFICATE",
"displayName": "mTLS Certificate",
"expiresAt": "2027-01-01T00:00:00Z",
"daysUntilExpiry": 288,
"status": "ACTIVE"
}
],
"riskScore": 72,
"riskFactors": ["admin-consented", "unverified-publisher"]
}
}

Google Workspace

Capabilities

  • User Sync — Import Google Workspace users with their profile, organizational unit, and admin status.
  • Delegation Sync — Discover domain-wide delegation grants for service accounts, identifying which service accounts can impersonate which users.
  • Group Sync — Sync Google Groups for ownership mapping and access policy assignment.

Domain-Wide Delegation Tracking

VeraID identifies GCP service accounts with domain-wide delegation and maps the scopes they have been granted:

{
"serviceAccount": "analytics-pipeline@project.iam.gserviceaccount.com",
"delegationGrants": [
{
"scopes": [
"https://www.googleapis.com/auth/drive.readonly",
"https://www.googleapis.com/auth/spreadsheets.readonly"
],
"grantedBy": "admin@company.com",
"grantedAt": "2025-08-15T10:30:00Z"
}
],
"riskLevel": "MEDIUM",
"impersonatableUsers": 342
}

Setting Up a Directory Connection

1. Create a Directory Connection

Terminal window
curl -X POST https://app.veraid.io/api/v1/directory/connections \
-H "Authorization: Bearer kd_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"name": "Corporate Okta",
"provider": "OKTA",
"config": {
"domain": "yourcompany.okta.com",
"apiToken": "00abc123...",
"syncUsers": true,
"syncGroups": true,
"syncInterval": "15m",
"filters": {
"includeGroups": ["Engineering", "Platform", "Security"],
"excludeUsers": ["servicedesk@company.com"]
}
}
}'

2. Test the Connection

Before running a full sync, verify that VeraID can connect to your directory:

Terminal window
curl -X POST https://app.veraid.io/api/v1/directory/connections/{id}/test \
-H "Authorization: Bearer kd_live_your_api_key"

Response:

{
"status": "SUCCESS",
"message": "Connected successfully",
"details": {
"usersFound": 1247,
"groupsFound": 86,
"latency": "230ms"
}
}

3. Run Initial Sync

Trigger the first full synchronization:

Terminal window
curl -X POST https://app.veraid.io/api/v1/directory/connections/{id}/sync \
-H "Authorization: Bearer kd_live_your_api_key" \
-d '{ "fullSync": true }'

The initial sync may take several minutes depending on the size of your directory. Subsequent incremental syncs only process changes since the last sync.


Sync Logs

Every sync operation produces a detailed log entry for auditing and troubleshooting:

{
"syncId": "sync_abc123",
"connectionId": "conn_xyz789",
"provider": "OKTA",
"status": "COMPLETED_WITH_ERRORS",
"startedAt": "2026-03-19T10:00:00Z",
"completedAt": "2026-03-19T10:02:34Z",
"stats": {
"usersCreated": 12,
"usersUpdated": 45,
"usersDeprovisioned": 3,
"groupsCreated": 2,
"groupsUpdated": 8,
"errors": 1
},
"errors": [
{
"type": "USER_SYNC_FAILED",
"externalId": "00u1234567",
"message": "Failed to resolve manager reference: manager not found in directory",
"severity": "WARNING",
"retryable": true
}
]
}
FieldDescription
statusCOMPLETED, COMPLETED_WITH_ERRORS, FAILED, IN_PROGRESS
statsBreakdown of created, updated, and removed records
errorsArray of errors with type, message, severity, and retry status

Sync logs are retained for 90 days and can be queried via the API or viewed in the VeraID dashboard under Settings > Directory > Sync History.

Provider Configuration Reference

ProviderRequired FieldsOptional Fields
Oktadomain, apiTokensyncUsers, syncGroups, syncInterval, filters
Azure ADtenantId, clientId, clientSecretsyncUsers, syncGroups, syncAppRegistrations, syncServicePrincipals, syncInterval, filters
Google Workspacedomain, serviceAccountKey, adminEmailsyncUsers, syncGroups, syncDelegation, syncInterval, filters