Provoz SQL Serveru povoleného službou Azure Arc s nejnižšími oprávněními

platí pro:SQL Server

Princip zabezpečení informací s nejnižšími oprávněními potvrzuje, že účty a aplikace mají přístup pouze k datům a operacím, které vyžadují. S SQL Serverem povoleným službou Azure Arc můžete spustit službu rozšíření agenta s nejnižšími oprávněními. Tento článek vysvětluje, jak spustit službu rozšíření agenta s nejnižšími možnými oprávněními.

Konfigurace účtů a oprávnění služby Windows pro rozšíření Azure pro SQL Server popisuje nejnižší oprávnění pro službu rozšíření agenta.

Princip nejmenších oprávnění je ve výchozím nastavení povolen

Nejmenší oprávnění je ve výchozím nastavení povoleno v následujících verzích rozšíření Azure pro SQL Server:

  • Verze 1.1.3453.436
  • Verze 1.1.3518.465 a pozdější verze

Nejmenší oprávnění není ve verzích starších než 1.1.3453.436 ani ve verzích 1.1.3464.439, 1.1.3494.451 a 1.1.3500.453 zapnuto. Pro tyto verze postupujte podle kroků v tomto článku pro manuální povolení režimu nejmenších privilegií.

Poznámka

U stávajících serverů, které používají 1.1.2859.223 nebo novější verze, se při automatické aktualizaci postupně aplikuje konfigurace s nejmenším oprávněním jako součást automatických upgradů. Aby se zabránilo automatickému použití konfigurace podle principu nejmenších oprávnění, zablokujte aktualizace rozšíření po 1.1.2859.223.

Když je povoleno nejmenší oprávnění, rozšíření Azure for SQL Server automaticky vytvoří a spravuje NT SERVICE\SqlServerExtension jako lokální účet služby Windows a přihlašovací údaje do SQL Server:

  • Rozšíření účtu uděluje pouze Windows oprávnění potřebná ke čtení a ukládání konfigurací a zápisu logů.
  • Rozšíření uděluje přihlášení minimální oprávnění pro SQL Server požadovaná povolenými funkcemi.
  • Rozšíření odebírá oprávnění, když už nejsou potřeba, například když deaktivujete nějakou funkci.
  • Rozšíření odstraní účet při odinstalaci Azure Extension for SQL Server nebo při vypnutí nejmenších oprávnění.

Požadavky

Tato sekce identifikuje systémové požadavky a nástroje, které potřebujete k povolení nebo vypnutí nejmenších privilegií.

Požadavky na systém

Konfigurace principu nejmenších privilegií vyžaduje:

  • Windows Server 2016 nebo novější verze.
  • SQL Server 2014 (12.x) nebo pozdější verze.
  • Účet služby SQL Server musí být členem sysadmin pevné role serveru.
  • Všechny databáze musí být online a aktualizovatelné.

Princip nejmenších oprávnění není v současnosti v systému Linux podporován.

Nářadí

K dokončení kroků v tomto článku potřebujete následující nástroje:

Povolit nebo zakázat možnost najmenšího privilegování

  1. Přihlaste se pomocí Azure CLI.

    az login
    
  2. Ověřte verzi rozšíření arcdata.

    az extension list -o table
    

    Pokud výsledky obsahují podporovanou verzi arcdata, přejděte k dalšímu kroku.

    V případě potřeby nainstalujte nebo aktualizujte rozšíření arcdata Azure CLI.

    Instalace rozšíření:

    az extension add --name arcdata
    

    Aktualizovat rozšíření:

    az extension update --name arcdata
    
  3. Povolení nejnižšího oprávnění pomocí Azure CLI

    Pokud chcete povolit nejnižší oprávnění, nastavte příznak funkce LeastPrivilege na true. Pro deaktivaci nastavte příznak funkce na false. Pro dokončení tohoto úkolu spusťte následující příkaz s hodnotami pro <resource-group> a <machine-name>.

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

    Následující příkaz například povolí nejnižší oprávnění pro server s názvem myserver ve skupině prostředků s názvem myrg:

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

Ověření konfigurace nejnižších oprávnění

