Autorizzazioni (Motore di database)

Ogni entità a protezione diretta SQL Server dispone di autorizzazioni associate che possono essere concesse a un'entità. Questo argomento contiene informazioni sui seguenti aspetti:

  • Convenzioni di denominazione delle autorizzazioni

  • Autorizzazioni relative a particolari entità a protezione diretta

  • Autorizzazioni SQL Server

  • Algoritmo di controllo delle autorizzazioni

  • Esempi

Convenzioni di denominazione delle autorizzazioni

Di seguito vengono descritte le convenzioni generali adottate per la denominazione delle autorizzazioni:

  • CONTROL

    Conferisce al beneficiario capacità da proprietario. In pratica il beneficiario dispone di tutte le autorizzazioni definite sull'entità a protezione diretta. Un'entità a cui è stata conferita un'autorizzazione CONTROL può a sua volta concedere autorizzazioni sull'entità a protezione diretta. Poiché il modello di protezione di SQL Server è di tipo gerarchico, un'autorizzazione CONTROL in un particolare ambito comprende implicitamente un'autorizzazione CONTROL su tutte le entità a protezione diretta comprese in tale ambito. Un'autorizzazione CONTROL su un database, ad esempio, implica tutte le autorizzazioni sul database, su tutti gli assembly del database, su tutti gli schemi del database e sugli oggetti contenuti in tutti gli schemi del database.

  • ALTER

    Conferisce la capacità di modificare le proprietà, eccetto il diritto di proprietà, di una particolare entità a protezione diretta. Quando viene concessa in un ambito, l'autorizzazione ALTER concede la capacità di modificare, creare o eliminare una qualsiasi entità a protezione diretta contenuta in tale ambito. Un'autorizzazione ALTER in uno schema, ad esempio, include la capacità di creare, modificare ed eliminare oggetti contenuti nello schema.

  • ALTER ANY <Entità a protezione diretta del server>, dove Entità a protezione diretta del server può essere una qualsiasi entità a protezione diretta del server.

    Conferisce la capacità di creare, modificare o eliminare singole istanze dell'Entità a protezione diretta del server. L'autorizzazione ALTER ANY LOGIN, ad esempio, conferisce la capacità di creare, modificare o eliminare un qualsiasi account di accesso nell'istanza.

  • ALTER ANY <Entità a protezione diretta del database>, dove Entità a protezione diretta del database può essere una qualsiasi entità a protezione diretta a livello del database.

    Conferisce la capacità di creare, modificare o eliminare singole istanze dell'Entità a protezione diretta del database. L'autorizzazione ALTER ANY SCHEMA, ad esempio, conferisce la capacità di creare, modificare o eliminare un qualsiasi schema contenuto nel database.

  • TAKE OWNERSHIP

    Consente al beneficiario di prendere possesso dell'entità a protezione diretta sulla quale viene concessa questa autorizzazione.

  • IMPERSONATE <Account di accesso>

    Consente al beneficiario di rappresentare l'account di accesso.

  • IMPERSONATE <Utente>

    Consente al beneficiario di rappresentare l'utente.

  • CREATE <Entità a protezione diretta del server>

    Conferisce al beneficiario la capacità di creare l'entità a protezione diretta del server.

  • CREATE <Entità a protezione diretta del database>

    Conferisce al beneficiario la capacità di creare l'entità a protezione diretta del database.

  • CREATE <Entità a protezione diretta contenuta in uno schema>

    Conferisce la capacità di creare un'entità a protezione diretta contenuta in uno schema. Per creare un'entità a protezione diretta in un particolare schema, è però necessario avere un'autorizzazione ALTER sullo schema.

  • VIEW DEFINITION

    Consente al beneficiario di accedere a metadati.

  • REFERENCES

    L'autorizzazione REFERENCES su una tabella è necessaria per creare un vincolo FOREIGN KEY che faccia riferimento alla tabella stessa.

    L'autorizzazione REFERENCES è necessaria su un oggetto per creare FUNCTION o VIEW con la clausola WITH SCHEMABINDING che faccia riferimento all'oggetto stesso.

