Config governance permissions
Astro Private Cloud 2.0 adds permissions for config governance on thedeployments object, which covers cluster, Workspace, and Deployment overrides. The APC API checks these permission strings, not the UI label, when you call the GraphQL API.
Workspace-scoped users need both a Workspace role and the matching Deployment role to act in a specific Deployment. The system.* permissions apply when a user operates across Workspaces or Deployments from a system role binding, such as a System Admin.
Cluster-level data plane overrides use the
updateCluster mutation and the cluster.config.* and system.clusters.update permissions, not the workspace.* or deployment.deployments.* permissions in the preceding table. See Override data plane cluster configurations.
Default role permissions tables
The following tables compare the actions each user role permits.Default Deployment user permissions
Default Workspace user permissions
Default System user permissions
Default role permissions lists
The following sections list the permission values that each role has by default as defined in the Astronomer Helm chart. You can update these permissions in yourvalues.yaml file if you want to change the permissions that each role has. See Customize role permissions.
These lists are also published in YAML form in the Astronomer documentation repository.
System Viewer
The System Viewer has the following permissions by default:system.airflow.get: View the Airflow UI for any Deploymentsystem.deployment.variables.get: View environment variables for any Deploymentsystem.deployments.get: View any setting for any Deployment in the Astro Private Cloud UIsystem.deployRevisions.get: UsepaginatedDeployRevisionsAPI to view deploy revisionssystem.invites.get: View all pending user invites in the System Admin tab of the Astro Private Cloud UIsystem.invite.get: View information for any pending user invitesystem.monitoring.get: Access to Grafana for system-level monitoringsystem.serviceAccounts.get: View service accounts for any Deployment or Workspacesystem.updates.get: View the newest platform release version numbersystem.users.get: View information for any user on the platform, including their email address, the list of Workspaces that user has access to, and their user rolesystem.workspace.get: View information for any Workspacesystem.workspace.deployments.config.get: Read a Workspace’sdeploymentsconfig override when using a system-scoped role binding (sameworkspaceDeploymentsConfigquery with system permissions)
System Editor
The System Editor has the same default permissions as the System Viewer, plus:system.adminCount.get: View System Admin userssystem.deployment.variables.update: Modify environment variables for any Deploymentsystem.iam.update: Modify IAM roles for any Deploymentsystem.serviceAccounts.update: Modify service accounts for any Workspace or Deploymentdeployment.airflow.user: Airflow user permissions for all Deploymentssystem.registryBaseImages.push: Modify base layer Docker images for Deploymentssystem.workspace.deployments.config.update: Update a Workspace’sdeploymentsconfig override from a system context (updateWorkspaceDeploymentsConfigwith a system role)system.deployment.deployments.config.update: Update any Deployment’sdeploymentsconfig override from a system context (updateDeploymentConfig)
System Admin
The System Admin has the same default permissions as the System Viewer and System Editor, plus:-
system.clusters.register: Register a new data plane cluster -
system.clusters.deregister: Deregister (remove) an existing data plane cluster -
system.clusters.update: Update data plane cluster configuration or metadata -
system.clusters.get: View details and status of any registered data plane cluster -
system.cleanupAirflowDb.delete: Clean Deployment task metadata -
system.deployments.create: Create a Deployment on any Workspace -
system.deployments.update: Modify any Deployment -
system.deployments.upsert: UseupsertDeploymentAPI -
system.deployments.delete: Delete any Deployment -
system.deployments.images.push: Deploy code to any Deployment -
system.deployments.logs: View logs for any Deployment -
system.deployments.metrics: View metrics for any Deployment -
system.invites.get: View pending user invites in all Workspaces -
system.serviceAccounts.create: Create a service account at any level -
system.serviceAccounts.delete: Delete any service account -
system.serviceAccounts.update: Modify any service account -
system.teams.remove: Delete any Team -
system.user.invite: Invite a user -
system.user.delete: Delete a user -
system.user.forceDelete: Delete a user that is a part of an IdP team -
system.user.verifyEmail: Bypass email verification for any user -
system.workspace.delete: Delete any Workspace -
system.workspace.update: Modify the name or description of any Workspace -
system.workspace.deployments.config.delete: Reset a Workspace’sdeploymentsconfig override from a system context (deleteWorkspaceDeploymentsConfig) -
system.deployment.deployments.config.delete: Reset any Deployment’sdeploymentsconfig override from a system context (deleteDeploymentConfig) -
system.airflow.admin: Airflow admin permissions on any Deployment, including permission to configure:- Pools
- Configuration
- Users
- Connections
- Variables
- XComs
Workspace Viewer
The Workspace Viewer has the following default permissions for a given Workspace:workspace.config.get: View the Workspacesystem.deployments.get: View all settings and configuration pages of any Deploymentworkspace.serviceAccounts.get: View any Deployment or Workspace-level service accountworkspace.users.get: View information for all users with access to the Workspaceworkspace.teams.get: View Teams belonging to the Workspaceworkspace.taskUsage.get: View task usage in the Workspaceworkspace.deployments.config.get: Read the Workspace config governance override (workspaceDeploymentsConfigin the APC API)
Workspace Editor
For a given Workspace, the Workspace Editor has the same default permissions as the Workspace Viewer, plus:workspace.adminCount.get: View Workspace Admin usersworkspace.config.update: Modify the Workspace, including Workspace Name, Description, and user accessworkspace.deployments.create: Create a Deployment in the Workspaceworkspace.deployments.upsert: Use Create Deployment path within theupsertDeploymentAPIworkspace.serviceAccounts.create: Create a Workspace-level service accountworkspace.serviceAccounts.update: Modify a Workspace-level service accountworkspace.serviceAccounts.delete: Delete a Workspace-level service accountworkspace.deployments.config.update: Create or update the Workspace’sdeploymentsconfig override (updateWorkspaceDeploymentsConfigin the APC API)
Workspace Admin
For a given Workspace, the Workspace Admin has the same default permissions as the Workspace Viewer and Workspace Editor, plus:workspace.invites.get: View pending user invites for the Workspaceworkspace.config.delete: Delete the Workspaceworkspace.iam.update: Update IAM for the Workspaceworkspace.teams.getAll: View all users in Teams belonging to the Workspaceworkspace.users.getAll: View all users in the Workspaceworkspace.deployments.config.delete: Reset the Workspace’sdeploymentsconfig override (deleteWorkspaceDeploymentsConfigin the APC API)
Deployment Viewer
For a given Deployment, a Deployment Viewer has the following permissions:deployment.airflow.get: View the Airflow UIdeployment.config.get: View the Deployment’s settingsdeployment.deployRevisions.get: Use thepaginatedDeployRevisionsAPI to view deploy revisionsdeployment.logs.get: View the Deployment’s logsdeployment.images.pull: Access the Deployment’s running Docker imagedeployment.metrics.get: View the Deployment’s Metrics tab in the Astro Private Cloud UIdeployment.serviceAccounts.get: View any service account for the Deploymentdeployment.status.get: View the Deployment’s statusdeployment.variables.get: View the Deployment’s environment variablesdeployment.users.get: View the list of users with access to the Deploymentdeployment.teams.get: View all Teams belonging to the Deploymentdeployment.taskUsage.get: View task usage information for the Deployment
Deployment Editor
For a given Deployment, the Deployment Editor has the same default permissions as the Deployment Viewer, plus:deployment.adminCount.get: View Deployment Admin usersdeployment.airflow.user: Airflow user permissions for all Deployments, including modifying task runs and Dag runsdeployment.config.update: Modify the Deployment’s settingsdeployment.config.upsert: UseupsertDeploymentAPIdeployment.dags.push: Push Dag-only code deploys to the Deployment using the Astro CLIdeployment.images.push: Push code to the Deployment using the Astro CLIdeployment.serviceAccounts.create: Create a Deployment-level service accountdeployment.serviceAccounts.update: Modify a Deployment-level service accountdeployment.serviceAccounts.delete: Delete a Deployment-level service accountdeployment.variables.update: Update the Deployment’s environment variablesdeployment.deployments.config.update: Create or update the Deployment’sdeploymentsconfig override (updateDeploymentConfigin the APC API)
Deployment Admin
For a given Deployment, the Deployment Admin has the same default permissions as the Deployment Viewer and the Deployment Editor, plus:-
deployment.config.delete: Delete the Deployment -
deployment.userRoles.update: Update Deployment-level permissions for users within the Deployment -
deployment.teamRoles.update: Update Deployment-level permissions for Teams within the Deployment -
deployment.deployments.config.delete: Reset the Deployment’sdeploymentsconfig override (deleteDeploymentConfigin the APC API) -
deployment.airflow.admin: Airflow admin permissions, including permission to configure:- Pools
- Configuration
- Users
- Connections
- Variables
- XComs
Custom role permission catalog
Astro Private Cloud 2.1This feature was introduced in Astro Private Cloud 2.1. To access this feature, upgrade your Astro Private Cloud installation to 2.1 or later.
update or delete permission depends on the matching get permission. Each entry notes its dependencies, and the role builder applies them automatically when you select a permission.
Creating, updating, or deleting a custom role always requires a System-scope role-management permission (system.roles.<action> or system.iam.update), regardless of what scope the role itself targets. A Workspace or Deployment Admin can still be assigned a role at their own scope, but authoring a role definition is a System Admin action.
This catalog covers permissions available to custom roles. For the default permissions of the built-in System, Workspace, and Deployment roles, see the preceding sections.
System administration
system.adminCount.get: See how many System Admins exist on the platform. Check this before removing an admin so the platform isn’t left without one.system.airflow.admin: Full admin-level access to Airflow, including Dags, connections, variables, and pools, for every Deployment on the platform. Also lets you grant that same access when building another user’s custom role.system.airflow.get: Read-only access to Airflow, including Dags, runs, and logs, for every Deployment on the platform. This grants you Airflow viewer access directly.system.airflow.user: Edit-level access to Airflow for every Deployment on the platform, covering actions such as triggering and editing Dags, runs, variables, and connections, but not admin-only actions. Also lets you grant that same level when building another user’s custom role.system.airflow.viewer: Doesn’t grant you Airflow access. It lets you grant other users read-only Airflow access, including Dags, logs, and connections, across every Deployment when building their custom role.system.cleanupAirflowDb.delete: Start a cleanup job that purges old Airflow history, such as past task runs and logs, from one or more Deployment metadata databases so they don’t grow too large.system.cleanupDeployRevisions.delete: Delete old deploy/release history entries (past deploys) older than a chosen number of days, for a single Deployment or across the whole platform.system.clusters.cordon: Put a cluster into maintenance mode (cordon) and lift it again (uncordon). While cordoned, the cluster rejects all Deployment create, update, delete, and image operations. Requiressystem.clusters.get.system.clusters.deregister: Remove a cluster from the platform’s list of managed clusters. Requiressystem.clusters.get.system.clusters.get: View the list of clusters on the platform, cluster details, available disaster-recovery failover targets, and regions.system.clusters.register: Register a new cluster with the platform. Requiressystem.clusters.get.system.clusters.update: Edit cluster settings, manage disaster-recovery regions, and trigger or upgrade Deployments as part of a failover. Requiressystem.clusters.get.system.deployRevisions.get: View the deploy/release history (a record of past deploys, useful for rollbacks) for Deployments across the platform.system.deployment.deployments.config.delete: Remove one specific Deployment’s advanced configuration overrides (like custom resource limits or executor settings), restoring it to the Workspace/platform defaults, for any Deployment on the platform.system.deployment.deployments.config.update: Set advanced configuration overrides (like resource limits, executors, or scaling behavior) for one specific Deployment, for any Deployment on the platform. Separate from that Deployment’s everyday settings such as resources, alerts, or scaling shortcuts.system.deployment.variables.get: View a Deployment’s environment variables (used to configure Airflow tasks), for any Deployment on the platform.system.deployment.variables.update: Add, edit, or remove a Deployment’s environment variables, for any Deployment on the platform. Requiressystem.deployment.variables.get.system.deployments.adopt: See Airflow Deployments that exist in a cluster but aren’t yet managed by Astro Private Cloud, and bring them under its management. Requiressystem.deployments.get.system.deployments.cordon: Temporarily lock a Deployment to block changes to it, and unlock it again, for any Deployment on the platform. Useful during maintenance or an incident. Requiressystem.deployments.get.system.deployments.create: Has no effect in the Astro Private Cloud UI. Creating a Deployment is controlled bysystem.deployments.upsert. Requiressystem.deployments.get.system.deployments.dags.push: Roll a Deployment back to a previous Dag-only deploy, for any Deployment on the platform. Requiressystem.deployments.get.system.deployments.delete: Permanently delete a Deployment, for any Deployment on the platform. Requiressystem.deployments.get.system.deployments.get: View Deployments across the entire platform, Deployment details, lists, and access URLs, regardless of which Workspace they belong to.system.deployments.images.push: Deploy a new or existing image to a Deployment (for example, from an external CI/CD pipeline) and roll back to a previous image deploy, for any Deployment on the platform. Requiressystem.deployments.get.system.deployments.logs: View live log streams for any Deployment on the platform. Requiressystem.deployments.get.system.deployments.metrics: View live metrics (like task and worker resource usage) for any Deployment on the platform. Requiressystem.deployments.get.system.deployments.status: View the live status of any Deployment on the platform (for example, whether it’s healthy or still deploying). Requiressystem.deployments.get.system.deployments.unadopt: Release a Deployment from Astro Private Cloud management without deleting the underlying Airflow instance, for any Deployment on the platform. Requiressystem.deployments.get.system.deployments.update: Change a Deployment’s everyday settings, resource sizing, scaling behavior, alert configuration, and who’s assigned to it, for any Deployment on the platform. Doesn’t cover advanced configuration overrides, which usesystem.deployment.deployments.config.update. Requiressystem.deployments.get.system.deployments.upsert: Create a brand-new Deployment, or save changes made in a Deployment’s setup/settings form (including checking that git-sync credentials work), for any Deployment on the platform. Requiressystem.deployments.get.system.iam.update: Manage user and Team access platform-wide: assign or remove system-level roles, add or remove Workspace members and Teams, bulk-import Airflow users into a Deployment, and manage custom role assignments for anyone. Requiressystem.users.get.system.invite.get: Has no effect in Astro Private Cloud. Viewing pending platform invitations is controlled bysystem.invites.get.system.invites.get: View the list of pending invitations to join the platform.system.monitoring.get: Access the platform’s monitoring dashboards (such as Grafana, Prometheus, Alertmanager, and Elasticsearch).system.registryBaseImages.push: Publish updates to the platform’s shared base Airflow images that every Deployment is built from.system.roles.create: Create new custom roles of any scope (system, Workspace, Deployment, or cluster) in the role builder. Requiressystem.roles.get.system.roles.delete: Delete existing custom roles of any scope. Requiressystem.roles.get.system.roles.get: View existing custom roles of any scope and see who they’re assigned to.system.roles.update: Edit existing custom roles of any scope, including which permissions they grant. Requiressystem.roles.get.system.serviceAccounts.create: Create service accounts (API keys used by automation instead of a person) anywhere on the platform, system-wide, or for any Workspace or Deployment. Requiressystem.serviceAccounts.get.system.serviceAccounts.delete: Delete service accounts anywhere on the platform, system-wide, or for any Workspace or Deployment. Requiressystem.serviceAccounts.get.system.serviceAccounts.get: View service accounts anywhere on the platform, system-wide, or for any Workspace or Deployment.system.serviceAccounts.update: Edit service accounts anywhere on the platform (for example, their permissions), system-wide, or for any Workspace or Deployment. Requiressystem.serviceAccounts.get.system.taskUsage.get: View task usage metrics, the task-run counts used for consumption-based billing, for the whole platform, any Workspace, or any Deployment.system.teams.create: Create new Teams on the platform. Requiressystem.teams.get.system.teams.get: View Teams and their members, for any Team on the platform (including within a specific Workspace or Deployment).system.teams.remove: Delete a Team from the platform. Requiressystem.teams.get.system.teams.update: Edit a Team’s details, for any Team on the platform. Requiressystem.teams.get.system.updates.get: See whether a newer version of the platform is available to upgrade to.system.user.delete: Remove a user from the platform. Requiressystem.users.get.system.user.forceDelete: Remove a user from the platform even if they belong to a Team synced from your company’s identity provider, normally blocked to protect those accounts from accidental removal. Requiressystem.users.get.system.user.invite: Invite a new user to join the platform. Requiressystem.users.get.system.user.verifyEmail: Manually mark a user’s email address as verified. Requiressystem.users.get.system.users.get: View the list of users on the platform, their role assignments, and their Workspace/Deployment membership.system.workspace.create: Create a new Workspace. Every authenticated user already holds this permission through the built-in user role, so granting it explicitly in a custom role has no additional effect.system.workspace.delete: Delete a Workspace, for any Workspace on the platform. Requiressystem.workspace.get.system.workspace.deployments.config.delete: Remove the default configuration overrides a Workspace applies to its Deployments (like resource limits or executor settings), for any Workspace on the platform. Requiressystem.workspace.deployments.config.get.system.workspace.deployments.config.get: View the default configuration overrides a Workspace applies to its Deployments, for any Workspace on the platform.system.workspace.deployments.config.update: Set default configuration overrides (like resource limits or executor settings) that apply to every Deployment within a Workspace, for any Workspace on the platform. Requiressystem.workspace.deployments.config.get.system.workspace.get: View any Workspace on the platform, and see the full list of every Workspace, regardless of your membership in it.system.workspace.update: Edit a Workspace’s general settings (like its name or description), for any Workspace on the platform. Requiressystem.workspace.get.
Cluster management
cluster.config.create: Register a new data plane cluster with the platform so Deployments can run on it. Requirescluster.config.get.cluster.config.delete: Deregister a cluster from the platform, removing it from the list of clusters that Deployments can run on. Requirescluster.config.get.cluster.config.cordon: Put a cluster into maintenance mode (cordon) and lift it again (uncordon). While cordoned, the cluster rejects all Deployment create, update, delete, and image operations. Requirescluster.config.get.cluster.config.get: View a cluster’s details and status, the cloud regions available to it, and which other clusters it could fail over to.cluster.config.update: Edit a cluster’s settings (name, connection endpoints, assigned region, Deployment overrides), and trigger or manage failover to another cluster. Requirescluster.config.get.cluster.roles.get: View the custom roles and role assignments that control cluster-level administration.cluster.roles.update: Edit a cluster-administration role template, and assign or change who holds cluster-admin access. Requirescluster.roles.get.
Workspace management
workspace.adminCount.get: See how many Workspace Admins exist for this Workspace, used to warn if an action would leave it without one.workspace.config.delete: Permanently delete this Workspace and everything in it. Requiresworkspace.config.get.workspace.config.get: View a Workspace’s basic details, such as its name and description.workspace.config.update: Change a Workspace’s name or description. Requiresworkspace.config.get.workspace.deployments.config.delete: Remove any custom configuration overrides for the Workspace, reverting all its Deployments back to the platform’s standard defaults. Requiresworkspace.deployments.config.get.workspace.deployments.config.get: View the Workspace-wide configuration overrides that apply to every Deployment in this Workspace. This is different from viewing the Deployments themselves.workspace.deployments.config.update: Change the Workspace-wide configuration overrides (such as default resource limits) that apply to every Deployment in this Workspace. Requiresworkspace.deployments.config.get.workspace.deployments.adopt: Bring an Airflow environment that’s already running on a cluster, but not yet managed here, under this Workspace so it can be managed as a Deployment. Requiresworkspace.deployments.get.workspace.deployments.cordon: Pause platform updates to a Deployment, or resume them. While paused, its Airflow environment keeps running, but the platform stops applying changes to it. Requiresworkspace.deployments.get.workspace.deployments.create: Create new Deployments within this Workspace. Requiresworkspace.deployments.get.workspace.deployments.get: View the list of Deployments in this Workspace and open an individual Deployment’s details. This is different from viewing the Workspace’s Deployment configuration overrides.workspace.deployments.unadopt: Release a previously adopted Deployment from this Workspace’s management, without affecting the underlying Airflow environment, which keeps running untouched. Requiresworkspace.deployments.get.workspace.deployments.upsert: Create a new Deployment within this Workspace. Requiresworkspace.deployments.get.workspace.iam.update: Add or remove users and Teams from this Workspace, and change which role each one holds. This controls who has access and which role they’re assigned, not the role definitions themselves. Use theworkspace.roles.*permissions to create or edit roles. Requiresworkspace.users.get.workspace.invites.get: View pending invitations to join this Workspace.workspace.roles.get: View the custom roles belonging to this Workspace, and see who currently holds each one. Creating, updating, or deleting a role always requires a System-scope role-management permission, even for a Workspace-scoped role — see the note at the top of this section.workspace.serviceAccounts.create: Create a new API service account (a non-human credential) for programmatic access to this Workspace. Requiresworkspace.serviceAccounts.get.workspace.serviceAccounts.delete: Delete an API service account from this Workspace, revoking its programmatic access. Requiresworkspace.serviceAccounts.get.workspace.serviceAccounts.get: View the API service accounts that exist in this Workspace.workspace.serviceAccounts.update: Edit an existing API service account in this Workspace, such as its name or assigned role. Requiresworkspace.serviceAccounts.get.workspace.taskUsage.get: View task-execution usage statistics for the Deployments in this Workspace.workspace.teams.get: View the Teams that already belong to this Workspace.workspace.teams.getAll: Search and browse every Team across the entire platform, for example, to find one to add to this Workspace, not just the Teams already in it. Requiresworkspace.teams.get.workspace.users.get: View the people who are already members of this Workspace.workspace.users.getAll: Search and browse every user across the entire platform, for example, to find someone to add through identity provider group import, not just the members already in this Workspace. Requiresworkspace.users.get.
Deployment management
deployment.adminCount.get: See how many admins currently have full control over this Deployment (used to warn before removing the last one).deployment.config.delete: Permanently delete this Deployment. Requiresdeployment.config.get.deployment.config.get: View this Deployment and open its pages at all. Most other Deployment permissions require this as a baseline.deployment.config.update: Change this Deployment’s operating settings, things like autoscaling, alert email recipients, and moving it to another cluster during a failover. Requiresdeployment.config.get.deployment.config.upsert: Create a new Deployment, or edit an existing Deployment’s core setup, name, executor, workers/resources, runtime version, and Dag deploy/git-sync configuration. Requiresdeployment.config.get.deployment.dags.push: Deploy new Dag code to this Deployment, used both by people deploying from the UI and by CI/CD automation (for example, the Astro CLI).deployment.deployRevisions.get: View this Deployment’s deploy history, the list of past code/image deploys and when they happened. Requiresdeployment.config.get.deployment.deployments.config.delete: Remove an advanced, platform-level configuration override applied to this specific Deployment (an admin/support-level setting, separate from the Deployment’s regular settings).deployment.deployments.config.update: Set an advanced, platform-level configuration override on this specific Deployment (an admin/support-level setting, separate from the Deployment’s regular settings).deployment.deployments.cordon: Temporarily pause or resume scheduling on this Deployment (cordon/uncordon), blocking new activity without deleting it.deployment.images.pull: Retrieve this Deployment’s built container images, used when promoting/retagging an image between Deployments or environments.deployment.images.push: Deploy a new container image to this Deployment, the action behind deploying custom Docker images, typically used by CI/CD automation as well as manual image deploys.deployment.logs.get: View this Deployment’s raw component logs (scheduler, webserver, workers, triggerer) for troubleshooting.deployment.metrics.get: View this Deployment’s performance graphs and charts, including CPU, memory, and task throughput.deployment.roles.get: View the custom role definitions available to assign on Deployments, including what each one grants. Creating, updating, or deleting a role always requires a System-scope role-management permission, even for a Deployment-scoped role — see the note at the top of this section.deployment.serviceAccounts.create: Create API-key based service accounts for this Deployment, used to authenticate automation and CI/CD tools. Requiresdeployment.serviceAccounts.get.deployment.serviceAccounts.delete: Delete API-key based service accounts on this Deployment. Requiresdeployment.serviceAccounts.get.deployment.serviceAccounts.get: View the API-key based service accounts configured on this Deployment.deployment.serviceAccounts.update: Edit API-key based service accounts on this Deployment (for example, rename or change their role). Requiresdeployment.serviceAccounts.get.deployment.status.get: View this Deployment’s overall health/status indicator (for example, healthy, degraded).deployment.taskUsage.get: View task-execution usage data for this Deployment, used for usage and billing reporting.deployment.teamRoles.update: Assign or change which role a specific Team holds on this Deployment. This is about who has access and at what level, not about editing role definitions. Requiresdeployment.teams.get.deployment.teams.get: View which Teams have access to this Deployment.deployment.userRoles.update: Assign or change which role a specific person holds on this Deployment. This is about who has access and at what level, not about editing role definitions. Requiresdeployment.users.get.deployment.users.get: View which individual people have access to this Deployment.deployment.variables.get: View this Deployment’s environment variables.deployment.variables.update: Add, edit, or remove this Deployment’s environment variables. Requiresdeployment.variables.get.
Airflow access
deployment.airflow.access: Open this Deployment’s Airflow UI. On its own this shows an empty shell — each page inside needs its own permission — so this is the starting point every other Airflow permission builds on. Requiresdeployment.config.get.deployment.airflow.admin: Full control inside this Deployment’s Airflow UI, including viewing, editing, and running Dags, connections, and variables. This is the highest of the three Airflow access tiers, and grants everything the granular Airflow permissions below would grant individually. Requiresdeployment.config.get.deployment.airflow.get: View-only access to this Deployment’s Airflow UI. Despite the name, this is the entire read-only viewer tier (Dags, runs, task instances, logs, and audit logs), not a single narrow capability. Grant this only when someone should see all of it; otherwise, grant the individual Airflow permissions below along withdeployment.airflow.access. Requiresdeployment.config.get.deployment.airflow.user: Day-to-day working access to this Deployment’s Airflow UI, can edit and trigger things like Dags and connections, but without full admin-level control. Requiresdeployment.config.get.
Airflow configuration
deployment.airflow.config.read: View Airflow’s own webserver configuration page for this Deployment. Requiresdeployment.airflow.access.
Dag operations
The permissions in this category apply on both Airflow 2 and Airflow 3. Airflow 2’s security model uses
deployment.airflow.dag.read as the parent check for Dag runs, task instances, logs, and more, so it isn’t optional there — without it, permissions that depend on it have nothing to attach to.deployment.airflow.dag.read: View Dag-level details and metadata, such as whether a Dag is paused, in the Airflow UI for this Deployment. Requiresdeployment.airflow.access.deployment.airflow.dag.edit: Edit Dag-level settings, such as pausing or unpausing a Dag, in the Airflow UI for this Deployment. Requiresdeployment.airflow.dag.read.deployment.airflow.dag.delete: Delete a Dag’s metadata from the Airflow UI for this Deployment. Requiresdeployment.airflow.dag.read.deployment.airflow.dag_code.read: View the Python source code of this Deployment’s Dags in the Airflow UI. Requiresdeployment.airflow.dag.readanddeployment.airflow.task_instance.read.
Dag runs
deployment.airflow.dag_run.read: View Dag runs (individual executions of a Dag) for this Deployment. Requiresdeployment.airflow.dag.read.deployment.airflow.dag_run.create: Manually trigger new Dag runs (individual executions of a Dag) for this Deployment. Requiresdeployment.airflow.dag_run.read.deployment.airflow.dag_run.edit: Edit Dag runs (individual executions of a Dag) for this Deployment, such as changing a run’s state. Requiresdeployment.airflow.dag_run.read.deployment.airflow.dag_run.delete: Delete Dag runs (individual executions of a Dag) for this Deployment. Requiresdeployment.airflow.dag_run.read.deployment.airflow.dag_run.clear: Clear Dag runs for this Deployment, resetting the run’s state so its tasks can be re-executed. Requiresdeployment.airflow.dag_run.read.
Task instances
deployment.airflow.task_instance.read: View task instances, a single task’s execution within a specific Dag run, for this Deployment. Requiresdeployment.airflow.dag.read.deployment.airflow.task_instance.create: Create new task instances, a single task’s execution within a specific Dag run, for this Deployment. Requiresdeployment.airflow.task_instance.read.deployment.airflow.task_instance.edit: Edit task instances for this Deployment, such as marking a task’s execution as success, failed, or ready to retry. Requiresdeployment.airflow.task_instance.read.deployment.airflow.task_instance.delete: Delete task instances, a single task’s execution within a specific Dag run, for this Deployment. Requiresdeployment.airflow.task_instance.read.
Task logs
deployment.airflow.task_log.read: View task logs, the log output produced by a task’s execution, for this Deployment. Requiresdeployment.airflow.dag.read.
Triggers
deployment.airflow.trigger.read: View Triggers, the waiting half of a deferred task, listing which trigger classes are currently pending, for this Deployment. Requiresdeployment.airflow.access.
Variables and connections
deployment.airflow.variable.read: View Airflow variables (key-value configuration values Dags can read at runtime) for this Deployment. Requiresdeployment.airflow.access.deployment.airflow.variable.create: Create new Airflow variables (key-value configuration values Dags can read at runtime) for this Deployment. Requiresdeployment.airflow.variable.read.deployment.airflow.variable.edit: Edit existing Airflow variables (key-value configuration values Dags can read at runtime) for this Deployment. Requiresdeployment.airflow.variable.read.deployment.airflow.variable.delete: Delete Airflow variables (key-value configuration values Dags can read at runtime) for this Deployment. Requiresdeployment.airflow.variable.read.deployment.airflow.connection.read: View Airflow connections (stored credentials for external systems like databases, APIs, and cloud services) for this Deployment. Requiresdeployment.airflow.access.deployment.airflow.connection.create: Create new Airflow connections (stored credentials for external systems like databases, APIs, and cloud services) for this Deployment. Requiresdeployment.airflow.connection.read.deployment.airflow.connection.edit: Edit existing Airflow connections (stored credentials for external systems like databases, APIs, and cloud services) for this Deployment. Requiresdeployment.airflow.connection.read.deployment.airflow.connection.delete: Delete Airflow connections (stored credentials for external systems like databases, APIs, and cloud services) for this Deployment. Requiresdeployment.airflow.connection.read.
Pools and XComs
deployment.airflow.pool.read: View Airflow pools (named limits on how many tasks can run at the same time) for this Deployment. Requiresdeployment.airflow.access.deployment.airflow.pool.create: Create new Airflow pools (named limits on how many tasks can run at the same time) for this Deployment. Requiresdeployment.airflow.pool.read.deployment.airflow.pool.edit: Edit existing Airflow pools (named limits on how many tasks can run at the same time) for this Deployment. Requiresdeployment.airflow.pool.read.deployment.airflow.pool.delete: Delete Airflow pools (named limits on how many tasks can run at the same time) for this Deployment. Requiresdeployment.airflow.pool.read.deployment.airflow.xcom.read: View XComs (small pieces of data tasks pass to each other during execution) for this Deployment. Requiresdeployment.airflow.dag.read.deployment.airflow.xcom.create: Create new XComs (small pieces of data tasks pass to each other during execution) for this Deployment. Requiresdeployment.airflow.xcom.read.deployment.airflow.xcom.delete: Delete XComs (small pieces of data tasks pass to each other during execution) for this Deployment. Requiresdeployment.airflow.xcom.read.
Datasets
deployment.airflow.dataset.read: View datasets (data-aware scheduling assets that can trigger Dags when updated) for this Deployment. Requiresdeployment.airflow.access.deployment.airflow.dataset.create: Create dataset events (manually mark a dataset as updated to trigger downstream Dags) for this Deployment. Requiresdeployment.airflow.dataset.read.deployment.airflow.dataset.delete: Delete datasets for this Deployment. Requiresdeployment.airflow.dataset.read.
Backfills
deployment.airflow.backfill.read: View backfills (re-runs of a Dag over a past date range it already covers) for this Deployment. Requiresdeployment.airflow.access.deployment.airflow.backfill.create: Start new backfills (re-runs of a Dag over a past date range it already covers) for this Deployment. Requiresdeployment.airflow.backfill.read.deployment.airflow.backfill.edit: Edit or manage in-progress backfills (re-runs of a Dag over a past date range it already covers) for this Deployment. Requiresdeployment.airflow.backfill.read.deployment.airflow.backfill.delete: Cancel or delete backfills (re-runs of a Dag over a past date range it already covers) for this Deployment. Requiresdeployment.airflow.backfill.read.
Human in the loop
deployment.airflow.hitl_detail.read: View human-in-the-loop task details, for tasks that pause mid-run for manual approval or input, for this Deployment. Requiresdeployment.airflow.access.deployment.airflow.hitl_detail.edit: Respond to human-in-the-loop tasks, such as approving or providing input for tasks paused mid-run, for this Deployment. Requiresdeployment.airflow.hitl_detail.read.
Audit and logs
deployment.airflow.audit_log.read: View the audit log, a record of actions users take in the Airflow UI, for this Deployment. Requiresdeployment.airflow.dag.read.deployment.airflow.import_error.read: See the errors Airflow reports when a Dag file fails to load for this Deployment. The messages quote file paths and lines of the Dag’s code. Requiresdeployment.airflow.access.
Browse and monitoring
deployment.airflow.sla_miss.read: View service-level agreement (SLA) misses, which are tasks that ran past their defined SLA, for this Deployment. Requiresdeployment.airflow.dag.read.deployment.airflow.sla_miss.edit: Edit SLA miss records for this Deployment. Requiresdeployment.airflow.sla_miss.read.deployment.airflow.sla_miss.delete: Delete SLA miss records for this Deployment. Requiresdeployment.airflow.sla_miss.read.deployment.airflow.task_reschedule.read: View task reschedules, which are records of sensor tasks rescheduled while waiting, for this Deployment. Requiresdeployment.airflow.dag.read.deployment.airflow.cluster_activity.read: View the Cluster Activity page, a dashboard of Dag run and task health, for this Deployment. Requiresdeployment.airflow.access.deployment.airflow.dag_warning.read: View Dag warnings, which are parsing and configuration warnings raised for Dags, for this Deployment. Requiresdeployment.airflow.dag.read.
Providers and plugins
deployment.airflow.provider.read: View the Providers page, the installed Airflow provider packages and their versions, for this Deployment. Requiresdeployment.airflow.access.deployment.airflow.plugin.read: View the Plugins page, the installed Airflow plugins, for this Deployment. Requiresdeployment.airflow.access.
Full permission dependency reference
The role builder adds a permission’s dependencies for you automatically when you select it. If you’re calling the APC API directly instead of using the role builder, dependencies aren’t added for you — submitting an incomplete permission list is rejected, and the error alone doesn’t tell you the rest of the chain. The tables below list every permission’s complete dependency chain, so you can assemble a fullpermissionKeys list without tracing it yourself one entry at a time. To grant a permission through the API, include it along with everything in its dependency chain.
For example, to grant deployment.airflow.dag_run.read directly through the API, include all of deployment.airflow.dag_run.read, deployment.airflow.dag.read, deployment.airflow.access, and deployment.config.get in the same request.