I want to Access the Azure SQL Database using App service API(Java) with MSI (Managed Service Identity) authentication.
I am trying to find out the how to connect Azure sql with MSI from Azure App service for Java.
Here is the connection string I am using.
jdbc:sqlserver://mysqldb.database.windows.net:1433;database=TestDB;Authentication=ActiveDirectoryMsi;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;
Here is the steps I used:
- Create AAD group
- Add Azure web app'S MI(Managed Identity) to this AAD group
- Add this group as Active Directory admin to Azure SQL Server
Create user and give roles for this group.
CREATE USER [myAADgroup] FROM EXTERNAL PROVIDER; ALTER ROLE db_datareader ADD MEMBER [myAADgroup]; ALTER ROLE db_datawriter ADD MEMBER [myAADgroup]; ALTER ROLE db_ddladmin ADD MEMBER [myAADgroup];Connection string for JDBC driver.
I tested locally and got a success. Here are my steps for your reference:
1. Enable the managed identity for your web app, or function app, or VM
Here, I will use function app.
and then set the status to on and save. And you will get an object ID.
2. Create an Azure AD group, and add the identity as a member
3. Configure the Azure SQL Server on portal
4. Connect to database
Here, I deploy my app to a function app. The sample:
Finally, I can connect to Azure SQL: