Share via


SQL-verificatie in Azure Synapse Analytics

Azure Synapse Analytics heeft twee SQL-formulierfactoren waarmee u het gebruik van resources kunt beheren. In dit artikel wordt uitgelegd hoe gebruikersverificatie wordt beheerd met de twee formulierfactoren.

Om Synapse SQL te beheren, kunt u gebruikmaken van twee verificatietypen:

  • Microsoft Entra-autorisatie
  • SQL-verificatie

Met SQL-autorisatie kunnen verouderde toepassingen op een vertrouwde manier verbinding maken met Azure Synapse SQL. Met Microsoft Entra-verificatie kunt u echter de toegang tot Azure Synapse-resources, zoals SQL-pools, centraal beheren. Azure Synapse Analytics biedt ondersteuning voor het uitschakelen van lokale verificatie, zoals SQL-verificatie, zowel tijdens als na het maken van de werkruimte. Zodra deze optie is uitgeschakeld, kan lokale verificatie op elk gewenst moment worden ingeschakeld door geautoriseerde gebruikers. Zie Lokale verificatie uitschakelen in Azure Synapse Analytics voor meer informatie over alleen-Entra-verificatie.

Beheerdersaccounts

Er zijn twee beheerdersaccounts (GEBRUIKERSNAAM van SQL-beheerder en SQL Active Directory-beheerder) die fungeren als beheerders. Als u deze beheerdersaccounts voor uw SQL-pools wilt identificeren, opent u Azure Portal en gaat u naar het tabblad Eigenschappen van uw Synapse-werkruimte.

SQL Server Admins

  • Gebruikersnaam van SQL-beheerder

    Wanneer u een Azure Synapse Analytics maakt, moet u de aanmeldgegevens van de serverbeheerder opgeven. SQL Server maakt dat account als aanmelding in de master database. Dit account maakt verbinding met behulp van SQL Server-verificatie (gebruikersnaam en wachtwoord). Er kan slechts één van deze accounts bestaan.

  • SQL Active Directory-beheerder

    Eén Microsoft Entra-account, een afzonderlijk account of een beveiligingsgroepsaccount, kan ook worden geconfigureerd als beheerder. Het is optioneel om een Microsoft Entra-beheerder te configureren, maar een Microsoft Entra-beheerder moet worden geconfigureerd als u Microsoft Entra-accounts wilt gebruiken om verbinding te maken met Synapse SQL.

    • Het Microsoft Entra-beheerdersaccount beheert de toegang tot toegewezen SQL-pools, terwijl Synapse RBAC-rollen kunnen worden gebruikt om de toegang tot serverloze pools te beheren, bijvoorbeeld met de synapse-Beheer istrator- en Synapse SQL-Beheer istratorrol.

De gebruikersnaam van de SQL-beheerder en sql Active Directory-beheerdersaccounts hebben de volgende kenmerken:

  • Dit zijn de enige accounts die automatisch verbinding kunnen maken met elke SQL-database op de server. (Andere accounts die verbinding willen maken met een gebruikersdatabase, moeten eigenaar van de database zijn of een gebruikersaccount in de database hebben.)
  • Deze accounts worden in gebruikersdatabases beschouwd als de dbo-gebruiker en beschikken over alle machtigingen. (De eigenaar van een gebruikersdatabase wordt in de database ook als dbo-gebruiker beschouwd.)
  • Voer de master database niet in als de dbo gebruiker en heb beperkte machtigingen in de master database.
  • Deze accounts zijn geen lid van de vaste standaardserverrol sysadmin van SQL Server, die niet beschikbaar is in SQL Database.
  • Kan databases, aanmeldingen, gebruikers in de master database en IP-firewallregels op serverniveau maken, wijzigen en verwijderen.
  • Deze accounts kunnen leden aan de rollen dbmanager en loginmanager toevoegen en verwijderen.
  • Deze accounts kunnen de sys.sql_logins-systeemtabel weergeven.

Notitie

Als een gebruiker is geconfigureerd als een Active Directory-beheerder en Synapse-Beheer istrator en vervolgens is verwijderd uit de Active Directory-beheerdersrol, heeft de gebruiker geen toegang meer tot de toegewezen SQL-pools in Synapse. Ze moeten worden verwijderd en vervolgens worden toegevoegd aan de synapse-Beheer istratorrol om weer toegang te krijgen tot toegewezen SQL-pools.

