DENY Permisos de servidor (Transact-SQL)

Se aplica a:SQL ServerAzure SQL Managed Instance

Deniega permisos en un servidor.

Convenciones de sintaxis de Transact-SQL

Sintaxis

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

Argumentos

permiso

Especifica un permiso que se puede denegar en un servidor. Para obtener una lista de los permisos, vea Comentarios.

CASCADE

Indica que el permiso se deniega para la entidad de seguridad especificada y para el resto de entidades de seguridad a las que ésta concedió el permiso. Requerida cuando el director tiene el permiso con GRANT OPTION.

PARA <server_principal>

Especifica la entidad de seguridad de la que se va a denegar el permiso.

COMO <grantor_principal>

Especifica la entidad de seguridad de la que la entidad de seguridad que ejecuta esta consulta deriva su derecho de denegar el permiso.

Utiliza la AS cláusula principal para indicar que el principal registrado como negador del permiso debe ser un principal distinto de la persona que ejecuta la declaración. Por ejemplo, supongamos que el usuario Mary tiene principal_id 12 años y el usuario Raúl es el principal 15. Mary ejecuta DENY SELECT ON OBJECT::X TO Steven WITH GRANT OPTION AS Raul; : Ahora la sys.database_permissions tabla indicará que la grantor_principal_id declaración de denegación era 15 (Raul), aunque la sentencia en realidad fue ejecutada por el usuario 13 (Mary).

SQL_Server_login

Especifica un inicio de sesión de SQL Server.

SQL_Server_login_mapped_to_Windows_login

Especifica un inicio de sesión de SQL Server asignado a un inicio de sesión de Windows.

SQL_Server_login_mapped_to_Windows_group

Especifica un inicio de sesión de SQL Server asignado a un grupo de Windows.

SQL_Server_login_mapped_to_certificate

Especifica un inicio de sesión de SQL Server asignado a un certificado.

SQL_Server_login_mapped_to_asymmetric_key

Especifica un inicio de sesión de SQL Server asignado a una clave asimétrica.

server_role

Especifica un rol de servidor.

Observaciones

Los permisos en el ámbito del servidor solo pueden ser denegados cuando la base de datos actual es master.

Puede ver información acerca de los permisos del servidor en la vista de catálogo sys.server_permissions, mientras que la información acerca de las entidades de seguridad de servidor puede verse en la vista de catálogo sys.server_principals. Encontrará información sobre la pertenencia de roles de servidor en la vista de catálogo sys.server_role_members.

En Azure SQL Database, GRANT, REVOKE, y DENY los permisos a nivel de servidor no están soportados.

Un servidor ocupa el nivel más alto en la jerarquía de permisos. En la siguiente tabla se muestran los permisos más específicos y limitados que pueden denegarse en un servidor.

Permiso de servidor Implícito en el permiso de servidor
ADMINISTER BULK OPERATIONS CONTROL SERVER
ALTER ANY AVAILABILITY GROUP

Se aplica a: SQL Server (SQL Server 2012 (11.x) a través de la versión actual).
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

Se aplica a: SQL Server (SQL Server 2012 (11.x) a través de la versión actual).
CONTROL SERVER
ALTER RESOURCES CONTROL SERVER
ALTER SERVER STATE CONTROL SERVER
ALTER SETTINGS CONTROL SERVER
ALTER TRACE CONTROL SERVER
AUTHENTICATE SERVER CONTROL SERVER
CONECTAR CUALQUIERA DATABASE

Se aplica a: SQL Server (SQL Server 2014 (12.x) a través de la versión actual).
CONTROL SERVER
CONNECT SQL CONTROL SERVER
CONTROL SERVER CONTROL SERVER
CREATE ANY DATABASE ALTER ANY DATABASE
CREATE AVAILABILITY GROUP

Se aplica a: SQL Server (SQL Server 2012 (11.x) a través de la versión actual).
ALTERAR CUALQUIER AVAILABILITY GROUP
CREATE DDL EVENT NOTIFICATION ALTER ANY EVENT NOTIFICATION
CREATE ENDPOINT ALTER ANY ENDPOINT
CREATE SERVER ROLE

