Řízení přístupu pro uživatele a role v SQL

click fraud protection

Všechny relační systémy pro správu databází poskytují určitý druh vnitřních bezpečnostních mechanismů určených k minimalizaci hrozeb ztráty dat, poškození dat nebo krádeže dat. Pohybují se od jednoduché ochrany heslem, kterou nabízí Microsoft Access ke komplexní struktuře uživatelů / rolí podporované pokročilými relačními databázemi, jako je Věštec aMicrosoft SQL Server. Některé bezpečnostní mechanismy jsou společné pro všechny databáze, které implementujístrukturovaný dotazovací jazyk.

Zabezpečení na úrovni uživatele

Serverové databáze podporují a uživatel koncept podobný konceptu používanému v počítačových operačních systémech. Pokud jste obeznámeni s hierarchií uživatelů / skupin nalezených v Microsoft Windows NT a Windows 2000 zjistíte, že seskupení uživatelů / rolí podporovaná SQL Serverem a Oracle jsou podobná.

Vytvořte individuální uživatelské účty databáze pro každou osobu s přístupem k vaší databázi.

Vyhněte se zajišťování obecných účtů přístupných několika různým lidem. Nejprve tento postup vylučuje individuální odpovědnost - pokud uživatel provede změnu vaší databáze (řekněme tím což mu dává $ 5 000), nebudete jej moci pomocí auditu vysledovat zpět ke konkrétní osobě protokoly. Zadruhé, pokud konkrétní uživatel opustí vaši organizaci a chcete odebrat jeho přístup z databáze, musíte změnit heslo, na které se všichni uživatelé spoléhají.

instagram viewer

Webový vývojář
Ostapenko Olena/ Getty Images

Metody vytváření uživatelských účtů se u jednotlivých platforem liší a přesný postup budete muset prostudovat ve své dokumentaci specifické pro DBMS. Uživatelé serveru Microsoft SQL Server by měli vyšetřit použití sp_adduser uložené procedury. Správci databází Oracle najdou VYTVOŘIT UŽIVATELE příkaz užitečný. Možná budete také chtít prozkoumat alternativní schémata ověřování. Například Microsoft SQL Server podporuje použití integrovaného zabezpečení Windows NT. V rámci tohoto schématu jsou uživatelé identifikováni do databáze podle svých uživatelských účtů Windows NT a není pro jejich přístup k databázi vyžadováno zadání dalšího ID uživatele a hesla. Tento přístup je oblíbený mezi správci databází, protože přenáší zátěž účtu správu pracovníkům správy sítě a poskytuje snadné jednotné přihlášení k koncový uživatel.

Zabezpečení na úrovni rolí

Pokud jste v prostředí s malým počtem uživatelů, pravděpodobně zjistíte, že vytváření uživatelských účtů a přiřazování oprávnění přímo jim je pro vaše potřeby dostatečné. Pokud však máte velký počet uživatelů, budete ohromeni udržováním účtů a správných oprávnění. Pro usnadnění této zátěže podporují relační databáze role. Role databáze fungují podobně jako skupiny Windows NT. Uživatelské účty jsou přiřazeny k rolím a oprávnění jsou poté přiřazena k roli jako celku, nikoli jednotlivým uživatelským účtům. Můžete například vytvořit roli DBA a poté do této role přidat uživatelské účty svých administrativních pracovníků. Poté můžete přiřadit konkrétní oprávnění všem současným (a budoucím) správcům jednoduše přiřazením oprávnění k roli. Postupy vytváření rolí se opět u jednotlivých platforem liší. Správci MS SQL Serveru by měli vyšetřit sp_addrole uložená procedura, zatímco Oracle DBA by měly používat VYTVOŘIT ROLU syntax.

Udělení oprávnění

Nyní, když jsme do naší databáze přidali uživatele, je čas začít posilovat zabezpečení přidáváním oprávnění. Naším prvním krokem bude udělit příslušná oprávnění k databázi našim uživatelům. Toho dosáhneme pomocí příkazu SQL GRANT.

Zde je syntaxe příkazu:

GRANT. 
[NA. 
NA. 
[S GRANTOVOU MOŽNOSTÍ]

Pojďme se nyní podívat na toto prohlášení řádek po řádku. První řádek, GRANT , nám umožňuje určit konkrétní oprávnění tabulky, která udělujeme. Může to být buď oprávnění na úrovni tabulky (například SELECT, INSERT, UPDATE a DELETE) nebo oprávnění databáze (například CREATE TABLE, ALTER DATABASE a GRANT). V jednom příkazu GRANT lze udělit více než jedno oprávnění, ale oprávnění na úrovni tabulky a oprávnění na úrovni databáze se nemusí kombinovat v jednom příkazu.

Druhý řádek, NA

Nakonec čtvrtý řádek S MOŽNOSTÍ GRANTU, je volitelné. Pokud je tento řádek zahrnut ve výpisu, je dotyčný uživatel oprávněn udělit stejná oprávnění ostatním uživatelům. Všimněte si, že WITH GRANT OPTION nelze určit, když jsou oprávnění přiřazena roli.

Ukázkové databázové granty

Podívejme se na několik příkladů. V našem prvním scénáři jsme nedávno najali skupinu 42 operátorů zadávání dat, kteří budou přidávat a udržovat záznamy o zákaznících. Musí získat přístup k informacím v tabulce Zákazníci, upravit tyto informace a přidat do tabulky nové záznamy. Neměli by být schopni úplně odstranit záznam z databáze.

Nejprve bychom měli vytvořit uživatelské účty pro každého operátora a poté je všechny přidat do nové role, Vstup dat. Dále bychom měli pomocí následujícího příkazu SQL udělit jim příslušná oprávnění:

UDĚLTE VÝBĚR, VLOŽTE, AKTUALIZUJTE. 
ON Zákazníci. 
TO DataEntry. 

Nyní prozkoumejme případ, kdy přiřazujeme oprávnění na úrovni databáze. Chceme umožnit členům role DBA přidávat do naší databáze nové tabulky. Kromě toho chceme, aby mohli ostatním uživatelům udělit oprávnění k tomu samému. Tady je příkaz SQL:

TABULKA UDĚLENÍ GRANTU. 
DBA. 
S MOŽNOSTÍ GRANTU. 

Všimněte si, že jsme zahrnuli řádek WITH GRANT OPTION, abychom zajistili, že naši administrátoři mohou toto oprávnění přiřadit dalším uživatelům.

Odebírání oprávnění

SQL obsahuje příkaz REVOKE k odebrání dříve udělených oprávnění. Zde je syntaxe:

REVOKE [GRANT OPTION FOR]
NA. 
Z. 

Všimnete si, že syntaxe tohoto příkazu je podobná syntaxi příkazu GRANT. Jediný rozdíl je v tom, že WITH GRANT OPTION je zadán na příkazovém řádku REVOKE, nikoli na konci příkazu. Jako příklad si představme, že chceme odvolat Mary dříve udělené oprávnění k odebrání záznamů z databáze zákazníků. Použili bychom následující příkaz:

ODSTRÁNIT ODSTRANĚNÍ. 
ON Zákazníci. 
Z Mary. 

Microsoft SQL Server podporuje ještě jeden mechanismus, který stojí za zmínku - příkaz DENY. Tento příkaz lze použít k výslovnému odepření oprávnění uživateli, které by jinak mohl mít prostřednictvím současného nebo budoucího členství v roli. Zde je syntaxe:

ODMÍTNOUT. 
NA. 
NA. 
instagram story viewer