Propriété et séparation utilisateur-schéma dans SQL Server (ADO.NET)
Mise à jour : November 2007
Il existe un concept essentiel relative à la sécurité de SQL Server, selon lequel les propriétaires d'objets disposent d'autorisations irrévocables pour les administrer. Vous ne pouvez pas supprimer les privilèges d'un propriétaire d'objets et vous ne pouvez pas supprimer des utilisateurs d'une base de données dans laquelle se trouvent des objets qui leur appartiennent. Dans SQL 2000, si un utilisateur crée un objet sans en spécifier le propriétaire, cet utilisateur devient le propriétaire de l'objet. Un propriétaire d'objets dispose d'autorisations irrévocables pour administrer l'objet, ce qui engendre des problèmes si plusieurs utilisateurs possèdent des objets. Lorsque tous les objets de base de données appartiennent à un propriétaire unique, la gestion des autorisations est simplifiée dans SQL Server 2000, car elle tire profit du chaînage des propriétés, comme traité dans Autorisations dans SQL Server (ADO.NET).
Remarque : |
---|
Les membres du rôle de serveur fixe sysadmin et du rôle de base de données fixe db_owner disposent également d'autorisations de propriété irrévocables sur tous les objets d'une base de données. |
Les versions de SQL Server antérieures à SQL Server 2005 utilisent la syntaxe de dénomination en quatre parties suivante pour faire référence aux objets.
Server.Database.ObjectOwner.DatabaseObject
Si les utilisateurs de base de données Bob et Sue créent chacun Table1, vous devez utiliser le nom complet. Si un administrateur système ou un propriétaire de base de données crée un objet, celui-ci devient la propriété du compte d'utilisateur dbo, et pas d'un utilisateur individuel.
SELECT col1 FROM Bob.Table1
SELECT col1 FROM Sue.Table1
SELECT col1 FROM dbo.Table1
Remarque : |
---|
Il n'est pas nécessaire d'utiliser la syntaxe ObjectOwner.DatabaseObject pour faire référence à un objet qui appartient à dbo, même si cela se révèle plus efficace. Si le nom du propriétaire n'est pas fourni, SQL Server 2000 vérifie d'abord si l'objet existe sous le nom de l'utilisateur actuel, puis vérifie si l'objet appartient à dbo. Donner le nom en deux parties permet d'éviter une étape supplémentaire. |
Séparation utilisateur-schéma
SQL Server 2005 a introduit la séparation utilisateur-schéma, qui permet plus de souplesse dans la gestion des autorisations d'objet de base de données. Un schéma est un conteneur nommé pour des objets de base de données, qui vous permet de regrouper des objets dans des espaces de noms distincts. Par exemple, l'exemple de base de données AdventureWorks contient des schémas pour Production, Sales et HumanResources.
La syntaxe de dénomination en quatre parties destinée à faire référence à des objets spécifie le nom de schéma.
Server.Database.DatabaseSchema.DatabaseObject
Propriétaires et autorisations de schéma
Les schémas peuvent appartenir à n'importe quelle entité de sécurité de base de données, tandis qu'une entité de sécurité unique peut posséder plusieurs schémas. Vous pouvez appliquer des règles de sécurité à un schéma, dont hériteront tous les objets du schéma. Une fois que vous avez défini des autorisations d'accès pour un schéma, elles sont automatiquement appliquées lors de l'ajout de nouveaux objets au schéma. Un schéma par défaut peut être affecté aux utilisateurs, et plusieurs utilisateurs de base de données peuvent partager le même schéma.
Par défaut, lorsque des développeurs créent des objets dans un schéma, ces objets appartiennent à l'entité de sécurité qui possède le schéma, et non aux développeurs. La propriété d'objet peut être transférée avec l'instruction Transact-SQL ALTER AUTHORIZATION. Un schéma peut également contenir des objets qui appartiennent à différents utilisateurs et disposent d'autorisations plus précises que celles affectées au schéma, même si cela n'est pas recommandé car la gestion des autorisations devient alors plus complexe. Les objets peuvent être déplacés entre plusieurs schémas et la propriété de schéma peut être transférée entre plusieurs entités. Les utilisateurs de base de données peuvent être supprimés sans affecter les schémas.
Schémas intégrés
SQL Server est livré avec six schémas prédéfinis qui possèdent les mêmes noms que les utilisateurs et les rôles de base de données intégrés. Ils sont principalement destinés à la compatibilité descendante. Vous pouvez supprimer les schémas qui possèdent les mêmes noms que ceux des rôles de base de données fixes si vous n'en avez pas besoin. Par contre, vous ne pouvez pas supprimer les schémas suivants :
dbo
guest
sys
INFORMATION_SCHEMA
Si vous les supprimez de la base de données model, ils n'apparaîtront pas dans les nouvelles bases de données.
Remarque : |
---|
Les schémas sys et INFORMATION_SCHEMA sont réservés pour les objets système. Vous ne pouvez pas créer d'objets dans ces schémas et vous ne pouvez pas les supprimer. |
Schéma dbo
Le schéma dbo constitue le schéma par défaut d'une base de données qui vient d'être créée. Le schéma dbo appartient au compte d'utilisateur dbo. Par défaut, les utilisateurs créés avec la commande Transact-SQL CREATE USER ont dbo en tant que schéma par défaut.
Les utilisateurs à qui est affecté le schéma dbo n'héritent pas des autorisations du compte d'utilisateur dbo. Les utilisateurs n'héritent d'aucune autorisation provenant d'un schéma. En effet, ce sont les objets de base de données contenus dans le schéma qui héritent des autorisations du schéma.
Remarque : |
---|
Lorsque des objets de base de données sont référencés à l'aide d'un nom en une partie dans SQL Server 2005, SQL Server consulte d'abord le schéma par défaut de l'utilisateur. Si l'objet y est introuvable, SQL Server recherche ensuite dans le schéma dbo. Si l'objet ne se trouve pas non plus dans le schéma dbo, une erreur est retournée. |
Ressources externes
Pour plus d'informations sur la propriété d'objet et les schémas, voir les ressources suivantes.
Ressource |
Description |
---|---|
Séparation utilisateur-schéma dans la documentation en ligne de SQL Server 2008 |
Décrit les modifications introduites par la séparation utilisateur-schéma. Inclut un nouveau comportement, son impact sur la propriété, des affichages catalogue et des autorisations. |
Séparation utilisateur-schéma dans la documentation en ligne de SQL Server 2005 |
Décrit les modifications introduites par la séparation utilisateur-schéma. Inclut un nouveau comportement, son impact sur la propriété, des affichages catalogue et des autorisations. |
Utilisation des chaînes de propriétés dans la documentation en ligne de SQL Server 2000 |
Décrit la manière dont les utilisateurs peuvent hériter d'autorisations de propriétaires d'objets. |
Voir aussi
Concepts
Scénarios de sécurité des applications dans SQL Server (ADO.NET)
Authentification dans SQL Server (ADO.NET)
Rôles serveur et rôles de base de données dans SQL Server (ADO.NET)
Autorisations dans SQL Server (ADO.NET)