Prise en main des autorisations du moteur de base de donnéesGetting Started with Database Engine Permissions

Cette rubrique s’applique à : OuiSQL ServerOuibase de données SQL AzureOuiAzure SQL Data Warehouse Oui Parallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL ServeryesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

Les autorisations dans le Moteur de base de donnéesDatabase Engine sont gérées au niveau du serveur, par le biais des connexions et des rôles serveur, et au niveau de la base de données, par le biais des utilisateurs de base de données et des rôles de base de données.Permissions in the Moteur de base de donnéesDatabase Engine are managed at the server level through logins and server roles, and at the database level through database users and database roles. Le modèle du Base de données SQLSQL Database expose le même système dans chaque base de données, mais les autorisations de niveau serveur ne sont pas disponibles.The model for Base de données SQLSQL Database exposes the same system within each database, but the server level permissions are not available. Cette rubrique passe en revue les concepts de sécurité de base, puis décrit une implémentation classique des autorisations.This topic reviews some basic security concepts and then describes a typical implementation of the permissions.

Principaux de sécuritéSecurity Principals

Le principal de sécurité est le nom officiel des identités qui utilisent SQL ServerSQL Server et qui peuvent être autorisées à prendre des mesures.Security principal is the official name of the identities that use SQL ServerSQL Server and that can be assigned permission to take actions. Ce sont généralement des personnes ou des groupes de personnes, mais il peut également s’agir d’entités qui se font passer pour des personnes.They are usually people or groups of people, but can be other entities that pretend to be people. Les principaux de sécurité peuvent être créés et gérés à l’aide des instructions Transact-SQLTransact-SQL répertoriées ou de SQL Server Management StudioSQL Server Management Studio.The security principals can be created and managed using the Transact-SQLTransact-SQL listed, or by using SQL Server Management StudioSQL Server Management Studio.

ConnexionsLogins
Les connexions sont des comptes d’utilisateur qui permettent d’ouvrir une session sur le Moteur de base de données SQL ServerSQL Server Database Engine.Logins are individual user accounts for logging on to the Moteur de base de données SQL ServerSQL Server Database Engine. SQL ServerSQL Server et Base de données SQLSQL Database prennent en charge les connexions basées sur l’authentification Windows et les connexions basées sur l’authentification SQL ServerSQL Server . and Base de données SQLSQL Database support logins based on Windows authentication and logins based on SQL ServerSQL Server authentication. Pour plus d’informations sur les deux types de connexions, consultez Choose an Authentication Mode.For information about the two types of logins, see Choose an Authentication Mode.

Rôles serveur fixesFixed Server Roles
Dans SQL ServerSQL Server, les rôles serveur fixes sont un ensemble de rôles préconfigurés qui fournissent un groupe pratique d’autorisations de niveau serveur.In SQL ServerSQL Server, fixed server roles are a set of pre-configured roles that provide convenient group of server-level permissions. Les connexions peuvent être ajoutées aux rôles à l’aide de l’instruction ALTER SERVER ROLE ... ADD MEMBER .Logins can be added to the roles using the ALTER SERVER ROLE ... ADD MEMBER statement. Pour plus d’informations, consultez ALTER SERVER ROLE (Transact-SQL).For more information, see ALTER SERVER ROLE (Transact-SQL). Base de données SQLSQL Database ne prend pas en charge les rôles serveur fixes, mais a deux rôles dans la base de données MASTER (dbmanager et loginmanager) qui agissent comme des rôles serveur. does not support the fixed server roles, but has two roles in the master database (dbmanager and loginmanager) that act like server roles.

Rôles de serveur définis par l’utilisateurUser-defined Server Roles
Dans SQL ServerSQL Server, vous pouvez créer vos propres rôles serveur et leur attribuer des autorisations de niveau serveur.In SQL ServerSQL Server, you can create your own server roles and assign server-level permissions to them. Les connexions peuvent être ajoutées aux rôles de serveur à l’aide de l’instruction ALTER SERVER ROLE ... ADD MEMBER .Logins can be added to the server roles using the ALTER SERVER ROLE ... ADD MEMBER statement. Pour plus d’informations, consultez ALTER SERVER ROLE (Transact-SQL).For more information, see ALTER SERVER ROLE (Transact-SQL). Base de données SQLSQL Database ne prend pas en charge les rôles serveur définis par l’utilisateur. does not support the user-defined server roles.

