Azure Managed Identities in .Net 6.0

Azure Managed Identities lassen sich in .Net 6.0 mit dem EF Core 6.0 ohne Code-Anpassungen nutzen. Dies ist möglich über den SqlClient 2.1, der hier standardmäßig mitgeliefert wird. Hiermit können Managed Identites nur durch Anpassung des Connection Strings verwendet werden.
Der entsprechende Access Token wird dann automatisch vom SqlClient angefordert und verwendet um die Verbindung zur Azure SQL Database herzustellen.

Bisher hat man für eine Managed Identity z.B. folgenden Connection String verwendet:

Mit einer System Assigned Managed Identity kann man den Connection String jetzt direkt auf folgende Weise umschreiben:

Hierbei muss am entsprechenden App Service auch die entsprechende System Assigned Managed Identity aktiviert sein.

Weiterhin muss die Managed Identity an der Zieldatenbank entsprechende Berechtigungen besitzen. Die Managed Identity heißt dabei per Default genau wie der entsprechende App Service. In diesem Beispiel wird die Managed Identity der db_owner Rolle zugewiesen.

In der Praxis sollten hier allerdings minimale Berechtigungen gewählt werden. Gerade in Azure ist die db_owner Rolle für Azure SQL Datenbanken sehr mächtig und kann beispielsweise auch Skalierungsoperationen auf der Datenbank durchführen oder eigene Database Level Firewall Regeln erstellen.

Alternativ lassen sich auch User Assigned Managed Identities nutzen. Diese haben die Eigenschaft, dass man die gleiche Managed Identity auch für mehrere Dienste nutzen kann. Allerdings werden User Assigned Managed Identities nicht automatisch von Azure aufgeräumt, wenn der entsprechende App Service gelöscht wird.