Autorizzazioni applicabili a particolari entità a protezione diretta

Nella tabella seguente vengono elencati le classi principali di autorizzazione e i tipi di entità a protezione diretta a cui possono essere applicati.

Autorizzazione

Applicabile a

SELECT

Sinonimi

Tabelle e colonne

Funzioni con valori di tabella, Transact-SQL e Common Language Runtime (CLR), e colonne

Viste e colonne

VIEW CHANGE TRACKING

Tabelle

Schemi

UPDATE

Sinonimi

Tabelle e colonne

Viste e colonne

REFERENCES

Funzioni scalari e di aggregazione (Transact-SQL e CLR)

Code Service Broker

Tabelle e colonne

Funzioni con valori di tabella (Transact-SQL e CLR) e colonne

Viste e colonne

INSERT

Sinonimi

Tabelle e colonne

Viste e colonne

DELETE

Sinonimi

Tabelle e colonne

Viste e colonne

EXECUTE

Procedure (Transact-SQL e CLR)

Funzioni scalari e di aggregazione (Transact-SQL e CLR)

Sinonimi

Tipi CLR

RECEIVE

Code Service Broker

VIEW DEFINITION

Procedure (Transact-SQL e CLR)

Code Service Broker

Funzioni scalari e di aggregazione (Transact-SQL e CLR)

Sinonimi

Tabelle

Funzioni con valori di tabella (Transact-SQL e CLR)

Viste

ALTER

Procedure (Transact-SQL e CLR)

Funzioni scalari e di aggregazione (Transact-SQL e CLR)

Code Service Broker

Tabelle

Funzioni con valori di tabella (Transact-SQL e CLR)

Viste

TAKE OWNERSHIP

Procedure (Transact-SQL e CLR)

Funzioni scalari e di aggregazione (Transact-SQL e CLR)

Sinonimi

Tabelle

Funzioni con valori di tabella (Transact-SQL e CLR)

Viste

CONTROL

Procedure (Transact-SQL e CLR)

Funzioni scalari e di aggregazione (Transact-SQL e CLR)

Code Service Broker

Sinonimi

Tabelle

Funzioni con valori di tabella (Transact-SQL e CLR)

Viste

Autorizzazioni SQL Server

La tabella seguente contiene un elenco completo delle autorizzazioni SQL Server.

Entità a protez. diretta di base

Autorizzazioni di granularità sull'entità a protez. diretta di base

Codice tipo di autorizzazione

Entità a protez. diretta contenente l'entità a protez. diretta di base

Autorizzazione sull'entità a protez. diretta contenente che implica un'autorizzazione di granularità sull'entità a protez. diretta di base

APPLICATION ROLE

ALTER

AL

DATABASE

ALTER ANY APPLICATION ROLE

APPLICATION ROLE

CONTROL

CL

DATABASE

CONTROL

APPLICATION ROLE

VIEW DEFINITION

VW

DATABASE

VIEW DEFINITION

ASSEMBLY

ALTER

AL

DATABASE

ALTER ANY ASSEMBLY

ASSEMBLY

CONTROL

CL

DATABASE

CONTROL

ASSEMBLY

REFERENCES

RF

DATABASE

REFERENCES

ASSEMBLY

TAKE OWNERSHIP

TO

DATABASE

CONTROL

ASSEMBLY

VIEW DEFINITION

VW

DATABASE

VIEW DEFINITION

ASYMMETRIC KEY

ALTER

AL

DATABASE

ALTER ANY ASYMMETRIC KEY

ASYMMETRIC KEY

CONTROL

CL

DATABASE

CONTROL

ASYMMETRIC KEY

REFERENCES

RF

DATABASE

REFERENCES

ASYMMETRIC KEY

TAKE OWNERSHIP

TO

DATABASE

CONTROL

ASYMMETRIC KEY

VIEW DEFINITION

VW

DATABASE

VIEW DEFINITION

CERTIFICATE

ALTER

AL

DATABASE