Utilisateurs de base de donnéesDatabase Users
Pour qu’une connexion puisse accéder à une base de données, un utilisateur de base de données doit être créé dans une base de données, puis mappé à la connexion.Logins are granted access to a database by creating a database user in a database and mapping that database user to login. En général, le nom d’utilisateur de base de données est le même que le nom de connexion, mais ce n’est pas obligatoire.Typically the database user name is the same as the login name, though it does not have to be the same. Chaque utilisateur de base de données est mappé à une seule connexion.Each database user maps to a single login. Une connexion ne peut être mappée qu’à un seul utilisateur dans une base de données, mais peut être mappée comme utilisateur de base de données dans plusieurs bases de données.A login can be mapped to only one user in a database, but can be mapped as a database user in several different databases.

En outre, les utilisateurs de base de données peuvent être créés sans avoir de connexion correspondante.Database users can also be created that do not have a corresponding login. Ils sont appelés utilisateurs de base de données à relation contenant-contenu.These are called contained database users. MicrosoftMicrosoft encourage l’utilisation de ces utilisateurs, car elle facilite le déplacement de votre base de données vers un autre serveur. encourages the use of contained database users because it makes it easier to move your database to a different server. Comme une connexion, un utilisateur de base de données à relation contenant-contenu peut utiliser l’authentification Windows ou l’authentification SQL ServerSQL Server .Like a login, a contained database user can use either Windows authentication or SQL ServerSQL Server authentication. Pour plus d’informations, consultez Utilisateurs de base de données à relation contenant-contenu - Rendre votre base de données portable.For more information, see Contained Database Users - Making Your Database Portable.

Il existe 12 types d’utilisateurs, qui varient légèrement selon la façon dont ils s’authentifient et qui ils représentent.There are 12 types of users with slight differences in how they authenticate, and who they represent. Pour voir une liste d’utilisateurs, consultez CREATE USER (Transact-SQL).To see a list of users, see CREATE USER (Transact-SQL).

Rôles de base de données fixesFixed Database Roles
Les rôles de base de données fixes sont un ensemble de rôles préconfigurés qui fournissent un groupe pratique d’autorisations de niveau base de données.Fixed database roles are a set of pre-configured roles that provide convenient group of database-level permissions. Les utilisateurs de base de données et les rôles de base de données définis par l’utilisateur peuvent être ajoutés aux rôles de base de données fixes à l’aide de l’instruction ALTER ROLE ... ADD MEMBER.Database users and user-defined database roles can be added to the fixed database roles using the ALTER ROLE ... ADD MEMBER statement. Pour plus d’informations, consultez ALTER ROLE (Transact-SQL).For more information, see ALTER ROLE (Transact-SQL).

Rôles de base de données définis par l’utilisateurUser-defined Database Roles
Les utilisateurs ayant l’autorisation CREATE ROLE peuvent créer des rôles de base de données définis par l’utilisateur pour représenter des groupes d’utilisateurs disposant d’autorisations courantes.Users with the CREATE ROLE permission can create new user-defined database roles to represent groups of users with common permissions. En général, les autorisations sont accordées ou refusées à l’ensemble du rôle, ce qui simplifie la gestion et la surveillance des autorisations.Typically permissions are granted or denied to the entire role, simplifying permissions management and monitoring. Les utilisateurs de base de données peuvent être ajoutés aux rôles de base de données à l’aide de l’instruction ALTER ROLE ... ADD MEMBER .Database users can be added to the database roles by using the ALTER ROLE ... ADD MEMBER statement. Pour plus d’informations, consultez ALTER ROLE (Transact-SQL).For more information, see ALTER ROLE (Transact-SQL).

