Ověřování SQL ve službě Azure Synapse Analytics

Azure Synapse Analytics má dva faktory formulářů SQL, které umožňují řídit spotřebu prostředků. Tento článek vysvětluje, jak tyto dva faktory řídí ověřování uživatelů.

Pokud chcete autorizovat Synapse SQL, můžete použít dva typy autorizace:

  • Autorizace Microsoft Entra
  • Autorizace SQL

Autorizace SQL umožňuje starším aplikacím připojit se k Azure Synapse SQL známým způsobem. Ověřování Microsoft Entra ale umožňuje centrálně spravovat přístup k prostředkům Azure Synapse, jako jsou fondy SQL. Azure Synapse Analytics podporuje zakázání místního ověřování, například ověřování SQL během vytváření pracovního prostoru i po jeho vytvoření. Po zakázání můžou autorizovaní uživatelé kdykoli povolit místní ověřování. Další informace o ověřování pouze Microsoft Entra najdete v tématu Zakázání místního ověřování ve službě Azure Synapse Analytics.

Správa istrativní účty

Existují dva účty pro správu (uživatelské jméno správce SQL a správce SLUŽBY SQL Active Directory), které fungují jako správci. Pokud chcete identifikovat tyto účty správce pro fondy SQL, otevřete Azure Portal a přejděte na kartu Vlastnosti vašeho pracovního prostoru Synapse.

SQL Server Admins

  • Uživatelské jméno správce SQL

    Když vytváříte Azure Synapse Analytics, musíte pojmenovat přihlašovací jméno správce serveru. SQL Server vytvoří tento účet jako přihlášení k master databázi. Tento účet používá pro připojení ověřování SQL Serveru (uživatelské jméno a heslo). Existovat může jenom jeden z těchto účtů.

  • Správce SLUŽBY SQL Active Directory

    Jeden účet Microsoft Entra, buď individuální, nebo účet skupiny zabezpečení, může být také nakonfigurován jako správce. Je volitelné nakonfigurovat správce Microsoft Entra, ale pokud chcete pro připojení k Synapse SQL použít účty Microsoft Entra, musí být nakonfigurovaný správce Microsoft Entra.

    • Účet správce Microsoft Entra řídí přístup k vyhrazeným fondům SQL, zatímco role Synapse RBAC je možné použít k řízení přístupu k bezserverovým fondům, například s rolí Synapse Správa istrator a Synapse SQL Správa istrator.

Uživatelské jméno správce SQL a účty správce SLUŽBY SQL Active Directory mají následující charakteristiky:

  • Jsou jedinými účty, které se můžou automaticky připojit k jakékoli databázi SQL na serveru. (Pro připojení k uživatelské databázi ostatní účty musí buď být vlastníkem databáze, nebo musí v uživatelské databázi mít uživatelský účet.)
  • Tyto účty přistupují k uživatelským databázím jako uživatel dbo a mají pro ně veškerá oprávnění. (Vlastník databáze také k databázi přistupuje jako uživatel dbo.)
  • Nezadávejte master databázi jako dbo uživatel a v databázi mají omezená oprávnění master .
  • Nejsou členy standardní pevné role serveru SQL Serversysadmin, která není dostupná ve službě SQL Database.
  • Může vytvářet, měnit a odstraňovat databáze, přihlášení, uživatele v master databázi a pravidla brány firewall protokolu IP na úrovni serveru.
  • Může přidávat a odebírat členy do dbmanager rolí a loginmanager rolí.
  • Může zobrazit systémovou sys.sql_logins tabulku.

Poznámka:

Pokud je uživatel nakonfigurovaný jako správce Služby Active Directory a Synapse Správa istrator a potom se odebere z role správce služby Active Directory, uživatel ztratí přístup k vyhrazeným fondům SQL ve službě Synapse. Aby bylo možné znovu získat přístup k vyhrazeným fondům SQL, je potřeba je odebrat a pak je přidat do role Synapse Správa istrator.

Pokud chcete spravovat uživatele, kteří mají přístup k bezserverovém fondu SQL, můžete použít následující pokyny.