ALTER ANY CERTIFICATE

CERTIFICATE

CONTROL

CL

DATABASE

CONTROL

CERTIFICATE

REFERENCES

RF

DATABASE

REFERENCES

CERTIFICATE

TAKE OWNERSHIP

TO

DATABASE

CONTROL

CERTIFICATE

VIEW DEFINITION

VW

DATABASE

VIEW DEFINITION

CONTRACT

ALTER

AL

DATABASE

ALTER ANY CONTRACT

CONTRACT

CONTROL

CL

DATABASE

CONTROL

CONTRACT

REFERENCES

RF

DATABASE

REFERENCES

CONTRACT

TAKE OWNERSHIP

TO

DATABASE

CONTROL

CONTRACT

VIEW DEFINITION

VW

DATABASE

VIEW DEFINITION

DATABASE

ALTER

AL

SERVER

ALTER ANY DATABASE

DATABASE

ALTER ANY APPLICATION ROLE

ALAR

SERVER

CONTROL SERVER

DATABASE

ALTER ANY ASSEMBLY

ALAS

SERVER

CONTROL SERVER

DATABASE

ALTER ANY ASYMMETRIC KEY

ALAK

SERVER

CONTROL SERVER

DATABASE

ALTER ANY CERTIFICATE

ALCF

SERVER

CONTROL SERVER

DATABASE

ALTER ANY CONTRACT

ALSC

SERVER

CONTROL SERVER

DATABASE

ALTER ANY DATABASE AUDIT

ALDA

SERVER

ALTER ANY SERVER AUDIT

DATABASE

ALTER ANY DATABASE DDL TRIGGER

ALTG

SERVER

CONTROL SERVER

DATABASE

ALTER ANY DATABASE EVENT NOTIFICATION

ALED

SERVER

ALTER ANY EVENT NOTIFICATION

DATABASE

ALTER ANY DATASPACE

ALDS

SERVER

CONTROL SERVER

DATABASE

ALTER ANY FULLTEXT CATALOG

ALFT

SERVER

CONTROL SERVER

DATABASE

ALTER ANY MESSAGE TYPE

ALMT

SERVER

CONTROL SERVER

DATABASE

ALTER ANY REMOTE SERVICE BINDING

ALSB

SERVER

CONTROL SERVER

DATABASE

ALTER ANY ROLE

ALRL

SERVER

CONTROL SERVER

DATABASE

ALTER ANY ROUTE

ALRT

SERVER

CONTROL SERVER

DATABASE

ALTER ANY SCHEMA

ALSM

SERVER

CONTROL SERVER

DATABASE

ALTER ANY SERVICE

ALSV

SERVER

CONTROL SERVER

DATABASE

ALTER ANY SYMMETRIC KEY

ALSK

SERVER

CONTROL SERVER

DATABASE

ALTER ANY USER

ALUS

SERVER

CONTROL SERVER

DATABASE

AUTHENTICATE

AUTH

SERVER

AUTHENTICATE SERVER

DATABASE

BACKUP DATABASE

BADB

SERVER

CONTROL SERVER

DATABASE

BACKUP LOG

BALO

SERVER

CONTROL SERVER

DATABASE

CHECKPOINT

CP

SERVER

CONTROL SERVER

DATABASE

CONNECT

CO

SERVER

CONTROL SERVER

DATABASE

CONNECT REPLICATION

CORP

SERVER

CONTROL SERVER

DATABASE

CONTROL

CL

SERVER

CONTROL SERVER

DATABASE

CREATE AGGREGATE

CRAG

SERVER

CONTROL SERVER

DATABASE

CREATE ASSEMBLY

CRAS

SERVER

CONTROL SERVER

DATABASE

CREATE ASYMMETRIC KEY

CRAK

SERVER

CONTROL SERVER

DATABASE

CREATE CERTIFICATE

CRCF

SERVER

CONTROL SERVER

DATABASE

CREATE CONTRACT

CRSC

SERVER

CONTROL SERVER

DATABASE

CREATE DATABASE

CRDB

SERVER

