Ausführen des von Azure Arc aktivierten SQL Servers mit geringsten Rechten

Gilt für:SQL Server

Das Informationssicherheitsprinzip der geringsten Privilegien besagt, dass Konten und Anwendungen nur auf die Daten und Vorgänge Zugriff haben, die sie benötigen. Wenn SQL Server von Azure Arc aktiviert ist, können Sie den Agent-Erweiterungsdienst mit geringsten Berechtigungen ausführen. In diesem Artikel wird erläutert, wie Sie den Agenten-Erweiterungsdienst mit möglichst wenigen Berechtigungen ausführen.

Konfigurieren von Windows-Dienstkonten und -berechtigungen für Azure-Erweiterung für SQL Server beschreibt die Berechtigungen mit den geringsten Rechten für den Agentenerweiterungsdienst.

Das Prinzip der geringsten Rechte ist standardmäßig aktiviert

Least Privilege ist standardmäßig in den folgenden Versionen der Azure Extension for SQL Server aktiviert:

  • Version 1.1.3453.436
  • Version 1.1.3518.465 und spätere Versionen

Least Privilege ist standardmäßig nicht in Versionen vor 1.1.3453.436 oder in den Versionen 1.1.3464.439, 1.1.3494.451 und 1.1.3500.453 aktiviert. Für diese Versionen folgen Sie den in diesem Artikel enthaltenen Schritten, um das Least Privilege manuell zu aktivieren.

Hinweis

Für bestehende Server, die Version 1.1.2859.223 oder höher verwenden, wird bei aktiviertem automatischem Upgrade die Konfiguration mit den geringsten Berechtigungen im Zuge automatischer Upgrades schließlich angewendet. Um die automatische Anwendung der Least-Privilege-Konfiguration zu verhindern, blockieren Sie nach 1.1.2859.223 Erweiterungs-Upgrades.

Wenn das geringste Privileg aktiviert ist, erstellt und verwaltet NT SERVICE\SqlServerExtension die Azure-Erweiterung für SQL Server automatisch als lokales Windows-Servicekonto und SQL Server-Login:

  • Die Erweiterung gewährt dem Konto nur die Windows-Berechtigungen, die zum Lesen und Speichern von Konfigurationen sowie zum Schreiben von Logs erforderlich sind.
  • Die Erweiterung gewährt dem Login die minimalen SQL Server-Berechtigungen, die durch die aktivierten Funktionen erforderlich sind.
  • Die Erweiterung widerruft Berechtigungen, wenn sie nicht mehr benötigt werden, zum Beispiel wenn man eine Funktion deaktiviert.
  • Die Erweiterung entfernt das Konto, wenn Sie die Azure Extension für SQL Server deinstallieren oder das Least Privilege deaktivieren.

Voraussetzungen

Dieser Abschnitt beschreibt die Systemanforderungen und Werkzeuge, die Sie benötigen, um Least Privilege zu aktivieren oder zu deaktivieren.

Systemanforderungen

Die Konfiguration von Least Privilege erfordert:

  • Windows Server 2016 oder neuere Versionen.
  • SQL Server 2014 (12.x) oder neuere Versionen.
  • Das SQL Server-Dienstkonto muss Mitglied der sysadmin festen Serverrolle sein.
  • Alle Datenbanken müssen online und aktualisiert werden können.

Least Privilege wird derzeit auf Linux nicht unterstützt.

Werkzeuge

Um die Schritte in diesem Artikel auszuführen, benötigen Sie die folgenden Tools:

Aktiviere oder deaktiviere das Least Privilege

  1. Melden Sie sich mit der Azure CLI an.

    az login
    
  2. Überprüfen Sie die Erweiterungsversion arcdata.

    az extension list -o table
    

    Wenn die Ergebnisse eine unterstützte Version von arcdata enthalten, fahren Sie mit dem nächsten Schritt fort.

    Installieren oder aktualisieren Sie bei Bedarf die Azure CLI-Erweiterung arcdata.

    Installieren Sie die Erweiterung wie folgt:

    az extension add --name arcdata
    

    So aktualisieren Sie die Erweiterung:

    az extension update --name arcdata
    
  3. Aktivieren Sie die geringsten Berechtigungen mit Azure CLI.

    Um die geringste Berechtigung zu aktivieren, setzen Sie das LeastPrivilege-Funktionsflag auf true. Um es zu deaktivieren, setze das Feature-Flag auf false. Um diese Aufgabe zu erfüllen, führe den folgenden Befehl mit deinen Werten für die <resource-group> und <machine-name>aus.

    az sql server-arc extension feature-flag set --name LeastPrivilege --enable true --resource-group <resource-group> --machine-name <machine-name>
    

    Der folgende Befehl aktiviert beispielsweise das kleinste Zugriffsrecht für einen Server namens myserver in einer Ressourcengruppe namens myrg:

    az sql server-arc extension feature-flag set --name LeastPrivilege --enable true --resource-group myrg --machine-name myserver
    

Überprüfen der Konfiguration der geringsten Rechte

