GRANT Povolení schématu (Transact-SQL)

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLAzure Synapse AnalyticsAnalytics Platform System (PDW)Koncový bod analýzy SQL v Microsoft FabricSklad v Microsoft FabricDatabáze SQL v Microsoft Fabric

Uděluje oprávnění ke schématu.

Transact-SQL konvence syntaxe

Syntax

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

Arguments

permission
Určuje oprávnění, které lze udělit ve schématu. Seznamoprávněních

ZAPNUTÉ SCHEMA::schema_name
Určuje schéma, pro které se oprávnění uděluje. Kvalifikátor oboru :: je povinný.

database_principal
Určuje objekt zabezpečení, ke kterému se oprávnění uděluje. Jedna z následujících možností:

  • Uživatel databáze
  • Role v databázi
  • aplikační role
  • uživatel databáze namapovaný na přihlášení k Systému Windows
  • uživatel databáze namapovaný na skupinu Windows
  • uživatel databáze namapovaný na certifikát
  • uživatel databáze namapovaný na asymetrický klíč
  • uživatel databáze není namapován na objekt zabezpečení serveru.

GRANT OPCE
Označuje, že objekt zabezpečení bude mít také možnost udělit zadané oprávnění jiným objektům zabezpečení.

JAKO granting_principal
Určuje objekt zabezpečení, ze kterého objekt zabezpečení, který spouští tento dotaz, odvozuje své právo udělit oprávnění. Jedna z následujících možností:

  • Uživatel databáze
  • Role v databázi
  • aplikační role
  • uživatel databáze namapovaný na přihlášení k Systému Windows
  • uživatel databáze namapovaný na skupinu Windows
  • uživatel databáze namapovaný na certifikát
  • uživatel databáze namapovaný na asymetrický klíč
  • uživatel databáze není namapován na objekt zabezpečení serveru.

Remarks

Important

Kombinace oprávnění ALTER a REFERENCE v některých případech může uživateli umožnit zobrazit data nebo spustit neautorizované funkce. Příklad: Uživatel s oprávněním ALTER pro tabulku a ODKAZ na funkci může vytvořit počítaný sloupec nad funkcí a nechat ho spustit. V tomto případě musí mít uživatel také oprávnění SELECT pro počítaný sloupec.

Schéma je zabezpečitelná databáze obsažená v databázi, která je jejím nadřazeným objektem v hierarchii oprávnění. Níže jsou uvedena nejvýraznější a omezená oprávnění, která lze udělit pro schéma, společně s obecnějšími oprávněními, která je zahrnují implikací.

Povolení schématu Implicitní oprávnění schématu Implicitní oprávnění databáze
ALTER CONTROL Změnit libovolný SCHEMA
CONTROL CONTROL CONTROL
CREATE SEQUENCE ALTER Změnit libovolný SCHEMA
DELETE CONTROL DELETE
EXECUTE CONTROL EXECUTE
INSERT CONTROL INSERT
REFERENCES CONTROL REFERENCES
SELECT CONTROL SELECT
PŘEVEZMĚTE ODPOVĚDNOST CONTROL CONTROL
UPDATE CONTROL UPDATE
VIEW SLEDOVÁNÍ ZMĚN CONTROL CONTROL
VIEW DEFINICE CONTROL VIEW DEFINICE

Caution

Uživatel s oprávněním ALTER ve schématu může použít řetězení vlastnictví pro přístup k zabezpečitelným v jiných schématech, včetně zabezpečitelných, ke kterým je tento uživatel explicitně odepřen. Důvodem je to, že řetězení vlastnictví obchází kontroly oprávnění u odkazovaných objektů, když jsou vlastníkem objektu zabezpečení, který je vlastníkem objektů, které na ně odkazují. Uživatel s oprávněním ALTER pro schéma může vytvářet procedury, synonyma a zobrazení, které vlastní vlastník schématu. Tyto objekty budou mít přístup (prostřednictvím řetězení vlastnictví) k informacím v jiných schématech vlastněných vlastníkem schématu. Pokud je to možné, měli byste se vyhnout udělení oprávnění ALTER schématu, pokud vlastník schématu vlastní také jiná schémata.

K tomuto problému může dojít například v následujících scénářích. Tyto scénáře předpokládají, že uživatel, označovaný jako U1, má oprávnění ALTER ke schématu S1. Uživateli U1 byl odepřen přístup k objektu tabulky, který se označuje jako T1 ve schématu S2. Schéma S1 a schéma S2 vlastní stejný vlastník.

