Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:Azure Synapse Analytics
AnalyticsPlatform System (PDW)ENDPOINT di analisi SQL in Microsoft Fabric
Warehouse in Microsoft Fabric
Uso GRANT delle istruzioni e DENY per concedere o negare un permesso (come UPDATE) su un oggetto di sicurezza (come un database, una tabella, una vista, ecc.) a un security principal (un login, un utente di database o un ruolo di database). Usare REVOKE per rimuovere la concessione o negare un permesso.
Le autorizzazioni a livello server vengono applicate agli account di accesso. Le autorizzazioni a livello di database vengono applicate agli utenti database e ai ruoli del database.
Per visualizzare le autorizzazioni concesse e negate, eseguire una query nelle visualizzazioni sys.server_permissions e sys.database_permissions. Le autorizzazioni che non sono concesse o negate in modo esplicito per un'entità di sicurezza possono essere ereditate attraverso l'appartenenza a un ruolo con autorizzazioni. Le autorizzazioni dei ruoli predefiniti del database non possono essere modificate e non sono incluse nelle visualizzazioni sys.server_permissions e sys.database_permissions.
GRANT concede esplicitamente uno o più permessi.
DENY nega esplicitamente al titolare di avere uno o più permessi.
REVOKE Rimuove permessi esistenti GRANT o DENY autorizzati.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
-- Azure Synapse Analytics and Parallel Data Warehouse and Microsoft Fabric
GRANT
<permission> [ ,...n ]
[ ON [ <class_type> :: ] securable ]
TO principal [ ,...n ]
[ WITH GRANT OPTION ]
[;]
DENY
<permission> [ ,...n ]
[ ON [ <class_type> :: ] securable ]
TO principal [ ,...n ]
[ CASCADE ]
[;]
REVOKE
<permission> [ ,...n ]
[ ON [ <class_type> :: ] securable ]
[ FROM | TO ] principal [ ,...n ]
[ CASCADE ]
[;]
<permission> ::=
{ see the tables below }
<class_type> ::=
{
LOGIN
| DATABASE
| OBJECT
| ROLE
| SCHEMA
| USER
}
Argomenti
<permesso>[ ,... n ]
Una o più autorizzazioni da concedere, negare o revocare.
ON [ <class_type> :: ] securable La clausola ON descrive il parametro dell'entità a protezione diretta in cui concedere, negare o revocare le autorizzazioni.
<class_type> Tipo di classe dell'entità a protezione diretta. Questo può essere LOGIN, DATABASE, OGGETTO, SCHEMA, ROLE, o USER. Sebbene sia anche possibile concedere le autorizzazioni a SERVERclass_type, SERVER non è specificato per tali autorizzazioni. DATABASE non è specificato quando il permesso include la parola DATABASE (ad esempio ALTER ANY DATABASE). Se class_type non è specificato e il tipo di autorizzazione non è limitato al server o alla classe del database, viene usata la classe OBJECT.
securable
Nome di account di accesso, database, tabella, visualizzazione, schema, procedura, ruolo o utente in cui concedere, negare o revocare le autorizzazioni. Il nome dell'oggetto può essere specificato con le regole di denominazione in tre parti descritte nelle convenzioni di sintassi Transact-SQL.
AL preside [ ,...n ]
Una o più entità di sicurezza a cui vengono concesse, negate o revocate le autorizzazioni. L'entità di sicurezza corrisponde al nome di un account di accesso, di un utente database o di un ruolo del database.
DAL preside [ ,... n ]
Una o più entità di sicurezza a cui revocare le autorizzazioni. L'entità di sicurezza corrisponde al nome di un account di accesso, di un utente database o di un ruolo del database.
FROM può essere usato solo con un'istruzione REVOKE .
TO può essere usato con GRANT, DENY, oppure REVOKE.
CON GRANT OPZIONE
Indica che l'utente autorizzato potrà inoltre concedere l'autorizzazione specificata ad altre entità.
CASCADE
Indica che l'autorizzazione viene negata o revocata all'entità specificata e a tutte le entità a cui l'entità di sicurezza ha concesso l'autorizzazione. Richiesto quando il titolare ha il permesso con GRANT OPTION.
GRANT OPZIONE PER
Indica che verrà revocata la capacità di concedere l'autorizzazione specificata. Obbligatorio quando viene usato l'argomento CASCADE.
Importante
Se il mandante ha il permesso specificato senza questa GRANT opzione, il permesso stesso verrà revocato.
Autorizzazioni
Per concedere un permesso, il concedente deve avere o il permesso stesso con l'opzione WITHGRANT, oppure un permesso superiore che implichi che il permesso sia stato concesso. I proprietari degli oggetti possono concedere autorizzazioni per gli oggetti di cui sono proprietari. Le entità con l'autorizzazione CONTROL per un'entità a sicurezza diretta possono concedere l'autorizzazione per l'entità. I membri dei ruoli del database predefiniti db_owner e db_securityadmin possono concedere qualsiasi autorizzazione nel database.
Osservazioni generali
La negazione o la revoca delle autorizzazioni a un'entità di sicurezza non ha effetto sulle richieste che hanno passato l'autorizzazione e sono attualmente in esecuzione. Per limitare immediatamente l'accesso, è necessario annullare le richieste attive o terminare le sessioni correnti.
Nota
La maggior parte dei ruoli predefiniti del server non è disponibile in questa versione. In alternativa, usare i ruoli del database definiti dall'utente. Non è possibile aggiungere gli account di accesso al ruolo predefinito del server sysadmin. La concessione dell'autorizzazione CONTROL SERVER è simile all'appartenenza al ruolo predefinito del server sysadmin.
Alcune istruzioni richiedono più autorizzazioni. Ad esempio, per creare una tabella sono necessari i CREATE TABLE permessi nel database e i ALTER SCHEMA permessi per la tabella che conterrà la tabella.
Il sistema PDW (Analytics Platform System) a volte esegue stored procedure per distribuire le azioni utente ai nodi di calcolo. Pertanto, non è possibile negare l'autorizzazione di esecuzione per un intero database. Ad esempio DENY EXECUTE ON DATABASE::<name> TO <user>; , avrà esito negativo. Come soluzione alternativa, negare l'autorizzazione di esecuzione per schemi utente o oggetti specifici (routine).
In Microsoft Fabric, attualmente non può CREATE USER essere eseguito esplicitamente. Quando GRANT viene eseguito o DENY viene eseguito, l'utente verrà creato automaticamente.
In Microsoft Fabric le autorizzazioni a livello di server non sono gestibili.
Autorizzazioni implicite ed esplicite
Un'autorizzazione esplicita è un'autorizzazioneGRANT o DENY assegnata a un'entità da un'istruzione GRANT o DENY .
Un permesso implicito è un GRANT permesso o DENY che un principale (login, utente o ruolo di database) ha ereditato da un altro ruolo nel database.
Un'autorizzazione implicita può anche essere ereditata da un'autorizzazione di copertura o da un'autorizzazione padre. Ad esempio, il UPDATE permesso su una tabella può essere ereditato ottenendo UPDATE il permesso sullo schema che contiene la tabella, oppure il permesso CONTROL sulla tabella.
Concatenamento della proprietà
Quando più oggetti di database accedono l'uno all'altro in sequenza, questa sequenza è nota come catena. Sebbene queste catene non esistono in modo indipendente, quando in SQL Server vengono attraversati i collegamenti contenuti in una catena, SQL Server valuta le autorizzazioni per gli oggetti che compongono la catena diversamente da quanto farebbe se accedesse agli oggetti separatamente. Il concatenamento della proprietà ha implicazioni importanti per la gestione della sicurezza. Per altre informazioni sulle catene di proprietà, vedere Catene di proprietà e Esercitazione: Catene di proprietà e cambio di contesto.
Elenco delle autorizzazioni
Autorizzazioni a livello di server
Le autorizzazioni a livello di server possono essere concesse, negate e revocate dagli account di accesso.
Autorizzazioni valide per i server
SERVER DI CONTROLLO
AMMINISTRARE LE OPERAZIONI MASSIVE
ALTERARE QUALSIASI CONNESSIONE
MODIFICA QUALSIASI DATABASE
CREA QUALSIASI DATABASE
MODIFICA QUALSIASI EXTERNAL DATA SOURCE
MODIFICA QUALSIASI EXTERNAL FILE FORMAT
MODIFICA QUALSIASI LOGIN
MODIFICA STATO DEL SERVER
CONNECT SQL
VIEW QUALSIASI DEFINIZIONE
VIEW QUALSIASI DATABASE
VIEW STATO SERVER
Autorizzazioni valide per gli account di accesso
CONTROLLO ACCESO LOGIN
ALTER ON LOGIN
IMPERSONARE ON LOGIN
VIEW DEFINIZIONE
Autorizzazioni a livello di database
Le autorizzazioni a livello di database possono essere concesse, negate e revocate dagli utenti database e dai ruoli del database definiti dall'utente.
Autorizzazioni valide per tutte le classi di database
CONTROL
ALTER
VIEW DEFINIZIONE
Autorizzazioni valide per tutte le classi di database esclusi gli utenti
- ASSUMI LA PROPRIETÀ
Autorizzazioni valide solo per i database
MODIFICA QUALSIASI DATABASE
ALTER ON DATABASE
MODIFICARE QUALSIASI SPAZIO DATI
MODIFICA QUALSIASI ROLE
MODIFICA QUALSIASI SCHEMA
MODIFICA QUALSIASI USER
BACKUP DATABASE
COLLEGATI DATABASE
CREATE PROCEDURE
CREATE ROLE
CREATE SCHEMA
CREATE TABLE
CREATE VIEW
SHOWPLAN
Autorizzazioni valide solo per gli utenti
- IMPERSONATE
Autorizzazioni valide per i database, gli schemi e gli oggetti
ALTER
DELETE
EXECUTE
INSERT
SELECT
UPDATE
REFERENCES
Per una definizione di ogni tipo di autorizzazione, vedere Autorizzazioni (motore di database).
Autorizzazioni predefinite
L'elenco seguente descrive le autorizzazioni predefinite:
Quando un login viene creato utilizzando l'istruzione CREATE LOGIN , il nuovo login riceve il permesso CONNECT SQL .
Tutti gli account di accesso sono membri del ruolo del server public e non possono essere rimossi da public.
Quando un utente del database viene creato utilizzando il CREATE USER permesso, l'utente riceve il permesso CONNECT nel database.
Tutte le entità di sicurezza, incluso il ruolo public, non hanno alcuna autorizzazione esplicita o implicita per impostazione predefinita.
Quando un account di accesso o un utente diventa il proprietario di un database o un oggetto, l'account o l'utente ha sempre tutte le autorizzazioni per il database o l'oggetto. Le autorizzazioni di proprietà non possono essere modificate e non sono visibili come autorizzazioni esplicite. Le GRANTistruzioni , DENY, e REVOKE non hanno alcun effetto sui proprietari.
L'account di accesso sa ha tutte le autorizzazioni nell'appliance. Analogamente alle autorizzazioni di proprietà, le autorizzazioni sa non possono essere modificate e non sono visibili come autorizzazioni esplicite. Le GRANTistruzioni , DENY, e REVOKE non hanno alcun effetto sull'accesso SA . L'account di accesso sa non può essere rinominato.
L'istruzione USE non richiede autorizzazioni. Tutte le entità di sicurezza possono eseguire l'istruzione USE in qualsiasi database.
Esempi: Azure Synapse Analytics e Piattaforma di strumenti analitici (PDW)
R. Concessione di un'autorizzazione a livello di server a un account di accesso
Le due istruzioni seguenti concedono un'autorizzazione a livello di server a un account di accesso.
GRANT CONTROL SERVER TO [Ted];
GRANT ALTER ANY DATABASE TO Mary;
B. Concessione di un'autorizzazione a livello di server a un account di accesso
L'esempio seguente concede un'autorizzazione a livello di server in un account di accesso a un'entità di sicurezza del server (un altro account di accesso).
GRANT VIEW DEFINITION ON LOGIN::Ted TO Mary;
C. Concessione di un'autorizzazione a livello di database a un utente
L'esempio seguente concede un'autorizzazione a livello di database in un utente a un'entità di sicurezza del database (un altro utente).
GRANT VIEW DEFINITION ON USER::[Ted] TO Mary;
D. Concessione, negazione e revoca di un'autorizzazione dello schema
La seguente GRANT affermazione concede a Yuen la possibilità di selezionare dati da qualsiasi tabella o vista nello schema dbo.
GRANT SELECT ON SCHEMA::dbo TO [Yuen];
La seguente DENY affermazione impedisce a Yuen di selezionare dati da qualsiasi tabella o vista nello schema dbo. Yuen non può leggere i dati anche se dispone dell'autorizzazione in modo diverso, ad esempio tramite l'appartenenza a un ruolo.
DENY SELECT ON SCHEMA::dbo TO [Yuen];
La seguente REVOKE affermazione rimuove il DENY permesso. Le autorizzazioni esplicite di Yuen sono ora neutre. Yuen può selezionare dati da qualsiasi tabella attraverso un'altra autorizzazione implicita, ad esempio l'appartenenza a un ruolo.
REVOKE SELECT ON SCHEMA::dbo TO [Yuen];
E. Dimostrazione della clausola OBJECT:: facoltativa
Poiché OBJECT è la classe predefinita di un'istruzione di autorizzazione, le due istruzioni seguenti corrispondono. La clausola OBJECT:: è facoltativa.
GRANT UPDATE ON OBJECT::dbo.StatusTable TO [Ted];
GRANT UPDATE ON dbo.StatusTable TO [Ted];