Permission model
APC API deployment role to Airflow role
When a user opens the Airflow UI or API for a Deployment, the APC API maps the user’s deployment-level role to an Airflow role and encodes the matching permission set in the JWT.A user with
WORKSPACE_ADMIN on the parent Workspace, or SYSTEM_ADMIN at the system level, inherits Admin-equivalent backfill access on every Deployment in scope. You don’t need to grant a deployment-level role on top.Backfill actions
Thebackfill resource supports four actions.
How permission changes propagate
The APC API issues a JWT when the user accesses the Airflow UI. The JWT lifetime is controlled by thejwt.authDuration APC config and defaults to 24 hours. A role change takes effect when the APC API issues a new JWT, typically on the user’s next sign-in or token refresh. Until then, the existing JWT continues to grant the previous permissions, so a role change can take up to 24 hours to reach an active session. To force the change immediately, have the user sign out and sign back in.
Prerequisites
- The user has
DEPLOYMENT_EDITORorDEPLOYMENT_ADMINon the target Deployment, or an inherited role from the Workspace or system level. - The Dag exists and is unpaused.
- The target date range is valid for the Dag’s schedule.
Trigger a backfill
The trigger mechanism depends on the Airflow version running in your Deployment.- Airflow 2.x
- Airflow 3.x
Airflow 2 doesn’t expose a backfill action in the UI. Use the Airflow CLI from a machine that can reach the Deployment.The
--reset-dagruns flag deletes existing backfill-related Dag runs in the range and starts a fresh set. To rerun only failed tasks instead, use --rerun-failed-tasks. For a walkthrough with examples, see Rerun Airflow Dags and tasks.Manage backfill access
Backfill access uses the standard APC role-assignment flow. For the full reference, see Manage users on Astro Private Cloud. The examples in this section show the calls scoped to backfill use cases.Grant or change a role
- APC API
- Astro CLI
Use the Use
deploymentAddUserRole GraphQL mutation to add a user, or deploymentUpdateUserRole to change an existing user’s role.role: DEPLOYMENT_VIEWER to restrict a user to read-only access instead.Restrict to read-only access
Use the same APC API or Astro CLI commands withrole: DEPLOYMENT_VIEWER (or --role=DEPLOYMENT_VIEWER). The user can view backfill status and history but can’t create, modify, or cancel backfills.
Revoke access
To remove a user from the Deployment entirely, use the APCdeploymentRemoveUserRole mutation or astro deployment user remove.
- APC API
- Astro CLI
Use the After the role binding is removed, the user retains their previous access until their JWT expires (up to 24 hours by default).
deploymentRemoveUserRole mutation to remove a user from a Deployment entirely:Monitor backfills
Use the Airflow UI
Backfill runs appear in the Dag’s run list with abackfill run-type label, alongside scheduled and manually triggered runs.
Query the metadata database
Backfill Dag runs are stored in thedag_run table with run_type = 'backfill'.
Direct access to the metadata database is typically restricted to platform operators on APC. If you don’t have direct access, use the Airflow UI or the Airflow REST API instead.
Troubleshoot
Access denied when creating a backfill
The user hasDEPLOYMENT_VIEWER, which only grants backfill.read. Promote them with deploymentUpdateUserRole:
Use the deploymentUpdateUserRole mutation to change an existing user’s role on a Deployment, for example to promote a DEPLOYMENT_VIEWER to DEPLOYMENT_EDITOR:
Backfills aren’t visible to a user
The user has no role on the Deployment. Add them with at leastDEPLOYMENT_VIEWER. If the user holds WORKSPACE_VIEWER and still can’t see the Deployment, confirm the Deployment is in the same Workspace.
A role change hasn’t taken effect
The user is still presenting their existing JWT, which keeps the previous permissions until it expires. The default JWT lifetime is 24 hours. Have the user sign out and sign back in to force APC to issue a fresh token. If they authenticate through SSO, ensure the IdP session is also refreshed.Best practices
- Assign
DEPLOYMENT_EDITORto operators who run backfills regularly. ReserveDEPLOYMENT_ADMINfor users who also manage Deployment configuration. - Assign
DEPLOYMENT_VIEWERto stakeholders who only need to monitor Dag runs. - Use a Deployment service account with
DEPLOYMENT_EDITORfor automated backfills triggered from CI or scheduled jobs, rather than a personal user token. - Audit backfill activity by querying
dag_run.run_type = 'backfill'or by reviewing the Dag’s run list. - Test large historical backfills in a non-production Deployment first.
- Set worker concurrency and Dag-level
max_active_runsto limit the load a backfill places on the Deployment.