GRANT - Autorisations sur un schéma (Transact-SQL)

S’applique à : SQL Server (toutes les versions prises en charge) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Accorde des autorisations sur un schéma.

Topic link iconConventions de la syntaxe Transact-SQL

Syntaxe

GRANT permission  [ ,...n ] ON SCHEMA :: schema_name  
    TO database_principal [ ,...n ]  
    [ WITH GRANT OPTION ]  
    [ AS granting_principal ]  

Notes

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 et versions antérieures, consultez Versions antérieures de la documentation.

Arguments

permission
Spécifie une autorisation qu'il est possible d'accorder sur un schéma. Pour obtenir la liste des autorisations, consultez la section Notes, plus loin dans cette rubrique.

ON SCHEMA :: schema*_name*
Indique le schéma sur lequel l'autorisation est accordée. Le qualificateur d’étendue :: est obligatoire.

database_principal
Spécifie le principal auquel l'autorisation est accordée. Celui-ci peut avoir l'une des valeurs suivantes :

  • d'un utilisateur de base de données ;
  • d'un rôle de base de données ;
  • d'un rôle d'application ;
  • d'un utilisateur de base de données mappé sur une connexion Windows ;
  • d'un utilisateur de base de données mappé sur un groupe Windows ;
  • d'un utilisateur de base de données mappé sur un certificat ;
  • d'un utilisateur de base de données mappé à une clé asymétrique ;
  • d'un utilisateur de base de données qui n'est pas mappé sur le principal d'un serveur.

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

AS granting_principal
Spécifie un principal dont le principal qui exécute cette requête dérive son droit d'accorder l'autorisation. Celui-ci peut avoir l'une des valeurs suivantes :

  • d'un utilisateur de base de données ;
  • d'un rôle de base de données ;
  • d'un rôle d'application ;
  • d'un utilisateur de base de données mappé sur une connexion Windows ;
  • d'un utilisateur de base de données mappé sur un groupe Windows ;
  • d'un utilisateur de base de données mappé sur un certificat ;
  • d'un utilisateur de base de données mappé à une clé asymétrique ;
  • d'un utilisateur de base de données qui n'est pas mappé sur le principal d'un serveur.

Remarques

Important

Dans certains cas, une combinaison d'autorisations ALTER et REFERENCE pourrait autoriser le bénéficiaire des autorisations à afficher des données ou à exécuter des fonctions non autorisées. Par exemple : un utilisateur avec une autorisation ALTER sur une table et une autorisation REFERENCE sur une fonction peut créer une colonne calculée sur une fonction et l’exécuter. Dans ce cas, l'utilisateur doit également disposer d'une autorisation SELECT sur la colonne calculée.

Un schéma est un élément sécurisable au niveau base de données contenu dans la base de données parente dans la hiérarchie des autorisations. Les autorisations les plus particulières et les plus limitées qu'il est possible d'accorder sur un schéma sont mentionnées ci-dessous, ainsi que les autorisations plus générales qui les englobent implicitement.

Autorisation de schéma Déduite d'une autorisation de schéma Impliquée par une autorisation de base de données
ALTER CONTROL ALTER ANY SCHEMA
CONTROL CONTROL CONTROL
CREATE SEQUENCE ALTER ALTER ANY SCHEMA
Suppression CONTROL Suppression
Exécutez CONTROL Exécutez
INSERT CONTROL INSERT
REFERENCES CONTROL REFERENCES
SELECT CONTROL SELECT
TAKE OWNERSHIP CONTROL CONTROL
UPDATE CONTROL UPDATE
VIEW CHANGE TRACKING CONTROL CONTROL
VIEW DEFINITION CONTROL VIEW DEFINITION

Attention

Un utilisateur bénéficiant de l'autorisation ALTER sur un schéma peut utiliser un chaînage des propriétés pour accéder à des éléments sécurisables dans d'autres schémas, notamment à ceux dont l'accès lui est explicitement refusé. En effet, le chaînage des propriétés passe outre les vérifications d'autorisations sur les objets référencés si le principal auquel ils appartiennent possède les objets qui font référence à ceux-ci. Un utilisateur bénéficiant de l'autorisation ALTER sur un schéma peut créer des procédures, des synonymes et des vues détenus par le propriétaire du schéma. Ces objets ont accès (via le chaînage des propriétés) aux informations dans les autres schémas détenus par le propriétaire du schéma. Dans la mesure du possible, vous devez éviter d'accorder l'autorisation ALTER sur un schéma dont le propriétaire possède d'autres schémas.

