GRANT (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Point de terminaison analytique SQL dans Microsoft FabricEntrepôt dans Microsoft Fabric

Accorde des autorisations à un principal sur un élément sécurisable. Le concept général est de GRANT <some permission> ON <some object> TO <some user, login, or group>. Pour obtenir une présentation générale des autorisations, consultez Autorisations (Moteur de base de données).

Conventions de la syntaxe Transact-SQL

Syntaxe

Syntaxe pour SQL Server et Azure SQL Database.

-- Simplified syntax for GRANT
GRANT { ALL [ PRIVILEGES ] }
      | permission [ ( column [ , ...n ] ) ] [ , ...n ]
      [ ON [ class :: ] securable ] TO principal [ , ...n ]
      [ WITH GRANT OPTION ] [ AS principal ]

Syntaxe pour Azure Synapse Analytics et Parallel Data Warehouse et Microsoft Fabric.

GRANT
    <permission> [ , ...n ]
    [ ON [ <class_type> :: ] securable ]
    TO principal [ , ...n ]
    [ WITH GRANT OPTION ]
[;]

<permission> ::=
{ see the tables below }

<class_type> ::=
{
      LOGIN
    | DATABASE
    | OBJECT
    | ROLE
    | SCHEMA
    | USER
}

Remarque

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 (12.x) et versions antérieures, consultez la Documentation sur les versions antérieures.

Arguments

ALL

Cette option est déconseillée mais maintenue uniquement pour la compatibilité descendante. Il n’accorde pas toutes les autorisations possibles. L’octroi ALL équivaut à accorder les autorisations suivantes.

Élément sécurisable Autorisations
Base de données BACKUP DATABASE, , BACKUP LOG, CREATE DEFAULTCREATE DATABASE, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE TABLE, etCREATE VIEW
Fonction scalaire EXECUTE et REFERENCES
Fonction table DELETE, INSERT, REFERENCES, SELECT et UPDATE
Procédure stockée EXECUTE
Table DELETE, INSERT, REFERENCES, SELECT et UPDATE
Affichage DELETE, INSERT, REFERENCES, SELECT et UPDATE

PRIVILEGES

Inclus pour la conformité aux normes ISO. Ne modifie pas le comportement de ALL.

permission

Nom d’une autorisation. Les mappages valides des autorisations aux éléments sécurisables sont décrits dans les sections suivantes.

column

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

class

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

securable

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

TO principal

Nom d’un principal. Les principaux auxquels il est possible d'accorder des autorisations sur un élément sécurisable varient en fonction de l'élément sécurisable. Consultez les sections suivantes pour connaître les combinaisons valides.

GRANT OPTION

Indique que le détenteur de l'autorisation a également la possibilité d'accorder l'autorisation spécifiée à d'autres principaux.

AS principal

Utilisez la AS <principal> clause pour indiquer que le principal enregistré en tant que bénéficiaire de l’autorisation doit être un principal autre que la personne exécutant l’instruction. Par exemple, présumez que l’utilisateur Mary a un 12principal_id de , et l’utilisateur Raul est principal 15. Mary exécute GRANT SELECT ON OBJECT::X TO Steven WITH GRANT OPTION AS Raul; Maintenant la sys.database_permissions table indique que l’instruction grantor_prinicpal_id a été 15 (Raul) même si l’instruction a été exécutée par l’utilisateur 12 (Mary).

L’utilisation de la AS clause n’est généralement pas recommandée, sauf si vous devez définir explicitement la chaîne d’autorisations. Pour plus d’informations, consultez Résumé de l’algorithme de vérification des autorisations.

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

Notes

La syntaxe complète de l’instruction GRANT est complexe. Le diagramme de syntaxe précédent a été simplifié pour attirer l’attention sur sa structure. La syntaxe complète pour accorder des autorisations sur des éléments sécurisables spécifiques est décrite dans les articles répertoriés plus loin dans cet article.

L’instruction REVOKE peut être utilisée pour supprimer des autorisations accordées, et l’instruction DENY peut être utilisée pour empêcher un principal d’obtenir une autorisation spécifique via un GRANT.

L’octroi d’une autorisation supprime DENY ou REVOKE de cette autorisation sur l’élément sécurisable spécifié. Si la même autorisation est refusée à une étendue supérieure qui contient l’élément sécurisable, elle DENY est prioritaire. Mais la révocation de l’autorisation accordée à une étendue plus élevée n’est pas prioritaire.

Les autorisations au niveau base de données sont accordées sur l'étendue de la base de données spécifiée. Si un utilisateur a besoin d'autorisations sur des objets dans une autre base de données, créez le compte de l'utilisateur dans cette autre base de données ou autorisez le compte de l'utilisateur à accéder à la fois à cette autre base de données et à la base de données active.

Attention

Un niveau DENY table n’est pas prioritaire sur un niveau GRANTde 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.

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

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

WITH GRANT OPTION

Spécifie GRANT ... WITH GRANT OPTION que le principal de sécurité recevant l’autorisation est autorisé à accorder l’autorisation spécifiée à d’autres comptes de sécurité. Lorsque le principal qui reçoit l’autorisation est un rôle ou un groupe Windows, la AS clause doit être utilisée lorsque l’autorisation d’objet doit être accordée aux utilisateurs qui ne sont pas membres du groupe ou du rôle. Étant donné que seul un utilisateur, plutôt qu’un groupe ou un rôle, peut exécuter une GRANT instruction, un membre spécifique du groupe ou du rôle doit utiliser la AS clause pour appeler explicitement l’appartenance au rôle ou au groupe lors de l’octroi de l’autorisation. L’exemple suivant montre comment l’utilisation WITH GRANT OPTION est utilisée lorsqu’elle est accordée à un rôle ou à un groupe Windows.

-- Execute the following as a database owner
GRANT EXECUTE ON TestProc TO TesterRole WITH GRANT OPTION;
EXEC sp_addrolemember TesterRole, User1;

-- Execute the following as User1
-- The following fails because User1 does not have the permission as the User1
GRANT EXECUTE ON TestProc TO User2;

-- The following succeeds because User1 invokes the TesterRole membership
GRANT EXECUTE ON TestProc TO User2 AS TesterRole;

Graphique des autorisations SQL Server

Pour obtenir un graphique de taille d’affiche de toutes les autorisations Moteur de base de données au format PDF, consultez https://aka.ms/sql-permissions-poster.

Autorisations

Le bénéficiaire (ou le principal spécifié avec l’option AS ) doit avoir l’autorisation elle-même avec GRANT OPTION, ou une autorisation supérieure qui implique l’autorisation accordée. Si vous utilisez l’option, des exigences supplémentaires s’appliquent AS . Pour plus d’informations, consultez l’article sur les éléments sécurisables.

Les propriétaires d'objets peuvent accorder des autorisations sur les objets qu'ils possèdent. Les principaux disposant CONTROL d’une autorisation sur un élément sécurisable peuvent accorder l’autorisation sur cet élément sécurisable.

Les bénéficiaires d’autorisations CONTROL SERVER , tels que les membres du rôle serveur fixe sysadmin , peuvent accorder n’importe quelle autorisation sur n’importe quel élément sécurisable sur le serveur. Les bénéficiaires d’autorisations sur une base de CONTROL données, tels que les membres du rôle de base de données fixe db_owner , peuvent accorder n’importe quelle autorisation sur n’importe quelle sécurisable dans la base de données. Les bénéficiaires d’autorisations CONTROL sur un schéma peuvent accorder n’importe quelle autorisation sur n’importe quel objet du schéma.

Exemples

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

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