Skip to main content

IAM configuration file

Learn about the IAM configuration file structure

Identity and access management users, roles, and policies, along with JWT authentication configurations are defined using a TOML file loaded using the Set IAM configuration REST API endpoint or CLI command.

The TOML file must contain users, roles, and policies tables, and can include an idps table. These tables can be specified in any order. See JWT configuration in the IAM file for reference information on the idps tables.

Users

Users are defined with the [users] heading like this:

[users.<name>]
role = "<role_name>"

Where <role_name> is any valid string.

Roles

Users are defined with the [roles] heading like this:

[roles.<role_name>]
policies = [<policies-list>]
capabilities = [<capabilities-list>]

Where:

  • <role_name> is any valid string.
  • <policies-list> is a comma-separated list of policies or "*" to indicate that all policies are included.
  • <capabilities-list> is a comma-separated list of capabilities or "*" to indicate that all capabilities are included. These are the capabilities by scope:
ScopePrefixMethodsCapability
Data/api/pvlt/1.0/dataGET"CapDataReader"
POST"CapDataWriter" or "CapDataCreator"
PATCH"CapDataWriter" or "CapDataUpdater"
DELETE"CapDataWriter" or "CapDataDeleter"
Data query/api/pvlt/1.0/data/collections/*/query/objectsPOST"CapDataSearcher"
Objects/api/pvlt/1.0/data/collections/*/objects/*GET"CapOjectsReader"
POST"CapObjectsWriter" or "CapObjectsCreator"
PATCH"CapObjectsWriter" or "CapObjectsUpdater"
DELETE"CapObjectsWriter" or "CapObjectsDeleter"``
Objects lister
Note: This Capability also allows reading objects data by ID
/api/pvlt/1.0/data/collections/*/objectsGET"CapObjectsLister"
Tokens/api/pvlt/1.0/data/collectionsGET"CapTokensDetokenizer"
POST, PATCH, and DELETE"CapTokensWriter"
Tokens query/api/pvlt/1.0/data/collections/*/query/tokensPOST"CapTokensReader"
Tokens rotate/api/pvlt/1.0/data/collections/*/rotate/tokensPOST"CapTokensWriter"
Transaction ID/api/pvlt/1.0/data/collections/*/transaction_idGET"CapTransactionIdReader"
Encrypt/api/pvlt/1.0/data/collections/*/encrypt/*POST"CapCryptoEncrypter"
PATCH"CapCryptoDecrypter" and "CapCryptoEncrypter"
Decrypt/api/pvlt/1.0/data/collections/*/decrypt/*POST"CapCryptoDecrypter"
Hash/api/pvlt/1.0/data/collections/*/hash/*POST"CapCryptoHasher"
Action/api/pvlt/1.0/ctl/actionsGET"CapActionsReader"
Action invoker/api/pvlt/1.0/data/actionsPOST"CapActionsInvoker"
Identity and access management/api/pvlt/1.0/ctl/iamGET"CapIAMReader"
POST"CapIAMWriter"
Bundles/api/pvlt/1.0/ctl/bundlesGET"CapCodeReader"
POST, PATCH, and DELETE"CapCodeWriter"
Data types/api/pvlt/1.0/ctl/typesGET"CapTypesReader"
POST, PATCH, and DELETE"CapTypesWriter"
Schema/api/pvlt/1.0/schemaGET"CapCollectionsReader"
POST, PUSH, PATCH, and DELETE"CapCollectionsWriter"
Garbage collection (pruning)/api/pvlt/1.0/system/admin/lifecycle/gcPOST"CapSystemGCRunner"
Configuration variables/api/pvlt/1.0/system/confvarGET"CapConfvarReader"
POST, PATCH, and DELETE"CapConfvarWriter"
KMS/api/pvlt/1.0/system/info/kmsGET"CapKMSReader"
KMS rotate/api/pvlt/1.0/system/admin/keys/rotatePOST"CapKMSWriter"
Export key/api/pvlt/1.0/system/admin/export_keyGET"CapExportKeyReader"
Version/api/pvlt/1.0/system/info/versionAll"CapInfoReader"
System information/api/pvlt/1.0/system/infoGET"CapInfoReader"
Cluster information/api/pvlt/1.0/ctl/info/clusterGET"CapClusterInfoReader"
Error/api/pvlt/1.0/system/debug/error/triggerPOST"CapErrorWriter"
Health/api/pvlt/1.0/data/info/healthAllNot required
/api/pvlt/1.0/ctl/info/healthAllNot required
note

The roles ConsoleAdmin and ConsoleReadOnly are used by the Piiano SaaS.

Policies

Policies are defined with the [policies] heading like this:

[policies.<policy-name>]
policy_type = "allow"|"deny"
operations = [<operations-list>]
reasons = [<reasons-list>]
resources = [<resources-list>]

Where:

  • operations-list is a comma-separated list of one or more of these values or "*" to indicate that all operations are included:

    • "read"
    • "write"
    • "delete"
    • "search"
    • "tokenize"
    • "detokenize"
    • "encrypt"
    • "decrypt"
    • "hash"
    • "stats"
  • reasons-list is a comma-separated list of one or more of these values or "*" to indicate that all reasons are included:

    • AppFunctionality
    • Analytics
    • Notifications
    • Marketing
    • ThirdPartyMarketing
    • FraudPreventionSecurityAndCompliance
    • AccountManagement
    • Maintenance
    • DataSubjectRequest
    • Other, used when an ad-hoc reason is specified.
  • resources-list is a comma-separated list of one or more resources:

    • builtin data types specified as <collection–name>/types/<type-name>, <type-name> must be in uppercase.
    • properties specified as <collection–name>/properties/<property–name>.
    • transformations specified as <collection–name>/transformations/<transformation–name>.
    • tokens specified as <collection–name>/tokens.
    • archived items specified as <collection–name>/archived/[properties|tokens][/<property–name>].

    <collection–name>, <type-name>, <property–name>, or |<transformation–name>] can be specified as "*" to indicate that all collections, data types, properties, or transformations are included.

    For example:

    • "buyers/types/EMAIL" refers to the all the properties in the buyers collection based on the EMAIL data type.
    • "employees/properties/email" refers to the email property of the employees collection.
    • "*/properties/email" refers to the email property in any collection.
    • "customers/transformations/ssn.mask" refers to the mask transformation of the ssn property of the customers collection.
    • "*/tokens" refers to tokens in any collection.
    • "customers/archived/*" refers to any property of archived objects in the customers collection.

Example

This example shows the specification of:

  • A CollectionsManager user.
  • A CollectionsReaderWriter role. The CollectionsReaderWriter role has the capabilities to enable it to maintain the schema of collections.
  • Two policies allowing read and write for all properties and transformations for any reason.
[users]

[users.CollectionsManager]
role = "CollectionsReaderWriter"

[roles]

[roles.CollectionsReaderWriter]
capabilities = ["CapCollectionsReader", "CapCollectionsWriter"]
policies = ["PolReadAll","PolWriteAll"]

[policies]

[policies.PolReadAll]
policy_type = "allow"
operations = ["read"]
reasons = ["*"]
resources = ["*"]

[policies.PolWriteAll]
policy_type = "allow"
operations = ["write"]
reasons = ["*"]
resources = ["*"]