Pokud chcete vytvořit přihlášení k bezserverovém fondu SQL, použijte následující syntaxi:

CREATE LOGIN Mary WITH PASSWORD = '<strong_password>';
-- or
CREATE LOGIN [Mary@domainname.net] FROM EXTERNAL PROVIDER;

Pokud přihlášení existuje, můžete vytvořit uživatele v jednotlivých databázích v koncovém bodu bezserverového fondu SQL a udělit těmto uživatelům požadovaná oprávnění. K vytvoření uživatele můžete použít následující syntaxi:

CREATE USER Mary FROM LOGIN Mary;
-- or
CREATE USER Mary FROM LOGIN Mary@domainname.net;
-- or
CREATE USER [mike@contoso.com] FROM EXTERNAL PROVIDER;

Po vytvoření přihlášení a uživatele můžete k udělení práv použít běžnou syntaxi SQL Serveru.

Uživatelé bez oprávnění správce

Obecně platí, že účty bez oprávnění správce nepotřebují přístup k master databázi. Uživatele databáze s omezením můžete vytvářet pomocí příkazu CREATE USER (Transact-SQL).

Uživatel může být uživatelem databáze obsaženého ověřování Microsoft Entra (pokud jste nakonfigurovali prostředí pro ověřování Microsoft Entra) nebo uživatele databáze s ověřováním SQL Serveru nebo uživatelem ověřování SQL Serveru na základě přihlášení k ověřování SQL Serveru (vytvořeného v předchozím kroku).)

Pokud chcete vytvářet uživatele, připojte se k databázi a spusťte podobné příkazy jako v následujících příkladech:

CREATE USER Mary FROM LOGIN Mary;
CREATE USER [mike@contoso.com] FROM EXTERNAL PROVIDER;

Na začátku může uživatele vytvořit jenom jeden ze správců nebo vlastník databáze. Jestliže chcete autorizovat další uživatele, aby mohli vytvářet nové uživatele, udělte vybraným uživatelům oprávnění ALTER ANY USER pomocí příkazu, jako je například tento:

GRANT ALTER ANY USER TO Mary;

Pokud chcete dalším uživatelům poskytnout úplnou kontrolu nad databází, nastavte je jako člen db_owner pevné databázové role.

V Bezserverové službě Azure SQL Database nebo Synapse použijte příkaz ALTER ROLE .

ALTER ROLE db_owner ADD MEMBER Mary;

Ve vyhrazeném fondu SQL použijte sp_addrolemember EXEC.

EXEC sp_addrolemember 'db_owner', 'Mary';

Poznámka:

Jedním z běžných důvodů, proč vytvořit uživatele databáze na základě přihlášení k serveru, je pro uživatele, kteří potřebují přístup k více databázím. Vzhledem k tomu, že uživatelé databáze s omezením jsou jednotlivé entity, každá databáze udržuje vlastního uživatele a vlastní heslo. To může způsobit režijní náklady, protože uživatel si pak musí pamatovat každé heslo pro každou databázi a při změně více hesel pro mnoho databází se může stát nedostupným.

Skupiny a role

Efektivní správa přístupů využívá oprávnění přiřazená skupinám a rolím, nikoliv jednotlivým uživatelům.

  • Při použití ověřování Microsoft Entra vložte uživatele Microsoft Entra do skupiny Microsoft Entra. Pro tuto skupinu vytvořte uživatele databáze s omezením. Přidejte jednoho nebo více uživatelů databáze do databázové role a potom této databázové roli přiřaďte oprávnění.

  • Pokud používáte ověřování SQL Serveru, vytvořte v databázi uživatele databáze s omezením. Přidejte jednoho nebo více uživatelů databáze do databázové role a potom této databázové roli přiřaďte oprávnění.

Mezi databázové role patří například předdefinované role db_owner, db_ddladmin, db_datawriter, db_datareader, db_denydatawriter a db_denydatareader. Role db_owner se obvykle používá k udělení úplných oprávnění pouze několika uživatelům. Ostatní pevné databázové role jsou užitečné pro rychlé vytvoření jednoduché databáze ve vývojovém prostředí, ale nedoporučují se pro většinu databází v produkčním prostředí.

Pevná databázová role db_datareader například uděluje přístup pro čtení pro všechny tabulky v databázi, což je obvykle více, než je skutečně nezbytné.

Mnohem lepší je použít příkaz CREATE ROLE k vytvoření vlastních uživatelsky definovaných databázových rolí a pečlivě udělovat jednotlivým rolím nejmenší oprávnění potřebná pro obchodní potřebu. Pokud je uživatel členem více rolí, všechna jejich oprávnění se agregují.

Oprávnění

Ve službě SQL Database je dostupných více než 100 oprávnění, která můžete jednotlivě přidělit nebo zamítnout. Mnohá z těchto oprávnění jsou vnořená. Oprávnění UPDATE pro schéma například zahrnuje oprávnění UPDATE pro každou tabulku v tomto schématu. Podobně jako ve většině systémů oprávnění má zamítnutí oprávnění přednost před udělením oprávnění a přepíše ho.

Kvůli velkému počtu oprávnění a používání vnořených oprávnění může návrh vhodného systému oprávnění vyžadovat pečlivou studii, aby byla vaše databáze dobře chráněna.

Začněte seznamem oprávnění v části Oprávnění (databázový stroj) a zkontrolujte obrázek velikosti plakátu oprávnění databázového stroje.

Důležité informace a omezení

Při správě přihlášení a uživatelů ve službě SQL Database zvažte následující body:

  • Při provádění CREATE/ALTER/DROP DATABASE příkazů musíte být připojeni k master databázi.
  • Uživatele databáze odpovídající přihlášení správce serveru nelze změnit ani vynechat.
  • Správce serveru bude zakázán, pokud je povolené ověřování pouze Microsoft Entra.
  • Výchozím jazykem přihlášení správce serveru je americká angličtina.
  • Ke spuštění a příkazů mají oprávnění pouze správci (přihlášení správce serveru nebo správce Microsoft Entra) a členové databázové role dbmanager v master databázi.DROP DATABASECREATE DATABASE
  • Při provádění CREATE/ALTER/DROP LOGIN příkazů musíte být připojeni k master databázi. Používání přihlášení se ale nedoporučuje. Použijte raději databázové uživatele s omezením. Další informace najdete v tématu Uživatelé databáze s omezením – zajištění přenositelnosti databáze.
  • Pokud se chcete připojit k uživatelské databázi, musíte v připojovacím řetězci uvést název databáze.
  • Pouze hlavní přihlášení na úrovni serveru a členové role databáze loginmanager v master databázi mají oprávnění ke spuštění CREATE LOGINALTER LOGIN, a DROP LOGIN příkazy.
  • Při provádění CREATE/ALTER/DROP LOGIN příkazů a CREATE/ALTER/DROP DATABASE příkazů v aplikaci ADO.NET není použití parametrizovaných příkazů povoleno. Další informace viz Příkazy a parametry.
  • Při provádění příkazu CREATE USER s možností FOR/FROM LOGIN musí jít o jediný příkaz v dávce Transact-SQL.
  • Při provádění příkazu ALTER USER s možností WITH LOGIN musí jít o jediný příkaz v dávce Transact-SQL.
  • CREATE/ALTER/DROP LOGIN a CREATE/ALTER/DROP USER příkazy nejsou podporovány, pokud je pro pracovní prostor Azure Synapse povolené ověřování pouze Microsoft Entra.
  • Pokud chcete použít příkaz CREATE/ALTER/DROP pro vytvoření, změnu nebo odstranění uživatele, musíte mít v databázi oprávnění ALTER ANY USER.
  • Když se vlastník databázové role pokusí přidat nebo odebrat jiného uživatele databáze nebo z této databázové role, může dojít k následující chybě: Uživatel nebo role Jméno v této databázi neexistuje. K této chybě dochází, protože uživatel není viditelný pro vlastníka. Problém vyřešíte tak, že vlastníkovi role udělíte oprávnění VIEW DEFINITION pro daného uživatele.

Další kroky

Další informace najdete v tématu Uživatelé databáze s omezením – zajištění přenositelnosti databáze.