CREATE ANY DATABASE

DATABASE

CREATE DATABASE DDL EVENT NOTIFICATION

CRED

SERVER

CREATE DDL EVENT NOTIFICATION

DATABASE

CREATE DEFAULT

CRDF

SERVER

CONTROL SERVER

DATABASE

CREATE FULLTEXT CATALOG

CRFT

SERVER

CONTROL SERVER

DATABASE

CREATE FUNCTION

CRFN

SERVER

CONTROL SERVER

DATABASE

CREATE MESSAGE TYPE

CRMT

SERVER

CONTROL SERVER

DATABASE

CREATE PROCEDURE

CRPR

SERVER

CONTROL SERVER

DATABASE

CREATE QUEUE

CRQU

SERVER

CONTROL SERVER

DATABASE

CREATE REMOTE SERVICE BINDING

CRSB

SERVER

CONTROL SERVER

DATABASE

CREATE ROLE

CRRL

SERVER

CONTROL SERVER

DATABASE

CREATE ROUTE

CRRT

SERVER

CONTROL SERVER

DATABASE

CREATE RULE

CRRU

SERVER

CONTROL SERVER

DATABASE

CREATE SCHEMA

CRSM

SERVER

CONTROL SERVER

DATABASE

CREATE SERVICE

CRSV

SERVER

CONTROL SERVER

DATABASE

CREATE SYMMETRIC KEY

CRSK

SERVER

CONTROL SERVER

DATABASE

CREATE SYNONYM

CRSN

SERVER

CONTROL SERVER

DATABASE

CREATE TABLE

CRTB

SERVER

CONTROL SERVER

DATABASE

CREATE TYPE

CRTY

SERVER

CONTROL SERVER

DATABASE

CREATE VIEW

CRVW

SERVER

CONTROL SERVER

DATABASE

CREATE XML SCHEMA COLLECTION

CRXS

SERVER

CONTROL SERVER

DATABASE

DELETE

DL

SERVER

CONTROL SERVER

DATABASE

EXECUTE

EX

SERVER

CONTROL SERVER

DATABASE

INSERT

IN

SERVER

CONTROL SERVER

DATABASE

REFERENCES

RF

SERVER

CONTROL SERVER

DATABASE

SELECT

SL

SERVER

CONTROL SERVER

DATABASE

SHOWPLAN

SPLN

SERVER

ALTER TRACE

DATABASE

SUBSCRIBE QUERY NOTIFICATIONS

SUQN

SERVER

CONTROL SERVER

DATABASE

TAKE OWNERSHIP

TO

SERVER

CONTROL SERVER

DATABASE

UPDATE

UP

SERVER

CONTROL SERVER

DATABASE

VIEW DATABASE STATE

VWDS

SERVER

VIEW SERVER STATE

DATABASE

VIEW DEFINITION

VW

SERVER

VIEW ANY DEFINITION

ENDPOINT

ALTER

AL

SERVER

ALTER ANY ENDPOINT

ENDPOINT

CONNECT

CO

SERVER

CONTROL SERVER

ENDPOINT

CONTROL

CL

SERVER

CONTROL SERVER

ENDPOINT

TAKE OWNERSHIP

TO

SERVER

CONTROL SERVER

ENDPOINT

VIEW DEFINITION

VW

SERVER

VIEW ANY DEFINITION

FULLTEXT CATALOG

ALTER

AL

DATABASE

ALTER ANY FULLTEXT CATALOG

FULLTEXT CATALOG

CONTROL

CL

DATABASE

CONTROL

FULLTEXT CATALOG

REFERENCES

RF

DATABASE

REFERENCES

FULLTEXT CATALOG

TAKE OWNERSHIP

TO

DATABASE

CONTROL

FULLTEXT CATALOG

VIEW DEFINITION

VW

DATABASE

VIEW DEFINITION

FULLTEXT STOPLIST

ALTER

AL

DATABASE

ALTER ANY FULLTEXT CATALOG

FULLTEXT STOPLIST

CONTROL

CL

DATABASE

