it-swarm-eu.dev

Oprávnění serveru SQL k vytvoření, obnovení, odstranění pouze některých databází

Na MS SQL Server 2008 R2 potřebuji uživatele, který umí vytvářet, obnovovat, DBCC CHECKDB a poté přetahovat databáze. Nesmí však mít možnost přistupovat nebo mazat určené databáze na serveru (z bezpečnostních důvodů). Je toto nastavení možné?

17
Cicik

Ano, je to možné prostřednictvím několika oprávnění.

Nejprve - pro vytvoření databáze - Budete muset udělit oprávnění na úrovni serveru Create Any Database. Toto oprávnění dělá přesně to, co zní - možnost vytvořit databázi. Poznámka toto není není udělení pevné role serveru dbcreator přihlašovacímu jménu, protože tato pevná role serveru dává oprávnění ke změně nebo odstranění v jakékoli databázi. Create Any Database Umožňuje, aby přihlašovací údaje měly pouze moc nad databázemi, které vlastní. To také umožní obnovení.

(Takže provedením "Vytvořit libovolnou databázi" [~ # ~] pouze [~ # ~] - dáváte možnost vytvořit novou databázi, ale vyhnout se možnosti vyřadit nebo změnit [~ # ~] libovolnou [~ # ~] databázi, kterou byste získali pomocí role pevného serveru dbcreator )

Chcete-li udělit toto oprávnění „Vytvořit libovolnou databázi“ -

use [master]
GO
GRANT CREATE ANY DATABASE TO [LoginName]
GO

Pro schopnost spouštět DBCC CHECKDB A vyřazovat databáze - postačuje pevná role databáze db_owner. To poskytuje vše, co požadujete. Poznámka: Také tomuto uživateli udělujete možnost výběru, odstranění, zkrácení, aktualizace a vložení pomocí db_owner. Rád to považuji za sysadmin v databázi.

Toto oprávnění použijete pouze pro databázi, kterou chcete mít. To vám umožní řídit, které databáze může uživatel zrušit, obnovit nebo checkdb na. Všechny databáze, kterým jste uživateli tato oprávnění neudělili, budou v bezpečí před tímto uživatelem, který tyto akce provádí

Za tímto účelem byste nejprve namapovali přihlášení k uživateli databáze:

USE [DatabaseName]
GO
CREATE USER [UserName] FOR LOGIN [LoginName] 
GO

A pak přidejte tohoto uživatele do role db_owner (Funguje na serveru SQL Server 2012 a dále):

ALTER ROLE [db_owner] ADD MEMBER [frank]
GO

Pro server SQL Server 2008 byste museli použít proceduru uloženou v systému a přidat člena role jako níže uvedený komentář, který správně poznamenal:

EXEC sp_addrolemember 'db_owner', 'frank';

To vše můžete také provést pomocí GUI. Přihlašovací informace, které byste provedli prostřednictvím složky zabezpečení v SSMS na úrovni instance: Klepněte pravým tlačítkem myši na přihlašovací jméno -> Vlastnosti -> Zabezpečení. Pro úroveň databáze byste to udělali přes složku zabezpečení na úrovni databáze: klikněte pravým tlačítkem a vyberte nového uživatele -> vyberte přihlašovací jméno, které chcete použít, ze seznamu přihlašovacích údajů k serveru/dejte uživateli databáze jméno -> přejděte na na kartě členství vyberte členství v roli.

Systém nápovědy serveru SQL Server, Books Online, je také skvělým zdrojem pro většinu otázek týkajících se oprávnění - pokud zjistíte, že je třeba přiřadit jiná oprávnění. Jednoduše vyhledejte příkaz T-SQL, kterému chcete udělit oprávnění, a v článku je obvykle část Oprávnění pro daný příkaz v článku, která vás informuje jaká oprávnění jsou vyžadována k provedení této akce. Můžete se podívat na článek pro DBCC CHECKDB pro příklad - asi 7/8 cesty dolů v článku je sekce oprávnění.

27
Mike Walsh