Onboarding: Microsoft Entra ID
================================
Your Airflow instance can be secured either through the platform's shared
Keycloak realm (see :doc:`../sovereign-data-platform/getting-started`), or,
if your organization prefers to manage access from its own Azure tenant,
through **Microsoft Entra ID** directly. Here's how to onboard Entra ID.
.. container:: entra-i18n
:name: entra-i18n
.. container::
:name: entra-i18n-label
Customer name
.. container::
:name: entra-i18n-placeholder
e.g. acme
.. container::
:name: entra-i18n-copy
Copy
.. container::
:name: entra-i18n-copied
Copied
.. container::
:name: entra-i18n-prefix
Your Airflow URL:
.. container::
:name: entra-i18n-dev
Dev
.. container::
:name: entra-i18n-prod
Prod
.. raw:: html
Prerequisites
--------------
Onboarding must be done by an administrator holding the Azure role
**Cloud Application Administrator** in your organization's tenant.
Onboarding instructions
--------------------------
1. Open your Airflow URL — ``https://.airflow.datafoundation.eu``.
This shows the sign-in screen:
.. image:: /_static/img/entra-id-onboarding/01-sign-in-screen.png
:alt: Airflow sign-in screen with a "Sign In with azure" button
:width: 700px
2. Click **Sign In with azure**. Choose the account with the
**Cloud Application Administrator** role.
3. Select the checkbox **Consent on behalf of your organization**, then
click **Accept** to grant the permissions request:
.. image:: /_static/img/entra-id-onboarding/02-consent-on-behalf-of-organization.png
:alt: Microsoft permissions-requested dialog with "Consent on behalf of your organization" checked
:width: 700px
4. After this first login, Airflow shows **403 Forbidden**. That's
expected, since the account doesn't have any role assigned within
Airflow yet:
.. image:: /_static/img/entra-id-onboarding/03-403-forbidden.png
:alt: Airflow welcome page showing a 403 Forbidden error in the History panel
:width: 700px
5. Open `portal.azure.com `_ using the same
**Cloud Application Administrator** account. Open **Microsoft Entra ID**,
then **Enterprise Applications**:
.. image:: /_static/img/entra-id-onboarding/04-entra-id-enterprise-applications.png
:alt: Microsoft Entra ID Overview page with Enterprise applications highlighted in the sidebar
:width: 700px
6. Search for **airflow**, click the Airflow application, then click
**Manage** → **Users and groups**:
.. image:: /_static/img/entra-id-onboarding/05-users-and-groups.png
:alt: Enterprise applications search results showing the airflow application
:width: 700px
7. Your account has the role **Default Access** (see "Role assigned").
Select the checkbox for the user, then click **Edit assignment**:
.. image:: /_static/img/entra-id-onboarding/06-edit-assignment.png
:alt: Users and groups page for the airflow enterprise application, with Edit assignment highlighted
:width: 700px
.. image:: /_static/img/entra-id-onboarding/07-edit-assignment-panel.png
:alt: Edit Assignment panel with "Select a role" showing None Selected
:width: 500px
8. Select the **Airflow Admin** role for your **Cloud Application
Administrator** account:
.. image:: /_static/img/entra-id-onboarding/08-select-airflow-admin-role.png
:alt: Select a role panel listing the Airflow Admin and Airflow Users app roles
:width: 700px
.. note::
A user can hold multiple roles. **Airflow Users** is a subset of
**Airflow Admin**.
9. To force role synchronization, log out of the Airflow application after
the role assignment:
.. image:: /_static/img/entra-id-onboarding/09-logout-airflow.png
:alt: Airflow user menu with Logout highlighted
:width: 500px
10. Wait a few minutes, then log back into Airflow at
``https://.airflow.datafoundation.eu``. Role
synchronization can take up to 15 minutes; once it completes and you've
re-logged in, the 403 Forbidden error is gone:
.. image:: /_static/img/entra-id-onboarding/10-successful-login.png
:alt: Airflow Dags page loading successfully with no errors
:width: 700px
11. Assign the **Airflow User** role to the rest of the Airflow developers
in your organization the same way, directly in the Azure portal
(preferably via a user group). See :doc:`permissions` for what each
role can do and how to manage assignments afterwards.