CONTROL

FULLTEXT STOPLIST

REFERENCES

RF

DATABASE

REFERENCES

FULLTEXT STOPLIST

TAKE OWNERSHIP

TO

DATABASE

CONTROL

FULLTEXT STOPLIST

VIEW DEFINITION

VW

DATABASE

VIEW DEFINITION

LOGIN

ALTER

AL

SERVER

ALTER ANY LOGIN

LOGIN

CONTROL

CL

SERVER

CONTROL SERVER

LOGIN

IMPERSONATE

IM

SERVER

CONTROL SERVER

LOGIN

VIEW DEFINITION

VW

SERVER

VIEW ANY DEFINITION

MESSAGE TYPE

ALTER

AL

DATABASE

ALTER ANY MESSAGE TYPE

MESSAGE TYPE

CONTROL

CL

DATABASE

CONTROL

MESSAGE TYPE

REFERENCES

RF

DATABASE

REFERENCES

MESSAGE TYPE

TAKE OWNERSHIP

TO

DATABASE

CONTROL

MESSAGE TYPE

VIEW DEFINITION

VW

DATABASE

VIEW DEFINITION

OBJECT

ALTER

AL

SCHEMA

ALTER

OBJECT

CONTROL

CL

SCHEMA

CONTROL

OBJECT

DELETE

DL

SCHEMA

DELETE

OBJECT

EXECUTE

EX

SCHEMA

EXECUTE

OBJECT

INSERT

IN

SCHEMA

INSERT

OBJECT

RECEIVE

RC

SCHEMA

CONTROL

OBJECT

REFERENCES

RF

SCHEMA

REFERENCES

OBJECT

SELECT

SL

SCHEMA

SELECT

OBJECT

TAKE OWNERSHIP

TO

SCHEMA

CONTROL

OBJECT

UPDATE

UP

SCHEMA

UPDATE

OBJECT

VIEW CHANGE TRACKING

VWCT

SCHEMA

VIEW CHANGE TRACKING

OBJECT

VIEW DEFINITION

VW

SCHEMA

VIEW DEFINITION

REMOTE SERVICE BINDING

ALTER

AL

DATABASE

ALTER ANY REMOTE SERVICE BINDING

REMOTE SERVICE BINDING

CONTROL

CL

DATABASE

CONTROL

REMOTE SERVICE BINDING

TAKE OWNERSHIP

TO

DATABASE

CONTROL

REMOTE SERVICE BINDING

VIEW DEFINITION

VW

DATABASE

VIEW DEFINITION

ROLE

ALTER

AL

DATABASE

ALTER ANY ROLE

ROLE

CONTROL

CL

DATABASE

CONTROL

ROLE

TAKE OWNERSHIP

TO

DATABASE

CONTROL

ROLE

VIEW DEFINITION

VW

DATABASE

VIEW DEFINITION

ROUTE

ALTER

AL

DATABASE

ALTER ANY ROUTE

ROUTE

CONTROL

CL

DATABASE

CONTROL

ROUTE

TAKE OWNERSHIP

TO

DATABASE

CONTROL

ROUTE

VIEW DEFINITION

VW

DATABASE

VIEW DEFINITION

SCHEMA

ALTER

AL

DATABASE

ALTER ANY SCHEMA

SCHEMA

CONTROL

CL

DATABASE

CONTROL

SCHEMA

DELETE

DL

DATABASE

DELETE

SCHEMA

EXECUTE

EX

DATABASE

EXECUTE

SCHEMA

INSERT

IN

DATABASE

INSERT

SCHEMA

REFERENCES

RF

DATABASE

REFERENCES

SCHEMA

SELECT

SL

DATABASE

SELECT

SCHEMA

TAKE OWNERSHIP

TO

DATABASE

CONTROL

SCHEMA

UPDATE

UP

DATABASE

UPDATE

SCHEMA

VIEW CHANGE TRACKING

VWCT

DATABASE

VIEW CHANGE TRACKING

SCHEMA

VIEW DEFINITION

VW

DATABASE

