Secret Store
Template for modeling secret storage systems with vaults, entries, and permissions
Secret Store is an Early Access feature. Contact your Veza account team to enable it for your organization.
Use this template to model secret and credential management systems using the Open Authorization API. The Secret Store template captures the authorization relationships for custom or self-hosted credential management systems that are not covered by a native Veza integration.
The template models a hierarchical structure:
Secret Store - the top-level entity representing the secret management system instance
Permissions - define actions that identities can perform (e.g., Read, Write, Decrypt)
Vaults - logical containers for secrets within the store
Entries - individual secrets or credentials within a vault
Identities - optional identity mappings linking the entry to external identities
Identity-to-Permission Bindings - map identities to permissions on specific vaults
A custom property definition can define additional properties for the secret store, permissions, vaults, and entries.
To use the secret store template, set the template type to secret_store when creating a new data provider:
curl -X POST "https://{VEZA_URL}/api/v1/providers/custom" \
-H "authorization: Bearer {API_KEY}" \
-H "Content-Type: application/json" \
--data '{"name":"MySecretStore","custom_template":"secret_store"}'Sample Payloads
HashiCorp Vault Example
This example demonstrates a secret store with two vaults, permissions, vault entries with identity mappings, and identity-to-permission bindings.
Example: Custom PAM Integration
Organizations with custom or self-hosted privileged access management (PAM) systems can use the Secret Store template to model their credential vaults, entries, and access permissions. This example shows how to map a typical PAM structure to the Secret Store template.
Custom PAM Payload
This payload models a custom PAM system with two credential vaults, permission definitions, and identity-to-permission mappings reflecting typical DBA and platform engineer access patterns.
This example demonstrates key patterns for working with the template:
Vaults group credentials by scope. Permissions are granted at the vault level. Grouping credentials by team or system (databases, cloud keys) is the natural unit of access control.
allow_identity_assumeindicates whether this permission grants the ability to retrieve and use a credential's actual value.rotation_policyandrequires_approval** are custom properties that capture PAM-specific policies useful for access reviews and compliance reporting.
Top-Level Payload
secret_store_type
string
Type descriptor for the secret store (e.g., hashicorp_vault). Applied as a searchable property
custom_property_definition
object
Defines custom properties for the store, permissions, vaults, and entries. See Custom Properties
identity_mapping_configuration
object
Optional configuration for mapping local identities to users from external data sources
Secret Store
The secret store object is the top-level container for permissions, vaults, and identity mappings.
Secret Store Properties
name
string
Display name for the secret store
id
string
Unique identifier. Defaults to name if not provided
description
string
Description shown in Veza entity details (optional)
tags
array
Specify tags with a key and optional value
Permissions
Permissions define the actions that identities can perform on the secret store and its vaults. Permissions are referenced by name in identity-to-permission bindings.
Permission Properties
name
string
Display name for the permission
id
string
Unique identifier. Defaults to name if not provided
resource
string
Resource path or pattern this permission applies to (optional)
allow_identity_assume
boolean
Whether this permission allows identity assumption (optional)
tags
array
Specify tags with a key and optional value
Vaults
Vaults are logical containers for secrets within the store. Each vault has a type and can contain multiple entries.
Vault Properties
name
string
Display name for the vault
id
string
Unique identifier. Defaults to name if not provided
vault_type
string
Type descriptor for the vault (e.g., kv, transit, pki). Required
description
string
Description shown in Veza entity details (optional)
tags
array
Specify tags with a key and optional value
Vault Entries
Entries represent individual secrets or credentials within a vault. Entries optionally include identity mappings that link the credential to external identities in the authorization graph.
Vault Entry Properties
name
string
Display name for the entry
id
string
Unique identifier. Defaults to name if not provided
description
string
Description shown in Veza entity details (optional)
tags
array
Specify tags with a key and optional value
Vault Entry Identities
Identity mappings on vault entries link a credential to external identities in the authorization graph. When the payload is parsed, Veza creates graph edges between the vault entry and the referenced identities. See Custom Identity Mappings for more information.
Identity Properties
type
string
The type of external identity (e.g., OktaUser, AzureADUser, AWSIAMUser)
external_id
string
The external identifier for the identity (e.g., email address, ARN)
Identity to Permissions
Identity-to-permission mappings define which identities have which permissions on which vaults. Each mapping links an identity to one or more permission assignments.
Identity-to-Permission Properties
identity
string
The identity ID or name
identity_type
string
The type of identity (e.g., local_user)
Permission Assignments
Each permission assignment binds a set of permissions to a set of vaults for the parent identity.
vault
array
List of vault IDs or names that this assignment applies to
permissions
array
List of permission names granted to the identity on these vaults
Custom Property Definitions
Custom properties allow you to attach additional metadata to secret store entities. Define properties in the custom_property_definition object, then set values on individual entities.
secret_store_properties
Custom properties for the secret store entity
permission_properties
Custom properties for permission entities
vault_properties
Custom properties for vault entities
entry_properties
Custom properties for vault entry entities
Property values must match their declared type. Supported types are described in Custom Properties.
Incremental Updates
After the initial metadata push (which must contain the full payload), you can modify, add, or remove the secret store, permissions, vaults, entries, and identity assignments without resubmitting other entities. An incremental update is enabled by setting "incremental_change": true in the push payload, and specifying the update operation for each entity to change.
Creating and Updating a Secret Store
To create the OAA provider and push data:
Create the provider with the
secret_storetemplate type:Create a data source on the provider:
Push the payload to the data source:
The push endpoint requires the payload as a JSON-encoded string in the
json_datafield.jq -Rs .readspayload.jsonand escapes it as a JSON string.
Updates follow the same push workflow. Veza processes the full payload and updates the Authorization Graph accordingly.
Last updated
Was this helpful?
