Microsoft Entra-serverhuvudnamn
Gäller för:Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (endast dedikerade SQL-pooler)
Nu kan du skapa och använda serverhuvudkonton från Microsoft Entra-ID (tidigare Azure Active Directory), som är inloggningar i den virtuella master
databasen för en SQL Database. Det finns flera fördelar med att använda Microsoft Entra-serverhuvudnamn för SQL Database:
- Stöd för Azure SQL Database-serverroller för behörighetshantering.
- Stöd för flera Microsoft Entra-användare med särskilda roller för SQL Database, till exempel rollerna
loginmanager
ochdbmanager
. - Funktionell paritet mellan SQL-inloggningar och Microsoft Entra-inloggningar.
- Öka stöd för funktionell förbättring, till exempel användning av Microsoft Entra-endast autentisering. Med endast Microsoft Entra-autentisering kan SQL-autentisering inaktiveras, vilket omfattar SQL Server-administratören, SQL-inloggningar och användare.
- Tillåter att Microsoft Entra-huvudkonton stöder geo-repliker. Microsoft Entra-huvudkonton kan ansluta till en användardatabass geo-replik med skrivskyddad och neka behörighet till den primära servern.
- Använd inloggningar för Tjänstens huvudnamn i Microsoft Entra med särskilda roller för att automatisera skapandet och underhållet av användare och databaser fullständigt med Microsoft Entra-program.
Mer information om Microsoft Entra-autentisering i Azure SQL finns i Använda Microsoft Entra-autentisering.
Kommentar
Microsoft Entra-serverhuvudkonton (inloggningar) är för närvarande i offentlig förhandsversion för Azure SQL Database och Azure Synapse Analytics. Microsoft Entra-inloggningar är allmänt tillgängliga för Azure SQL Managed Instance och SQL Server 2022.
Behörigheter
Följande behörigheter krävs för att använda eller skapa Microsoft Entra-inloggningar i den virtuella master
databasen.
- Microsoft Entra-administratörsbehörighet eller medlemskap i serverrollen
loginmanager
. Den första Microsoft Entra-inloggningen kan bara skapas av Microsoft Entra-administratören. - Måste vara medlem i Microsoft Entra-ID i samma katalog som används för Azure SQL Database.
Som standard beviljas nyligen skapade Microsoft Entra-inloggningar i master
databasen behörigheten VISA ALLA DATABASER .
Syntax för Microsoft Entra-huvudnamn
Använd följande syntax för att skapa och hantera Microsoft Entra-server- och databasobjekt.
Skapa inloggning
Den här syntaxen skapar en inloggning på servernivå baserat på en Microsoft Entra-identitet. Endast Microsoft Entra-administratören kan köra det här kommandot i den virtuella master
databasen.
CREATE LOGIN login_name
{
FROM EXTERNAL PROVIDER [WITH OBJECT_ID = 'objectid']
| WITH <option_list> [,..]
}
<option_list> ::=
PASSWORD = { 'password' }
[ , SID = sid ]
Login_name anger Microsoft Entra-huvudkontot, som är en Microsoft Entra-användare, grupp eller ett program.
Mer information finns i SKAPA INLOGGNING (Transact-SQL).
Skapa användare från inloggning
Följande T-SQL-syntax skapar ett Microsoft Entra-huvudnamn på databasnivå som mappas till en Microsoft Entra-inloggning i den virtuella master
databasen. Precis som syntaxen för att skapa en databas som innehåller Microsoft Entra-användare är den enda skillnaden att FROM LOGIN [login_name]
ange i stället FROM EXTERNAL PROVIDER
för .
Om du vill skapa en Microsoft Entra-användare från en Microsoft Entra-inloggning använder du följande syntax.
CREATE USER [user_name] FROM LOGIN [login_name]
Du kan använda SID
kolumnen från sys.database_principals för att skilja mellan en Microsoft Entra-innesluten databasanvändare och en Microsoft Entra-användare som skapats från en inloggning. För en innesluten SID
databasanvändare är en binär sträng med längd 16. För en inloggningsbaserad användare är längden SID
18 med ett AADE
suffix.
Kommentar
Att lägga till suffixet AADE
i SID är hur vi identifierar en Microsoft Entra-användare som skapad från en inloggning. Detta innebär dock också att SID:erna för inloggningen och dess användare inte matchar mellan sys.server_principals
och sys.database_principals
. För att korrelera användaren tillbaka till inloggningen måste suffixet AADE
först tas bort.
Information om den konceptuella skillnaden mellan inloggningsbaserade användare och oberoende databasanvändare finns i inneslutna databasanvändare.
Mer information om all skapa användarsyntax finns i CREATE USER (Transact-SQL).
Inaktivera eller aktivera en inloggning med ALTER LOGIN
DDL-syntaxen ALTER LOGIN (Transact-SQL) används för att aktivera eller inaktivera en Microsoft Entra-inloggning i Azure SQL Database.
ALTER LOGIN [login_name] DISABLE
När en inloggning är inaktiverad tillåts inte längre anslutningar med det serverobjektet. Den inaktiverar också alla databashuvudnamn (användare) som skapats från inloggningen från att kunna ansluta till sina respektive databaser.
Kommentar
ALTER LOGIN login_name DISABLE
påverkar inte oberoende databasanvändare eftersom de inte är associerade med inloggningar.ALTER LOGIN login_name DISABLE
stöds inte för Microsoft Entra-grupper.En enskild inaktiverad inloggning kan inte tillhöra en användare som ingår i en inloggningsgrupp som skapats i
master
databasen (till exempel en Microsoft Entra-administratörsgrupp).DISABLE
För att ändringarna ellerENABLE
ska börja gälla omedelbart måste autentiseringscacheminnet och TokenAndPermUserStore-cachen rensas med hjälp av T-SQL-kommandona.DBCC FLUSHAUTHCACHE DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS
Roller för Microsoft Entra-huvudnamn
Särskilda roller för SQL Database kan tilldelas till användare i den virtuella master
databasen för Microsoft Entra-huvudnamn, inklusive dbmanager och loginmanager.
Azure SQL Database-serverroller kan tilldelas till inloggningar i den virtuella master
databasen.
En självstudiekurs om hur du beviljar dessa roller finns i Självstudie: Skapa och använda Microsoft Entra-serverinloggningar.
Begränsningar och kommentarer
- SQL Server-administratören kan inte skapa Microsoft Entra-inloggningar eller användare i några databaser.
- En SQL-administratör eller SQL-användare kan inte köra följande Microsoft Entra-åtgärder:
CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER
CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER
EXECUTE AS USER [bob@contoso.com]
ALTER AUTHORIZATION ON securable::name TO [bob@contoso.com]
- Personifiering av Microsoft Entra-serverhuvudkonton (inloggningar) stöds inte för Azure SQL Database och Azure Synapse Analytics. Det stöds för SQL Managed Instance:
- EXECUTE AS-sats (Transact-SQL)
- KÖR SOM (Transact-SQL)
- Personifiering av Microsoft Entra-databashuvudkonton (användare) i en användardatabas stöds på alla Microsoft SQL-produkter.
- Microsoft Entra-inloggningar kan inte överlappa med Microsoft Entra-administratören. Microsoft Entra-administratören har företräde framför alla inloggningar. Om ett Microsoft Entra-konto redan har åtkomst till servern som Microsoft Entra-administratör, individuellt eller som en del av en grupp, har ingen inloggning som skapats för det här kontot någon effekt. Inloggningen blockeras dock inte via T-SQL. När kontot har autentiserats till servern har inloggningen de gällande behörigheterna för en Microsoft Entra-administratör och inte för en nyligen skapad inloggning.
- Det går inte att ändra behörigheter för specifika Microsoft Entra-inloggningsobjekt:
GRANT <PERMISSION> ON LOGIN :: <Microsoft Entra account> TO <Any other login>
- När du ändrar behörigheter för en Microsoft Entra-inloggning börjar ändringarna som standard bara gälla nästa gång inloggningen ansluter till Azure SQL Database. Alla befintliga öppna anslutningar med inloggningen påverkas inte. Om du vill tvinga behörighetsändringar att börja gälla omedelbart kan du manuellt rensa autentiseringen och TokenAndPermUserStore, enligt beskrivningen tidigare i inaktivera eller aktivera en inloggning med ALTER LOGIN. Det här beteendet gäller även när du gör ändringar i serverrollmedlemskap med ALTER SERVER ROLE.
- I SQL Server Management Studio och Azure Data Studio kontrollerar skriptkommandot för att skapa en användare inte om det redan finns en Microsoft Entra-inloggning
master
med samma namn. Den genererar alltid T-SQL för en innesluten databas som Microsoft Entra-användare. - Ett fel kan inträffa om du försöker skapa en inloggning eller användare från ett tjänsthuvudnamn med ett icke-substantivt visningsnamn. Mer information om hur du åtgärdar det här felet finns i Microsoft Entra-inloggningar och användare med icke-unika visningsnamn.
Begränsningar för Microsoft Entra-gruppserverns huvudnamn
Med Microsoft Entra-inloggningar i offentlig förhandsversion för Azure SQL Database och Azure Synapse Analytics är följande kända begränsningar:
- Azure SQL Database-serverroller stöds inte för Microsoft Entra-grupper.
- Om SQL-administratören är en Microsoft Entra-grupp finns det vissa begränsningar när användare av den gruppen ansluter. Varje Microsoft Entra-användare är inte en del av
sys.server_principals
tabellen. Detta har olika konsekvenser, inklusive anrop till attSUSER_SID
NULL
returnera . - Microsoft Entra-användarinloggningar som ingår i Microsoft Entra-gruppinloggningar skapas inte heller implicit, vilket innebär att de inte har något standardschema och inte kan utföra åtgärder som
CREATE SCHEMA
förrän en inloggning för Microsoft Entra-användaren har skapats eller ett standardschema har tilldelats gruppen. - Det går inte att ändra en databass ägarskap till en Microsoft Entra-grupp som databasägare.
ALTER AUTHORIZATION ON database::<mydb> TO [my_aad_group]
misslyckas med ett felmeddelande:Msg 33181, Level 16, State 1, Line 4 The new owner cannot be Azure Active Directory group.