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).
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>;
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