Autres principauxOther principals
Des principaux de sécurité supplémentaires non présentés ici incluent les rôles d’application, ainsi que les connexions et les utilisateurs basés sur des certificats ou des clés asymétriques.Additional security principals not discussed here include application roles, and logins and users based on certificates or asymmetric keys.

Pour obtenir un graphique montrant les relations entre les utilisateurs Windows, les groupes Windows, les connexions et les utilisateurs de base de données, consultez Create a Database User.For a graphic showing the relationships between Windows users, Windows groups, logins, and database users, see Create a Database User.

Scénario typiqueTypical Scenario

L’exemple suivant illustre une méthode courante et recommandée pour configurer des autorisations.The following example represents a common and recommended method of configuring permissions.

Dans Active Directory ou Azure Active Directory :In Active Directory or Azure Active Directory:

  1. Créez un utilisateur Windows pour chaque personne.Create a Windows user for each person.

  2. Créez des groupes Windows qui représentent les unités de travail et les fonctions de travail.Create Windows groups that represent the work units and the work functions.

  3. Ajoutez les utilisateurs Windows aux groupes Windows.Add the Windows users to the Windows groups.

Si la personne qui se connecte doit se connecter à plusieurs bases de donnéesIf the person connecting will be connecting to many databases

  1. Créez une connexion pour les groupes Windows.Create a login for the Windows groups. (Si vous utilisez l’authentification SQL ServerSQL Server , ignorez les étapes d’Active Directory et créez ici des connexions d’authentification SQL ServerSQL Server .)(If using SQL ServerSQL Server authentication, skip the Active Directory steps, and create SQL ServerSQL Server authentication logins here.)

  2. Dans la base de données utilisateur, créez un utilisateur de base de données pour la connexion représentant les groupes Windows.In the user database, create a database user for the login representing the Windows groups.

  3. Dans la base de données utilisateur, créez un ou plusieurs rôles de base de données définis par l’utilisateur, chacun représentant une fonction similaire.In the user database, create one or more user-defined database roles, each representing a similar function. Par exemple, analyste financier et analyste des ventes.For example financial analyst, and sales analyst.

  4. Ajoutez les utilisateurs de base de données à un ou plusieurs rôles de base de données définis par l’utilisateur.Add the database users to one or more user-defined database roles.

  5. Accordez des autorisations aux rôles de base de données définis par l’utilisateur.Grant permissions to the user-defined database roles.