Uživatel U1 má oprávnění CREATE PROCEDURE k databázi a k EXECUTE na schématu S1. Uživatel U1 proto může vytvořit uloženou proceduru a pak přistupovat k odepřeného objektu T1 v uložené proceduře.

Uživatel U1 má oprávnění CREATE SYNONYM k databázi a k SELECT schématu S1. Proto uživatel U1 může vytvořit synonymum ve schématu S1 pro odepřený objekt T1 a pak přistupovat k odepřeného objektu T1 pomocí synonyma.

Uživatel U1 má oprávnění CREATE VIEW k databázi a k SELECT schématu S1. Uživatel U1 proto může vytvořit zobrazení ve schématu S1 pro dotazování dat z odepřeného objektu T1 a pak pomocí zobrazení získat přístup k objektu odepření T1.

Permissions

Poskytovatel (nebo zmocnitel uvedený u AS option) musí mít buď samotné oprávnění s GRANT OPTION, nebo vyšší oprávnění, které znamená, že povolení bylo uděleno.

Pokud používáte možnost AS, platí tyto další požadavky.

JAKO granting_principal Další požadovaná oprávnění
Uživatel databáze ZOSOBNIT oprávnění pro uživatele, členství v db_securityadmin pevné databázové roli, členství v db_owner pevné databázové roli nebo členství v pevné roli serveru správce systému.
Uživatel databáze namapovaný na přihlášení k Systému Windows ZOSOBNIT oprávnění pro uživatele, členství v db_securityadmin pevné databázové roli, členství v db_owner pevné databázové roli nebo členství v pevné roli serveru správce systému.
Uživatel databáze namapovaný na skupinu Windows Členství ve skupině Windows, členství v db_securityadmin pevné databázové roli, členství v db_owner pevné databázové roli nebo členství v pevné roli serveru správce systému.
Uživatel databáze namapovaný na certifikát Členství v db_securityadmin pevné databázové roli, členství v db_owner pevné databázové roli nebo členství v pevné roli serveru správce systému.
Uživatel databáze namapovaný na asymetrický klíč Členství v db_securityadmin pevné databázové roli, členství v db_owner pevné databázové roli nebo členství v pevné roli serveru správce systému.
Uživatel databáze není namapovaný na žádný objekt zabezpečení serveru ZOSOBNIT oprávnění pro uživatele, členství v db_securityadmin pevné databázové roli, členství v db_owner pevné databázové roli nebo členství v pevné roli serveru správce systému.
Role databáze ALTER oprávnění k roli, členství v db_securityadmin pevné databázové roli, členství v db_owner pevné databázové roli nebo členství v pevné roli serveru správce systému.
Aplikační role ALTER oprávnění k roli, členství v db_securityadmin pevné databázové roli, členství v db_owner pevné databázové roli nebo členství v pevné roli serveru správce systému.

Vlastníci objektů můžou udělit oprávnění k objektům, které vlastní. Objekty zabezpečení s oprávněním CONTROL u zabezpečitelné můžou udělit oprávnění k danému zabezpečitelnému objektu.

Udělení oprávnění CONTROL SERVER, jako jsou členové pevné role serveru sysadmin, mohou udělit jakékoli oprávnění na jakémkoli zabezpečitelném serveru na serveru. Udělení oprávnění CONTROL k databázi, jako jsou členové db_owner pevné databázové role, mohou udělit jakékoli oprávnění k jakémukoli zabezpečitelnému v databázi. Udělení oprávnění CONTROL schématu může udělit jakékoli oprávnění k libovolnému objektu v rámci schématu.

Examples

A. Udělení INSERT povolení ke schématu HumanResources hostům

GRANT INSERT ON SCHEMA :: HumanResources TO guest;  

B. Udělení oprávnění SELECT pro uživatele databáze WilJo pro uživatele schématu

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

Viz také

DENY Povolení schématu (Transact-SQL)
REVOKE Povolení schématu (Transact-SQL)
GRANT (Transact-SQL)
Oprávnění (databázový stroj)
Hlavní subjekty (databázový stroj)
CREATE CERTIFICATE (Transact-SQL)
CREATE ASYMMETRIC KEY (Transact-SQL)
CREATE APPLICATION ROLE (Transact-SQL)
Hierarchie šifrování
sys.fn_vestavěná_oprávnění (Transact-SQL)
sys.fn_my_permissions (Transact-SQL)
HAS_PERMS_BY_NAME (Transact-SQL)