Sdílet prostřednictvím


Udělení oprávnění 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

VE SCHÉMATU ::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.

MOŽNOST GRANTU
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 JAKÉKOLIV SCHÉMA
CONTROL CONTROL CONTROL
VYTVOŘIT SEKVENCI ALTER ZMĚNIT JAKÉKOLIV SCHÉMA
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
ZOBRAZIT SLEDOVÁNÍ ZMĚN CONTROL CONTROL
ZOBRAZIT DEFINICI CONTROL ZOBRAZIT DEFINICI

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 pro databázi a oprávnění EXECUTE pro schéma 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á pro databázi oprávnění CREATE SYNONYM a oprávnění SELECT pro schéma 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 oprávnění SELECT pro schéma 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

Grantor (nebo objekt zabezpečení zadaný pomocí možnosti AS) musí mít buď oprávnění samotné s možností GRANT OPTION, nebo vyšší oprávnění, které znamená udělení oprávnění.

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í oprávnění INSERT pro schéma HumanResources hostu

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é

Odepřít oprávnění schématu (Transact-SQL)
Oprávnění ke schématu REVOKE (Transact-SQL)
GRANT (Transact-SQL)
Oprávnění (databázový stroj)
Hlavní subjekty (databázový stroj)
VYTVOŘIT CERTIFIKÁT (Transact-SQL)
VYTVOŘIT ASYMETRICKÝ KLÍČ (Transact-SQL)
VYTVOŘENÍ APLIKAČNÍ ROLE (Transact-SQL)
Hierarchie šifrování
sys.fn_builtin_permissions (Transact-SQL)
sys.fn_my_permissions (Transact-SQL)
HAS_PERMS_BY_NAME (Transact-SQL)