Verwalten von Benutzerberechtigungen in serverlosen SQL-Pools von Azure Synapse

Abgeschlossen

Zum Schutz von Daten implementiert Azure Storage ein Zugriffssteuerungsmodell, das sowohl die rollenbasierte Zugriffssteuerung von Azure (Azure RBAC) als auch Zugriffssteuerungslisten (Access Control Lists, ACLs) wie POSIX (Portable Operating System Interface for Unix) unterstützt.

Sie können einem Sicherheitsprinzipal eine Zugriffsebene für Dateien und Verzeichnisse zuordnen. Diese Zuordnungen werden in einer Zugriffssteuerungsliste (ACL) erfasst. Jede Datei und jedes Verzeichnis in Ihrem Speicherkonto verfügt über eine Zugriffssteuerungsliste. Wenn ein Sicherheitsprinzipal einen Vorgang für eine Datei oder ein Verzeichnis durchführen möchte, wird per ACL-Überprüfung ermittelt, ob dieser Sicherheitsprinzipal (Benutzer, Gruppe, Dienstprinzipal oder verwaltete Identität) über die richtige Berechtigungsstufe für die Durchführung des Vorgangs verfügt.

Es gibt zwei Arten von Zugriffssteuerungslisten:

  • Zugriffssteuerungslisten:

    Diese steuern den Zugriff auf ein Objekt. Dateien und Verzeichnisse verfügen jeweils über Zugriffs-ACLs.

  • Standard-Zugriffssteuerungslisten:

    Hierbei handelt es sich um ACL-Vorlagen, die einem Verzeichnis zugeordnet sind und die Zugriffssteuerungslisten für alle untergeordneten Elemente festlegen, die unter diesem Verzeichnis erstellt werden. Dateien verfügen über keine Standard-ACLs.

Zugriffs- und Standard-ACLs haben die gleiche Struktur.

Die Berechtigungen für ein Containerobjekt sind Lesen, Schreiben und Ausführen. Sie können wie in der folgenden Tabelle beschrieben auf Dateien und Verzeichnisse angewendet werden:

Berechtigungsebenen

Berechtigung Datei Verzeichnis
Lesen (Read, R) Berechtigt zum Lesen von Dateiinhalten Erfordert Lesen und Ausführen, um den Inhalt des Verzeichnisses aufzulisten.
Schreiben (Write, W) Berechtigt zum Schreiben in eine Datei sowie zum Anfügen an eine Datei Erfordert Schreiben und Ausführen, um untergeordnete Elemente in einem Verzeichnis zu erstellen.
Ausführen (Execute, X) Hat im Kontext von Data Lake Storage Gen2 keine Bedeutung Erfordert das Durchlaufen der untergeordneten Elemente eines Verzeichnisses

Richtlinien zum Einrichten von ACLs

Verwenden Sie in einem ACL-Eintrag immer Microsoft Entra-Sicherheitsgruppen als den zugewiesenen Prinzipal. Widerstehen Sie der Möglichkeit, einzelne Benutzer oder Dienstprinzipale direkt zuzuweisen. Die Verwendung dieser Struktur ermöglicht Ihnen, Benutzer oder Dienstprinzipale hinzuzufügen und zu entfernen, ohne dass Sie ACLs erneut auf eine gesamte Verzeichnisstruktur anwenden müssen. Stattdessen können Sie einfach Benutzer*innen und Dienstprinzipale zur entsprechenden Microsoft Entra-Sicherheitsgruppe hinzufügen oder aus dieser entfernen.

Es gibt viele Möglichkeiten zum Einrichten von Gruppen. Angenommen, Sie haben ein Verzeichnis namens /LogData, das Protokolldaten enthält, die von Ihrem Server generiert werden. Azure Data Factory (ADF) erfasst Daten in diesem Ordner. Bestimmte Benutzer aus dem IT-Support-Team laden Protokolle hoch und verwalten andere Benutzer dieses Ordners, und in verschiedenen Databricks-Clustern werden die Protokolle aus diesem Ordner analysiert.

