- Open Azure Portal and navigate to Tenant A (where Fabric is hosted).
- Go to Azure Active Directory > App Registrations.
- Click + New Registration to create a new Enterprise Application.
-
In App Registrations, locate the newly created application.
-
Copy and paste the following Redirect URI:
https://login.microsoftonline.com/common/oauth2/nativeclient
- Click Configure.
Still within Authentication Scroll down and you will see the next:
Make sure you choose the options that you see on the screenshot. This should be all within Authentication.
- Go to API permissions.
- Click Add a permission and choose the necessary APIs.
- Ensure the following permissions are included:
- After adding permissions, click Grant admin consent.
- For security, consider removing unnecessary permissions, such as Item.Read.All, Lakehouse.Read.All, to minimize access. The unnecessary permissions will depend on what you are sharing or giving access to.
- Navigate to Certificates & secrets.
- Click + New client secret and create a secret.
- Store the secret securely as it will not be visible after creation.
- Go to Microsoft Entra ID > Groups.
- Click + New group.
- Group type should be set to Security.
- Click on No Members selected and add the SPN to the security group.
- Go to the Fabric Admin Portal.
- Navigate to Admin settings and enable the following:
- ✅ Service principals can use Fabric APIs
- ✅ Service principals can access read-only admin APIs
- ✅ Service principals can access admin APIs used for updates
- Add the security group created earlier to these permissions.
In Fabric, navigate to the workspace where the Data Warehouse resides.
- Click on Manage access:
- Then click on Add people or groups:
- Add the SPN as a Viewer:
Make sure it is as viewer since it needs to have the ReadData permission which will let the Service Principal access the SQL endpoint.
You have also the option to share the specific Warehouse or Lakehouse SQL endpoint with the SPN.
- Still within the workspace where the Data Warehouse or Lakehouse is, click on the share button:
- Add the SPN and make sure to give it only the Read all data using SQL permission, like in the screenshot:
- In Tenant B (ADF side), use the following URL to register the SPN from Tenant A:
https://login.microsoftonline.com/TENANT_B_ID/adminconsent?client_id=APP_CLIENT_ID
Replace:
TENANT_B_ID
with the tenant ID from Tenant BAPP_CLIENT_ID
with the client ID from the service principal in Tenant A
- Accept the permissions prompt to finalize the setup.
- Tenant A ID
- Application (Client) ID
- SPN Client Secret
- In Fabric, go to the Data Warehouse.
- Click on the ... (More options) and select Copy SQL Endpoint.
- Extract the Workspace ID and the Warehouse ID from the Fabric URL:
https://app.fabric.microsoft.com/groups/<workspace_ID>/warehouses/<warehouse_ID>
Use this information to build the ADF Linked Service:
Your cross-tenant integration is now ready using service principals between Azure Data Factory and Microsoft Fabric.