Sur MS SQL Server 2008 R2, j'ai besoin d'un utilisateur qui peut créer, restaurer, DBCC CHECKDB puis supprimer des bases de données. Mais il ne doit pas pouvoir accéder ou supprimer les bases de données spécifiées sur le serveur (raisons de sécurité). Cette configuration est-elle possible?
17
Réponses:
Oui, c'est possible grâce à quelques autorisations.
Tout d'abord - pour créer une base de données - Vous devez accorder l'autorisation au niveau du serveur
Create Any Database
. Cette autorisation fait exactement ce que cela ressemble - le pouvoir de créer une base de données. Notez que cela ne donne pas le rôle de serveur fixe de dbcreator à la connexion, car ce rôle de serveur fixe donne des autorisations de modification / suppression sur n'importe quelle base de données.Create Any Database
permet à la connexion d'avoir uniquement le pouvoir sur les bases de données dont elle est propriétaire. Cela donnera également la possibilité de restaurer.(Donc, en faisant "Créer n'importe quelle base de données" UNIQUEMENT - vous donnez la possibilité de créer une nouvelle base de données, mais en évitant la possibilité de supprimer ou de modifier TOUTE base de données que vous obtiendriez en utilisant le rôle de serveur fixe dbcreator)
Pour accorder cette autorisation "Créer une base de données" -
Pour pouvoir exécuter
DBCC CHECKDB
et supprimer des bases de données , le rôle de base de données fixe db_owner est suffisant. Cela accorde tout ce que vous demandez. Remarque: vous accordez également à cet utilisateur la possibilité de sélectionner, supprimer, tronquer, mettre à jour et insérer avecdb_owner
. J'aime à penser à cela commesysadmin
dans une base de données.Vous appliquerez uniquement cette autorisation à la base de données sur laquelle vous avez l'intention d'avoir cette capacité. Cela vous permettra de contrôler sur quelles bases de données l'utilisateur peut supprimer, restaurer ou vérifier. Toutes les bases de données sur lesquelles vous n'avez pas accordé à l'utilisateur ces autorisations seront à l'abri de cet utilisateur effectuant ces actions sur
Pour ce faire, vous devez d'abord mapper la connexion à un utilisateur de base de données:
Et puis ajoutez cet utilisateur au
db_owner
rôle (Works dans SQL Server 2012 et versions ultérieures):Pour SQL Server 2008, vous devez utiliser la procédure stockée système pour ajouter un membre de rôle en tant que commentateur ci-dessous, à juste titre indiqué:
Vous pouvez également faire tout cela via l'interface graphique. Les informations de connexion que vous feriez via le dossier de sécurité dans SSMS au niveau de l'instance: Faites un clic droit sur la connexion -> Propriétés -> Securables. Pour le niveau de la base de données, vous le feriez via le dossier de sécurité au niveau de la base de données: faites un clic droit et sélectionnez un nouvel utilisateur -> choisissez la connexion que vous souhaitez utiliser dans votre liste de connexions au serveur / donnez un nom à l'utilisateur de la base de données -> allez à l'onglet d'appartenance pour sélectionner l'appartenance au rôle.
Le système d'aide de SQL Server, Books Online, est également une ressource fantastique pour la plupart des questions sur les autorisations - si vous déterminez que vous devez attribuer d'autres autorisations. Effectuez simplement une recherche pour la commande T-SQL à laquelle vous souhaitez accorder des autorisations et il existe généralement une section Autorisations pour cette commande dans l'article vous indiquant les autorisations requises pour effectuer cette action. Vous pouvez consulter l'article pour DBCC CHECKDB pour un exemple - environ 7/8 du bas de l'article est la section des autorisations.
la source
ALTER ROLE [db_owner] ADD MEMBER [frank]
ne fonctionne qu'à partir de SQL Server 2012. Si vous êtes sur SQL Server 2008, il faut aller avec le SP:EXEC sp_addrolemember 'db_owner', 'frank';
(Ref ici et ici )