DENY Permessi del server (Transact-SQL)

Si applica a:SQL ServerIstanza gestita di Azure SQL

Nega le autorizzazioni per un server.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

DENY permission [ ,...n ]
    TO <grantee_principal> [ ,...n ]
    [ CASCADE ]
    [ AS <grantor_principal> ]

<grantee_principal> ::= SQL_Server_login
    | SQL_Server_login_mapped_to_Windows_login
    | SQL_Server_login_mapped_to_Windows_group
    | SQL_Server_login_mapped_to_certificate
    | SQL_Server_login_mapped_to_asymmetric_key
    | server_role

<grantor_principal> ::= SQL_Server_login
    | SQL_Server_login_mapped_to_Windows_login
    | SQL_Server_login_mapped_to_Windows_group
    | SQL_Server_login_mapped_to_certificate
    | SQL_Server_login_mapped_to_asymmetric_key
    | server_role

Argomenti

autorizzazione

Specifica un'autorizzazione che può essere negata per un server. Per un elenco delle autorizzazioni, vedere Osservazioni.

CASCADE

Indica che l'autorizzazione viene negata all'entità specificata e a tutte le entità alle quali l'entità ha concesso l'autorizzazione. Richiesto quando il preside ha il permesso con GRANT OPTION.

A <server_principal>

Specifica l'entità a cui viene negata l'autorizzazione.

COME <grantor_principal>

Specifica un'entità dalla quale l'entità che esegue la query ottiene il diritto di negare l'autorizzazione.

Usa la AS clausola principale per indicare che il mandante registrato come negatore del permesso dovrebbe essere un principale diverso dalla persona che ha eseguito la dichiarazione. Ad esempio, presumiamo che l'utente Mary abbia principal_id 12 anni e l'utente Raul sia il principale 15. Mary esegue DENY SELECT ON OBJECT::X TO Steven WITH GRANT OPTION AS Raul; Ora la sys.database_permissions tabella indicherà che l'istruzione grantor_principal_id di negazione era 15 (Raul) anche se l'istruzione è stata effettivamente eseguita dall'utente 13 (Mary).

SQL_Server_login

Specifica un account di accesso di SQL Server.

SQL_Server_login_mapped_to_Windows_login

Specifica un account di accesso di SQL Server mappato a un account di accesso di Windows.

SQL_Server_login_mapped_to_Windows_group

Specifica un account di accesso di SQL Server mappato a un gruppo di Windows.

SQL_Server_login_mapped_to_certificate

Specifica un account di accesso di SQL Server mappato a un certificato.

SQL_Server_login_mapped_to_asymmetric_key

Specifica un account di accesso di SQL Server mappato a una chiave asimmetrica.

server_role

Specifica un ruolo del server.

Osservazioni:

I permessi nell'ambito del server possono essere negati solo quando il database attuale è master.

Le informazioni sulle autorizzazioni del server sono visibili nella vista del catalogo sys.server_permissions e le informazioni sulle entità server nella vista del catalogo sys.server_principals. Le informazioni sulle appartenenze dei ruoli del server sono visibili nella vista del catalogo sys.server_role_members.

In database SQL di Azure, GRANT, REVOKE, e DENY i permessi a livello server non sono supportati.

Un server rappresenta il livello più alto nella gerarchia delle autorizzazioni. Nella tabella seguente sono elencate le autorizzazioni più specifiche e limitate che è possibile negare per un server.

Autorizzazione del server Autorizzazione del server in cui è inclusa
ADMINISTER BULK OPERATIONS CONTROL SERVER
ALTER ANY AVAILABILITY GROUP

Si applica a: SQL Server (SQL Server 2012 (11.x) fino alla versione corrente).
CONTROL SERVER
ALTER ANY CONNECTION CONTROL SERVER
ALTER ANY CREDENTIAL CONTROL SERVER
ALTER ANY DATABASE CONTROL SERVER
ALTER ANY ENDPOINT CONTROL SERVER
ALTER ANY EVENT NOTIFICATION CONTROL SERVER
ALTER ANY EVENT SESSION CONTROL SERVER
ALTER ANY LINKED SERVER CONTROL SERVER
ALTER ANY LOGIN CONTROL SERVER
ALTER ANY SERVER AUDIT CONTROL SERVER
ALTER ANY SERVER ROLE

Si applica a: SQL Server (SQL Server 2012 (11.x) fino alla versione corrente).
CONTROL SERVER
ALTER RESOURCES CONTROL SERVER
ALTER SERVER STATE CONTROL SERVER
ALTER SETTINGS CONTROL SERVER
ALTER TRACE CONTROL SERVER
AUTHENTICATE SERVER CONTROL SERVER
COLLEGA QUALSIASI DATABASE

