Partager via


Refuser des autorisations sur une collection de schémas XML

L’autorisation peut être refusée pour créer une collection de schémas XML ou utiliser une collection de schémas XML existante.

Refus de l’autorisation de créer une collection de schémas XML

Vous pouvez refuser l’autorisation de créer une collection de schémas XML de la manière suivante :

  • Refuser l’autorisation ALTER sur le schéma relationnel.

  • Refuser CONTROL sur le schéma relationnel pour refuser toutes les autorisations sur le schéma relationnel et sur tous les objets contenus.

  • Refuser ALTER ANY SCHEMA sur la base de données. Dans ce cas, le principal ne peut pas créer une collection de schémas XML n’importe où dans la base de données. Notez également que le refus de l’autorisation ALTER ou CONTROL sur la base de données refuse toutes les autorisations sur tous les objets de la base de données.

Refus des autorisations sur un objet de collection de schémas XML

Voici l’autorisation qui peut être refusée sur une collection de schémas XML existante et les résultats :

  • Refuser l’autorisation ALTER refuse au principal la possibilité de modifier le contenu de la collection de schémas XML.

  • Le refus de l’autorisation CONTROL refuse au principal la possibilité d’effectuer une opération sur la collection de schémas XML.

  • Le refus de l’autorisation REFERENCES refuse au principal la possibilité de taper ou de limiter les colonnes et paramètres de type XML à l’aide de la collection de schémas XML. Il refuse également au principal la possibilité de faire référence à cette collection de schémas XML à partir d’autres collections de schémas XML.

  • Refuser l’autorisation VIEW DEFINITION refuse au principal la possibilité d’afficher le contenu d’une collection de schémas XML.

  • Le refus de l’autorisation EXECUTE refuse au principal la possibilité d’insérer ou de mettre à jour les valeurs dans les colonnes, les variables et les paramètres qui sont typés ou limités par la collection de schémas XML. Il refuse également au principal la possibilité d’interroger les valeurs dans ces mêmes colonnes et variables de type xml.

Exemples

Les scénarios des exemples suivants montrent comment fonctionnent les autorisations de schéma XML. Chaque exemple crée la base de données de test, les schémas relationnels et les connexions nécessaires. Ces connexions reçoivent les autorisations de collecte de schémas XML nécessaires. Chaque exemple effectue le nettoyage nécessaire à la fin.

Un. Empêcher un utilisateur de créer une collection de schémas XML

L’une des façons d’empêcher un utilisateur de créer une collection de schémas XML consiste à refuser l’autorisation ALTER sur un schéma relationnel. Ceci est illustré dans l’exemple suivant.

L’exemple crée un utilisateur, TestLogin1et une base de données. Il crée également un schéma relationnel, en plus du dbo schéma, dans la base de données. Initialement, l’autorisation CREATE XML SCHEMA permet à l’utilisateur de créer une collection de schémas n’importe où dans la base de données. L’exemple refuse ALTER ensuite l’autorisation à l’utilisateur sur l’un des schémas relationnels. Cela empêche l’utilisateur de créer une collection de schémas XML dans ce schéma relationnel.

CREATE LOGIN TestLogin1 WITH password='SQLSvrPwd1'  
GO  
CREATE DATABASE SampleDBForSchemaPermissions  
GO  
USE SampleDBForSchemaPermissions  
GO  
-- Create another relational schema in the database.  
CREATE SCHEMA myOtherDBSchema  
GO  
CREATE USER TestLogin1  
GO  
-- For TestLogin1 to create/import XML schema collection, following  
-- permission needed.  
-- Database-level permissions  
GRANT CREATE XML SCHEMA COLLECTION TO TestLogin1  
GO  
GRANT ALTER ANY SCHEMA TO TestLogin1  
GO  
-- Now TestLogin1 can import an XML schema collection.  
SETUSER 'TestLogin1'  
GO  
CREATE XML SCHEMA COLLECTION myOtherDBSchema.myTestSchemaCollection AS '<?xml version="1.0" encoding="UTF-8" ?>  
<xsd:schema targetNamespace="http://schemas.adventure-works.com/Additional/ContactInfo"   
            xmlns:xsd="http://www.w3.org/2001/XMLSchema"   
elementFormDefault="qualified">  
<xsd:element name="telephone" type="xsd:string" />  
</xsd:schema>'  
GO  
DROP XML SCHEMA COLLECTION myOtherDBSchema.myTestSchemaCollection  
GO  
-- Now deny permission from TestLogin1 to alter myOtherDBSchema.  
setuser  
GO  
DENY ALTER ON SCHEMA::myOtherDBSchema TO TestLogin1  
GO  
-- Now TestLogin1 cannot create xml schema collection.  
SETUSER 'TestLogin1'  
GO  
CREATE XML SCHEMA COLLECTION myOtherDBSchema.myTestSchemaCollection AS '<?xml version="1.0" encoding="UTF-8" ?>  
<xsd:schema targetNamespace="http://schemas.adventure-works.com/Additional/ContactInfo"   
            xmlns:xsd="http://www.w3.org/2001/XMLSchema"   