Zum Ermöglichen dieser Aktivitäten können Sie eine LogsWriter-Gruppe und eine LogsReader-Gruppe erstellen. Anschließend können Sie die Berechtigungen wie folgt zuweisen:

  • Fügen Sie die LogsWriter-Gruppe zur ACL des Verzeichnisses /LogData mit rwx-Berechtigungen hinzu.
  • Fügen Sie die LogsReader-Gruppe zur ACL des Verzeichnisses /LogData mit r-x-Berechtigungen hinzu.
  • Fügen Sie das Dienstprinzipalobjekt oder die verwaltete Dienstidentität (MSI) für ADF zur LogsWriter-Gruppe hinzu.
  • Fügen Sie Benutzer des Service Engineering-Teams zur LogsWriter-Gruppe hinzu.
  • Fügen Sie das Dienstprinzipalobjekt oder die verwaltete Dienstidentität zur LogsReader-Gruppe hinzu.

Wenn ein Benutzer des Service Engineering-Teams das Unternehmen verlässt, können Sie diesen einfach aus der LogsWriter-Gruppe entfernen. Wenn Sie diesen Benutzer nicht zu einer Gruppe hinzugefügt, sondern stattdessen einen dedizierten ACL-Eintrag für den Benutzer hinzugefügt hätten, müssten Sie diesen ACL-Eintrag aus dem /LogData- -Verzeichnis entfernen. Außerdem müssten Sie den Eintrag aus allen Unterverzeichnissen und Dateien in der gesamten Verzeichnishierarchie des /LogData-Verzeichnisses entfernen.

Erforderliche Rollen für Benutzer serverloser SQL-Pools

Benutzern, die schreibgeschützten Zugriff benötigen, sollten Sie die Rolle Storage-Blobdatenleser zuweisen.

Benutzern, die Lese-/Schreibzugriff benötigen, sollten Sie die Rolle Mitwirkender an Storage-Blobdaten zuweisen. Der Lese-/Schreibzugriff ist erforderlich, wenn ein Benutzer über Zugriff auf CREATE EXTERNAL TABLE AS SELECT (CETAS) verfügen muss.

Hinweis

Wenn der Benutzer über die Rolle „Besitzer“ oder „Mitwirkender“ verfügt, ist seine Rolle unzureichend. Azure Data Lake Storage Gen 2 umfasst Superrollen, die zugewiesen werden sollten.

Berechtigung auf Datenbankebene

Verwenden Sie die Transact-SQL-Syntax zum Erstellen von Anmeldungen und Benutzern, um Benutzern präziseren Zugriff zu ermöglichen.

Führen Sie die Schritte des folgenden Beispiels aus, um einem Benutzer Zugriff auf eine einzelne Datenbank im serverlosen SQL-Pool zu gewähren:

  1. Erstellen Sie eine Anmeldung:

    use master
    CREATE LOGIN [alias@domain.com] FROM EXTERNAL PROVIDER;
    
  2. Erstellen Sie einen Benutzer:

    use yourdb -- Use your DB name
    CREATE USER alias FROM LOGIN [alias@domain.com];
    
  3. Fügen Sie den Benutzer den Mitgliedern der angegebenen Rolle hinzu:

    use yourdb -- Use your DB name
    alter role db_datareader 
    Add member alias -- Type USER name from step 2
    -- You can use any Database Role which exists 
    -- (examples: db_owner, db_datareader, db_datawriter)
    -- Replace alias with alias of the user you would like to give access and domain with the company domain you are using.
    

Berechtigung auf Serverebene

  1. Führen Sie den Schritt des folgenden Beispiels aus, um einem Benutzer Vollzugriff auf alle Datenbanken im serverlosen SQL-Pool zu gewähren:

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