MS SQL disponuje pokročilou obsluhou uživatelů a jejich přístupových práv. Správu můžete provádět buď pomocí jazyka Transact-SQL nebo v grafickém rozhraní SQL Enterprise Manager.

Přístupová práva uživatelů

Srovnání s operačním systémem: Při použití souborového systému pro ukládání dat lze uživatelům přidělit přístupová práva k jednotlivým souborům, ale vždy pouze k souboru jako celku. Operační systém neumožňuje omezovat přístup k datům podle obsahu, ale jen podle toho, ve kterém souboru jsou data uložena.
Srovnání s desktopovou databází Microsoft Access: Ta nenabízí nějakou striktní diferenciaci přístupu k databázi ani sofistikované způsoby zabezpečení.

Ve víceuživatelských databázových systémech lze definovat pohledy na obsah jednotlivých tabulek pro každého uživatele různě. Také lze určit množinu operací, které může uživatel nad daty vykonávat. Ve vztahu k datům a právům k nim patří každý uživatel do jedné z těchto pomyslných skupin:
– administrátor,
– vlastník databáze,
– běžný uživatel.

Přístupová práva v MS SQL

MS SQL může pracovat ve dvou režimech autentifikace, Integrated Windows Authentication nebo SQL Server Authentication. Pro použití ve webových aplikacích doporučuji jedině SQL Server Authentication. V tomto režimu si MS SQL drží vlastní databázi uživatelů, která je na uživatelích operačního systému nezávislá. Již při instalaci zvolíte, který režim se bude používat.

Po instalaci MS SQL se v systému nalézá jen uživatel sa s heslem, které jste mu určili během instalace. Je třeba přidat uživatele, jejich hesla, a přidělit jim přístupová práva. Během provozu systému můžete vznést také požadavek na změnu práv nebo zrušení uživatele. Systém řízení přístupu v MS SQL respektuje běžné zvyklosti známé třeba z konkurenčních databázových systémů.

SQL Server Enterprise Manager

Je to další z aplikací, které jsou dodávány společně se serverem. Je určena pro správu databází a umožňuje vykonávat administrátorům a správcům základní administrátorské úkony, jako je vytváření nových databází nebo správa uživatelských účtů včetně příslušných přístupových práv. Jednoduše lze také nastavit strategii údržby a zálohování dat nebo třeba pomocí jednoho z mnoha průvodců navrhnout strukturu tabulky.

Všechny akce, které SQL Server Enterprise Manager provádí nad databázovým systémem podle požadavků uživatele v grafickém prostředí, můžete adekvátně řešit příkazy jazyka SQL, respektive jeho rozšíření Transact-SQL.

Zástupce je v nabídce START | Programy | Microsoft SQL Server | Enterprise Manager.

MS SQL Server - uživatelé a práva - SQL Enterprise Manager
SQL Enterprise Manager

V levém sloupci označeném Console Root (strom konzoly) rozbalte seznam a označte server, který chcete spravovat. V tomto případě to je Console Root | Microsoft SQL Servers | SQL Server Group | (local) (Windows NT). Pro každý SQL Server (na některých počítačích jich může být více) jsou ve stromu konzole položky: Databases, Data Transformation Services, Management, Replication, Security, Support Services a Meta Data Services. Nás zajímá položka Security.

MS SQL Server - uživatelé a práva - položka Security
položka Security

SQL Login a Database user

SQL Login je definice uživatele v rámci daného databázového systému. Jedná se buďto o skutečného uživatele v databázi serveru, nebo o povolení přístupu některému uživateli či skupině v rámci operačního systému. Database user je přiřazení oprávnění daného SQL Loginu k určité databázi.

Založení nového SQL Loginu

Ve stromu konzole se nacházíte v položce Security. Klikněte na Logins. V pravé části okna se objeví seznam na serveru již existujících SQL Loginů. S SQL Enterprise Managerem právě pracujete jako uživatel BUILTIN\Administrators, což je vestavěný SQL Login přiznávající veškerá práva na MS SQL serveru pro uživatele operačního systému patřící do NT skupiny Administrators. Autentifikace BUILTIN\Administrators je nastavena na Windows Authentication, proto při spuštení SQL Enterprise Managera se nemusíte k serveru přihlašovat. Stačí jen být do Windows přihlášen jako jeden z uživatelů, který je členem NT skupiny Administrators. Pro přidání dalšího klikněte pravým a zvolte New Login…

MS SQL Server - uživatelé a práva - dialog New Login
dialog „New Login…“

V záložce General určíte jméno nového SQL Loginu, způsob autentifikace, výchozí databázi a jazyk pro komunikaci. V Server Roles přiřadíte nově vznikajícímu SQL Loginu práva vůči celému databázovému systému (viz dále). Poslední záložka Database Access vám dává možnost určit, ke kterým databázím na serveru bude mít nový SQL Login přístup. V každé z nich musíte zadat, jaký Database user se má založit a s jakými přístupovými právy. Přístupová práva nastavíte tak, že přiřadíte jednu nebo více Database Roles, která v příslušné databázi existuje (viz dále).

MS SQL Server - uživatelé a práva - dialog New Login
záložka „Database Access“

Server Roles

Server Roles na MS SQL jsou obdobou skupin uživatelů v operačních systémech s technologií NT. Server Roles přidělují SQL Loginu práva vztahující se na celý databázový systém. Server Roles přidělujte jen těm uživatelům, kteří mají vykonávat nějakou správu nad celým serverem, běžnému uživateli nemusí být přiřazena. Přidělovat můžete pouze předdefinované Server Roles:

sysadmin – superuživatel, přístup k čemukoli, zahrnuje práva všech následujících rolí
serveradmin – konfiguruje nastavení celého serveru
setupadmin – správa Linked servers a s tím související práva
securityadmin – správa uživatelů a práv
processadmin – správa procesů
dbcreator – vytváření a změna databází
diskadmin – správa diskových souborů
bulkadmin – vykonávání SQL dotazu BULK INSERT

Kterýkoli člen může přidělovat svou roli i dalším.

Database Roles

I v tomto případě máte k dispozici předdefinované role. V každé databázi zvlášť si je můžete také vytvářet, měnit a mazat. Existují dva typy rolí, takzvané Standard Roles, které jsou souborem členů, a Application Roles, které vyžadují heslo. Seznam předdefinovaných rolí typu „Standard Roles“:

public – všichni uživatelé dané databáze jsou do ní zařazeni, reprezentuje výchozí práva pro kohokoli
db_owner – superuživatel vůči dané databázi, zahrnuje práva všech níže uvedených rolí
db_accessadmin – správa uživatelů
db_datareader – povoleno čtení všech dat ve všech tabulkách od všech uživatelů
db_datawriter – povolen zápis, změna a mazání dat ve všech tabulkách od všech uživatelů
db_ddladmin – přidání, změna a odstraňování všech objektů v databázi
db_securityadmin – správa rolí, jejich členů a práv
db_backupoperator – práva na zálohování databáze
db_denydatareader – zákaz čtení dat z databáze
db_denydatawriter – zákaz změny dat v databázi

Opět platí, že kterýkoli člen může přidělovat svou roli ostatním členům.

SQL Login a Server Roles

Pro zařazení/vyřazení otevřete Console Root | Microsoft SQL Servers | SQL Server Group | (local) (Windows NT) | Security | Server Roles. V pravé části označte roli, klikněte pravým myšítkem a zvolte Vlastnosti. V dialogu můžete přidávat/odebírat z dané role uživatele. Druhou možností je otevření seznamu uživatelů („Logins“), opět kliknete pravým myšítkem a zvolíte Vlastnosti. Objeví se téměř stejný dialog jako New Login….

Database User a Database Role

Nyní opusťte složku Security a přejděte do Databases. Předpokládám, že jste vytvořili uživatele uzivatel, jak je to uvedeno výše. Zvolte tempdb. Users a Roles, které vidíte ve stromu konzole i v pravém okně, jsou vlastně analogické Security | Logins a Security | Server Roles. Liší se tím, že prvně uvedené se vztahují k dané databázi a druhé k celému MS SQL, respektive jeho instanci.

Změna uživatelů v roli a práv, které role dává

Kliknutím na Roles se v pravém okně vypíše seznam rolí v databázi tempdb. V seznamu na obrázku je vidět, že nejsou vytvořeny žádné nové uživatelské role. Jsou k dispozici jen ty předdefinované. Jediná z předdefinovaných, u které lze měnit práva, je public. Vyvolejte její vlastnosti (třeba kliknutím na ikonu v panelu nástrojů). V dialogu jednoduchým způsobem přiřaďte nebo vyřaďte z role databázové uživatele. Tlačítkem Permissions… vyvoláte dialog nastavení přístupových práv. Doporučuji vždy změnit práva pro roli public podle požadavků bezpečnosti. Tuto roli dostává každý nový uživatel databáze a nelze mu ji odebrat.

MS SQL Server - uživatelé a práva - seznam rolí
seznam rolí v databázi „tempdb“

Uživatelé databáze

Kliknutím na Users se v pravém okně vypíše seznam uživatelů v databázi tempdb. Databázový uživatel (sloupec Name) patří k nějakému SQL Loginu (sloupec Login Name). V každé databázi existuje uživatel dbo, který je analogický uživateli sa vůči celému serveru. Uživatel dbo (zkratka z DataBase Owner) vystupuje jako vlastník databáze a má nastavena veškerá práva (má roli db_owner).

Označte jednoho v seznamu uživatelů a otevřete dialog Vlastnosti. Zde jej můžete zařazovat/vyřazovat z jednotlivých rolí a nebo mu přímo nastavovat privilegia k jednotlivým objektům v databázím v dialogu, který vyvoláte stiskem tlačítka Permissions….

Možností nastavování přístupových práv v SQL Enterprise Manageru je ještě více. Vycházejí však jen z výše popsaných mechanizmů. Zájemce odkazuji na originální dokumentaci.

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

3 Příspěvků v diskuzi

Odpovědět