Einrichten der Zugriffssteuerung für Ihren Azure Synapse-Arbeitsbereich

In diesem Artikel erfahren Sie, wie Sie den Zugriff auf einen Microsoft Azure Synapse-Arbeitsbereich kontrollieren können. Wir verwenden eine Kombination aus Azure-Rollen, Azure-Synapse-Rollen, SQL-Berechtigungen und Git-Berechtigungen, um dies zu erreichen.

In dieser Anleitung richten Sie einen Arbeitsbereich ein und konfigurieren ein grundlegendes Zugriffssteuerungssystem. Sie können diese Informationen in vielen Arten von Synapse-Projekten verwenden. Außerdem finden Sie erweiterte Optionen für eine feinere Steuerung, falls Sie diese benötigen.

Die Synapse-Zugriffssteuerung lässt sich vereinfachen, indem Sie die Rollen und Personas in Ihrer Organisation mit Sicherheitsgruppen abgleichen. So können Sie den Zugriff auf Sicherheitsgruppen verwalten, indem Sie einfach Benutzer hinzufügen und entfernen.

Bevor Sie mit dieser exemplarischen Vorgehensweise beginnen, lesen Sie die Übersicht über die Zugriffskontrolle für Azure Synapse-Arbeitsbereiche, um sich mit den von Synapse Analytics verwendeten Zugriffskontrollmechanismen vertraut zu machen.

Zugriffssteuerungsmechanismen

Hinweis

Der Ansatz in diesem Leitfaden ist, Sicherheitsgruppen zu erstellen. Wenn Sie diesen Sicherheitsgruppen Rollen zuweisen, müssen Sie nur die Mitgliedschaften innerhalb dieser Gruppen verwalten, um den Zugriff auf Arbeitsbereiche zu kontrollieren.

Um einen Synapse-Arbeitsbereich zu sichern, müssen Sie die folgenden Elemente konfigurieren:

  • Sicherheitsgruppen, um Benutzer mit ähnlichen Zugriffsanforderungen zusammenzufassen
  • Azure-Rollen, um zu steuern, wer SQL-Pools, Apache Spark-Pools und Integration Runtimes erstellen und verwalten kann und wer Zugriff auf ADLS Gen2-Speicher hat
  • Synapse-Rollen, um den Zugriff auf veröffentlichte Codeartefakte und die Verwendung von Apache Spark-Compute-Ressourcen und Integration Runtimes zu steuern
  • SQL-Berechtigungen, um den Zugriff auf Verwaltungs- und Datenebene auf SQL-Pools zu steuern
  • Git-Berechtigungen, um den Zugriff auf Codeartefakte in der Quellcodeverwaltung zu steuern, wenn Sie Git-Unterstützung für Arbeitsbereiche konfigurieren

Schritte zur Sicherung eines Synapse-Arbeitsbereichs

In diesem Dokument werden Standardnamen verwendet, um Anweisungen zu vereinfachen. Ersetzen Sie sie durch Namen Ihrer Wahl.

Einstellung Standardname Description
Synapse-Arbeitsbereich workspace1 Der Name, den der Azure Synapse-Arbeitsbereich erhält.
ADLSGEN2-Konto storage1 Das ADLS-Konto, das mit Ihrem Arbeitsbereich verwendet werden soll.
Container container1 Der Container in storage1, den der Arbeitsbereich standardmäßig verwenden wird.
Microsoft Entra ID-Mandant contoso Der Name des Microsoft Entra ID-Mandanten.
Dienstprinzipal SERVICEPRINCIPAL Ein Dienstprinzipal in Ihrem Microsoft Entra ID-Mandanten.

Schritt 1: Einrichten von Sicherheitsgruppen

Tipp

Verwenden Sie detaillierte Optionen, um den Zugriff auf Ihren Arbeitsbereich zu steuern. Erlauben Sie Entwicklern Zugang zu einzelnen Ressourcen statt zu einem kompletten Arbeitsbereich. Weitere Informationen zu Synapse RBAC finden Sie unter Was ist rollenbasierte Zugriffskontrolle in Synapse (RBAC)?