Si applica a: SQL Server (SQL Server 2014 (12.x) fino alla versione corrente).
CONTROL SERVER
CONNECT SQL CONTROL SERVER
CONTROL SERVER CONTROL SERVER
CREATE ANY DATABASE ALTER ANY DATABASE
CREATE AVAILABILITY GROUP

Si applica a: SQL Server (SQL Server 2012 (11.x) fino alla versione corrente).
MODIFICA QUALSIASI AVAILABILITY GROUP
CREATE DDL EVENT NOTIFICATION ALTER ANY EVENT NOTIFICATION
CREATE ENDPOINT ALTER ANY ENDPOINT
CREATE SERVER ROLE

Si applica a: SQL Server (SQL Server 2012 (11.x) fino alla versione corrente).
ALTER ANY SERVER ROLE
CREATE TRACE EVENT NOTIFICATION ALTER ANY EVENT NOTIFICATION
EXTERNAL ACCESS ASSEMBLY CONTROL SERVER
IMPERSONATE ANY LOGIN

Si applica a: SQL Server (SQL Server 2014 (12.x) fino alla versione corrente).
CONTROL SERVER
SELECT ALL USER SECURABLES

Si applica a: SQL Server (SQL Server 2014 (12.x) fino alla versione corrente).
CONTROL SERVER
SHUTDOWN CONTROL SERVER
UNSAFE ASSEMBLY CONTROL SERVER
VIEW ANY DATABASE VIEW ANY DEFINITION
VIEW ANY DEFINITION CONTROL SERVER
VIEW ANY PERFORMANCE DEFINITION

Si applica a: SQL Server 2022 (16.x) e versioni successive.
VIEW ANY DEFINITION
VIEW ANY SECURITY DEFINITION

Si applica a: SQL Server 2022 (16.x) e versioni successive.
VIEW ANY DEFINITION
VIEW SERVER PERFORMANCE STATE

Si applica a: SQL Server 2022 (16.x) e versioni successive.
VIEW SERVER STATE
VIEW SERVER SECURITY STATE

Si applica a: SQL Server 2022 (16.x) e versioni successive.
VIEW SERVER STATE
VIEW SERVER STATE ALTER SERVER STATE

In SQL Server 2014 (12.x) sono state aggiunte le tre autorizzazioni server seguenti.

  • l'autorizzazione CONNECT ANY DATABASE

    • Concedere CONNECT ANY DATABASE un accesso che deve connettersi a tutti i database attualmente esistenti e a eventuali nuovi database che potrebbero essere creati in futuro. Non concede alcuna autorizzazione nei database oltre la connessione. Combinare con SELECT ALL USER SECURABLES o VIEW SERVER STATE permettere a un processo di audit di visualizzare tutti i dati o tutti gli stati del database sull'istanza di SQL Server.
  • l'autorizzazione IMPERSONATE ANY LOGIN

    • Quando viene concessa, consente a un processo di livello intermedio di rappresentare l'account dei client a cui ci si connette, quando si connette ai database. Quando viene negata, è possibile che a un account di accesso con privilegi elevati venga impedito di rappresentare altri account di accesso. Ad esempio, un accesso con CONTROL SERVER permesso può essere bloccato dall'impersonare altri accessi.
  • l'autorizzazione SELECT ALL USER SECURABLES

    • Quando viene concessa, un account di accesso, ad esempio un revisore, può visualizzare i dati in tutti i database a cui l'utente può connettersi. Quando negato, impedisce l'accesso agli oggetti a meno che non siano presenti nello sys schema.

Autorizzazioni

È richiesta l'autorizzazione CONTROL SERVER o la proprietà dell'entità a sicurezza diretta. Se si utilizza la clausola AS, l'entità specificata deve essere proprietaria dell'entità a sicurezza diretta per cui vengono negate le autorizzazioni.

Esempi

R. Nega il permesso SQL di CONNECT a un login SQL Server e ai principi a cui il login lo ha riconcesso

Nell'esempio seguente viene negata l'autorizzazione CONNECT SQL all'account di accesso di SQL Server Test e a tutte le entità a cui tale account di accesso ha concesso l'autorizzazione.

USE master;  
DENY CONNECT SQL TO Test CASCADE;  
GO  

B. Nega CREATE ENDPOINT il permesso di accedere a un SQL Server usando l'opzione AS

Nell'esempio seguente viene negata l'autorizzazione CREATE ENDPOINT all'utente Test1. Nell'esempio viene utilizzata l'opzione AS per specificare Test2 come entità da cui l'entità che esegue l'istruzione deriva il diritto di effettuare l'operazione.

USE master;  
DENY CREATE ENDPOINT TO Test1 AS Test2;  
GO