Olvasás angol nyelven

Megosztás a következőn keresztül:


GRANT (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példányAzure Synapse AnalyticsAnalytics platformrendszer (PDW)SQL Analytics-végpont a Microsoft FabricWarehouse-ban a Microsoft FabricSQL-adatbázisban a Microsoft Fabric

Engedélyeket ad egy biztonságos tagnak. Az általános fogalom a GRANT <some permission> ON <some object> TO <some user, login, or group>. Az engedélyek általános ismertetését a engedélyek (adatbázismotor)című témakörben talál.

Transact-SQL szintaxis konvenciói

Szintaxis

Az SQL Server, az Azure SQL Database és a Fabric SQL Database szintaxisa.

syntaxsql
-- Simplified syntax for GRANT
GRANT { ALL [ PRIVILEGES ] }
      | permission [ ( column [ , ...n ] ) ] [ , ...n ]
      [ ON [ class :: ] securable ] TO principal [ , ...n ]
      [ WITH GRANT OPTION ] [ AS principal ]

Szintaxis az Azure Synapse Analyticshez, a párhuzamos adattárházhoz és a Microsoft Fabric-raktárhoz.

syntaxsql
GRANT
    <permission> [ , ...n ]
    [ ON [ <class_type> :: ] securable ]
    TO principal [ , ...n ]
    [ WITH GRANT OPTION ]
[;]

<permission> ::=
{ see the tables below }

<class_type> ::=
{
      LOGIN
    | DATABASE
    | OBJECT
    | ROLE
    | SCHEMA
    | USER
}

Érvek

ÖSSZES

Ez a beállítás elavult, és csak a visszamenőleges kompatibilitás érdekében van fenntartva. Nem ad meg minden lehetséges engedélyt. A ALL megadása egyenértékű a következő engedélyek biztosításával.

Securable Engedélyek
Adatbázis BACKUP DATABASE, BACKUP LOG, CREATE DATABASE, CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE TABLEés CREATE VIEW
Skaláris függvény EXECUTE és REFERENCES
Táblaértékű függvény DELETE, INSERT, REFERENCES, SELECTés UPDATE
Tárolt eljárás EXECUTE
Asztal DELETE, INSERT, REFERENCES, SELECTés UPDATE
Nézet DELETE, INSERT, REFERENCES, SELECTés UPDATE

KIVÁLTSÁGOK

Az ISO-megfelelőség része. Nem változtatja meg a ALLviselkedését.

engedély

Az engedély neve. A biztonságossá tételhez szükséges engedélyek érvényes leképezéseit az alábbi szakaszok ismertetik.

oszlop

Egy tábla azon oszlopának nevét adja meg, amelyen engedélyeket adnak meg. A zárójelek ( és ) szükségesek.

osztály

Annak a biztonságosnak az osztályát adja meg, amelyen az engedély meg van adva. A hatókör-minősítő :: szükséges.

biztonságos

Azt a biztonságossá tételt adja meg, amelyen az engedély meg van adva.

TO egyszerű

Egy tag neve. Azoknak a tagoknak, amelyeknek a biztonságossá teheti az engedélyeket, a biztonságosságtól függően eltérőek lehetnek. Érvényes kombinációkat a következő szakaszokban talál.

ENGEDÉLYEZÉS LEHETŐSÉG

Azt jelzi, hogy a kedvezményezettnek lehetősége lesz arra is, hogy a megadott engedélyt más tagoknak is megadja.

AS egyszerű

Használja a AS <principal> záradékot annak jelzésére, hogy az engedély jogosultjaként nyilvántartott tagnak nem az utasítást végrehajtó személynek kell lennie. Tegyük fel például, hogy a felhasználói Maryprincipal_id12rendelkezik, és a felhasználói Raul egyszerű 15. Mary végrehajtja GRANT SELECT ON OBJECT::X TO Steven WITH GRANT OPTION AS Raul; Most a sys.database_permissions tábla azt jelzi, hogy a grantor_principal_id15 (Raul) volt, annak ellenére, hogy az utasítást ténylegesen a felhasználói 12 (Mary) hajtotta végre.

A AS záradék használata általában csak akkor ajánlott, ha explicit módon meg kell határoznia az engedélyláncot. További információ: Az engedély-ellenőrzési algoritmusösszegzése.

A AS használata ebben az utasításban nem jelenti azt, hogy megszemélyesíthet egy másik felhasználót.

Megjegyzések

A GRANT utasítás teljes szintaxisa összetett. Az előző szintaxisdiagram egyszerűbb volt, hogy felhívja a figyelmet a szerkezetére. Az engedélyek adott biztonságossá tételének teljes szintaxisát a cikk későbbi részében felsorolt cikkek ismertetik.

A REVOKE utasítással eltávolíthatók a megadott engedélyek, és a DENY utasítással megakadályozhatja, hogy egy tag egy adott engedélyt szerezzen egy GRANT.

Az engedély megadása eltávolítja az engedély DENY vagy REVOKE a megadott biztonságos eszközön. Ha ugyanaz az engedély egy magasabb hatókörben van megtagadva, amely tartalmazza a biztonságossá tételt, a DENY elsőbbséget élvez. A megadott engedély magasabb hatókörben való visszavonása azonban nem élvez elsőbbséget.

Az adatbázisszintű engedélyek a megadott adatbázis hatókörén belül vannak megadva. Ha egy felhasználónak engedélyekre van szüksége egy másik adatbázisban lévő objektumokhoz, hozza létre a felhasználói fiókot a másik adatbázisban, vagy adjon hozzáférést a felhasználói fióknak a másik adatbázishoz és az aktuális adatbázishoz.

Figyelemfelhívás

A táblaszintű DENY nem élvez elsőbbséget az oszlopszintű GRANT. Az engedélyhierarchiában ez az inkonzisztencia megmarad a visszamenőleges kompatibilitás érdekében. Egy későbbi kiadásban el lesz távolítva.

A sp_helprotect rendszer által tárolt eljárás egy adatbázisszintű biztonságos engedélyről számol be.

A Microsoft Fabricben a CREATE USER jelenleg nem hajthatók végre explicit módon. A GRANT vagy DENY végrehajtásakor a rendszer automatikusan létrehozza a felhasználót.

A TÁMOGATÁS LEHETŐSÉGGEL

A GRANT ... WITH GRANT OPTION meghatározza, hogy az engedélyt kapó biztonsági tagnak lehetősége van a megadott engedély megadására más biztonsági fiókok számára. Ha az engedélyt kapó tag szerepkör vagy Windows-csoport, a AS záradékot akkor kell használni, ha az objektumengedélyt tovább kell adni azoknak a felhasználóknak, akik nem tagjai a csoportnak vagy a szerepkörnek. Mivel a csoport vagy szerepkör helyett csak egy felhasználó hajthat végre GRANT utasítást, a csoport vagy szerepkör egy adott tagjának a AS záradék használatával kell explicit módon meghívnia a szerepkört vagy csoporttagságokat az engedély megadásakor. Az alábbi példa bemutatja, hogyan használja a WITH GRANT OPTION egy szerepkör vagy Windows-csoport számára.

SQL
-- Execute the following as a database owner
GRANT EXECUTE ON TestProc TO TesterRole WITH GRANT OPTION;
EXEC sp_addrolemember TesterRole, User1;

-- Execute the following as User1
-- The following fails because User1 does not have the permission as the User1
GRANT EXECUTE ON TestProc TO User2;

-- The following succeeds because User1 invokes the TesterRole membership
GRANT EXECUTE ON TestProc TO User2 AS TesterRole;

SQL Server-engedélyek diagramja

A pdf formátumú adatbázismotor-engedélyeket ábrázoló plakát méretű diagramért lásd: https://aka.ms/sql-permissions-poster.

Engedélyek

Az engedélyezőnek (vagy a AS beállítással megadott tagnak) magának az engedélynek GRANT OPTIONkell rendelkeznie, vagy egy magasabb engedélynek, amely az engedély megadását jelenti. Ha a AS lehetőséget használja, további követelmények érvényesek. További részletekért tekintse meg a biztonságossá tételről szóló cikket.

Az objektumtulajdonosok engedélyeket adhatnak a saját objektumaikhoz. A biztonságossá CONTROL engedéllyel rendelkező tagok engedélyt adhatnak a biztonságossá tételhez.

A CONTROL SERVER engedély jogosultai, például a sysadmin rögzített kiszolgálói szerepkör tagjai bármilyen, a kiszolgálón biztonságossá tehetnek engedélyt. Az adatbázisra vonatkozó CONTROL engedély megadása, például a db_owner rögzített adatbázis-szerepkör tagjai bármilyen engedélyt adhatnak az adatbázis bármely biztonságossá tételéhez. A séma CONTROL engedélyei bármilyen engedélyt adhatnak a sémán belüli bármely objektumra.

Példák

Az alábbi táblázat a biztonságosságra vonatkozó szintaxist leíró cikkeket és a biztonságossá tételt ismertető cikkeket sorolja fel.

Securable GRANT szintaxis
Alkalmazásszerepkör GRANT-adatbázisnév engedélyeinek (Transact-SQL)
Összeszerelés GRANT szerelvényengedélyek (Transact-SQL)
Aszimmetrikus kulcs GRANT aszimmetrikus kulcsengedélyek (Transact-SQL)
Rendelkezésre állási csoport GRANT rendelkezésre állási csoport engedélyeinek (Transact-SQL)
Igazolás GRANT tanúsítványengedélyek (Transact-SQL)
Szerződés GRANT szolgáltatásközvetítői engedélyek (Transact-SQL)
Adatbázis GRANT-adatbázis engedélyeinek (Transact-SQL)
Adatbázis hatókörébe tartozó hitelesítő adatok GRANT database scoped Credential (Transact-SQL)
Végpont GRANT-végpontengedélyek (Transact-SQL)
Full-Text katalógus GRANT Full-Text engedélyek (Transact-SQL)
Full-Text stoplist GRANT Full-Text engedélyek (Transact-SQL)
Funkció GRANT objektumengedélyek (Transact-SQL)
Bejelentkezés GRANT-kiszolgáló egyszerű engedélyeinek (Transact-SQL)
Üzenet típusa GRANT szolgáltatásközvetítői engedélyek (Transact-SQL)
Tárgy GRANT objektumengedélyek (Transact-SQL)
Sor GRANT objektumengedélyek (Transact-SQL)
Távoli szolgáltatás kötése GRANT szolgáltatásközvetítői engedélyek (Transact-SQL)
Szerep GRANT-adatbázisnév engedélyeinek (Transact-SQL)
Útvonal GRANT szolgáltatásközvetítői engedélyek (Transact-SQL)
Séma GRANT sémaengedélyek (Transact-SQL)
Keresési tulajdonságlista GRANT Keresési tulajdonságlista engedélyeinek (Transact-SQL)
Kiszolgáló GRANT-kiszolgáló engedélyeinek (Transact-SQL)
Szolgáltatás GRANT szolgáltatásközvetítői engedélyek (Transact-SQL)
Tárolt eljárás GRANT objektumengedélyek (Transact-SQL)
Szimmetrikus kulcs GRANT szimmetrikus kulcsengedélyek (Transact-SQL)
Szinonima GRANT objektumengedélyek (Transact-SQL)
Rendszerobjektumok GRANT rendszerobjektum-engedélyek (Transact-SQL)
Asztal GRANT objektumengedélyek (Transact-SQL)
Típus GRANT-típusengedélyek (Transact-SQL)
Felhasználó GRANT-adatbázisnév engedélyeinek (Transact-SQL)
Nézet GRANT objektumengedélyek (Transact-SQL)
XML-sémagyűjtemény GRANT XML-sémagyűjteményi engedélyek (Transact-SQL)