Se aplica a: SQL Server (SQL Server 2012 (11.x) a través de la versión actual).
ALTER ANY SERVER ROLE
CREATE TRACE EVENT NOTIFICATION ALTER ANY EVENT NOTIFICATION
EXTERNAL ACCESS ASSEMBLY CONTROL SERVER
IMPERSONATE ANY LOGIN

Se aplica a: SQL Server (SQL Server 2014 (12.x) a través de la versión actual).
CONTROL SERVER
SELECT ALL USER SECURABLES

Se aplica a: SQL Server (SQL Server 2014 (12.x) a través de la versión actual).
CONTROL SERVER
SHUTDOWN CONTROL SERVER
UNSAFE ASSEMBLY CONTROL SERVER
VIEW ANY DATABASE VIEW ANY DEFINITION
VIEW ANY DEFINITION CONTROL SERVER
VIEW ANY PERFORMANCE DEFINITION

Se aplica a: SQL Server 2022 (16.x) y versiones posteriores.
VIEW ANY DEFINITION
VIEW ANY SECURITY DEFINITION

Se aplica a: SQL Server 2022 (16.x) y versiones posteriores.
VIEW ANY DEFINITION
VIEW SERVER PERFORMANCE STATE

Se aplica a: SQL Server 2022 (16.x) y versiones posteriores.
VIEW SERVER STATE
VIEW SERVER SECURITY STATE

Se aplica a: SQL Server 2022 (16.x) y versiones posteriores.
VIEW SERVER STATE
VIEW SERVER STATE ALTER SERVER STATE

Los tres permisos de servidor siguientes se agregaron en SQL Server 2014 (12.x).

  • CONNECT ANY DATABASE o permiso

    • Concede CONNECT ANY DATABASE un inicio de sesión que debe conectarse a todas las bases de datos existentes y a cualquier nueva base de datos que pueda crearse en el futuro. No concede ningún permiso en ninguna base de datos más allá de conexión. Combina con SELECT ALL USER SECURABLES o VIEW SERVER STATE para permitir que un proceso de auditoría vea todos los datos o todos los estados de la base de datos en la instancia de SQL Server.
  • IMPERSONATE ANY LOGIN o permiso

    • Cuando se concede, permite que un proceso de nivel intermedio suplante la cuenta de los clientes que se conecten a él, a medida que se conecta a las bases de datos. Cuando se deniega, se puede impedir que un inicio de sesión con un alto nivel de privilegios suplante a otros inicios de sesión. Por ejemplo, un inicio de sesión con CONTROL SERVER permiso puede ser bloqueado para que se haga pasar por otros inicios de sesión.
  • SELECT ALL USER SECURABLES o permiso

    • Cuando se concede, un inicio de sesión como un auditor puede ver los datos de todas las bases de datos a las que el usuario puede conectarse. Cuando se deniega, impide el acceso a los objetos a menos que estén en el sys esquema.

Permisos

Requiere el permiso CONTROL SERVER o la propiedad del elemento protegible. Si utiliza la cláusula AS, la entidad de seguridad especificada debe ser propietaria del elemento protegible para el que se deniegan los permisos.

Ejemplos

A. Denegar el permiso SQL de CONNECT a un inicio de sesión de SQL Server y a los principales a los que el inicio de sesión lo ha vuelto a conceder

En el siguiente ejemplo se deniega el permiso CONNECT SQL al inicio de sesión Test de SQL Server y a las entidades de seguridad a las que ha concedido el permiso.

USE master;  
DENY CONNECT SQL TO Test CASCADE;  
GO  

B. Denegar CREATE ENDPOINT permiso a iniciar sesión en SQL Server usando la opción AS

En el siguiente ejemplo se deniega el permiso CREATE ENDPOINT al usuario Test1. En el ejemplo se utiliza la opción AS para especificar Test2 como la entidad de seguridad desde la que la entidad de seguridad que ejecuta la consulta deriva la autoridad para hacerlo.

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