U kunt de volgende instructies gebruiken om de gebruikers te beheren die toegang hebben tot serverloze SQL-pools.

Als u een aanmelding voor een serverloze SQL-pool wilt maken, gebruikt u de volgende syntaxis:

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

Wanneer de aanmelding bestaat, kunt u gebruikers maken in de afzonderlijke databases binnen het eindpunt van de serverloze SQL-pool en de vereiste machtigingen verlenen aan deze gebruikers. Als u een gebruiker wilt maken, kunt u de volgende syntaxis gebruiken:

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

Zodra de aanmelding en de gebruiker zijn gemaakt, kunt u de reguliere syntaxis voor SQL Server gebruiken om rechten te verlenen.

Niet-beheerders

Over het algemeen hebben niet-beheerdersaccounts geen toegang nodig tot de master database. Maak ingesloten databasegebruikers op databaseniveau met de instructie CREATE USER (Transact-SQL).

De gebruiker kan een ingesloten databasegebruiker van Microsoft Entra-verificatie zijn (als u uw omgeving hebt geconfigureerd voor Microsoft Entra-verificatie), of een ingesloten databasegebruiker voor SQL Server-verificatie, of een gebruiker met SQL Server-verificatie op basis van een SQL Server-verificatieaanmelding (gemaakt in de vorige stap.)

Als u gebruikers wilt maken, maakt u verbinding met de database en voert u de instructies uit die in de volgende voorbeelden worden getoond:

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

In eerste instantie kan slechts een van de beheerders of de eigenaar van de database gebruikers maken. Om extra gebruikers te machtigen voor het maken van nieuwe gebruikers, verleent u de geselecteerde gebruikers de ALTER ANY USER-toestemming met behulp van een instructie zoals:

GRANT ALTER ANY USER TO Mary;

Om extra gebruikers volledig beheer van de database te geven, moet u ze lid maken van de vaste databaserol db_owner.

Gebruik in Azure SQL Database of Synapse zonder server de instructie ALTER ROLE.

ALTER ROLE db_owner ADD MEMBER Mary;

Gebruik EXEC sp_addrolemember in de toegewezen SQL-pool.

EXEC sp_addrolemember 'db_owner', 'Mary';

Notitie

Een veelvoorkomende reden voor het maken van een databasegebruiker op basis van een serveraanmelding is voor gebruikers die toegang nodig hebben tot meerdere databases. Aangezien ingesloten databasegebruikers individuele entiteiten zijn, heeft elke database zijn eigen gebruiker en eigen wachtwoord. Dit kan overhead veroorzaken, omdat de gebruiker zijn eigen wachtwoord voor elke database moet onthouden en dit erg ingewikkeld kan zijn als ze meerdere wachtwoorden in vele databases moeten wijzigen.

Groepen en rollen

Voor efficiënt toegangsbeheer gebruikt u machtigingen die zijn toegewezen aan groepen en rollen in plaats van aan individuele gebruikers.

  • Wanneer u Microsoft Entra-verificatie gebruikt, plaatst u Microsoft Entra-gebruikers in een Microsoft Entra-groep. Maak voor de groep een ingesloten databasegebruiker. Plaats een of meer databasegebruikers in een databaserol en wijs vervolgens machtigingen toe aan de databaserol.

  • Als u SQL Server-verificatie gebruikt, maakt u gebruikers van ingesloten databases in de database. Plaats een of meer databasegebruikers in een databaserol en wijs vervolgens machtigingen toe aan de databaserol.

Bij de databaserollen kan het gaan om de ingebouwde rollen als db_owner, db_ddladmin, db_datawriter, db_datareader, db_denydatawriter en db_denydatareader. db_owner wordt doorgaans gebruikt voor het verlenen van volledige machtigingen aan slechts enkele gebruikers. De andere vaste databaserollen zijn handig voor het snel verkrijgen van een eenvoudige database voor ontwikkeldoeleinden, maar worden niet aanbevolen voor de meeste productiedatabases.

De vaste databaserol db_datareader verleent bijvoorbeeld leestoegang tot alle tabellen in de database, wat doorgaans meer is dan strikt noodzakelijk.