elementFormDefault="qualified">  
<xsd:element name="telephone" type="xsd:string" />  
</xsd:schema>'  
GO  
-- Final cleanup  
SETUSER  
GO  
USE master  
GO  
DROP DATABASE SampleDBForSchemaPermissions  
GO  
DROP LOGIN TestLogin1  
GO  

B. Refus des autorisations sur une collection de schémas XML

L’exemple suivant montre comment une autorisation spécifique sur une collection de schémas XML existante peut être refusée à une connexion. Dans cet exemple, la permission REFERENCES est refusée à une connexion de test sur une collection de schémas XML existante.

L’exemple crée un utilisateur, TestLogin1et une base de données. Il crée également un schéma relationnel, en plus du dbo schéma, dans la base de données. Initialement, l’autorisation CREATE XML SCHEMA permet à l’utilisateur de créer une collection de schémas n’importe où dans la base de données.

L’autorisation REFERENCES sur la collection de schémas XML permet TestLogin1 d’utiliser le schéma dans la création d’une colonne typée xml dans une table. Si l’autorisation REFERENCES sur la collection de schémas XML est refusée, elle empêche l’utilisation TestLogin1 de la collection de schémas XML.

CREATE LOGIN TestLogin1 WITH password='SQLSvrPwd1'  
GO  
CREATE DATABASE SampleDBForSchemaPermissions  
GO  
USE SampleDBForSchemaPermissions  
GO  
-- Create another relational schema in the database.  
CREATE SCHEMA myOtherDBSchema  
GO  
CREATE USER TestLogin1  
GO  
-- For TestLogin1 to create/import XML schema collection, the following  
-- permission is required.  
-- Database-level permissions  
GRANT CREATE XML SCHEMA COLLECTION TO TestLogin1  
GO  
GRANT ALTER ANY SCHEMA TO TestLogin1  
GO  
-- Now TestLogin1 can import an XML schema collection.  
SETUSER 'TestLogin1'  
GO  
CREATE XML SCHEMA COLLECTION myOtherDBSchema.myTestSchemaCollection AS '<?xml version="1.0" encoding="UTF-8" ?>  
<xsd:schema targetNamespace="http://schemas.adventure-works.com/Additional/ContactInfo"   
            xmlns:xsd="http://www.w3.org/2001/XMLSchema"   
elementFormDefault="qualified">  
<xsd:element name="telephone" type="xsd:string" />  
</xsd:schema>'  
GO  
-- Grant permission to TestLogin1 to create a table and reference the XML schema collection.  
SETUSER  
GO  
GRANT CREATE TABLE TO TestLogin1  
GO  
-- The user also needs REFERENCES permission to use the XML schema collection  
-- to create a typed XML column (REFERENCES permission on the schema   
-- collection is not needed).  
GRANT REFERENCES ON XML SCHEMA COLLECTION::myOtherDBSchema.myTestSchemaCollection   
TO TestLogin1  
GO  
  
--TestLogin1 can use the schema.  
CREATE TABLE T(i int, x xml (myOtherDBSchema.myTestSchemaCollection))  
GO  
-- Drop the table.  
DROP TABLE T  
GO  
-- Now deny REFERENCES permission to TestLogin1 on the schema created previously.  
SETUSER  
GO  
DENY REFERENCES ON XML SCHEMA COLLECTION::myOtherDBSchema.myTestSchemaCollection TO TestLogin1  
  
GO  
-- Now TestLogin1 cannot create xml schema collection  
SETUSER 'TestLogin1'  
GO  
-- Following statement fails. TestLogin1 does not have REFERENCES   
-- permission on the XML schema collection.  
CREATE TABLE T(i int, x xml (myOtherDBSchema.myTestSchemaCollection))  
GO  
  
-- Final cleanup  
SETUSER  
GO  
USE master  
GO  
DROP DATABASE SampleDBForSchemaPermissions  
GO  
DROP LOGIN TestLogin1  
GO  

Voir aussi

Comparer du XML typé et du XML non typé
Collections de schémas XML (SQL Server)
Conditions requises et limitations pour les collections de schémas XML sur le serveur
DENY – refus d'autorisations d'objet (Transact-SQL)
Autorisations d'objet GRANT (Transact-SQL)
Données XML (SQL Server)