Erstellen Sie die folgenden Sicherheitsgruppen für Ihren Arbeitsbereich:

  • workspace1_SynapseAdministrators für Benutzer, die vollständige Kontrolle über den Arbeitsbereich benötigen Fügen Sie sich selbst dieser Sicherheitsgruppe hinzu (zumindest anfänglich).
  • workspace1_SynapseContributors für Entwickler, die Code für den Dienst entwickeln, debuggen und veröffentlichen müssen.
  • workspace1_SynapseComputeOperators für Benutzer, die Apache Spark-Pools und Integration Runtimes verwalten und überwachen müssen
  • workspace1_SynapseCredentialUsers für Benutzer, die Orchestrierungspipelines mithilfe der Anmeldeinformationen der Arbeitsbereichs-MSI (Managed Service Identity, verwaltete Dienstidentität) debuggen und ausführen und Pipelineausführungen abbrechen müssen.

Sie weisen diesen Gruppen in Kürze Synapse-Rollen auf Arbeitsbereichsebene zu.

Erstellen Sie außerdem diese Sicherheitsgruppe:

  • workspace1_SQLAdmins, Gruppe für Benutzer, die SQL Active Directory-Administratorrechte innerhalb von SQL-Pools im Arbeitsbereich benötigen.

Verwenden Sie die workspace1_SQLAdmins-Gruppe, um SQL-Berechtigungen zu konfigurieren, wenn Sie SQL-Pools erstellen.

Diese fünf Gruppen sind für eine grundlegende Einrichtung ausreichend. Später können Sie Sicherheitsgruppen hinzufügen, um Benutzer zu verwalten, die einen spezielleren Zugriff benötigen, oder den Zugriff auf einzelne Ressourcen zu beschränken.

Hinweis

Tipp

Einzelne Synapse-Benutzer*innen können Microsoft Entra ID im Azure-Portal verwenden, um ihre Gruppenmitgliedschaften anzuzeigen. So können sie feststellen, welche Rollen ihnen zugewiesen wurden.

Schritt 2: Bereiten Sie Ihr ADLS Gen2-Speicherkonto vor

Synapse-Arbeitsbereiche verwenden Standard-Speichercontainer für:

  • Speicherung von zugrunde liegenden Datendateien für Spark-Tabellen
  • Ausführungsprotokolle für Spark-Aufträge
  • Verwaltung der Bibliotheken, die Sie installieren möchten

Ermitteln Sie diese Informationen zu Ihrem Speicher:

  • Das ADLS Gen2-Konto, das für Ihren Arbeitsbereich verwendet werden soll. In diesem Dokument wird es storage1 genannt. storage1 wird als „primäres“ Speicherkonto für Ihren Arbeitsbereich betrachtet.

  • Der Container innerhalb von storage1, der von Ihrem Arbeitsbereich standardmäßig verwendet wird. In diesem Dokument ist dies container1.

  • Wählen Sie die Option Zugriffssteuerung (IAM) aus.

  • Wählen Sie Hinzufügen>Rollenzuweisung hinzufügen aus, um die Seite „Rollenzuweisung hinzufügen“ zu öffnen.

  • Weisen Sie die folgende Rolle zu. Ausführliche Informationen finden Sie unter Zuweisen von Azure-Rollen über das Azure-Portal.

    Einstellung Wert
    Rolle Mitwirkender an Storage-Blobdaten
    Zugriff zuweisen zu SERVICEPRINCIPAL
    Mitglieder workspace1_SynapseAdministrators, workspace1_SynapseContributors und workspace1_SynapseComputeOperators

    Seite zum Hinzufügen von Rollenzuweisungen im Azure-Portal.

Schritt 3: Erstellen und konfigurieren Sie Ihren Synapse-Arbeitsbereich

Erstellen Sie im Azure-Portal einen Synapse-Arbeitsbereich:

  • Wählen Sie Ihr Abonnement aus.

  • Wählen Sie eine Ressourcengruppe aus, für die Sie über die Azure-Rolle Besitzer verfügen, oder erstellen Sie sie.

  • Geben Sie dem Arbeitsbereich den Namen workspace1.

  • Wählen Sie storage1 für das Speicherkonto aus.

  • Wählen Sie container1 für den Container aus, der als „Dateisystem“ verwendet wird.

  • Öffnen Sie workspace1 im Synapse Studio

  • Navigieren Sie in Synapse Studio zu Verwalten>Zugriffssteuerung. Weisen Sie im Arbeitsbereich Synapse-Rollen den Sicherheitsgruppen wie folgt zu:

    • Weisen Sie workspace1_SynapseAdministrators die Rolle Synapse Administrator zu.
    • Weisen Sie die Rolle Synapse Contributorworkspace1_SynapseContributors zu.
    • Weisen Sie workspace1_SynapseComputeOperators die Rolle Operator von Synapse-Computeressourcen zu.