So überprüfen Sie, ob Ihr von Azure Arc aktivierter SQL Server für die Ausführung mit den geringsten Rechten konfiguriert ist:

  1. In Services suchen Sie den Microsoft SQL Server Extension Service. Überprüfen Sie, ob der Dienst über das Service-Konto NT SERVICE\SqlServerExtension läuft.

  2. Öffnen Sie den Task Scheduler auf dem Server. Überprüfen Sie, dass eine ereignisgesteuerte Aufgabe mit dem Namen SqlServerExtensionPermissionProvider unter Microsoft\SqlServerExtensionexistiert.

  3. Öffnen Sie SQL Server Management Studio und überprüfen Sie die Anmeldung namens NT SERVICE\SqlServerExtension. Überprüfen Sie, dass dem Konto diese Basisberechtigungen zugewiesen sind:

    • CONNECT SQL
    • VIEW DATABASE STATE
    • VIEW SERVER STATE
  4. Überprüfen Sie die Berechtigungen mit den folgenden Abfragen:

    Führen Sie die folgende Abfrage aus, um Berechtigungen auf Serverebene zu überprüfen:

    EXECUTE AS LOGIN = 'NT SERVICE\SqlServerExtension';
    
    SELECT *
    FROM fn_my_permissions(NULL, 'SERVER');
    
    REVERT;
    

    Ersetzen Sie <database-name> zum Überprüfen der Berechtigungen auf Datenbankebene den Namen einer Ihrer Datenbanken, und führen Sie die folgende Abfrage aus:

    EXECUTE AS LOGIN = 'NT SERVICE\SqlServerExtension';
    
    USE [<database-name>];
    SELECT * FROM fn_my_permissions(NULL, 'database');
    
    REVERT;
    

Optional: Verwaltung des SQL Server-Datenbank-Engine-Servicekontos

Verwenden Sie die Standardkonfiguration des Servicekontos für die meisten Umgebungen. Verwenden Sie das folgende Verfahren nur, wenn Sie das Dienstkonto der SQL Server-Datenbank-Engine aus der festen Serverrolle sysadmin zwischen Erweiterungsvorgängen entfernen müssen.

Um den Least-Privilege-Modus zu verwenden, muss das Dienstkonto der SQL Server-Datenbank-Engine in jeder SQL Server-Instanz Mitglied der festen Serverrolle sysadmin sein. Diese Mitgliedschaft ermöglicht es dem System, automatisch Berechtigungen zu erteilen oder zu widerrufen. Standardmäßig ist das SQL Server-Datenbank-Engine-Servicekonto ein Mitglied der Sysadmin-Fixed-Server-Rolle.

Die Azure-Erweiterung für SQL Server führt einen temporären Prozess mit dem Namen Deployer.exe als NT AUTHORITY\SYSTEM aus, wenn:

  • Du kannst Funktionen aktivieren oder deaktivieren
  • Du fügst SQL Server-Instanzen hinzu oder entfernst
  • Du installierst oder aktualisierst die Erweiterung

Deployer.exe führt eine Impersonierung des SQL Server-Dienstkontos durch, wenn eine Verbindung zu SQL Server hergestellt wird. Nach der Verbindung werden Berechtigungen in den Server- und Datenbankrollen hinzugefügt oder entfernt, je nachdem, welche Features aktiviert oder deaktiviert sind. Dieser Prozess stellt sicher, dass die Azure-Erweiterung für SQL Server die geringsten Berechtigungen verwendet.

Wenn Sie diesen Prozess mit mehr Kontrolle verwalten möchten, damit das SQL Server-Dienstkonto nicht ständig Mitglied der festen Serverrolle sysadmin ist, führen Sie die folgenden Schritte aus:

  1. Bevor Sie die Erweiterung installieren oder aktualisieren, eine Funktion aktivieren oder deaktivieren oder eine SQL Server-Instanz hinzufügen oder entfernen, fügen Sie vorübergehend das SQL Server-Datenbank-Engine-Service-Konto zur Rolle des Sysadmin-Festservers hinzu.
  2. Lassen Sie zu, dass Deployer.exe mindestens einmal ausgeführt werden, sodass die Berechtigungen festgelegt werden.
  3. Entfernen Sie das Dienstkonto des SQL Servers aus der festen Serverrolle sysadmin.

Wiederholen Sie dieses Verfahren, wann immer Sie die Erweiterung installieren oder aktualisieren, eine Funktion aktivieren oder deaktivieren oder eine SQL Server-Instanz hinzufügen oder entfernen. Dieses Verfahren ermöglicht es Deployer.exe , die geringsten erforderlichen Privilegien zu gewähren.

Da Sie dieses Verfahren bei jedem Erweiterungs-Upgrade wiederholen müssen, sollten Sie in Erwägung ziehen, automatische Upgrades zu deaktivieren. Du kannst dann ein Skript verwenden, das diese Schritte ausführt und die Erweiterung aktualisiert.

Important

Die Azure-Erweiterung für SQL Server Deployer.exe erfordert, dass NT AUTHORITY\SYSTEM in der Lage ist, eine Verbindung zu SQL Server herzustellen, und zwar mit der Berechtigung CONNECT SQL sowohl im standard- als auch im least privilege-Modus. Diese Anforderung besteht, weil Deployer.exe immer unter dem LocalSystem Konto ausgeführt wird, unabhängig davon, welches Dienstkonto die Erweiterung nach der Bereitstellung verwendet.

Wenn NT AUTHORITY\SYSTEM keine Verbindung mit SQL Server herstellen kann, kann Deployer.exe die NT SERVICE\SqlServerExtensionAnmeldung nicht erstellen oder die erforderlichen Berechtigungen erteilen. Bevor Sie den Modus mit minimalen Rechten aktivieren, vergewissern Sie sich, dass NT AUTHORITY\SYSTEM eine aktive SQL Server-Anmeldung mit CONNECT SQL-Berechtigung hat. Zur Verifizierung siehe Voraussetzungen.

Wenn das SQL Server-Datenbank-Engine-Servicekonto nicht die Sysadmin-Fixed-Server-Rolle hat, können Just-in-Time-Berechtigungen nicht gewährt werden.

Für Details darüber, wann diese Berechtigungen verwendet werden, siehe Konfigurieren von Windows-Servicekonten und Berechtigungen für Azure Extension for SQL Server.