docs/internals/permissions/migration.mdx
This guide provides instructions for upgrading from the legacy V1 permissions system to the more powerful V2 permissions system in Infisical.
The V2 permissions system offers several advantages over V1:
When upgrading to V2 permissions (i.e., when moving from using the permissions to permissions_v2 field in your Terraform configurations, or upgrading to the V2 permission API), you'll need to update your permission structure as follows:
Any permissions for secrets should be expanded to include equivalent permissions for:
secret-importssecret-folders (except for read permissions)dynamic-secretsFor dynamic secrets, the actions need to be mapped differently:
| V1 Action | V2 Action |
|---|---|
read | read-root-credential |
create | create-root-credential |
edit | edit-root-credential (also adds lease permission) |
delete | delete-root-credential |
V2 permissions use a different syntax, with actions stored in arrays and an optional inverted flag:
// V1 format (single action)
{
subject: "secrets",
action: "read"
}
// V2 format (array of actions)
{
subject: "secrets",
action: ["read"],
inverted: false // Optional, defaults to false
}
Here's a complete example showing how to migrate a role from V1 to V2:
# Old V1 configuration
resource "infisical_project_role" "example" {
name = "example"
permissions = [
{
subject = "secrets"
action = "read"
},
{
subject = "secrets"
action = "edit"
}
]
}
# New V2 configuration
resource "infisical_project_role" "example" {
name = "example"
permissions_v2 = [
# Original secrets permission
{
subject = "secrets"
action = ["read", "edit"]
inverted = false
},
# Add equivalent secret-imports permission
{
subject = "secret-imports"
action = ["read", "edit"]
inverted = false
},
# Add secret-folders permission (without read)
{
subject = "secret-folders"
action = ["edit"]
inverted = false
},
# Add dynamic-secrets permission with mapped actions
{
subject = "dynamic-secrets"
action = ["read-root-credential", "edit-root-credential", "lease"]
inverted = false
}
]
}
secrets permissions.