Schritt 4: Gewähren von Zugriff auf den Standardspeichercontainer für die Arbeitsbereichs-MSI

Zur Ausführung von Pipelines und Systemaufgaben benötigt Azure Synapse eine verwaltete Dienstidentität (MSI), um im Arbeitsbereich Zugriff auf container1 über das Standardkonto ADLS Gen2 zu haben. Weitere Informationen finden Sie unter Verwaltete Identitäten für Azure Synapse Analytics.

  • Öffnen Sie das Azure-Portal

  • Ermitteln Sie das Speicherkonto storage1 und dann container1.

  • Wählen Sie die Option Zugriffssteuerung (IAM) aus.

  • Um die Seite Rollenzuweisung hinzufügen zu öffnen, wählen Sie Hinzufügen>Rollenzuweisung hinzufügen aus.

  • Weisen Sie die folgende Rolle zu. Ausführliche Informationen finden Sie unter Zuweisen von Azure-Rollen über das Azure-Portal.

    Einstellung Wert
    Rolle Mitwirkender an Storage-Blobdaten
    Zugriff zuweisen zu MANAGEDIDENTITY
    Mitglieder Name der verwalteten Identität

    Hinweis

    Der Name der verwalteten Identität ist auch der Name des Arbeitsbereichs.

    Seite für Rollenzuweisung im Azure-Portal hinzufügen.

Schritt 5: Erteilen der Azure-Rolle „Mitwirkender“ für den Arbeitsbereich an Synapse-Administrator*innen

Um SQL-Pools, Apache Spark-Pools und Integrationslaufzeiten zu erstellen, benötigen Benutzer mindestens eine Azure Contributor-Rolle für den Arbeitsbereich. Eine Contributor-Rolle ermöglicht es Benutzern auch, Ressourcen zu verwalten, einschließlich Pausieren und Skalieren. Um das Azure-Portal oder Synapse Studio zur Erstellung von SQL-Pools, Apache Spark-Pools und Integrationslaufzeiten zu verwenden, benötigen Sie eine Contributor-Rolle auf der Ebene der Ressourcengruppe.

  • Azure-Portal öffnen

  • Suchen Sie den Arbeitsbereich, workspace1

  • Wählen Sie die Option Zugriffssteuerung (IAM) aus.

  • Um die Seite Rollenzuweisung hinzufügen zu öffnen, wählen Sie Hinzufügen>Rollenzuweisung hinzufügen.

  • Weisen Sie die folgende Rolle zu. Ausführliche Informationen finden Sie unter Zuweisen von Azure-Rollen über das Azure-Portal.

    Einstellung Wert
    Rolle Mitwirkende (unter „Privilegierte Administratorrollen“ aufgeführt)
    Zugriff zuweisen zu SERVICEPRINCIPAL
    Mitglieder workspace1_SynapseAdministrators

    Seite „Rollenzuweisung hinzufügen“ im Azure-Portal

Schritt 6: Eine SQL Microsoft Entra ID Admin-Rolle zuweisen

Der Ersteller des Arbeitsbereichs wird automatisch als SQL Active Directory Admin für den Arbeitsbereich zugewiesen. Diese Rolle kann nur einem einzigen Benutzer oder einer einzigen Gruppe gewährt werden. In diesem Schritt weisen Sie der Sicherheitsgruppe workspace1_SQLAdmins die Rolle „SQL Active Directory-Administrator“ für den Arbeitsbereich zu. Dadurch erhält die Gruppe absolute Admin-Zugriffsberechtigung auf alle SQL-Pools und Datenbanken im Arbeitsbereich.

  • Öffnen Sie das Azure-Portal
  • Navigieren Sie zu workspace1.
  • Wählen Sie unter Einstellungen die Option Microsoft Entra ID aus.
  • Wählen Sie Administrator festlegen und dann workspace1_SQLAdmins aus.

Hinweis

Schritt 6 ist optional. Sie können der Gruppe workspace1_SQLAdmins eine weniger privilegierte Rolle gewähren. Wenn Sie db_owner oder andere SQL-Rollen zuweisen möchten, müssen Sie Skripts für jede SQL-Datenbank ausführen.