VIEW DEFINITION

SERVER

ADMINISTER BULK OPERATIONS

ADBO

Non applicabile

Non applicabile

SERVER

ALTER ANY CONNECTION

ALCO

Non applicabile

Non applicabile

SERVER

ALTER ANY CREDENTIAL

ALCD

Non applicabile

Non applicabile

SERVER

ALTER ANY DATABASE

ALDB

Non applicabile

Non applicabile

SERVER

ALTER ANY ENDPOINT

ALHE

Non applicabile

Non applicabile

SERVER

ALTER ANY EVENT NOTIFICATION

ALES

Non applicabile

Non applicabile

SERVER

ALTER ANY LINKED SERVER

ALLS

Non applicabile

Non applicabile

SERVER

ALTER ANY LOGIN

ALLG

Non applicabile

Non applicabile

SERVER

ALTER ANY SERVER AUDIT

ALAA

Non applicabile

Non applicabile

SERVER

ALTER RESOURCES

ALRS

Non applicabile

Non applicabile

SERVER

ALTER SERVER STATE

ALSS

Non applicabile

Non applicabile

SERVER

ALTER SETTINGS

ALST

Non applicabile

Non applicabile

SERVER

ALTER TRACE

ALTR

Non applicabile

Non applicabile

SERVER

AUTHENTICATE SERVER

AUTH

Non applicabile

Non applicabile

SERVER

CONNECT SQL

COSQ

Non applicabile

Non applicabile

SERVER

CONTROL SERVER

CL

Non applicabile

Non applicabile

SERVER

CREATE ANY DATABASE

CRDB

Non applicabile

Non applicabile

SERVER

CREATE DDL EVENT NOTIFICATION

CRDE

Non applicabile

Non applicabile

SERVER

CREATE ENDPOINT

CRHE

Non applicabile

Non applicabile

SERVER

CREATE TRACE EVENT NOTIFICATION

CRTE

Non applicabile

Non applicabile

SERVER

EXTERNAL ACCESS ASSEMBLY

XA

Non applicabile

Non applicabile

SERVER

SHUTDOWN

SHDN

Non applicabile

Non applicabile

SERVER

UNSAFE ASSEMBLY

XU

Non applicabile

Non applicabile

SERVER

VIEW ANY DATABASE

VWDB

Non applicabile

Non applicabile

SERVER

VIEW ANY DEFINITION

VWAD

Non applicabile

Non applicabile

SERVER

VIEW SERVER STATE

VWSS

Non applicabile

Non applicabile

SERVICE

ALTER

AL

DATABASE

ALTER ANY SERVICE

SERVICE

CONTROL

CL

DATABASE

CONTROL

SERVICE

SEND

SN

DATABASE

CONTROL

SERVICE

TAKE OWNERSHIP

TO

DATABASE

CONTROL

SERVICE

VIEW DEFINITION

VW

DATABASE

VIEW DEFINITION

SYMMETRIC KEY

ALTER

AL

DATABASE

ALTER ANY SYMMETRIC KEY

SYMMETRIC KEY

CONTROL

CL

DATABASE

CONTROL

SYMMETRIC KEY

REFERENCES

RF

DATABASE

REFERENCES

SYMMETRIC KEY

TAKE OWNERSHIP

TO

DATABASE

CONTROL

SYMMETRIC KEY

VIEW DEFINITION

VW

DATABASE

VIEW DEFINITION

TYPE

CONTROL

CL

SCHEMA

CONTROL

TYPE

EXECUTE

EX

SCHEMA

EXECUTE

TYPE

REFERENCES

RF

SCHEMA

REFERENCES

TYPE

TAKE OWNERSHIP

TO

SCHEMA

CONTROL

TYPE

VIEW DEFINITION

VW

SCHEMA

VIEW DEFINITION

USER

ALTER

AL

DATABASE

ALTER ANY USER

USER

CONTROL

CL

DATABASE

CONTROL

USER

IMPERSONATE

IM

DATABASE

CONTROL

USER

VIEW DEFINITION

VW