Het is veel beter de instructie CREATE ROLE te gebruiken om uw eigen gebruikergedefinieerde databaserollen te maken en zorgvuldig elke rol de minimale machtigingen te verlenen die nodig zijn voor de gerelateerde zakelijke behoeften. Als een gebruiker lid is van meerdere rollen, worden de machtigingen van alle rollen samengevoegd.

Bevoegdheden

Er zijn meer dan 100 machtigingen die afzonderlijk kunnen worden verleend of geweigerd in SQL Database. Veel van deze machtigingen zijn genest. De machtiging UPDATE voor een schema bevat bijvoorbeeld de machtiging UPDATE voor elke tabel binnen dat schema. Net als bij de meeste machtigingssystemen gaat de weigering van een machtiging vóór toestemming.

Vanwege de geneste aard en het aantal machtigingen kan een nauwkeurig onderzoek nodig zijn om een geschikt machtigingssysteem te ontwerpen voor een goede bescherming van uw database.

Begin met de lijst met machtigingen bij Machtigingen (Database Engine) en bekijk de postergrootteafbeelding van machtigingen voor de database-engine.

Overwegingen en beperkingen

Bij het beheren van aanmeldingen en gebruikers in SQL Database, moet u de volgende zaken overwegen:

  • U moet zijn verbonden met de master database bij het uitvoeren van de CREATE/ALTER/DROP DATABASE instructies.
  • De databasegebruiker die overeenkomt met de aanmelding van de Serverbeheerder, kan niet worden gewijzigd of verwijderd.
  • Serverbeheerder wordt uitgeschakeld als Microsoft Entra-verificatie is ingeschakeld.
  • Amerikaans Engels is de standaardtaal van de aanmelding van de serverbeheerder.
  • Alleen de beheerders (aanmeldgegevens van de serverbeheerder of Microsoft Entra-beheerder) en de leden van de databaserol dbmanager in de master database zijn gemachtigd om de CREATE DATABASE en DROP DATABASE instructies uit te voeren.
  • U moet zijn verbonden met de master database bij het uitvoeren van de CREATE/ALTER/DROP LOGIN instructies. Het gebruik van aanmeldingen wordt echter afgeraden. Gebruik in plaats daarvan ingesloten databasegebruikers. Zie Ingesloten databasegebruikers: een draagbare database maken voor meer informatie.
  • Om verbinding te maken met een gebruikersdatabase, moet u de naam van de database in de verbindingsreeks opgeven.
  • Alleen de principalaanmelding op serverniveau en de leden van de loginmanager-databaserol in de master database zijn gemachtigd om de CREATE LOGIN, ALTER LOGINen DROP LOGIN instructies uit te voeren.
  • Bij het uitvoeren van de CREATE/ALTER/DROP LOGIN- en CREATE/ALTER/DROP DATABASE-instructies in een ADO.NET-toepassing is het gebruik van geparametriseerde opdrachten is niet toegestaan. Zie Opdrachten en parameters voor meer informatie.
  • Bij het uitvoeren van de CREATE USER-instructie met de optie FOR/FROM LOGIN moet deze de enige instructie in een Transact-SQL-batch zijn.
  • Bij het uitvoeren van de ALTER USER-instructie met de optie WITH LOGIN moet deze de enige instructie in een Transact-SQL-batch zijn.
  • CREATE/ALTER/DROP LOGIN en CREATE/ALTER/DROP USER instructies worden niet ondersteund wanneer Microsoft Entra-verificatie is ingeschakeld voor de Azure Synapse-werkruimte.
  • Voor CREATE/ALTER/DROP heeft een gebruiker de ALTER ANY USER-machtiging voor de database nodig.
  • Wanneer de eigenaar van een databaserol probeert een andere databasegebruiker toe te voegen aan of te verwijderen uit die databaserol, kan de volgende fout optreden: De gebruiker of rol 'Naam' bestaat niet in deze database. Deze fout treedt op omdat de gebruiker niet zichtbaar is voor de eigenaar. Om dit probleem op te lossen, verleent u de roleigenaar de VIEW DEFINITION-machtiging voor de gebruiker.

Volgende stappen

Zie Ingesloten databasegebruikers: een draagbare database maken voor meer informatie.