Schritt 7: Zugriff auf SQL-Pools gewähren

Dem Synapse-Administrator wird standardmäßig auch die SQL-db_owner-Rolle für serverlose SQL-Pools im Arbeitsbereich zugewiesen.

Der Zugriff auf SQL-Pools für andere Benutzer wird durch SQL-Berechtigungen gesteuert. Die Zuweisung von SQL-Berechtigungen erfordert die Ausführung von SQL-Skripts für jede SQL-Datenbank nach der Erstellung. Im Folgenden finden Sie Beispiele, bei denen Sie diese Skripte ausführen müssen:

  1. Um Benutzern Zugriff auf den serverlosen SQL-Pool 'Built-in' und seine Datenbanken zu gewähren.

  2. Um Benutzern Zugriff auf spezielle SQL-Pool-Datenbanken zu gewähren. Beispiel SQL-Skripts sind später in diesem Artikel enthalten.

  3. Um Zugriff auf eine Datenbank im dedizierten SQL-Pool zu gewähren, können Skripts vom Ersteller des Arbeitsbereichs oder von einem beliebigen Mitglied der workspace1_SynapseAdministrators-Gruppe ausgeführt werden.

  4. Zum Gewähren des Zugriffs auf den serverlosen SQL-Pool, „Built-in“, können Skripts von jedem Mitglied der Gruppe workspace1_SQLAdmins oder der Gruppe workspace1_SynapseAdministrators ausgeführt werden.

Tipp

Sie können den Zugriff auf alle SQL-Datenbanken gewähren, indem Sie die folgenden Schritte für jeden SQL-Pool ausführen. Der Abschnitt arbeitsbereichsbezogene Berechtigungen konfigurieren ist eine Ausnahme von der Regel und ermöglicht es Ihnen, einem Benutzer die Rolle des Systemadministrators auf Arbeitsbereichsebene zuzuweisen.

Schritt 7a: Serverless SQL-Pool, integriert

Sie können die Skriptbeispiele in diesem Abschnitt verwenden, um Benutzern die Berechtigung zum Zugriff auf eine einzelne Datenbank oder auf alle Datenbanken im serverlosen SQL-Pool zu erteilen, Built-in.

Hinweis

Ersetzen Sie in den Skriptbeispielen Alias durch den Alias des Benutzers oder der Gruppe, dem/der Zugriff gewährt wird. Ersetzen Sie Domain durch die Unternehmensdomain, die Sie verwenden.

Datenbankbezogene Berechtigungen konfigurieren

Mit den in diesem Beispiel beschriebenen Schritten können Sie Benutzern Zugriff auf eine einzelne serverlose SQL-Datenbank gewähren:

  1. Erstellen Sie einen Anmeldenamen. Wechseln Sie in den master-Datenbankkontext.

    --In the master database
    CREATE LOGIN [alias@domain.com] FROM EXTERNAL PROVIDER;
    
  2. Benutzer in Ihrer Datenbank erstellen. Ändern Sie den Kontext in Ihre Datenbank.

    -- In your database
    CREATE USER alias FROM LOGIN [alias@domain.com];
    
  3. Fügen Sie den Benutzer der angegebenen Rolle als Mitglied in Ihrer Datenbank hinzu (in diesem Fall die db_owner-Rolle).

    ALTER ROLE db_owner ADD member alias; -- Type USER name from step 2
    

Arbeitsbereichsbezogene Berechtigungen konfigurieren

Sie können vollen Zugriff auf alle serverlosen SQL-Pools im Arbeitsbereich gewähren. Führen Sie das Skript in diesem Beispiel in der master Datenbank aus:

CREATE LOGIN [alias@domain.com] FROM EXTERNAL PROVIDER;
ALTER SERVER ROLE sysadmin ADD MEMBER [alias@domain.com];

Schritt 7b: Konfigurieren dedizierter SQL-Pools

Sie können Zugriff auf eine einzelne, dedizierte SQL Pool-Datenbank gewähren. Verwenden Sie die folgenden Schritte im Azure Synapse SQL Skript-Editor:

  1. Erstellen Sie einen Benutzer in der Datenbank, indem Sie die folgenden Befehle ausführen. Wählen Sie die Zieldatenbank in der Dropdown-Liste Verbinden mit aus:

    --Create user in the database
    CREATE USER [<alias@domain.com>] FROM EXTERNAL PROVIDER;
    -- For Service Principals you would need just the display name and @domain.com is not required
    
  2. Weisen Sie dem Benutzer eine Rolle für den Zugriff auf die Datenbank zu:

    --Grant role to the user in the database
    EXEC sp_addrolemember 'db_owner', '<alias@domain.com>';
    