DATABASE

VIEW DEFINITION

XML SCHEMA COLLECTION

ALTER

AL

SCHEMA

ALTER

XML SCHEMA COLLECTION

CONTROL

CL

SCHEMA

CONTROL

XML SCHEMA COLLECTION

EXECUTE

EX

SCHEMA

EXECUTE

XML SCHEMA COLLECTION

REFERENCES

RF

SCHEMA

REFERENCES

XML SCHEMA COLLECTION

TAKE OWNERSHIP

TO

SCHEMA

CONTROL

XML SCHEMA COLLECTION

VIEW DEFINITION

VW

SCHEMA

VIEW DEFINITION

Riepilogo delle informazioni sull'algoritmo di controllo delle autorizzazioni

Il controllo delle autorizzazioni può essere complesso. L'algoritmo di controllo delle autorizzazioni include le appartenenze a gruppi sovrapposti e il concatenamento di proprietà, nonché autorizzazioni esplicite e implicite. È inoltre possibile che le autorizzazioni per le classi di entità a protezione diretta contenenti l'entità a protezione diretta abbiano impatto su tale algoritmo. Il processo generale dell'algoritmo consiste nel raccogliere tutte le autorizzazioni rilevanti. Se non viene individuato alcun blocco DENY, l'algoritmo cerca un'istruzione GRANT che fornisce accesso sufficiente. L'algoritmo contiene tre elementi fondamentali, ovvero il contesto di protezione, lo spazio di autorizzazione e l'autorizzazione necessaria.

  • Contesto di protezione

    Il gruppo di entità che offre le autorizzazioni per il controllo di accesso. Tali autorizzazioni sono correlate all'utente o all'account di accesso corrente, a meno che l'utente o l'account di accesso del contesto di protezione non sia stato modificato tramite l'istruzione EXECUTE AS. Il contesto di protezione include le seguenti entità:

    • Account di accesso

    • Utente

    • Appartenenze a ruoli

    • Appartenenze a gruppi di Windows

    • Se si utilizza la firma del modulo, qualsiasi account utente o di accesso tiene conto del certificato utilizzato per firmare il modulo attualmente eseguito dall'utente e delle appartenenze a ruoli associate di tale entità.

  • Spazio di autorizzazione

    L'entità a protezione diretta e qualsiasi classe di entità a protezione diretta in cui è contenuta. Ad esempio, una tabella (entità a protezione diretta) è contenuta nella classe di entità a protezione diretta dello schema e nella classe di entità a protezione diretta del database. Sull'accesso possono influire le autorizzazioni a livello di tabella, schema, database e server. Per ulteriori informazioni, vedere Gerarchia delle autorizzazioni (Motore di database).

  • Autorizzazione necessaria

    Il tipo di autorizzazione richiesto. Ad esempio, INSERT, UPDATE, DELETE SELECT, EXECUTE ALTER, CONTROL e così via.

    L'accesso può richiedere più autorizzazioni, come negli esempi seguenti:

    • Una stored procedure può richiedere sia l'autorizzazione EXECUTE per la stored procedure, sia l'autorizzazione INSERT per varie tabelle a cui la stored procedure fa riferimento.

    • Una vista a gestione dinamica può richiedere entrambe le autorizzazioni VIEW SERVER STATE e SELECT per la vista.

Passaggi generali dell'algoritmo

