Dela via


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 och dbmanager .
  • 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 PROVIDERfö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 eller ENABLE 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:
  • 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 att SUSER_SID NULLreturnera .
  • 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.
      

Nästa steg