web-dev-qa-db-fra.com

SQL Server - octroi d'autorisations à un schéma complet ou à un objet?

Je suis très vert en ce qui concerne le monde de la gestion des autorisations de base de données dans SQL Sever.

Gardons un exemple simple.

Supposons que le compte "admin" soit le propriétaire des schémas A, B et C.

Il existe un autre compte "minion" que vous souhaitez avoir tous les droits (mise à jour/supprimer/insérer/sélectionner/modifier) ​​sur n'importe quel objet (table/vue) créé sous les schémas A, B et C.

Est-ce possible? Ou devez-vous exécuter une déclaration de subvention à chaque fois que vous ajoutez une table/vue sous ces schémas? (me semble un peu idiot).

29
user45867

Vous pouvez GRANT des autorisations de schéma qui sont efficaces pour tout ce qui existe et tout ce qui existera dans ce schéma.

Accorder des autorisations de schéma

GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA :: <schema> TO <user>;

De plus, si vous souhaitez ensuite refuser les autorisations sur un certain objet dans ce schéma, vous pouvez le faire.

Refuser les autorisations d'objet

DENY INSERT ON OBJECT::<schema>.<object> TO <user>;
43
Mark Sinkinson

Pour simplifier un peu plus, vous pouvez utiliser des rôles pour faire le travail que vous recherchez.

Une fois que vous avez attribué des autorisations au rôle, vous pouvez simplement ajouter des utilisateurs au rôle. De cette façon, vous n'avez pas à gérer les autorisations pour les utilisateurs individuels. Les utilisateurs héritent des autorisations accordées au rôle.

Voici un exemple pour vous aider à démarrer:

 -- Create the database role
CREATE ROLE TableSelector AUTHORIZATION [dbo]
GO
 ---- Grant access rights to a specific schema in the database
GRANT 
      SELECT, INSERT, UPDATE, DELETE, ALTER 

ON SCHEMA::dbo
      TO TableSelector 
GO

-- Add an existing user to the new role created 
EXEC sp_addrolemember 'TableSelector', 'MyDBUser'
GO

-- Revoke access rights on a schema from a role 
DENY ALTER  -- you can customize here ...
ON SCHEMA::dbo
      TO TableSelector 
14
Kin Shah