SQL-Authentifizierung in Azure Synapse Analytics
Azure Synapse Analytics beinhaltet zwei SQL-Formfaktoren, mit denen Sie den Ressourcenverbrauch steuern können. In diesem Artikel wird erläutert, wie die Benutzerauthentifizierung mit den beiden Formfaktoren gesteuert wird.
Für die Autorisierung bei Synapse SQL können Sie zwei Autorisierungstypen verwenden:
- Microsoft Entra ID-Autorisierung
- SQL-Autorisierung
Die SQL-Autorisierung ermöglicht Legacy-Anwendungen, auf vertraute Weise eine Verbindung mit Azure Synapse SQL herzustellen. Microsoft Entra-Authentifizierung gestattet es Ihnen jedoch, den Zugriff auf die Azure Synapse-Ressourcen, wie z. B. SQL-Pools, zentral zu verwalten. Azure Synapse Analytics unterstützt das Deaktivieren der lokalen Authentifizierung, z. B. SQL-Authentifizierung, sowohl während als auch nach der Erstellung des Arbeitsbereichs. Nach der Deaktivierung kann die lokale Authentifizierung von autorisierten Benutzern jederzeit aktiviert werden. Weitere Informationen zur ausschließlichen Microsoft Entra-Authentifizierung finden Sie unter Deaktivieren der lokalen Authentifizierung in Azure Synapse Analytics.
Verwaltungskonten
Es gibt zwei Administratorkonten (SQL-Administratorbenutzername und SQL Active Directory-Administrator), die als Administratoren fungieren. Öffnen Sie das Azure-Portal, und navigieren Sie zur Registerkarte „Eigenschaften“ Ihres Synapse-Arbeitsbereichs, um diese Administratorkonten für Ihre SQL-Pools zu identifizieren.
SQL-Administratorbenutzername
Wenn Sie eine Azure Synapse Analytics-Instanz erstellen, müssen Sie eine Serveradministratoranmeldung benennen. Der SQL-Server erstellt dieses Konto als Anmeldung in der
master
-Datenbank. Dieses Konto stellt die Verbindung per SQL Server-Authentifizierung (Benutzername und Kennwort) her. Nur eines dieser Konten kann vorhanden sein.SQL Active Directory-Administrator
Ein Microsoft Entra-Konto – entweder für eine Einzelperson oder eine Sicherheitsgruppe – kann auch als Administrator*in konfiguriert werden. Die Konfiguration von Microsoft Entra-Administrator*innen ist optional. Microsoft Entra-Administrator*innen müssen aber konfiguriert werden, wenn Sie Microsoft Entra-Konten zum Herstellen einer Verbindung mit Synapse SQL verwenden möchten.
- Das Microsoft Entra-Administratorkonto steuert den Zugriff auf dedizierte SQL-Pools, während Synapse-RBAC-Rollen (z. B. die Rolle Synapse-Administrator und Synapse SQL-Administrator) verwendet werden können, um den Zugriff auf serverlose Pools zu steuern.
Die Konten SQL-Administratorbenutzername und SQL Active Directory-Administrator haben die folgenden Merkmale:
- Sie sind die einzigen Konten, mit denen automatisch eine Verbindung mit einer beliebigen SQL-Datenbank auf dem Server hergestellt werden kann. (Zum Herstellen einer Verbindung mit einer Benutzerdatenbank müssen andere Konten entweder der Besitzer der Datenbank sein oder in der Benutzerdatenbank über ein Benutzerkonto verfügen.)
- Für diese Konten wird auf Benutzerdatenbanken mit dem Benutzer
dbo
zugegriffen, und alle Berechtigungen sind in den Benutzerdatenbanken enthalten. (Der Besitzer einer Benutzerdatenbank greift auf die Datenbank ebenfalls als Benutzerdbo
zu.) - Greifen Sie nicht als
dbo
-Benutzer auf diemaster
-Datenbank zu, und sorgen Sie dafür, dass Sie eingeschränkte Berechtigungen in dermaster
-Datenbank besitzen. - Diese Konten sind keine Mitglieder der festen Standardserverrolle
sysadmin
von SQL Server, die in SQL-Datenbank nicht verfügbar ist. - Diese Konten können Datenbanken, Anmeldungen, Benutzer in der
master
-Datenbank sowie IP-Firewallregeln auf Serverebene erstellen, ändern und trennen. - Sie können Mitglieder für die Rollen
dbmanager
undloginmanager
hinzufügen und entfernen. - Sie können die
sys.sql_logins
-Systemtabelle anzeigen.
Hinweis
Wenn ein Benutzer als Active Directory-Administrator und Synapse-Administrator konfiguriert ist und dann die Active Directory-Administratorrolle entfernt wird, verliert der Benutzer den Zugriff auf die dedizierten SQL-Pools in Synapse. Er muss entfernt und dann der Rolle „Synapse-Administrator“ hinzugefügt werden, um den Zugriff auf dedizierte SQL-Pools wieder zu erhalten.
Zum Verwalten der Benutzer, die Zugriff auf den serverlosen SQL-Pool haben, können Sie die nachfolgenden Anweisungen ausführen.
Verwenden Sie die folgende Syntax, um eine Anmeldung für den serverlosen SQL-Pool zu erstellen:
CREATE LOGIN Mary WITH PASSWORD = '<strong_password>';
-- or
CREATE LOGIN [Mary@domainname.net] FROM EXTERNAL PROVIDER;
Wenn die Anmeldung vorhanden ist, können Sie Benutzer in den einzelnen Datenbanken im Endpunkt für den serverlosen SQL-Pool erstellen und diesen Benutzern die erforderlichen Berechtigungen erteilen. Zum Erstellen von Benutzer*innen verwenden Sie die folgende 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;
Nachdem Sie die Anmeldung und den Benutzer erstellt haben, können Sie mit der regulären SQL Server-Syntax Rechte erteilen.
Benutzer ohne Administratorrechte
Üblicherweise benötigen Konten ohne Administratorrechte keinen Zugriff auf die master
-Datenbank. Erstellen Sie eigenständige Datenbankbenutzer auf Datenbankebene, indem Sie die CREATE USER -Anweisung (Transact-SQL) verwenden.
Der Benutzer oder die Benutzerin kann ein*e eigenständige*r Datenbankbenutzer*in mit Microsoft Entra-Authentifizierung (bei Konfiguration Ihrer Umgebung für die Microsoft Entra-Authentifizierung), ein*e eigenständige*r Datenbankbenutzer*in mit SQL Server-Authentifizierung oder ein*e Benutzer*in mit SQL Server-Authentifizierung basierend auf einer SQL Server-Authentifizierungsanmeldung (im vorherigen Schritt erstellt) sein.
Stellen Sie zum Erstellen von Benutzern eine Verbindung mit der Datenbank her, und führen Sie ähnliche Anweisungen wie die folgenden aus:
CREATE USER Mary FROM LOGIN Mary;
CREATE USER [mike@contoso.com] FROM EXTERNAL PROVIDER;
Zu Beginn kann nur einer der Administratoren oder der Besitzer der Datenbank Benutzer erstellen. Um für weitere Benutzer die Erstellung neuer Benutzer zu genehmigen, gewähren Sie einem ausgewählten Benutzer die Berechtigung ALTER ANY USER
, indem Sie eine Anweisung wie diese verwenden:
GRANT ALTER ANY USER TO Mary;
Um weiteren Benutzern die vollständige Steuerung der Datenbank zu ermöglichen, machen Sie sie zu einem Mitglied der festen Datenbankrolle db_owner.
Verwenden Sie in Azure SQL-Datenbank oder Synapse (serverlos) die Anweisung ALTER ROLE
.
ALTER ROLE db_owner ADD MEMBER Mary;
Verwenden Sie für einen dedizierten SQL-Pool EXEC sp_addrolemember.
EXEC sp_addrolemember 'db_owner', 'Mary';
Hinweis
Die Erstellung von Datenbankbenutzern auf der Grundlage einer Anmeldung bei einem Server wird unter anderem für Benutzer verwendet, die Zugriff auf mehrere Datenbanken benötigen. Da eigenständige Datenbankbenutzer individuelle Entitäten sind, werden für jede Datenbank ein eigener Benutzer und ein eigenes Kennwort vorgehalten. Diese Vorgehensweise kann erheblichen Mehraufwand verursachen, da sich Benutzer die Kennwörter für alle Datenbanken merken müssen, und nicht mehr praktikabel sein, wenn mehrere Kennwörter für zahlreiche Datenbanken geändert werden müssen.
Gruppen und Rollen
Bei der effizienten Zugriffsverwaltung werden Berechtigungen verwendet, die Gruppen und Rollen zugewiesen sind, anstatt einzelnen Benutzern.
Wenn Sie die Microsoft Entra-Authentifizierung verwenden, fügen Sie Microsoft Entra-Benutzer*innen einer Microsoft Entra-Gruppe hinzu. Erstellen Sie einen eigenständigen Datenbankbenutzer für die Gruppe. Ordnen Sie einen oder mehrere Datenbankbenutzer in einer Datenbankrolle an, und weisen Sie der Datenbankrolle dann Berechtigungen zu.
Erstellen Sie bei Verwendung der SQL Server-Authentifizierung in der Datenbank eigenständige Datenbankbenutzer. Ordnen Sie einen oder mehrere Datenbankbenutzer in einer Datenbankrolle an, und weisen Sie der Datenbankrolle dann Berechtigungen zu.
Bei den Datenbankrollen kann es sich um integrierte Rollen handeln, z.B. db_owner, db_ddladmin, db_datawriter, db_datareader, db_denydatawriter und db_denydatareader. db_owner wird häufig verwendet, um nur einigen Benutzern uneingeschränkte Berechtigungen zu erteilen. Die anderen festen Datenbankrollen sind hilfreich, um bei der Entwicklung schnell eine einfache Datenbank zu erhalten, aber sie sind auch für die meisten Produktionsdatenbanken zu empfehlen.
Die feste Datenbankrolle db_datareader gewährt beispielsweise Lesezugriff auf jede Tabelle der Datenbank. Dies ist im Normalfall nicht unbedingt erforderlich.
Es ist viel besser, die Anweisung CREATE ROLE zum Erstellen Ihrer eigenen benutzerdefinierten Datenbankrollen zu verwenden und jeder Rolle sorgfältig nur die Berechtigungen zu gewähren, die für die jeweilige Aufgabe benötigt werden. Wenn ein Benutzer Mitglied mehrerer Rollen ist, verfügt er über die zusammengefassten Berechtigungen all dieser Rollen.
Berechtigungen
Es gibt mehr als 100 Berechtigungen, die in SQL-Datenbank individuell gewährt oder verweigert werden können. Viele dieser Berechtigungen sind geschachtelt. Die UPDATE
-Berechtigung für ein Schema enthält beispielsweise für jede Tabelle des Schemas die UPDATE
-Berechtigung. Wie bei den meisten Berechtigungssystemen wird eine Gewährung durch die Verweigerung einer Berechtigung außer Kraft gesetzt.
Aufgrund der Schachtelung und der Anzahl von Berechtigungen muss ein geeignetes Berechtigungssystem sorgfältig entworfen werden, um für Ihre Datenbank den richtigen Schutz sicherzustellen.
Beginnen Sie mit der Liste der Berechtigungen unter Berechtigungen (Datenbank-Engine), und sehen Sie sich die Grafik der Datenbank-Engine-Berechtigungen in Postergröße an.
Überlegungen und Einschränkungen
Beachten Sie beim Verwalten von Anmeldungen und Benutzern in SQL-Datenbank die folgenden Punkte:
- Sie müssen über eine Verbindung mit der Datenbank
master
verfügen, wenn Sie dieCREATE/ALTER/DROP DATABASE
-Anweisungen ausführen. - Der Datenbankbenutzer, der der Anmeldung Serveradministrator entspricht, kann weder geändert noch verworfen werden.
- Serveradministrator*innen werden deaktiviert, wenn die ausschließliche Microsoft Entra-Authentifizierung aktiviert ist.
- „Englisch (USA)“ ist die Standardsprache des Anmeldungstyps Serveradministrator.
- Nur die Administrator*innen (Serveradministratoranmeldung oder Microsoft Entra-Administrator*in) und die Mitglieder der Datenbankrolle dbmanager in der
master
-Datenbank verfügen über die Berechtigung zum Ausführen der AnweisungenCREATE DATABASE
undDROP DATABASE
. - Sie müssen mit der
master
-Datenbank verbunden sein, wenn Sie dieCREATE/ALTER/DROP LOGIN
-Anweisungen ausführen. Von der Verwendung von Anmeldungen wird jedoch abgeraten. Verwenden Sie stattdessen Benutzer von eigenständigen Datenbanken. Weitere Informationen finden Sie unter Eigenständige Datenbankbenutzer – machen Sie Ihre Datenbank portabel. - Sie müssen den Namen der Datenbank in der Verbindungszeichenfolge angeben, um eine Verbindung mit einer Benutzerdatenbank herzustellen.
- Nur die Prinzipalanmeldung auf Serverebene und die Mitglieder der Datenbankrolle loginmanager in der
master
-Datenbank verfügen über die Berechtigung zum Ausführen der AnweisungenCREATE LOGIN
,ALTER LOGIN
undDROP LOGIN
. - Beim Ausführen der Anweisungen
CREATE/ALTER/DROP LOGIN
undCREATE/ALTER/DROP DATABASE
in einer ADO.NET-Anwendung ist die Verwendung von parametrisierten Befehlen nicht zulässig. Weitere Informationen finden Sie unter Befehle und Parameter. - Beim Ausführen der Anweisung
CREATE USER
mit der OptionFOR/FROM LOGIN
muss sie die einzige Anweisung in einem Transact-SQL-Batch sein. - Beim Ausführen der Anweisung
ALTER USER
mit der OptionWITH LOGIN
muss sie die einzige Anweisung in einem Transact-SQL-Batch sein. CREATE/ALTER/DROP LOGIN
- undCREATE/ALTER/DROP USER
-Anweisungen werden nicht unterstützt, wenn die ausschließliche Microsoft Entra-Authentifizierung für den Azure Synapse-Arbeitsbereich aktiviert ist.- Für
CREATE/ALTER/DROP
benötigt ein Benutzer die BerechtigungALTER ANY USER
für die Datenbank. - Wenn der Besitzer einer Datenbankrolle versucht, dieser Datenbankrolle andere Datenbankbenutzer*innen hinzuzufügen oder daraus zu entfernen, tritt ggf. ein Fehler der folgenden Art auf: Benutzer oder Rolle „Name“ ist in dieser Datenbank nicht vorhanden. Dieser Fehler tritt auf, da die Benutzer*innen für den Besitzer nicht sichtbar sind. Gewähren Sie dem Rollenbesitzer die Berechtigung
VIEW DEFINITION
für den Benutzer, um dieses Problem zu beheben.
Nächste Schritte
Weitere Informationen finden Sie unter Eigenständige Datenbankbenutzer - machen Sie Ihre Datenbank portabel.