SQL-autentisering i Azure Synapse Analytics

Azure Synapse Analytics har två SQL-formfaktorer som gör att du kan styra resursförbrukningen. Den här artikeln förklarar hur de två formulärfaktorerna styr användarautentiseringen.

Om du vill auktorisera till Synapse SQL kan du använda två auktoriseringstyper:

  • Microsoft Entra-auktorisering
  • SQL-auktorisering

MED SQL-auktorisering kan äldre program ansluta till Azure Synapse SQL på ett välbekant sätt. Med Microsoft Entra-autentisering kan du dock centralt hantera åtkomst till Azure Synapse-resurser, till exempel SQL-pooler. Azure Synapse Analytics stöder inaktivering av lokal autentisering, till exempel SQL-autentisering, både under och efter skapandet av arbetsytan. När den har inaktiverats kan lokal autentisering aktiveras när som helst av behöriga användare. Mer information om Microsoft Entra-autentisering finns i Inaktivera lokal autentisering i Azure Synapse Analytics.

Administrativa konton

Det finns två administrativa konton (SQL-administratörsanvändarnamn och SQL Active Directory-administratör) som fungerar som administratörer. Om du vill identifiera dessa administratörskonton för dina SQL-pooler öppnar du Azure-portalen och går till fliken Egenskaper på Synapse-arbetsytan.

SQL Server Admins

  • ANVÄNDARNAMN för SQL-administratör

    När du skapar en Azure Synapse Analytics måste du namnge en inloggning som serveradministratör. SQL Server skapar kontot som en inloggning i master databasen. Det här kontot ansluter med hjälp av SQL Server-autentisering (användarnamn och lösenord). Endast ett av dessa konton kan finnas.

  • SQL Active Directory-administratör

    Ett Microsoft Entra-konto, antingen ett enskilt konto eller ett säkerhetsgruppskonto, kan också konfigureras som administratör. Det är valfritt att konfigurera en Microsoft Entra-administratör, men en Microsoft Entra-administratör måste konfigureras om du vill använda Microsoft Entra-konton för att ansluta till Synapse SQL.

    • Microsoft Entra-administratörskontot styr åtkomsten till dedikerade SQL-pooler, medan Synapse RBAC-roller kan användas för att styra åtkomsten till serverlösa pooler, till exempel med rollen Synapse-administratör och Synapse SQL-administratör .

SQL-administratörens användarnamn och SQL Active Directory-administratörskonton har följande egenskaper:

  • Är de enda konton som automatiskt kan ansluta till valfri SQL Database på servern. (För att kunna ansluta till en användardatabas måste andra konton antingen vara ägare till databasen eller ha ett användarkonto i databasen.)
  • Dessa konton går in i användardatabaser som användaren dbo och de har alla behörigheter i användardatabaserna. (Ägaren till en användardatabas går också in i databasen som användaren dbo.)
  • Ange master inte databasen som dbo användare och har begränsade behörigheter i master databasen.
  • Är inte medlemmar i den fasta SQL Server-standardserverrollen sysadmin , som inte är tillgänglig i SQL Database.
  • Kan skapa, ändra och släppa databaser, inloggningar, användare i master databasen och IP-brandväggsregler på servernivå.
  • Kan lägga till och ta bort medlemmar i rollerna dbmanager och loginmanager .
  • Kan visa systemtabellen sys.sql_logins .

Kommentar

Om en användare har konfigurerats som Active Directory-administratör och Synapse-administratör och sedan tagits bort från Active Directory-administratörsrollen förlorar användaren åtkomsten till de dedikerade SQL-poolerna i Synapse. De måste tas bort och sedan läggas till i synapse-administratörsrollen för att få åtkomst till dedikerade SQL-pooler.

Om du vill hantera användare som har åtkomst till en serverlös SQL-pool kan du använda anvisningarna nedan.

Om du vill skapa en inloggning till en serverlös SQL-pool använder du följande syntax:

CREATE LOGIN Mary WITH PASSWORD = '<strong_password>';
-- or
CREATE LOGIN [Mary@domainname.net] FROM EXTERNAL PROVIDER;

När inloggningen finns kan du skapa användare i de enskilda databaserna inom den serverlösa SQL-poolslutpunkten och bevilja nödvändiga behörigheter till dessa användare. Om du vill skapa en användare kan du använda följande syntax:

CREATE USER Mary FROM LOGIN Mary;
-- or
CREATE USER Mary FROM LOGIN Mary@domainname.net;
-- or
CREATE USER [mike@contoso.com] FROM EXTERNAL PROVIDER;

När inloggningen och användaren har skapats kan du använda den vanliga SQL Server-syntaxen för att bevilja rättigheter.

Användare som är icke-administratörer

I allmänhet behöver konton som inte är administratör inte åtkomst till master databasen. Skapa oberoende databasanvändare på databasnivå med hjälp av instruktionen SKAPA ANVÄNDARE (Transact-SQL).

Användaren kan vara en Microsoft Entra-autentisering som innehåller databasanvändare (om du har konfigurerat din miljö för Microsoft Entra-autentisering) eller en SQL Server-autentisering som innehåller databasanvändare eller en SQL Server-autentiseringsanvändare baserat på en SQL Server-autentiseringsinloggning (skapades i föregående steg.)

För att skapa användare, anslut till databasen och köra instruktioner som liknar följande exempel:

CREATE USER Mary FROM LOGIN Mary;
CREATE USER [mike@contoso.com] FROM EXTERNAL PROVIDER;

Initialt kan endast en av administratörerna eller ägaren av databasen skapa användare. För att auktorisera ytterligare användare som ska kunna skapa nya användare: Ge den valda användaren ALTER ANY USER-behörighet genom att använda en instruktion som:

GRANT ALTER ANY USER TO Mary;

Om du vill ge ytterligare användare fullständig kontroll över databasen gör du dem till medlemmar i den db_owner fasta databasrollen.

Använd instruktionen ALTER ROLE i Azure SQL Database eller synapse serverless.

ALTER ROLE db_owner ADD MEMBER Mary;

Använd EXEC-sp_addrolemember i en dedikerad SQL-pool.

EXEC sp_addrolemember 'db_owner', 'Mary';

Kommentar

En vanlig orsak till att skapa en databasanvändare baserat på en serverinloggning är för användare som behöver åtkomst till flera databaser. Eftersom oberoende databasanvändare är enskilda entiteter behåller varje databas sin egen användare och sitt eget lösenord. Detta kan orsaka kostnader eftersom användaren sedan måste komma ihåg varje lösenord för varje databas, och det kan bli ohållbart när du måste ändra flera lösenord för många databaser.

Grupper och roller

Effektiv åtkomsthantering använder behörigheter tilldelade grupper och roller i stället för enskilda användare.

  • När du använder Microsoft Entra-autentisering placerar du Microsoft Entra-användare i en Microsoft Entra-grupp. Skapa en oberoende databasanvändare för gruppen. Placera en eller flera användare i en databasrollen och tilldela sedan behörigheter till databasrollen.

  • När du använder SQL Server-autentisering kan du skapa inneslutna databasanvändare i databasen. Placera en eller flera användare i en databasrollen och tilldela sedan behörigheter till databasrollen.

Databasrollerna kan vara de inbyggda rollerna, som db_owner, db_ddladmin, db_datawriter, db_datareader, db_denydatawriter och db_denydatareader. db_owner används ofta för att endast ge fullständig behörighet till några användare. De andra fasta databasrollerna är användbara för att snabbt få en enkel databas i utveckling, men de rekommenderas inte för de flesta produktionsdatabaserna.

Till exempel ger den fasta databasrollen db_datareader läsbehörighet till alla tabeller i databasen, vilket vanligtvis är mer än är absolut nödvändigt.

Det är mycket bättre att använda CREATE ROLE-instruktionen för att skapa egna användardefinierade databasroller och noggrant ge varje roll de minsta behörigheter som krävs för företagets behov. När en användare är medlem i flera roller sammanställs behörigheterna för alla.

Behörigheter

Det finns över 100 behörigheter som individuellt kan beviljas eller nekas i SQL Database. Många av de här behörigheterna är kapslade. Till exempel inkluderar UPDATE-behörighet på ett schema UPDATE-behörighet för alla tabeller i schemat. Som i de flesta andra behörighetssystem åsidosätter ett nekande av en behörighet en beviljad.

På grund av den kapslade karaktären och antalet behörigheter kan det krävas noggranna studier för att designa ett behörighetssystem som korrekt skyddar databasen.

Börja med listan över behörigheter på Behörigheter (databasmotor) och granska grafiken för affischstorlek för databasmotorbehörigheter.

Överväganden och begränsningar

Tänk på följande när du hanterar inloggningar och användare i SQL Database:

  • Du måste vara ansluten till master databasen när du CREATE/ALTER/DROP DATABASE kör -instruktionerna.
  • Databasanvändaren som motsvarar serveradministratörens inloggning kan inte ändras eller tas bort.
  • Serveradministratören inaktiveras om Endast Microsoft Entra-autentisering är aktiverat.
  • Amerikansk engelska är standardspråket för inloggningen Serveradministratör.
  • Endast administratörerna (serveradministratörsinloggning eller Microsoft Entra-administratör) och medlemmarna i databasrollen master dbmanager i databasen har behörighet att köra instruktionen CREATE DATABASE och DROP DATABASE .
  • Du måste vara ansluten till master databasen när du CREATE/ALTER/DROP LOGIN kör -instruktionerna. Det rekommenderas dock inte att använda inloggningar. Använd i stället oberoende databasanvändare. Mer information finns i Användare av oberoende databas – göra databasen portabel.
  • Du måste ange namnet på databasen i anslutningssträngen för att ansluta till en användardatabas.
  • Endast huvudinloggningen på servernivå och medlemmarna i databasrollen master loginmanager i databasen har behörighet att köra - ALTER LOGINoch DROP LOGIN -uttryckenCREATE LOGIN.
  • När du kör CREATE/ALTER/DROP LOGIN - och-instruktionerna CREATE/ALTER/DROP DATABASE i ett ADO.NET-program tillåts inte att använda parametriserade kommandon. Mer information finns i Kommandon och parametrar.
  • När du kör uttryck CREATE USER med alternativ FOR/FROM LOGIN, måste det vara det enda uttrycket i en Transact-SQL-batch.
  • När du kör uttryck ALTER USER med alternativ WITH LOGIN, måste det vara det enda uttrycket i en Transact-SQL-batch.
  • CREATE/ALTER/DROP LOGIN och CREATE/ALTER/DROP USER -instruktioner stöds inte när Endast Microsoft Entra-autentisering är aktiverat för Azure Synapse-arbetsytan.
  • För CREATE/ALTER/DROP behöver en användare behörighet ALTER ANY USER på databasen.
  • När ägaren till en databasroll försöker lägga till eller ta bort en annan databasanvändare till eller från den databasrollen kan följande fel inträffa: Användaren eller rollen "Namn" finns inte i den här databasen. Det här felet beror på att användaren inte är synlig för ägaren. Ge rollägare behörighet VIEW DEFINITION på användaren för att lösa problemet.

Nästa steg

Mer information finns i Användare av oberoende databas – göra databasen portabel.