Partager via


DENY (Transact-SQL)

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) SQL analytics endpoint in Microsoft Fabric Warehouse in Microsoft Fabric

Refuse une autorisation à un principal. Empêche ce principal d'hériter de l'autorisation par ses appartenances à des groupes ou à des rôles. DENY est prioritaire par rapport à toutes les autres autorisations, sauf qu’elle ne s’applique pas aux propriétaires d’objets ou aux membres du rôle serveur fixe sysadmin. Note de sécurité Les membres du rôle serveur fixe sysadmin et les propriétaires d’objets ne peuvent pas se voir refuser des autorisations.

Conventions de la syntaxe Transact-SQL

Syntaxe

-- Syntax for SQL Server and Azure SQL Database  
  
-- Simplified syntax for DENY  
DENY   { ALL [ PRIVILEGES ] } 
     | <permission>  [ ( column [ ,...n ] ) ] [ ,...n ]  
    [ ON [ <class> :: ] securable ] 
    TO principal [ ,...n ]   
    [ CASCADE] [ AS principal ]  
[;]

<permission> ::=  
{ see the tables below }  
  
<class> ::=  
{ see the tables below }  
-- Syntax for Azure Synapse Analytics and Parallel Data Warehouse and Microsoft Fabric
  
DENY   
    <permission> [ ,...n ]  
    [ ON [ <class_> :: ] securable ]   
    TO principal [ ,...n ]  
    [ CASCADE ]  
[;]  
  
<permission> ::=  
{ see the tables below }  
  
<class> ::=  
{  
      LOGIN  
    | DATABASE  
    | OBJECT  
    | ROLE  
    | SCHEMA  
    | USER  
}  

Arguments

ALL
Cette option n'interdit pas toutes les autorisations possibles. Cette option revient à interdire les autorisations suivantes.

  • Si l'élément sécurisable est une base de données, ALL représente BACKUP DATABASE, BACKUP LOG, CREATE DATABASE, CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE TABLE et CREATE VIEW.

  • Si l'élément sécurisable est une fonction scalaire, ALL représente EXECUTE et REFERENCES.

  • Si l'élément sécurisable est une fonction table, ALL représente DELETE, INSERT, REFERENCES, SELECT et UPDATE.

  • Si l'élément sécurisable est une procédure stockée, ALL représente EXECUTE.

  • Si l'élément sécurisable est une table, ALL représente DELETE, INSERT, REFERENCES, SELECT et UPDATE.

  • Si l'élément sécurisable est une vue, ALL représente DELETE, INSERT, REFERENCES, SELECT et UPDATE.

Notes

La syntaxe DENY ALL est déconseillée. Cette fonctionnalité sera supprimée dans une version future de SQL Server. Évitez d'utiliser cette fonctionnalité dans de nouveaux travaux de développement, et prévoyez de modifier les applications qui utilisent actuellement cette fonctionnalité. Refusez des autorisations spécifiques à la place.

PRIVILEGES
Inclus pour la conformité aux normes ISO. Ne change pas le comportement de l'option ALL.

permission
Nom d'une autorisation. Les mappages valides des autorisations des éléments sécurisables sont décrits dans les sous-rubriques qui suivent.

column
Spécifie le nom de la colonne d'une table à laquelle les interdictions s'appliquent. Les parenthèses () sont requises.

class
Indique la classe de l'élément sécurisable sur laquelle l'autorisation est refusée. Le qualificateur d’étendue :: est obligatoire.

securable
Indique l'élément sécurisable sur lequel l'autorisation est refusée.

TO principal
Nom d’un principal. Les principaux auxquels il est possible de refuser des autorisations sur un élément sécurisable varient en fonction de l'élément sécurisable. Voir les rubriques ci-dessous relatives aux éléments sécurisables pour connaître les combinaisons acceptées.

CASCADE
Indique que l'autorisation est refusée au principal spécifié et à tous les autres principaux auxquels le principal a accordé cette autorisation. Nécessaire lorsque le principal a l'autorisation avec l'option GRANT OPTION.

AS principal
Spécifie le principal à partir duquel le principal qui exécute cette requête dérive son droit de refuser l'autorisation. Utilisez la clause AS principal pour indiquer que le principal enregistré comme entité refusant l’autorisation doit être un principal autre que la personne qui exécute l’instruction. Supposez par exemple que l’utilisateur Mary est le principal_id 12 et que l’utilisateur Raul est le principal 15. Mary exécute DENY SELECT ON OBJECT::X TO Steven WITH GRANT OPTION AS Raul; Maintenant la table sys.database_permissions indique que la grantor_principal_id de l’instruction deny a été 15 (Raul), même si l’instruction a été exécutée par l’utilisateur 13 (Mary).

L’utilisation de AS dans cette instruction n’implique pas la possibilité d’emprunter l’identité d’un autre utilisateur.

Notes

La syntaxe complète de l'instruction DENY est complexe. Le diagramme de syntaxe ci-dessus a été simplifié pour attirer l'attention sur sa structure. La syntaxe complète du refus des autorisations sur des éléments sécurisables particuliers est décrite dans les rubriques ci-dessous.

DENY échoue si CASCADE n'est pas spécifié lors du refus d'une autorisation à un principal auquel cette autorisation a été accordée avec GRANT OPTION.

