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

Gardons un exemple simple.

Dites que le compte « admin » est le propriétaire des schémas A, B et C.

Il y a un autre compte « minion » dont vous voulez avoir tous les droits (mettre à jour / supprimer / insert / select / alter) sur nimporte quel objet (table / vue) créé sous les schémas A, B et C.

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

Réponse

Vous pouvez GRANT autorisations de schéma qui sont effectives 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 refuser les autorisations sur un certain objet dans ce schéma, vous pouvez le faire.

Refuser les autorisations dobjet

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

Commentaires

  • Utilisez également des crochets si le schéma ou le nom dutilisateur contient des caractères spéciaux. Par exemple, .... SCHEMA :: [schema] TO [company-name/joshua.duxbury]
  • Ne fonctionne pas ' dans Azure, une idée pourquoi? (les commandes fonctionnent, mais SSMS apparaît et dit " que vous nêtes pas le propriétaire de la base de données .. bla bla bla. Vous ne pourrez peut-être pas enregistrer la table " et bien sûr, vous pouvez ' t (fait un Accorder TOUT à la base de données (affiche les permissions ' Base de données ', ' < nom de la base de données > ', TheUserId, ' Créer une table ' et state_desc de ' GRANT ') Y a-t-il une autre magie nécessaire? Ou Azure est-il uniquement utilisable par le Dbo?

Réponse

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

Une fois que vous avez attribué droits daccès au rôle, vous pouvez simplement ajouter des utilisateurs au rôle. De cette façon, vous navez pas à gérer les autorisations des 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 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *