Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
LocalUser label (e.g., Google Cloud SQL User, Hashicorp Vault Alias, or MongoDB Users)Integrating with an Identity Provider enables single sign on and auto-assignment for Access Reviews.
"auth_provider_implementation": "OIDC""enabled": true{
"auth_providers": [
{
"id": "2017389d-a2e1-4849-a596-c1a1bd308fbc",
"auth_provider_type": "SAML_AUTH_PROVIDER",
"enabled": true,
"name": "SAML SSO"
}
]
}{
"value": {
"enabled": true,
"idp": {
"auth_provider_id": "cf9bab40-4e48-4afc-a310-acfdad416233",
"user_type": "OktaUser",
"instance_id": "dev-5150036.okta.com",
"user_identity_property": "idp_unique_id",
"instance_id_property": "datasource_id",
"manager_identity_property": "manager_idp_unique_id"
}
}
}{
"value": {
"enabled": true,
"idp": {
"auth_provider_id": "<AUTH_PROVIDER_ID>",
"user_type": "OktaUser",
"instance_id": "dev-5150036.okta.com",
"user_identity_property": "idp_unique_id",
"instance_id_property": "datasource_id",
"manager_identity_property": "manager_idp_unique_id"
}
}
}{
"value": {
"enabled": true,
"idp": {
"auth_provider_id": "<AUTH_PROVIDER_ID>",
"user_type": "AzureADUser",
"instance_id": "d5d23474-d857-4e12-bf68-75d638867e93",
"user_identity_property": "idp_unique_id",
"instance_id_property": "datasource_id",
"manager_identity_property": "manager_idp_unique_id"
}
}
}{
"value": {
"enabled": true,
"idp": {
"auth_provider_id": "<AUTH_PROVIDER_ID>",
"user_type": "CustomIDPUser",
"instance_id": "aa650cf7-2370-406e-bb35-1a8e14b92919",
"user_identity_property": "idp_unique_id",
"instance_id_property": "datasource_id",
"manager_identity_property": "manager_idp_unique_id"
}
}
}Change the columns shown in the reviewer interface, and the order rows appear.
Configure a new access review using the quick builder.


"value": {
"selection_methods": [
"REVIEWERS_MANAGER",
"CERTIFICATION_ALTERNATE_REVIEWERS"
]
}{
"value": {
"default_ordered_columns": [
"source.name",
"source.department",
"source.customprop_worker_status",
"source.tags",
"path_summary.name",
"concrete_permissions",
"destination.name",
"destination.customprop_display_name",
"reviewers"
]
},
"workflow_id": "002063d2-7898-4183-b5fb-1192758fdec7"
}{
"value": {
"default_ordered_columns": [...],
"order_by": "source.name desc"
}
}How to configure and use alternate manager lookups for access review auto-assignment.