La procédure système stockée sp_helprotect répertorie les autorisations sur un élément sécurisable au niveau base de données.

Dans Microsoft Fabric, CREATE USER ne peut pas être exécuté explicitement actuellement. Lorsque GRANT ou DENY est exécuté, l’utilisateur est créé automatiquement.

Attention

Une instruction DENY de niveau table n'a pas la priorité sur une instruction GRANT de niveau colonne. Cette incohérence dans la hiérarchie des autorisations a été conservée pour des raisons de compatibilité descendante. Elle sera supprimée dans une version ultérieure.

Attention

Le refus de l'autorisation CONTROL sur une base de données refuse implicitement l'autorisation CONNECT sur la base de données. Un principal dont l'autorisation CONTROL est refusée sur une base de données ne pourra pas se connecter à cette base de données.

Attention

Le refus de l'autorisation CONTROL SERVER entraîne implicitement le refus de l'autorisation CONNECT SQL sur le serveur. Un principal auquel l'autorisation CONTROL SERVER est refusée sur un serveur ne pourra pas se connecter à ce serveur.

Autorisations

L'appelant (ou le principal spécifié avec l'option AS) doit avoir l'autorisation CONTROL sur l'élément sécurisable ou une autorisation plus élevée qui implique cette autorisation. Si vous utilisez l'option AS, le principal spécifié doit être propriétaire de l'élément sécurisable auquel l'autorisation est refusée.

Les détenteurs de l'autorisation CONTROL SERVER, tels que les membres du rôle de serveur fixe sysadmin, peuvent refuser une autorisation sur n'importe quel élément sécurisable du serveur. Les détenteurs de l'autorisation CONTROL sur la base de données, tels que les membres du rôle de base de données fixe db_owner, peuvent refuser une autorisation sur n'importe quel élément sécurisable de la base de données. Les détenteurs de l'autorisation CONTROL sur un schéma peuvent refuser une autorisation sur n'importe quel objet dans ce schéma. Si vous utilisez la clause AS, le principal spécifié doit être propriétaire de l'élément sécurisable auquel les autorisations sont refusées.

Exemples

Le tableau suivant répertorie les éléments sécurisables et les rubriques qui décrivent leur syntaxe.

Éléments sécurisables Syntaxe
Rôle d'application DENY – refus d'autorisations de principal de base de données (Transact-SQL)
Assembly DENY - Autorisations sur un assembly (Transact-SQL)
Clé asymétrique DENY - Autorisations de clé asymétrique (Transact-SQL)
Groupe de disponibilité DENY (Refus d'autorisations de groupe de disponibilité) (Transact-SQL)
Certificat Autorisations de certificat DENY (Transact-SQL)
Contrat Autorisations DENY dans Service Broker (Transact-SQL)
Base de données DENY – refus d'autorisations de base de données (Transact-SQL)
Informations d’identification délimitées à la base de données DENY - Refuser des autorisations sur des informations d’identification délimitées à la base de données (Transact-SQL)
Point de terminaison DENY – refus d'autorisations de point de terminaison (Transact-SQL)
Catalogue de texte intégral DENY - Autorisations relatives au texte intégral (Transact-SQL)
Liste de mots vides de texte intégral DENY - Autorisations relatives au texte intégral (Transact-SQL)
Fonction DENY – refus d'autorisations d'objet (Transact-SQL)
Connexion DENY – refus d'autorisations du principal de serveur (Transact-SQL)
Type de message Autorisations DENY dans Service Broker (Transact-SQL)
Object DENY – refus d'autorisations d'objet (Transact-SQL)
File d'attente DENY – refus d'autorisations d'objet (Transact-SQL)
Liaisons de service distant Autorisations DENY dans Service Broker (Transact-SQL)
Role DENY – refus d'autorisations de principal de base de données (Transact-SQL)
Routage Autorisations DENY dans Service Broker (Transact-SQL)
schéma DENY (Autorisations de schéma) (Transact-SQL)
Liste de propriétés de recherche Autorisations de liste des propriétés de recherche DENY (Transact-SQL)
Serveur DENY - Refuser des autorisations sur un serveur (Transact-SQL)
Service Autorisations DENY dans Service Broker (Transact-SQL)
Procédure stockée DENY – refus d'autorisations d'objet (Transact-SQL)
Clé symétrique DENY – refus d'autorisations de clé symétrique (Transact-SQL)
Synonyme DENY – refus d'autorisations d'objet (Transact-SQL)
Objets système DENY – refus d'autorisations d'objet système (Transact-SQL)
Table de charge de travail DENY – refus d'autorisations d'objet (Transact-SQL)
Type DENY – refus d'autorisations de type (Transact-SQL)
Utilisateur DENY – refus d'autorisations de principal de base de données (Transact-SQL)
Affichage DENY – refus d'autorisations d'objet (Transact-SQL)
Collection de schémas XML DENY – refus d'autorisations de collection de schémas XML (Transact-SQL)

Voir aussi

REVOKE (Transact-SQL)
sp_addlogin (Transact-SQL)
sp_adduser (Transact-SQL)
sp_changedbowner (Transact-SQL)
sp_dropuser (Transact-SQL)
sp_helprotect (Transact-SQL)
sp_helpuser (Transact-SQL)