Sdílet prostřednictvím


Odvolání oprávnění pro kolekci schémat XML

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL databáze v Microsoft Fabric

Oprávnění k vytvoření kolekce schémat XML je možné odvolat jedním z následujících způsobů:

  • Odvolá oprávnění ALTER pro relační schéma. Instanční objekt pak nemůže vytvořit kolekci schémat XML v relačním schématu. Hlavní to však může stále provést v jiných relačních schématech ve stejné databázi.

  • Odvolat oprávnění ALTER ANY SCHEMA pro databázi pro uživatele. Instanční objekt pak nemůže vytvořit kolekci schémat XML kdekoli v databázi.

  • Odeberte oprávnění CREATE XML SCHEMA COLLECTION nebo ALTER XML SCHEMA COLLECTION pro databázi pro hlavního objekt. Tím zabráníte principálovi v importu kolekce schémat XML v databázi. Odvolání oprávnění ALTER nebo CONTROL v databázi má stejný účinek.

Odvolání oprávnění u existujícího objektu kolekce schémat XML

Níže jsou uvedená oprávnění, která lze odvolat v kolekci schémat XML a výsledky:

  • Odvoláním oprávnění ALTER dojde k odvolání schopnosti objektu zabezpečení upravit obsah kolekce schémat XML.

  • Odvoláním oprávnění TAKE OWNERSHIP dojde k odvolání schopnosti objektu zabezpečení převést vlastnictví kolekce schémat XML.

  • Odvolání oprávnění REFERENCES odebere uživateli schopnost používat sestavu XML schémat pro zadání nebo omezení sloupců typu XML ve sloupcích v tabulkách, zobrazeních a parametrech. Odvolá také oprávnění odkazovat na tuto kolekci schématu z jiných kolekcí schémat XML.

  • Odnětí oprávnění VIEW DEFINITION ruší oprávnění uživatele zobrazit obsah kolekce schémat XML.

  • Odvolání oprávnění EXECUTE odnímá objektu zabezpečení možnost vkládat nebo aktualizovat hodnoty ve sloupcích, proměnných a parametrech, které jsou definovány nebo omezeny kolekcí XML. Odvolá také možnost dotazovat se na takové sloupce, proměnné nebo parametry typu XML .

Examples

Scénáře v následujících příkladech ukazují, jak fungují oprávnění schématu XML. Každý příklad vytvoří potřebnou testovací databázi, relační schémata a přihlášení. Těmto přihlášením se udělí potřebná oprávnění ke shromažďování schémat XML. Každý příklad provede potřebné vyčištění na konci.

A. Odvolání oprávnění k vytvoření kolekce schémat XML

Tento příklad vytvoří přihlášení a ukázkovou databázi. Přidá také relační schéma v databázi. Na začátku je přihlášení uděleno oprávnění ALTER pro relační schémata i další potřebná oprávnění k vytvoření kolekcí schémat XML. Příklad pak odvolá oprávnění ALTER u jednoho z relačních schémat v databázi. Tím zabráníte přihlášení k vytvoření kolekce schémat XML.

SETUSER;
GO
CREATE LOGIN TestLogin1 with password='SQLSvrPwd1';
GO
CREATE DATABASE SampleDBForSchemaPermissions;
GO
use SampleDBForSchemaPermissions;
GO
-- Create another relational schema in the db (in addition to dbo schema)
CREATE SCHEMA myOtherDBSchema;
GO
CREATE USER TestLogin1;
GO
-- For TestLogin1 to create/import XML schema collection, following
-- permission needed
-- CREATE XML SCHEMA is a database level permission
GRANT CREATE XML SCHEMA COLLECTION TO TestLogin1;
GO
GRANT ALTER ON SCHEMA::myOtherDBSchema TO TestLogin1;
GO
GRANT ALTER ON SCHEMA::dbo TO TestLogin1;
GO
-- Now TestLogin1 can import an XML schema collection in both relational schemas.
SETUSER 'TestLogin1';
GO
CREATE XML SCHEMA COLLECTION dbo.myTestSchemaCollection AS '<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema targetNamespace="https://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
-- TestLogin1 can create XML schema collection in myOtherDBSchema relational schema
CREATE XML SCHEMA COLLECTION myOtherDBSchema.myTestSchemaCollection AS '<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema targetNamespace="https://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
-- Let us drop XML schema collections from both relational schemas
DROP XML SCHEMA COLLECTION myOtherDBSchema.myTestSchemaCollection;
GO
DROP XML SCHEMA COLLECTION dbo.myTestSchemaCollection;
GO
-- now REVOKE permission from TestLogin1 to alter myOtherDBSchema
SETUSER;
GO
REVOKE ALTER ON SCHEMA::myOtherDBSchema FROM TestLogin1;
GO
-- now TestLogin1 cannot create xml schema collection in myOtherDBSchema
SETUSER 'TestLogin1';
GO
CREATE XML SCHEMA COLLECTION myOtherDBSchema.myTestSchemaCollection AS '<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema targetNamespace="https://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

-- TestLogin1 can still create XML schema collections in dbo
-- It cannot create XML schema collections anywhere in the database
-- if we REVOKE CREATE XML SCHEMA COLLECTION permission
SETUSER;
GO
REVOKE CREATE XML SCHEMA COLLECTION FROM TestLogin1;
GO

SETUSER 'TestLogin1';
GO
-- the following now should fail
CREATE XML SCHEMA COLLECTION dbo.myTestSchemaCollection AS '<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema targetNamespace="https://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

Viz také