curl -L -X GET 'https://your-organization.vezacloud.com/api/private/workflows/access/settings/action_allowlist_enabled' \
-H 'Authorization: Bearer YOUR_SECRET_TOKEN'curl -L -X PUT 'https://your-organization.vezacloud.com/api/private/workflows/access/settings/action_allowlist_enabled' \
-H 'Authorization: Bearer YOUR_SECRET_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"enabled": true}'curl -L -X PUT 'https://your-organization.vezacloud.com/api/private/workflows/access/settings/action_allowlist_enabled' \
-H 'Authorization: Bearer YOUR_SECRET_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"enabled": false}'curl -L -X GET 'https://your-organization.vezacloud.com/api/private/groups' \
-H 'Authorization: Bearer YOUR_SECRET_TOKEN'curl -L -X POST 'https://your-organization.vezacloud.com/api/private/workflows/access/action_allowlist' \
-H 'Authorization: Bearer YOUR_SECRET_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"principals": [{"type": "USER", "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"}],
"allowed_action": ["DELETE_IN_PROGRESS_REVIEW", "MODIFY_IN_PROGRESS_REVIEW_DUE_DATE"]
}'curl -L -X POST 'https://your-organization.vezacloud.com/api/private/workflows/access/action_allowlist' \
-H 'Authorization: Bearer YOUR_SECRET_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"principals": [{"type": "GROUP", "id": "b2c3d4e5-f6a7-8901-bcde-f12345678901"}],
"allowed_action": ["DELETE_IN_PROGRESS_REVIEW", "MODIFY_IN_PROGRESS_REVIEW_DUE_DATE"]
}'curl -L -X POST 'https://your-organization.vezacloud.com/api/private/workflows/access/action_allowlist:delete' \
-H 'Authorization: Bearer YOUR_SECRET_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"principals": [{"type": "USER", "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"}],
"allowed_action": ["DELETE_IN_PROGRESS_REVIEW", "MODIFY_IN_PROGRESS_REVIEW_DUE_DATE"]
}'curl -L -X GET 'https://your-organization.vezacloud.com/api/private/workflows/access/action_allowlist' \
-H 'Authorization: Bearer YOUR_SECRET_TOKEN'{
"value": {
"enabled": true,
"idp": {
"auth_provider_id": "87549440-ef3d-4f8c-a3d8-ed1569a79ed6",
"user_type": "OktaUser",
"instance_id": "instance.okta.com",
"user_identity_property": "employee_id",
"instance_id_property": "datasource_id",
"manager_identity_property": "x_manager_id"
},
"alternate_manager_lookup_settings": [
{
"user_type": "OAA.Oracle HCM.HRISEmployee",
"instance_id": "05bbc13d-bf25-45f2-ba09-03e5625a3b66",
"user_identity_property": "employee_number",
"instance_id_property": "datasource_id",
"manager_identity_property": "managers"
},
{
"user_type": "OAA.Contractors.IDPUser",
"instance_id": "9fb32fc1-4db2-4ac6-9ab1-b5c24836ddd4",
"user_identity_property": "idp_unique_id",
"instance_id_property": "datasource_id",
"manager_identity_property": "customprop_manager_employee_number"
}
]
}
}Automatically remove user access when a reviewer rejects and signs off a row during an access review.
Require multiple levels of approval before access review decisions are final.
Marketing Team Okta Group.Create access reviews to include information from an integrated identity provider or human resource information system.

owner or member)



idp.idp_unique_id prnot (idp.idp_unique_id pr)hris.department eq "Engineering"source.identity_type eq "HUMAN" and not (idp.idp_unique_id pr)(source.customprop_attr_code eq "100" or source.customprop_attr_code eq "200") and not (idp.idp_unique_id pr){
"name": "Reject Orphaned Human Accounts",
"description": "Auto-reject local human accounts with no associated IdP profile",
"priority": 1,
"attachment_behavior": {
"attach_to_new_workflows": true,
"opt_in": true
},
"criteria": {
"filter": "source.identity_type eq \"HUMAN\" and not (idp.idp_unique_id pr)"
},
"action": {
"decision": "REJECTED",
"signed_off_state": "UNKNOWN_SIGNED_OFF",
"notes": "Local user has no IdP profile"
}
}

Automatically confirm that rejected access has been removed and mark rows as Fixed, with bidirectional validation and admin override for completed reviews.