Pokud chcete ověřit, že sql Server povolený službou Azure Arc je nakonfigurovaný tak, aby běžel s nejnižšími oprávněními:

  1. V sekci Služby najděte Microsoft SQL Server Extension Service. Ověřte, že služba běží pod tímto servisním účtem NT SERVICE\SqlServerExtension .

  2. Otevřete Task Scheduler na serveru. Ověřte, že v části Microsoft\SqlServerExtension existuje úloha řízená událostmi s názvem SqlServerExtensionPermissionProvider.

  3. Otevřete APLIKACI SQL Server Management Studio a zkontrolujte přihlašovací jméno NT SERVICE\SqlServerExtension. Ověřte, že účet má přiřazená tato základní oprávnění:

    • CONNECT SQL
    • VIEW DATABASE STATE
    • VIEW SERVER STATE
  4. Ověřte oprávnění pomocí následujících dotazů:

    Pokud chcete ověřit oprávnění na úrovni serveru, spusťte následující dotaz:

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

    Pokud chcete ověřit oprávnění na úrovni databáze, nahraďte <database-name> názvem jedné z vašich databází a spusťte následující dotaz:

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

Volitelné: Správa účtu služby databázového enginu SQL Server

Pro většinu prostředí použijte výchozí konfiguraci servisního účtu. Následující postup použijte pouze pokud potřebujete odstranit účet služby databázového enginu SQL Server z role pevného serveru správce systému mezi operacemi rozšíření.

Pro použití režimu nejmenších oprávnění musí být účet služby databázového enginu SQL Server členem role pevného serveru správce systému na každé instanci SQL Server. Toto členství umožňuje systému automaticky udělovat nebo odebírat oprávnění. Ve výchozím nastavení je účet služby databázového enginu SQL Server členem role pevného serveru správce systému.

Rozšíření Azure pro SQL Server spouští dočasný proces nazývaný Deployer.exe jako NT AUTHORITY\SYSTEM když:

  • Funkce povolujete nebo zakážete
  • Přidáváte nebo odebíráte instance SQL Server
  • Instalujete nebo vylepšujete rozšíření

Deployer.exe převezme identitu účtu služby SQL Server při připojení k SQL Serveru. Po připojení přidá nebo odebere oprávnění v serverových a databázových rolích v závislosti na tom, které funkce jsou povolené nebo zakázané. Tento proces zajišťuje, aby rozšíření Azure pro SQL Server používalo minimální požadovaná oprávnění.

Pokud chcete tento proces spravovat s větší kontrolou, aby účet služby SQL Server nebyl členem sysadmin pevné role serveru po celou dobu, postupujte takto:

  1. Než nainstalujete nebo upgradujete rozšíření, povolíte nebo zakážete nějakou funkci, nebo přidáte či odeberete instanci SQL Server, dočasně přidejte účet služby databázového enginu SQL Server do role pevného správce systému.
  2. Povolte spuštění Deployer.exe alespoň jednou, aby byla nastavena oprávnění.
  3. Odeberte účet služby SQL Server z pevné role serveru sysadmin.

Tento postup opakujte pokaždé, když instalujete nebo upgradujete rozšíření, povolujete nebo deaktivujete funkci, nebo přidáváte či odebíráte instanci SQL Server. Tento postup umožňuje Deployer.exe udělit nejmenší požadovaná oprávnění.

Protože tento postup musíte opakovat u každé aktualizace rozšíření, zvažte vypnutí automatických upgradů. Pak můžete použít skript, který tyto kroky provede a rozšíření aktualizuje.

Důležité

Rozšíření Azure pro SQL Server Deployer.exe vyžaduje, aby se NT AUTHORITY\SYSTEM mohl připojit k SQL Server s oprávněním CONNECT SQL v režimech standard i least privilege. Tento požadavek existuje, protože Deployer.exe vždy běží pod LocalSystem účtem bez ohledu na to, který účet služby rozšíření používá po zřízení.

Pokud se NT AUTHORITY\SYSTEM nemůže připojit k SQL Server, Deployer.exe nemůže vytvořit přihlášení NT SERVICE\SqlServerExtension nebo udělit požadovaná oprávnění. Před povolením režimu nejnižších oprávnění ověřte, že NT AUTHORITY\SYSTEM má aktivní SQL Server přihlášení s oprávněním CONNECT SQL. Pro ověření viz Předpoklady.

Pokud účet služby databázového stroje SQL Server nemá pevnou roli serveru sysadmin, oprávnění just-in-time nelze udělit.

Podrobnosti o tom, kdy jsou tato oprávnění používána, viz Konfigurovat účty a oprávnění služeb Windows pro rozšíření Azure pro SQL Server.