I passaggi precisi utilizzati dall'algoritmo per determinare se consentire l'accesso a un'entità a protezione diretta possono variare in base alle entità e alle entità a protezione diretta coinvolte. L'algoritmo effettua tuttavia i passaggi generali indicati di seguito.

  1. Ignora il controllo delle autorizzazioni se l'account di accesso è un membro del ruolo predefinito del server sysadmin o se l'utente è l'utente dbo nel database corrente.

  2. Consente l'accesso se il concatenamento di proprietà è applicabile e il controllo dell'accesso sul primo oggetto nella catena ha superato il controllo della protezione. Per ulteriori informazioni sul concatenamento di proprietà, vedere Catene di proprietà.

  3. Aggrega le identità del modulo firmato a livello di database e a livello di server associate al chiamante per creare il contesto di protezione.

  4. Per il contesto di protezione raccoglie tutte le autorizzazioni concesse o negate per lo spazio di autorizzazione. È possibile dichiarare l'autorizzazione in modo esplicito come GRANT, GRANT WITH GRANT o DENY oppure utilizzare autorizzazioni GRANT o DENY implicite o effettive. L'autorizzazione CONTROL per uno schema implica ad esempio l'autorizzazione CONTROL per una tabella, così come l'autorizzazione CONTROL per una tabella implica l'autorizzazione SELECT. Se è stata pertanto concessa l'autorizzazione CONTROL per lo schema, viene concessa anche l'autorizzazione SELECT per la tabella. Se l'autorizzazione CONTROL è stata negata per la tabella, viene negata anche l'autorizzazione SELECT per la tabella. Per ulteriori informazioni, vedere Autorizzazioni effettive e implicite (Motore di database).

    [!NOTA]

    Un'autorizzazione GRANT a livello di colonna esegue l'override di un'autorizzazione DENY a livello di oggetto.

  5. Identifica l'autorizzazione necessaria.

  6. Restituisce un esito negativo per il controllo delle autorizzazioni se l'autorizzazione necessaria è negata in modo diretto o implicito per un'identità nel contesto di protezione degli oggetti nello spazio di autorizzazione.

  7. Restituisce un esito positivo per il controllo delle autorizzazioni se l'autorizzazione necessaria non è stata negata e se l'autorizzazione necessaria contiene un'autorizzazione GRANT o GRANT WITH GRANT concessa in modo diretto o implicito per un'identità nel contesto di protezione di un oggetto nello spazio di autorizzazione.

Esempi

Negli esempi seguenti viene illustrato come recuperare le informazioni sulle autorizzazioni.

A. Restituzione dell'elenco completo delle autorizzazioni che è possibile concedere

L'istruzione seguente restituisce tutte le autorizzazioni del Motore di database tramite la funzione fn_builtin_permissions. Per ulteriori informazioni, vedere sys.fn_builtin_permissions (Transact-SQL).

SELECT * FROM fn_builtin_permissions(default);
GO

B. Restituzione delle autorizzazioni per una classe particolare di oggetti

È inoltre possibile utilizzare la funzione fn_builtin_permissions per visualizzare tutte le autorizzazioni disponibili per una categoria di entità a protezione diretta. Nell'esempio seguente vengono restituite le autorizzazioni per gli assembly.

SELECT * FROM fn_builtin_permissions('assembly');
GO  

C. Restituzione delle autorizzazioni concesse all'entità di esecuzione per un oggetto

È possibile utilizzare fn_my_permissions per ottenere un elenco delle autorizzazioni valide assegnate all'entità chiamante per un'entità a protezione diretta specificata. Per ulteriori informazioni, vederefn_my_permissions (Transact-SQL). Nell'esempio seguente vengono restituite le autorizzazioni per un oggetto denominato Orders55.

SELECT * FROM fn_my_permissions('Orders55', 'object');
GO

D. Restituzione delle autorizzazioni applicabili a un oggetto particolare

Nell'esempio seguente vengono restituite le autorizzazioni applicabili a un oggetto denominato Yttrium. Si noti che la funzione predefinita OBJECT_ID viene utilizzata per recuperare l'ID dell'oggetto Yttrium.

SELECT * FROM sys.database_permissions 
    WHERE major_id = OBJECT_ID('Yttrium');
GO

Cronologia modifiche

Aggiornamento del contenuto

Aggiunta di cinque autorizzazioni correlate a FULLTEXT STOPLIST.

Aggiunta di ALTER ANY SERVER AUDIT per SERVER e ALTER ANY DATABASE AUDIT per DATABASE.

Rimozione di EXECUTE per ASSEMBLY, poiché non esiste.

Aggiunta della sezione "Riepilogo delle informazioni sull'algoritmo di controllo delle autorizzazioni".