emailguestidp_typeidp_unique_idis_activemanager_emailmanager_idp_unique_idmanager_nameproperty_*provider_idprovider_nametype
{
"workflow_id": "ae68b59e-d5b8-45cf-9d73-644beef7c8a6",
"workflow_name": "Access Review",
"certification_id": "41ea28f2-fc3f-49fd-ac7c-8b85320a6d29",
"message": "Certification completed",
"requestor": "[email protected]"
}{
"workflow_id": "b6a4e8ed-9bf9-4a5f-8545-cbe5e3e12702",
"workflow_name": "User to Role to Github",
"certification_id": "8e4de1b5-2045-4dd4-9844-3a4fbe3d0ad7",
"certification_started_at": "2022-06-21T16:58:23Z",
"certification_snapshot_id": 1655830200,
"message": "1 row(s) rejected",
"requestor": {
"id": "e0c03c28-7999-4079-9d58-6cbcc314b85b",
"name": "cookie.ai",
"email": "[email protected]"
},
"details": [
{
"result_id": 96,
"source": {
"canonical_name": "Brittany Smith",
"datasource_id": "f9145343-2205-491a-b77a-7ac59bb5743d",
"datasource_name": "Olympus",
"department": "",
"email": "[email protected]",
"guest": false,
"id": "custom_provider:idp:f9145343-2205-491a-b77a-7ac59bb5743d:idp_type:olympus_idp:user:500044",
"idp_type": "olympus_idp",
"idp_unique_id": "500044",
"is_active": true,
"manager_email": "[email protected]",
"manager_idp_unique_id": "500032",
"manager_name": "jharris",
"name": "bsmith",
"property_five": "",
"property_four": "",
"property_one": "",
"property_three": "",
"property_two": "",
"provider_id": "custom_idp_ctr01",
"provider_name": "Custom_IDP_CTR01",
"type": "CustomIDPUser"
},
"destination": {
"application_type": "Github",
"datasource_id": "5686863f-1628-41c5-a06d-b2c4f678d201",
"description": "",
"id": "custom_provider:application:5686863f-1628-41c5-a06d-b2c4f678d201:github_-_engineering:resource:repo01",
"name": "repo01",
"provider_id": "github",
"provider_name": "GitHub",
"resource_type": "repo",
"type": "CustomResource"
},
"accumulated_effective_permissions": [
"Read",
"Write"
],
"accumulated_raw_permissions": [
"Fork",
"Merge",
"Pull",
"Push"
],
"updated_at": "2022-06-21T23:30:47.623828883Z",
"updated_by": {
"user_type": "localCookieUser",
"id": "e0c03c28-7999-4079-9d58-6cbcc314b85b",
"email": "[email protected]",
"name": "cookie.ai"
},
"waypoint": {
"id": "custom_provider:application:5686863f-1628-41c5-a06d-b2c4f678d201:github_-_engineering:role:push:assignment:9",
"name": "Push",
"type": "CustomRoleAssignment"
},
"decision": "REJECTED",
"notes": "this is the rejection note",
"signed_off_state": "SIGNED_OFF"
}
]
}"tags": [
{
"key": "tag_one",
"type": "VEZA",
"value": ""
},
{
"key": "tag_two",
"type": "VEZA",
"value": "value"
}
]"joined_nodes": {
"idp": {
"canonical_name": "Ashley Abbott",
"customprop_birthday": "1988-08-09T00:00:00Z",
"customprop_cube": "D-jO452",
"customprop_last_login": "2021-07-19T15:43:14Z",
"datasource_id": "2691af72-b1d1-41ac-a714-ace1ae54d9a5",
"datasource_name": "Custom IdP",
"department": "",
"email": "[email protected]",
"guest": false,
"id": "custom_provider:idp:2691af72-b1d1-41ac-a714-ace1ae54d9a5:idp_type:custom_idp:user:507710",
"identity_type": "HUMAN",
"idp_unique_id": "507710",
"is_active": true,
"last_pushed_at": "2024-08-29T17:40:39Z",
"manager_email": "[email protected]",
"manager_idp_unique_id": "504975",
"manager_name": "wmccormick",
"name": "aabbott",
"provider_id": "oaa_external:intuit-demo",
"provider_name": "intuit-demo",
"risk_score": 0,
"tags": [],
"type": "OAA.custom_idp.IDPUser"
}
}{
"tag": {
"key": "SYSTEM_resource_managers",
"value": "01a09253,928a24e4"
}
}curl -X POST $BASEURL/api/v1/graph/nodes/tags \
-H 'authorization: Bearer $TOKEN \
--data-raw '{
"node_id": "527398259632-c98becd0",
"tags": [
{
"key": "SYSTEM_resource_managers",
"value": "[email protected]"
}
]
}'curl -X POST $BASEURL/api/v1/graph/nodes/tags:remove \
-H 'authorization: Bearer $TOKEN \
--data-raw '{
"node_id": "dn44266.us-east-2.aws.snowflakecomputing.com/database/LOCATION/schema/COUNTRIES/table/USA",
"tag_key": "SYSTEM_resource_managers"
}'"name": "demo.vezacloud.com",
"resource_type": "Cluster",
"description": "demo cluster",
"sub_resources": [],
"tags": [
{
"key": "system_resource_managers",
"value": "[email protected]"
}
]...
{
"name": "Direct Report",
"identity": "000001",
"manager_id": "000011"
}
{
"name": "Manager One",
"identity": "00011",
"manager_id": "00029"
}
{
"name": "Senior Manager",
"identity": "00029",
"manager_id": null
}
...{
"name": "Custom User",
"identity": "000011",
"entities_owned": [
{
"node_type": "S3Bucket",
"id": "arn:aws:s3:::amazon-connect-53f87966654d"
}
]
}PUT /api/private/workflows/access/global_settings/remediation_validation_behavior{
"workflow_id": "optional-review-config-id",
"value": {
"behavior": "ACCESS_REMEDIATION_VALIDATION_BEHAVIOR_MARK_AS_FIXED",
"trigger": "ACCESS_REMEDIATION_VALIDATION_TRIGGER_ON_COMPLETION",
"max_validation_duration_days": 30
}
}GET /api/private/workflows/access/global_settings/remediation_validation_behavior{
"value": {
"behavior": "ACCESS_REMEDIATION_VALIDATION_BEHAVIOR_MARK_AS_FIXED",
"trigger": "ACCESS_REMEDIATION_VALIDATION_TRIGGER_ON_COMPLETION",
"max_validation_duration_days": 30
}
}PUT /api/private/workflows/access/global_settings/remediation_validation_behavior{
"value": {
"behavior": "ACCESS_REMEDIATION_VALIDATION_BEHAVIOR_MARK_AS_FIXED",
"trigger": "ACCESS_REMEDIATION_VALIDATION_TRIGGER_ON_DUE_DATE",
"max_validation_duration_days": 14
}
}PUT /api/private/workflows/access/global_settings/remediation_validation_behavior{
"workflow_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"value": {
"behavior": "ACCESS_REMEDIATION_VALIDATION_BEHAVIOR_DISABLED",
"trigger": "ACCESS_REMEDIATION_VALIDATION_TRIGGER_ON_COMPLETION",
"max_validation_duration_days": 30
}
}Veza API key for authentication. Generate keys in Administration > API Keys.
The comparison function to use for this condition. For list properties (like emails), use LIST_ANY_ELEMENT_* functions. Value 5 (LIST_CONTAINS) is deprecated - use LIST_ANY_ELEMENT_EQ instead.
0Possible values: The node property to compare. Use the property name as shown in the Graph. For custom properties from OAA integrations, prefix with customprop_ (e.g., customprop_display_name).
emailRepresents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values.
If true, negates the condition (e.g., fn=EQ with not=true means "not equals").
falseIf value_property_name is set, the value will be retrieved from the property instead of using value above
Only effective when value_property_name is used. true -> value from <other_node>.<value_property_name> false (default) -> value from <current_node>.<value_property_name> A "true" input is valid only in destination nodes.
Property from saved query (RIGHT) to extract for IN_FROM_QUERY_SOURCE_RESULTS conditions. Defaults to "id" if not set (for backward compatibility).
OK
Default error response
The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC. Each Status message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the API Design Guide.
The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code].
A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client.
The type of the serialized message.
Veza API key for authentication. Generate keys in Administration > API Keys.
OK
The comparison function to use for this condition. For list properties (like emails), use LIST_ANY_ELEMENT_* functions. Value 5 (LIST_CONTAINS) is deprecated - use LIST_ANY_ELEMENT_EQ instead.
0Possible values: The node property to compare. Use the property name as shown in the Graph. For custom properties from OAA integrations, prefix with customprop_ (e.g., customprop_display_name).
emailRepresents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values.
If true, negates the condition (e.g., fn=EQ with not=true means "not equals").
falseIf value_property_name is set, the value will be retrieved from the property instead of using value above
Only effective when value_property_name is used. true -> value from <other_node>.<value_property_name> false (default) -> value from <current_node>.<value_property_name> A "true" input is valid only in destination nodes.
Property from saved query (RIGHT) to extract for IN_FROM_QUERY_SOURCE_RESULTS conditions. Defaults to "id" if not set (for backward compatibility).
Default error response
The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC. Each Status message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the API Design Guide.
The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code].
A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client.
The type of the serialized message.
{}PUT /api/private/workflows/access/global_settings/idp_settings HTTP/1.1
Host: your-tenant.vezacloud.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 594
{
"value": {
"enabled": true,
"idp": {
"auth_provider_id": "text",
"user_type": "text",
"instance_id": "text",
"user_identity_property": "text",
"instance_id_property": "text",
"manager_identity_property": "text",
"active_user_conditions": [
{
"fn": 0,
"property": "email",
"value": null,
"not": false,
"value_property_name": "text",
"value_property_from_other_node": true,
"source_property": "text"
}
],
"idp_type": "text",
"case_insensitive_match": true
},
"alternate_manager_lookup_settings": [
{
"user_type": "text",
"instance_id": "text",
"user_identity_property": "text",
"instance_id_property": "text",
"manager_identity_property": "text"
}
]
}
}GET /api/private/workflows/access/global_settings/idp_settings HTTP/1.1
Host: your-tenant.vezacloud.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"value": {
"enabled": true,
"idp": {
"auth_provider_id": "text",
"user_type": "text",
"instance_id": "text",
"user_identity_property": "text",
"instance_id_property": "text",
"manager_identity_property": "text",
"active_user_conditions": [
{
"fn": 0,
"property": "email",
"value": null,
"not": false,
"value_property_name": "text",
"value_property_from_other_node": true,
"source_property": "text"
}
],
"idp_type": "text",
"case_insensitive_match": true
},
"alternate_manager_lookup_settings": [
{
"user_type": "text",
"instance_id": "text",
"user_identity_property": "text",
"instance_id_property": "text",
"manager_identity_property": "text"
}
]
}
}Customizing Access review behavior for specific business needs and use cases.
{"value":"COMPLETION_ALLOWED_ALL_ROWS_HAVE_NON_REJECT_DECISION"}{"value":"AUTO_COMPLETE_ENABLED"}'}{
"value": {
"accept_notes_behavior": "POP_UP_OPTIONAL",
"reject_notes_behavior": "POP_UP_REQUIRED"
}
}{
"value": {
"default_ordered_columns": [
"source.customprop_worker_status",
"source.name",
"concrete_perms",
"destination.name",
"reviewers",
"destination.customprop_asset_id",
"destination.customprop_bu",
"destination.customprop_display_name",
"waypoint.name"
],
"hide_from_reviewers_columns": [
"source.identity_unique_id",
"idp.on_premises_distinguished_name"
]
}
}{"value":{"order_by":"source.name desc"}}'{
"value": {
"allow_csv_exports": false,
"allow_pdf_exports": false,
"allow_xlsx_exports": false
}
}{
"value": {
"allow_csv_exports": true,
"allow_pdf_exports": false,
"allow_xlsx_exports": false
},
"workflow_id": "8ae1c414-3a76-46cb-950a-925316b3f264"
}{
"value": {
"allow_bulk_approve": false,
"allow_bulk_reject": false,
"allow_bulk_signoff": true,
"allow_bulk_clear_decisions": true,
"allow_bulk_add_note": true,
"allow_bulk_reassign": true
}
}{
"value": {
"allow_bulk_approve": false,
"allow_bulk_reject": false,
"allow_bulk_signoff": false,
"allow_bulk_clear_decisions": false,
"allow_bulk_add_note": false,
"allow_bulk_reassign": false
},
"workflow_id": "8ae1c414-3a76-46cb-950a-925316b3f264"
}{
"value": {
"mandatory_for_first_level": true,
"mandatory_for_second_level": false,
"mandatory_for_third_level": false
}
}{
"workflow_id": "8ae1c414-3a76-46cb-950a-925316b3f264",
"value": {
"mandatory_for_first_level": true,
"mandatory_for_second_level": true,
"mandatory_for_third_level": false
}
}Configure the Slack App Veza Action for direct message delivery to Access Review reviewers.
{customer_cluster_url}https://yourcompany.veza.cloud{
"client_id": "01994a51-98c4-7ddd-9f68-88e73e854a8e",
"secret": "a02f8028a0d743e69168ec352170b4f9a3e7e0f6b16387b20978e71a6bd302c0"
}User [email protected] requested access to:
Snowflake Admin Group
[Connect] [Approve] [Deny] [View in Veza]{
"display_information": {
"name": "Veza",
"description": "Veza Slack Integration",
"background_color": "#184ded"
},
"features": {
"bot_user": {
"display_name": "Veza",
"always_online": false
}
},
"oauth_config": {
"scopes": {
"bot": [
"chat:write",
"users.profile:read",
"users:read",
"users:read.email"
]
}
},
"settings": {
"interactivity": {
"is_enabled": true,
"request_url": "{customer_cluster_url}/slackapp/interactions"
},
"org_deploy_enabled": false,
"socket_mode_enabled": false,
"token_rotation_enabled": false
}
}