Wichtig

db_datareader und db_datawriter Datenbankrollen stellen Lese-/Schreibrechte bereit, wenn Sie keine db_owner-Rechte erteilen wollen. Allerdings ist die db_owner-Berechtigung notwendig, damit Spark-Nutzer direkt von Spark in oder aus einem SQL-Pool lesen und schreiben können.

Sie können Abfragen durchführen, um zu bestätigen, dass serverlose SQL-Pools Speicherkonten abfragen können, nachdem Sie Ihre Benutzer erstellt haben.

Schritt 8: Hinzufügen von Benutzer*innen zu Sicherheitsgruppen

Die Erstkonfiguration Ihres Zugriffssteuerungssystem ist nun abgeschlossen.

Sie können jetzt Benutzer zu den von Ihnen eingerichteten Sicherheitsgruppen hinzufügen oder aus ihnen entfernen, um den Zugriff auf sie zu verwalten. Sie können Benutzern manuell Azure Synapse-Rollen zuweisen, dies legt jedoch Berechtigungen nicht einheitlich fest. Fügen Sie stattdessen nur Benutzer zu Ihren Sicherheitsgruppen hinzu oder entfernen Sie sie daraus.

Schritt 9: Netzwerksicherheit

Als abschließenden Schritt, um Ihren Arbeitsbereich zu schützen, sichern Sie den Netzwerkzugang mit der Workspace-Firewall.

Schritt 10: Abschluss

Ihr Arbeitsbereich ist jetzt vollständig konfiguriert und geschützt.

Unterstützung komplexerer Szenarien

In diesem Leitfaden ging es um die Einrichtung eines grundlegenden Zugriffssteuerungssystems. Für komplexere Szenarien können Sie andere Sicherheitsgruppen erstellen und diesen präzisere Rollen in spezifischeren Gültigkeitsbereichen zuweisen. Betrachten Sie folgende Fälle:

Git-Unterstützung für den Arbeitsbereich für erweiterte Entwicklungsszenarien einschließlich CI/CD aktivieren. Im Git-Modus bestimmen Git-Berechtigungen und Synapse-RBAC, ob ein*e Benutzer*in Änderungen in seinem bzw. ihrem Arbeitsbranch committen kann. Die Veröffentlichung im Dienst erfolgt nur über den Kollaborationsbranch. Erstellen Sie ggf. eine Sicherheitsgruppe für Entwickler, die Updates in einem Arbeitsbranch entwickeln und debuggen müssen, aber keine Änderungen am Livedienst veröffentlichen müssen.

Schränken Sie den Entwicklerzugriff auf bestimmte Ressourcen ein. Erstellen Sie andere differenziertere Sicherheitsgruppen für Entwickler, die nur auf bestimmte Ressourcen Zugriff benötigen. Weisen Sie diesen Gruppen geeignete Azure Synapse-Rollen zu, die nur für bestimmte Spark-Pools, Integration Runtimes oder Anmeldeinformationen gelten.

Zugriff von Operatoren auf Codeartefakte einschränken. Erstellen Sie Sicherheitsgruppen für Operatoren, die den Betriebsstatus von Synapse-Computeressourcen überwachen und Protokolle anzeigen müssen, jedoch keinen Zugriff auf den Code benötigen und keine Updates am Dienst veröffentlichen müssen. Weisen Sie diese Gruppen der Rolle „Operator von Synapse-Computeressourcen“ zu, die auf bestimmte Spark-Pools und Integration Runtimes beschränkt ist.

Lokale Authentifizierung deaktivieren. Indem Sie nur die Microsoft Entra-Authentifizierung zulassen, können Sie den Zugriff auf Azure Synapse-Ressourcen, wie z. B. SQL-Pools, zentral verwalten. Die lokale Authentifizierung für alle Ressourcen im Arbeitsbereich kann während oder nach der Erstellung des Arbeitsbereichs deaktiviert werden. Weitere Informationen zur Authentifizierung nur über Microsoft Entra finden Sie unter Deaktivieren der lokalen Authentifizierung in Azure Synapse Analytics.