DENY – refus d'autorisations d'objet système (Transact-SQL)
Permet de refuser des autorisations sur des objets système tels que des procédures stockées, des procédures stockées étendues, des fonctions et des vues.
Syntaxe
DENY { SELECT | EXECUTE } ON [ sys.]system_object TO principal
Arguments
[ sys.]
L'identificateur sys est requis uniquement lorsque vous faites référence à des affichages catalogue ou à des vues de gestion dynamique.system_object
Spécifie l'objet sur lequel l'autorisation doit être refusée.principal
Spécifie l'entité de sécurité pour laquelle l'autorisation doit être révoquée.
Notes
Cette instruction permet de refuser des autorisations sur des procédures stockées, procédures stockées étendues, fonctions table, fonctions scalaires, vues, affichages catalogue, vues de compatibilité, vues INFORMATION_SCHEMA, vues de gestion dynamique et tables système installées par SQL Server. Chacun de ces objets système existe sous la forme d'un enregistrement unique dans la base de données des ressources (mssqlsystemresource). La base de données des ressources est en lecture seule. Un lien à l'objet est exposé comme un enregistrement dans le schéma sys de chaque base de données.
La résolution de noms par défaut permet de résoudre les noms de procédure non qualifiés dans la base de données des ressources. Par conséquent, l'identificateur sys est requis uniquement lorsque vous spécifiez des affichages catalogue et des vues de gestion dynamique.
Attention |
---|
Le refus d'autorisations sur des objets système entraîne l'échec des applications qui en dépendent. SQL Server Management Studio utilise les affichages catalogue et peut ne pas fonctionner comme prévu si vous modifiez les autorisations par défaut sur les affichages catalogue. |
Le refus d'autorisations sur des déclencheurs et sur des colonnes d'objets système n'est pas pris en charge.
Les autorisations sur les objets système sont conservées lors d'une mise à niveau de SQL Server.
Les objets système sont consultables dans l'affichage catalogue sys.system_objects. Les autorisations sur les objets système sont consultables dans l'affichage catalogue sys.database_permissions, dans la base de données master.
La requête ci-dessous retourne des informations sur les autorisations des objets système :
SELECT * FROM master.sys.database_permissions AS dp
JOIN sys.system_objects AS so
ON dp.major_id = so.object_id
WHERE dp.class = 1 AND so.parent_object_id = 0 ;
GO
Autorisations
Requiert l'autorisation CONTROL SERVER.
Exemples
Dans l'exemple ci-dessous, l'autorisation EXECUTE sur xp_cmdshell est refusée à public.
DENY EXECUTE ON sys.xp_cmdshell TO public;
GO