Cvičení – řízení, kdo má přístup k databázi
I když se možná budete moct připojit k databázi přes síť, která neznamená, že můžete získat přístup k samotným datům. Po vrstveném přístupu chcete zajistit, aby k datům skutečně měli přístup jenom uživatelé, kteří potřebují přístup k datům. Tento přístup je místo, kde se hraje ověřování a autorizace.
Ověřování
Ověřování je proces kontroly identity. Tato identita může být uživatel, služba spuštěná v systému nebo samotný systém, například virtuální počítač. Prostřednictvím procesu ověřování se ujistěte, že osoba nebo systém je tím, za koho se tvrdí. SQL Database podporuje dva typy ověřování: ověřování SQL a ověřování Microsoft Entra.
Ověřování SQL
Metoda ověřování SQL používá uživatelské jméno a heslo. Uživatelské účty je možné vytvořit v hlavní databázi a udělit jim oprávnění ve všech databázích na serveru. Můžete také vytvářet uživatele v samotné databázi, označované jako uživatelé s omezením, a udělit jim přístup pouze k této databázi. Při vytváření logického serveru pro vaši databázi jste zadali přihlášení správce serveru pomocí uživatelského jména a hesla. Pomocí těchto přihlašovacích údajů můžete ověřit jakoukoli databázi na daném serveru jako vlastníka databáze nebo dbo.
Ověřování Microsoft Entra
Tato metoda ověřování používá identity spravované pomocí ID Microsoft Entra a podporuje se pro spravované a integrované domény. Kdykoli je to možné, použijte ověřování Microsoft Entra (integrované zabezpečení). Pomocí ověřování Microsoft Entra můžete spravovat identity uživatelů databáze a dalších služby Microsoft v jednom centrálním umístění. Centrální správa ID poskytuje jediné místo pro správu uživatelů databáze a zjednodušuje správu oprávnění. Pokud chcete použít ověřování Microsoft Entra, musíte vytvořit dalšího správce serveru s názvem Správce Microsoft Entra, který může spravovat uživatele a skupiny Microsoft Entra. Tento správce může také provádět všechny operace jako běžný správce serveru.
Autorizace
Autorizace určuje, co může identita v rámci databáze Azure SQL Database dělat. Tato autorizace se řídí oprávněními udělenými přímo k uživatelskému účtu a členství v rolích databáze. Role databáze se používá ke seskupení oprávnění, aby se usnadnila správa. Přidejte uživatele k roli, aby udělil oprávnění, která má role. Tato oprávnění můžou zahrnovat možnost přihlášení k databázi, možnost číst tabulku a možnost přidávat a odebírat sloupce z databáze. Doporučený postup je udělit uživatelům co nejmenší možná oprávnění. Proces udělení autorizace uživatelům SQL i Microsoft Entra je stejný.
V tomto příkladu je účet správce serveru, ke kterému se připojujete, členem role db_owner, která má oprávnění provádět cokoli v databázi.
Ověřování a autorizace v praxi
Doporučený postup je, aby aplikace k ověření používala vyhrazený účet. Omezíte tak počet oprávnění udělených aplikaci a snížíte riziko škodlivých aktivit v případě ohrožení kódu aplikace útoky v podobě injektáže SQL. Doporučujeme vytvořit uživatele databáze s omezením, který umožňuje, aby se vaše aplikace ověřila přímo v databázi. Další informace najdete v tématu Uživatelé databáze s omezením – zajištění přenositelnosti databáze.
Ověřování Microsoft Entra slouží k centrální správě identit uživatelů databáze a jako alternativy k ověřování SQL Serveru.
Podívejte se, jak nastavit uživatele a udělit mu přístup k databázi. V tomto případě použijete ověřování SQL pro uživatele, ale proces bude v podstatě stejný, pokud použijete ověřování Microsoft Entra.
Vytvoření uživatele databáze
Vytvořte nového uživatele, kterého můžete použít k udělení přístupu.
V Cloud Shellu se na virtuálním počítači appServer znovu připojte k databázi jako váš
ADMINUSER
.sqlcmd -S tcp:[server-name].database.windows.net,1433 -d marketplaceDb -U '[username]' -P '[password]' -N -l 30
Spuštěním příkazu níže vytvořte nového uživatele. Tento uživatel je uživatel s omezením , který povoluje přístup pouze k databázi marketplace . Podle potřeby upravte heslo, ale nezapomeňte si ho poznamenat, protože ho potřebujete pro další krok.
CREATE USER ApplicationUser WITH PASSWORD = 'YourStrongPassword1'; GO
S těmito přihlašovacími údaji se uživatel může ověřit v databázi, ale nemá oprávnění k přístupu k žádným datům. Udělte tomuto uživateli přístup.
Udělení oprávnění uživateli
Nastavte uživatele jako člena db_datareader
a db_datawriter
role a udělte mu přístup ke čtení a zápisu do databáze. Chcete také zabránit tomuto uživateli v přístupu k tabulce s adresami.
I když jste stále připojení k
sqlcmd
serveru appServer, spuštěním následujícího příkazu T-SQL uděltedb_datareader
uživateli, který jste vytvořili, role adb_datawriter
role.ALTER ROLE db_datareader ADD MEMBER ApplicationUser; ALTER ROLE db_datawriter ADD MEMBER ApplicationUser; GO
Rozsah přístupu můžete dále zúžit. Pomocí operátoru DENY můžete uživateli odepřít přístup k jiným prvkům v databázi. Spuštěním následujícího příkazu T-SQL odepřete uživateli ApplicationUser možnost vybírat data z tabulky
SalesLT.Address
.DENY SELECT ON SalesLT.Address TO ApplicationUser; GO
Teď se přihlaste jako tento uživatel a podívejte se na tuto konfiguraci v akci.
I když stále na příkazovém řádku T-SQL, zadáním ukončete
exit
relaci.Teď se znovu přihlaste k databázi, ale jako uživatel, který jste vytvořili.
sqlcmd -S tcp:[server-name].database.windows.net,1433 -d marketplaceDb -U 'ApplicationUser' -P '[password]' -N -l 30
Spusťte následující dotaz. Tento dotaz načítá data z tabulky, ke které má uživatel oprávnění k přístupu.
SELECT FirstName, LastName, EmailAddress, Phone FROM SalesLT.Customer; GO
Měl by se zobrazit seznam zákazníků.
FirstName LastName EmailAddress Phone -------------- -------------- ------------------------------- ------------ Orlando Gee orlando0@adventure-works.com 245-555-0173 Keith Harris keith0@adventure-works.com 170-555-0127 Donna Carreras donna0@adventure-works.com 279-555-0130 Janet Gates janet1@adventure-works.com 710-555-0173 ...
Podívejte se, co se stane, když se pokusíte dotazovat na tabulku, ke které nemáte přístup.
SELECT * FROM SalesLT.Address; GO
Měla by se zobrazit zpráva s informací, že k této tabulce nemáte přístup.
Msg 229, Level 14, State 5, Server server-22942, Line 1 The SELECT permission was denied on the object 'Address', database 'marketplace', schema 'SalesLT'.
Jak vidíte tady, i když jste databázi udělili přístup pro čtení a zápis, můžete dále zabezpečit přístup k datům tím, že explicitně odepřete přístup k tabulkám. Pokud máte více uživatelů se stejným přístupem, můžete vytvořit vlastní role s vhodnými oprávněními a zjednodušit si tak správu.
Je důležité databázi správně zabezpečit a udělovat přístup jen tam, kde je to nutné. Azure SQL Database vám dává možnost plné kontroly nad ověřováním a autorizací identit za účelem přístupu k datům ve vaší databázi.