Si la personne qui se connecte doit se connecter à une seule base de donnéesIf the person connecting will be connecting to only one database

  1. Créez une connexion pour les groupes Windows.Create a login for the Windows groups. (Si vous utilisez l’authentification SQL ServerSQL Server , ignorez les étapes d’Active Directory et créez ici des connexions d’authentification SQL ServerSQL Server .)(If using SQL ServerSQL Server authentication, skip the Active Directory steps, and create SQL ServerSQL Server authentication logins here.)

  2. Dans la base de données utilisateur, créez un utilisateur de base de données à relation contenant-contenu pour le groupe Windows.In the user database, create a contained database user for the Windows group. (Si vous utilisez l’authentification SQL ServerSQL Server , ignorez les étapes d’Active Directory et créez ici une authentification SQL ServerSQL Server d’utilisateur de base de données à relation contenant-contenu.)(If using SQL ServerSQL Server authentication, skip the Active Directory steps, and create contained database user SQL ServerSQL Server authentication here.

  3. Dans la base de données utilisateur, créez un ou plusieurs rôles de base de données définis par l’utilisateur, chacun représentant une fonction similaire.In the user database, create one or more user-defined database roles, each representing a similar function. Par exemple, analyste financier et analyste des ventes.For example financial analyst, and sales analyst.

  4. Ajoutez les utilisateurs de base de données à un ou plusieurs rôles de base de données définis par l’utilisateur.Add the database users to one or more user-defined database roles.

  5. Accordez des autorisations aux rôles de base de données définis par l’utilisateur.Grant permissions to the user-defined database roles.

    En général, à ce stade, un utilisateur Windows est devenu membre d’un groupe Windows.The typical result at this point, is that a Windows user is a member of a Windows group. Le groupe Windows dispose d’une connexion dans SQL ServerSQL Server ou Base de données SQLSQL Database.The Windows group has a login in SQL ServerSQL Server or Base de données SQLSQL Database. La connexion est mappée à une identité d’utilisateur dans la base de données utilisateur.The login is mapped to a user identity in the user-database. L’utilisateur est membre d’un rôle de base de données.The user is a member of a database role. Vous devez maintenant ajouter des autorisations au rôle.Now you need to add permissions to the role.

Affectation d’autorisationsAssigning Permissions

La plupart des instructions d’autorisation ont le format suivant :Most permission statements have the format:

AUTHORIZATION  PERMISSION  ON  SECURABLE::NAME  TO  PRINCIPAL;  
  • AUTHORIZATION doit être GRANT, REVOKE ou DENY.AUTHORIZATION must be GRANT, REVOKE or DENY.

  • PERMISSION établit l’action autorisée ou interdite.The PERMISSION establishes what action is allowed or prohibited. SQL Server 2016 (13.x)SQL Server 2016 (13.x) peut spécifier 230 autorisations. can specify 230 permissions. Base de données SQLSQL Database a moins d’autorisations, car certaines actions ne sont pas pertinentes dans Azure. has fewer permissions because some actions are not relevant in Azure. Les autorisations sont répertoriées dans la rubrique Autorisations (moteur de base de données) et dans le graphique ci-dessous.The permissions are listed in the topic Permissions (Database Engine) and in the chart referenced below.

  • ON SECURABLE::NAME est le type d’élément sécurisable (serveur, objet serveur, base de données ou objet de base de données) et son nom.ON SECURABLE::NAME is the type of securable (server, server object, database, or database object) and its name. Certaines autorisations n’exigent pas ON SECURABLE::NAME , car le contexte ne le justifie pas.Some permissions do not require ON SECURABLE::NAME because it is unambiguous or inappropriate in the context. Par exemple, l’autorisation CREATE TABLE n’exige pas la clause ON SECURABLE::NAME .For example the CREATE TABLE permission doesn’t require the ON SECURABLE::NAME clause. (Par exemple, GRANT CREATE TABLE TO Mary; permet à Mary de créer des tables.)(For example GRANT CREATE TABLE TO Mary; allows Mary to create tables.)

  • PRINCIPAL est le principal de sécurité (connexion, utilisateur ou rôle) qui reçoit ou perd l’autorisation.PRINCIPAL is the security principal (login, user, or role) which receives or loses the permission. Accordez des autorisations aux rôles chaque fois que possible.Grant permissions to roles whenever possible.

    Dans l’exemple d’instruction grant suivante, l’autorisation UPDATE est accordée sur la table ou vue Parts contenue dans le schéma Production au rôle nommé PartsTeam:The following example grant statement, grants the UPDATE permission on the Parts table or view which is contained in the Production schema to the role named PartsTeam:

GRANT UPDATE ON OBJECT::Production.Parts TO PartsTeam;  

Les autorisations sont accordées aux principaux de sécurité (connexions, utilisateurs et rôles) à l’aide de l’instruction GRANT .Permissions are granted to security principals (logins, users, and roles) by using the GRANT statement. Les autorisations sont refusées explicitement à l’aide de la commande DENY .Permissions are explicitly denied by using the DENY command. Une autorisation précédemment accordée ou refusée est supprimée à l’aide de l’instruction REVOKE .A previously granted or denied permission is removed by using the REVOKE statement. Les autorisations sont cumulatives : l’utilisateur bénéficie de toutes les autorisations accordées à lui-même, à la connexion et à toute appartenance à un groupe. Toutefois, tout refus d’autorisation remplace toutes les attributions.Permissions are cumulative, with the user receiving all the permissions granted to the user, login, and any group memberships; however any permission denial overrides all grants.

Conseil

Une erreur courante consiste à tenter de supprimer un GRANT à l’aide de DENY au lieu de REVOKE.A common mistake is to attempt to remove a GRANT by using DENY instead of REVOKE. Cela peut engendrer des problèmes quand un utilisateur reçoit des autorisations de plusieurs sources, ce qui est assez courant.This can cause problems when a user receives permissions from multiple sources; which is quite common. L’exemple suivant illustre le principal.The following example demonstrates the principal.

Le groupe Sales reçoit des autorisations SELECT sur la table OrderStatus par le biais de l’instruction GRANT SELECT ON OBJECT::OrderStatus TO Sales;.The Sales group receives SELECT permissions on the OrderStatus table through the statement GRANT SELECT ON OBJECT::OrderStatus TO Sales;. L’utilisateur Ted est membre du rôle Sales.User Ted is a member of the Sales role. Ted se voit également accorder l’autorisation SELECT sur la table OrderStatus sous son propre nom d’utilisateur par le biais de l’instruction GRANT SELECT ON OBJECT::OrderStatus TO Ted;.Ted has also been granted SELECT permission to the OrderStatus table under his own user name through the statement GRANT SELECT ON OBJECT::OrderStatus TO Ted;. Supposons que l’administrateur souhaite supprimer le GRANT associé au rôle Sales.Presume the administer wishes to remove the GRANT to the Sales role.

  • Si l’administrateur exécute correctement REVOKE SELECT ON OBJECT::OrderStatus TO Sales;, Ted conserve l’accès SELECT à la table OrderStatus par le biais de son instruction GRANT individuelle.If the administrator correctly executes REVOKE SELECT ON OBJECT::OrderStatus TO Sales;, then Ted will retain SELECT access to the OrderStatus table through his individual GRANT statement.

  • Par contre, si l’administrateur exécute DENY SELECT ON OBJECT::OrderStatus TO Sales; incorrectement, Ted, en tant que membre du rôle Sales, se voit refuser l’autorisation SELECT , car l’instruction DENY associée à Sales remplace son instruction GRANTindividuelle.If the administrator incorrectly executes DENY SELECT ON OBJECT::OrderStatus TO Sales; then Ted, as a member of the Sales role, will be denied the SELECT permission because the DENY to Sales overrides his individual GRANT.

Note

Les autorisations peuvent être configurées à l’aide de Management StudioManagement Studio.Permissions can be configured using Management StudioManagement Studio. Recherchez l’élément sécurisable dans l’Explorateur d’objets, cliquez dessus avec le bouton droit, puis sélectionnez Propriétés.Find the securable in Object Explorer, right-click the securable, and then click Properties. Sélectionnez la page Autorisations .Select the Permissions page. Pour plus d’aide sur l’utilisation de la page des autorisations, consultez Permissions or Securables Page.For help on using the permission page, see Permissions or Securables Page.

Hiérarchie d’autorisationsPermission Hierarchy

Les autorisations ont une hiérarchie parent/enfant.Permissions have a parent/child hierarchy. Autrement dit, si vous accordez l’autorisation SELECT sur une base de données, cette autorisation inclut l’autorisation SELECT sur tous les schémas (enfants) dans la base de données.That is, if you grant SELECT permission on a database, that permission includes SELECT permission on all (child) schemas in the database. Si vous accordez l’autorisation SELECT sur un schéma, elle inclut l’autorisation SELECT sur toutes les tables et vues (enfants) dans le schéma.If you grant SELECT permission on a schema, it includes SELECT permission on all the (child) tables and views in the schema. Les autorisations sont transitives : si vous accordez l’autorisation SELECT sur une base de données, elle inclut l’autorisation SELECT sur tous les schémas (enfant) et toutes les tables et vues (petits-enfants).The permissions are transitive; that is, if you grant SELECT permission on a database, it includes SELECT permission on all (child) schemas, and all (grandchild) tables and views.

En outre, les autorisations ont des autorisations couvrantes.Permissions also have covering permissions. L’autorisation CONTROL sur un objet vous donne normalement toutes les autres autorisations sur l’objet.The CONTROL permission on an object, normally gives you all other permissions on the object.

Étant donné que la hiérarchie parent/enfant et la hiérarchie de couverture peuvent agir sur la même autorisation, le système d’autorisation peut se compliquer.Because both the parent/child hierarchy and the covering hierarchy can act on the same permission, the permission system can get complicated. Par exemple, prenons une table (Region), dans un schéma (Customers), dans une base de données (SalesDB).For example, let's take a table (Region), in a schema (Customers), in a database (SalesDB).

  • CONTROL sur la table Region inclut toutes les autres autorisations sur la table Region, y compris ALTER, SELECT, INSERT, UPDATE, DELETE, et certaines autres autorisations.CONTROL permission on table Region includes all the other permissions on the table Region, including ALTER, SELECT, INSERT, UPDATE, DELETE, and some other permissions.

  • SELECT sur le schéma Customers qui possède la table Region inclut l’autorisation SELECT sur la table Region.SELECT on the Customers schema that owns the Region table includes the SELECT permission on the Region table.

    Ainsi, l’autorisation SELECT sur la table Region peut être obtenue par le biais de ces six instructions :So SELECT permission on the Region table can be achieved through any of these six statements:

GRANT SELECT ON OBJECT::Region TO Ted;   

GRANT CONTROL ON OBJECT::Region TO Ted;   

GRANT SELECT ON SCHEMA::Customers TO Ted;   

GRANT CONTROL ON SCHEMA::Customers TO Ted;   

GRANT SELECT ON DATABASE::SalesDB TO Ted;   

GRANT CONTROL ON DATABASE::SalesDB TO Ted;  

Accorder l’autorisation minimaleGrant the Least Permission

La première autorisation répertoriée ci-dessus (GRANT SELECT ON OBJECT::Region TO Ted;) est la plus granulaire ; autrement dit, cette instruction est l’autorisation minimale la plus stricte pour accorder l’autorisation SELECT.The first permission listed above (GRANT SELECT ON OBJECT::Region TO Ted;) is the most granular, that is, that statement is the least permission possible that grants the SELECT. Aucune autorisation sur des objets subordonnés ne l’accompagne.No permissions to subordinate objects come with it. Par principe, accordez toujours l’autorisation minimale la plus stricte possible. Toutefois, si les circonstances imposent une simplification du système d’octroi, accordez une autorisation plus générale.It's a good principal to always grant the least permission possible, but (contradicting that) grant at higher levels in order to simplify the granting system. Ainsi, si Ted a besoin d’autorisations pour l’ensemble du schéma, accordez SELECT une fois au niveau du schéma, au lieu d’accorder SELECT au niveau table ou vue plusieurs fois.So if Ted needs permissions to the entire schema, grant SELECT once at the schema level, instead of granting SELECT at the table or view level many times. La conception de la base de données détermine en grande partie l’efficacité de cette stratégie.The design of the database has a great deal of impact on how successful this strategy can be. Cette dernière fonctionne de façon optimale si votre base de données permet d’inclure dans un seul schéma les objets nécessitant des autorisations identiques.This strategy will work best when your database is designed so that objects needing identical permissions are included in a single schema.

Liste d’autorisationsList of Permissions

SQL Server 2016 (13.x)SQL Server 2016 (13.x) a 230 autorisations. has 230 permissions. SQL Server 2014 (12.x)SQL Server 2014 (12.x) a 219 autorisations. has 219 permissions. SQL Server 2012 (11.x)SQL Server 2012 (11.x) a 214 autorisations. has 214 permissions. SQL Server 2008 R2SQL Server 2008 R2 a 195 autorisations. has 195 permissions. Base de données SQLSQL Database, SQL Data WarehouseSQL Data Warehouseet Système de la plateforme d'analyseAnalytics Platform System ont moins d’autorisations, car ils exposent uniquement une partie du moteur de base de données, bien que chacun ait des autorisations qui ne s’appliquent pas à SQL ServerSQL Server., SQL Data WarehouseSQL Data Warehouse, and Système de la plateforme d'analyseAnalytics Platform System have fewer permissions because they expose only a portion of the database engine, though each have some permissions that do not apply to SQL ServerSQL Server.

Le graphique suivant illustre les autorisations et leurs relations.The following graphic shows the permissions and their relationships to each other. Certaines des autorisations de niveau supérieur (telles que CONTROL SERVER) figurent plusieurs fois.Some of the higher level permissions (such as CONTROL SERVER) are listed many times. Dans cet article, l’affiche est trop petite pour être lue correctement.In this article, the poster is far too small to read. Cliquez sur l’image pour télécharger le Poster des autorisations du moteur de base de données au format pdf.Click the image to download the Database Engine Permissions Poster in pdf format.
Autorisations des moteurs de base de donnéesDatabase Engine Permissions

Pour obtenir un graphique montrant les relations entre les principaux Moteur de base de donnéesDatabase Engine et les objets serveur et de base de données, consultez Hiérarchie des autorisations (moteur de base de données).For a graphic showing the relationships among the Moteur de base de donnéesDatabase Engine principals and server and database objects, see Permissions Hierarchy (Database Engine).

Autorisations associées aux rôles serveur fixes et rôles de base de données fixesPermissions vs. Fixed Server and Fixed Database Roles

Les autorisations des rôles serveur fixes et des rôles de base de données fixes sont similaires, mais ne sont pas exactement les mêmes que les autorisations granulaires.The permissions of the fixed server roles and fixed database roles are similar but not exactly the same as the granular permissions. Par exemple, les membres du rôle serveur fixe sysadmin disposent de toutes les autorisations sur l’instance de SQL ServerSQL Server, de même que les connexions avec l’autorisation CONTROL SERVER .For example, members of the sysadmin fixed server role have all permissions on the instance of SQL ServerSQL Server, as do logins with the CONTROL SERVER permission. Toutefois, l’octroi de l’autorisation CONTROL SERVER ne fait pas d’une connexion un membre du rôle serveur fixe sysadmin et l’ajout d’une connexion au rôle serveur fixe sysadmin n’octroie pas explicitement à celle-ci l’autorisation CONTROL SERVER.But granting the CONTROL SERVER permission does not make a login a member of the sysadmin fixed server role, and adding a login to the sysadmin fixed server role does not explicitly grant the login the CONTROL SERVER permission. Parfois, une procédure stockée vérifie les autorisations en examinant le rôle fixe et pas l’autorisation granulaire.Sometimes a stored procedure will check permissions by checking the fixed role and not checking the granular permission. Par exemple, le détachement d’une base de données requiert l’appartenance au rôle de base de données fixe db_owner .For example detaching a database requires membership in the db_owner fixed database role. L’autorisation CONTROL DATABASE équivalente n’est pas suffisante.The equivalent CONTROL DATABASE permission is not enough. Ces deux systèmes fonctionnent en parallèle, mais interagissent rarement.These two systems operate in parallel but rarely interact with each other. Microsoft recommande d’utiliser le système d’autorisation granulaire plus récent au lieu des rôles fixes chaque fois que possible.Microsoft recommends using the newer, granular permission system instead of the fixed roles whenever possible.

Surveillance des autorisationsMonitoring Permissions

Les vues suivantes retournent des informations de sécurité.The following views return security information.

  • Vous pouvez examiner les connexions et les rôles serveur définis par l’utilisateur sur un serveur à l’aide de la vue sys.server_principals .The logins and user-defined server roles on a server can be examined by using the sys.server_principals view. Cette vue n’est pas disponible dans Base de données SQLSQL Database.This view is not available in Base de données SQLSQL Database.

  • Vous pouvez examiner les utilisateurs et les rôles définis par l’utilisateur dans une base de données à l’aide de la vue sys.database_principals .The users and user-defined roles in a database can be examined by using the sys.database_principals view.

  • Vous pouvez examiner les autorisations accordées aux connexions et aux rôles serveur fixes définis par l’utilisateur à l’aide de la vue sys.server_permissions .The permissions granted to logins and user-defined fixed server roles can be examined by using the sys.server_permissions view. Cette vue n’est pas disponible dans Base de données SQLSQL Database.This view is not available in Base de données SQLSQL Database.

  • Vous pouvez examiner les autorisations accordées aux utilisateurs et aux rôles de base de données fixes définis par l’utilisateur à l’aide de la vue sys.database_permissions .The permissions granted to users and user-defined fixed database roles can be examined by using the sys.database_permissions view.

  • L’appartenance au rôle de base de données peut être examinée à l’aide de la vue sys. sys.database_role_members .Database role membership can be examined by using the sys. sys.database_role_members view.

  • L’appartenance au rôle serveur peut être examinée à l’aide de la vue sys.server_role_members .Server role membership can be examined by using the sys.server_role_members view. Cette vue n’est pas disponible dans Base de données SQLSQL Database.This view is not available in Base de données SQLSQL Database.

  • Pour obtenir des vues supplémentaires associées à la sécurité, consultez Affichages catalogue de sécurité (Transact-SQL) .For additional security related views, see Security Catalog Views (Transact-SQL) .

Instructions Transact-SQL utilesUseful Transact-SQL Statements

Les instructions suivantes retournent des informations utiles sur les autorisations.The following statements return useful information about permissions.

Pour retourner les autorisations explicites accordées ou refusées dans une base de données ( SQL ServerSQL Server et Base de données SQLSQL Database), exécutez l’instruction suivante dans la base de données.To return the explicit permissions granted or denied in a database ( SQL ServerSQL Server and Base de données SQLSQL Database), execute the following statement in the database.

SELECT   
    perms.state_desc AS State,   
    permission_name AS [Permission],   
    obj.name AS [on Object],   
    dPrinc.name AS [to User Name]  
FROM sys.database_permissions AS perms  
JOIN sys.database_principals AS dPrinc  
    ON perms.grantee_principal_id = dPrinc.principal_id  
JOIN sys.objects AS obj  
    ON perms.major_id = obj.object_id;  

Pour retourner les membres des rôles serveur ( SQL ServerSQL Server uniquement), exécutez l’instruction suivante.To return the members of the server roles ( SQL ServerSQL Server only), execute the following statement.

SELECT sRole.name AS [Server Role Name] , sPrinc.name AS [Members]  
FROM sys.server_role_members AS sRo  
JOIN sys.server_principals AS sPrinc  
    ON sRo.member_principal_id = sPrinc.principal_id  
JOIN sys.server_principals AS sRole  
    ON sRo.role_principal_id = sRole.principal_id;  

Pour retourner les membres des rôles de base de données ( SQL ServerSQL Server et Base de données SQLSQL Database), exécutez l’instruction suivante.To return the members of the database roles ( SQL ServerSQL Server and Base de données SQLSQL Database), execute the following statement in the database.

SELECT dRole.name AS [Database Role Name], dPrinc.name AS [Members]  
FROM sys.database_role_members AS dRo  
JOIN sys.database_principals AS dPrinc  
    ON dRo.member_principal_id = dPrinc.principal_id  
JOIN sys.database_principals AS dRole  
    ON dRo.role_principal_id = dRole.principal_id;  

Next StepsNext Steps

Les rubriques suivantes vous aideront à démarrer :For more topics to get you started, see:

Voir aussiSee Also

Centre de sécurité pour le moteur de base de données SQL Server et la base de données SQL Azure Security Center for SQL Server Database Engine and Azure SQL Database
Fonctions de sécurité (Transact-SQL) Security Functions (Transact-SQL)
Fonctions et vues de gestion dynamique relatives à la sécurité (Transact-SQL) Security-Related Dynamic Management Views and Functions (Transact-SQL)
Affichages catalogue de sécurité (Transact-SQL) Security Catalog Views (Transact-SQL)
sys.fn_builtin_permissions (Transact-SQL) sys.fn_builtin_permissions (Transact-SQL)
Détermination des autorisations de moteur de base de données effectivesDetermining Effective Database Engine Permissions