Par exemple, vous pouvez rencontrer ce problème dans les scénarios suivants. Ces scénarios supposent qu'un utilisateur, en l'occurrence U1, bénéficie de l'autorisation ALTER sur le schéma S1. L'utilisateur U1 n'est pas autorisé à accéder à un objet table, en l'occurrence T1, dans le schéma S2. Les schémas S1 et S2 sont détenus par le même propriétaire.

L'utilisateur U1 bénéficie de l'autorisation CREATE PROCEDURE sur la base de données et de l'autorisation EXECUTE sur le schéma S1. Par conséquent, l'utilisateur U1 peut créer une procédure stockée, puis accéder à l'objet refusé T1 dans la procédure stockée.

L'utilisateur U1 bénéficie de l'autorisation CREATE SYNONYM sur la base de données et de l'autorisation SELECT sur le schéma S1. Par conséquent, l'utilisateur U1 peut créer un synonyme dans le schéma S1 pour l'objet refusé T1, puis accéder à cet objet à l'aide du synonyme.

L'utilisateur U1 bénéficie de l'autorisation CREATE VIEW sur la base de données et de l'autorisation SELECT sur le schéma S1. Par conséquent, l'utilisateur U1 peut créer une vue dans le schéma S1 pour interroger les données de l'objet refusé T1, puis accéder à cet objet à l'aide de la vue.

Autorisations

Le fournisseur d'autorisations (ou le principal spécifié avec l'option AS) doit posséder l'autorisation elle-même avec l'option GRANT OPTION ou une autorisation plus élevée qui implique l'autorisation accordée.

En cas d'utilisation de l'option AS, ces critères s'appliquent.

AS granting_principal Autres autorisations nécessaires
Utilisateur de base de données Autorisation IMPERSONATE sur l'utilisateur, appartenance au rôle de base de données fixe db_securityadmin, appartenance au rôle de base de données fixe db_owner ou appartenance au rôle serveur fixe sysadmin.
Utilisateur de base de données mappé à une connexion Windows Autorisation IMPERSONATE sur l'utilisateur, appartenance au rôle de base de données fixe db_securityadmin, appartenance au rôle de base de données fixe db_owner ou appartenance au rôle serveur fixe sysadmin.
Utilisateur de base de données mappé à un groupe Windows Appartenance au groupe Windows, appartenance aux rôles de base de données fixe db_securityadmin ou db_owner ou appartenance au rôle serveur fixe sysadmin.
Utilisateur de base de données mappé à un certificat Appartenance aux rôles de base de données fixe db_securityadmin ou db_owner ou appartenance au rôle serveur fixe sysadmin.
Utilisateur de base de données mappé à une clé asymétrique Appartenance aux rôles de base de données fixe db_securityadmin ou db_owner ou appartenance au rôle serveur fixe sysadmin.
Utilisateur de base de données qui n'est mappé sur aucun principal d'un serveur Autorisation IMPERSONATE sur l'utilisateur, appartenance au rôle de base de données fixe db_securityadmin, appartenance au rôle de base de données fixe db_owner ou appartenance au rôle serveur fixe sysadmin.
Rôle de base de données Autorisation ALTER sur le rôle, appartenance au rôle de base de données fixe db_securityadmin, appartenance au rôle de base de données fixe db_owner ou appartenance au rôle serveur fixe sysadmin.
Rôle d'application Autorisation ALTER sur le rôle, appartenance au rôle de base de données fixe db_securityadmin, appartenance au rôle de base de données fixe db_owner ou appartenance au rôle serveur fixe sysadmin.

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

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

Exemples

R. Octroi de l'autorisation INSERT sur le schéma HumanResources à l'invité (guest)

GRANT INSERT ON SCHEMA :: HumanResources TO guest;  

B. Octroi de l'autorisation SELECT sur le schéma Person à l'utilisateur de base de données WilJo

GRANT SELECT ON SCHEMA :: Person TO WilJo WITH GRANT OPTION;  

Voir aussi

DENY (Autorisations de schéma) (Transact-SQL)
REVOKE - Révoquer les autorisations sur un schéma (Transact-SQL)
GRANT (Transact-SQL)
Autorisations (moteur de base de données)
Principaux (moteur de base de données)
CREATE CERTIFICATE (Transact-SQL)
CREATE ASYMMETRIC KEY (Transact-SQL)
CREATE APPLICATION ROLE (Transact-SQL)
Hiérarchie de chiffrement
sys.fn_builtin_permissions (Transact-SQL)
sys.fn_my_permissions (Transact-SQL)
HAS_PERMS_BY_NAME (Transact-SQL)