Permisos (motor de base de datos)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Cada protegible de SQL Server tiene permisos asociados que se pueden conceder a las entidades de seguridad. Los permisos de se administran en el nivel de servidor asignados a los inicios de sesión y roles de servidor, y en el nivel de base de datos asignados a usuarios de base de datos y roles base de datos. El modelo para Azure SQL Database tiene el mismo sistema para los permisos de base de datos, pero los permisos de nivel de servidor no están disponibles. Este artículo contiene una lista completa de los permisos. Para una implementación típica de los permisos, consulte Getting Started with Database Engine Permissions.

El número total de permisos para SQL Server 2022 (16.x) es 292. Azure SQL Database expone 292 permisos. La mayoría de los permisos se aplica a todas las plataformas, pero otros no. Por ejemplo, no se puede conceder permisos de nivel de servidor en Azure SQL Database, y algunos permisos solo tienen sentido en Azure SQL Database. Con la nueva versión se van a implementar nuevos permisos gradualmente. SQL Server 2019 (15.x) expone 248 permisos. SQL Server 2017 (14.x) expone 238 permisos. SQL Server 2016 (13.x) expone 230 permisos. SQL Server 2014 (12.x) expone 219 permisos. SQL Server 2012 (11.x) expone 214 permisos. SQL Server 2008 R2 (10.50.x) expone 195 permisos. El artículo sys.fn_builtin_permissions especifica los permisos de las últimas versiones que son nuevos.

Una vez que comprenda los permisos necesarios, puede aplicar permisos de nivel de servidor a los inicios de sesión o roles de servidor, y permisos de nivel de base de datos a los usuarios o roles de base de datos con las instrucciones GRANT, REVOKE y DENY. Por ejemplo:

GRANT SELECT ON SCHEMA::HumanResources TO role_HumanResourcesDept;
REVOKE SELECT ON SCHEMA::HumanResources TO role_HumanResourcesDept;

Para obtener consejos acerca de cómo planificar un sistema de permisos, consulte Introducción a los permisos de los motores de bases de datos.

Convenciones de nomenclatura de permisos

A continuación se describen las convenciones generales que se siguen en la nomenclatura de permisos:

  • CONTROL

    Confiere al receptor del permiso capacidades relacionadas con la propiedad. El receptor del permiso dispone de hecho de todos los permisos definidos para el elemento protegible. Una entidad de seguridad a la que se le haya concedido el permiso CONTROL también puede conceder permisos para el elemento protegible. Como el modelo de seguridad de SQL Server es jerárquico, el permiso CONTROL de un determinado ámbito incluye implícitamente el mismo permiso CONTROL para todos los elementos protegibles que abarca dicho ámbito. Por ejemplo, el permiso CONTROL en una base de datos implica todos los permisos de la base de datos, todos los permisos en todos los ensamblados y todos los esquemas de la misma, así como todos los permisos en los objetos de todos los esquemas que incluye la base de datos.

  • ALTER

    Confiere la posibilidad de cambiar las propiedades, excepto la propiedad, de un elemento protegible determinado. Cuando se concede para un ámbito, ALTER también confiere la posibilidad de modificar, crear o quitar cualquier elemento protegible que esté contenido en ese ámbito. Por ejemplo, el permiso ALTER en un esquema incluye la posibilidad de crear, modificar y quitar objetos del esquema.

  • ALTER ANY <Server Securable>, donde Server Securable puede ser cualquier elemento protegible del servidor.

    Confiere la posibilidad de crear, modificar o quitar instancias individuales del Protegible del servidor. Por ejemplo, ALTER ANY LOGIN confiere la posibilidad de crear, modificar o quitar cualquier inicio de sesión en la instancia.

  • ALTER ANY <Database Securable>, donde Database Securable puede ser cualquier elemento protegible en el nivel de base de datos.

    Confiere la posibilidad de crear (CREATE), modificar (ALTER) o quitar (DROP) instancias individuales del Protegible de la base de datos. Por ejemplo, ALTER ANY SCHEMA confiere la posibilidad de crear, modificar o quitar cualquier esquema en la base de datos.

  • TAKE OWNERSHIP

    Permite al receptor del permiso tomar propiedad del elemento protegible para el que se concede este permiso.

  • IMPERSONATE <Login>

    Permite al receptor suplantar el inicio de sesión.

  • IMPERSONATE <User>

    Permite al receptor suplantar al usuario.

  • CREATE <Server Securable>

    Confiere al receptor la posibilidad de crear el Protegible del servidor.

  • CREATE <Database Securable>

    Confiere al receptor la posibilidad de crear el Protegible de la base de datos.

  • CREATE <Schema-contained Securable>

    Confiere la posibilidad de crear el elemento protegible contenido en el esquema. No obstante, para crear el elemento protegible en un esquema concreto se requiere el permiso ALTER en el esquema.

  • VIEW DEFINITION

    Permite al receptor obtener acceso a los metadatos.

  • REFERENCES

    El permiso REFERENCES es necesario en una tabla para crear una restricción FOREIGN KEY que hace referencia a esa tabla.

    El permiso de REFERENCES es necesario en un objeto para crear FUNCTION o VIEW con la cláusula WITH SCHEMABINDING que hace referencia a ese objeto.

Gráfico de los permisos de SQL Server

La siguiente imagen muestra los permisos y sus relaciones entre sí. Algunos de los permisos de nivel superior (como CONTROL SERVER) se muestran varias veces. En este artículo, el póster es demasiado pequeño para leerlo. Puede descargar el Póster de permisos del motor de base de datos a tamaño completo en formato PDF.

A screenshot from the Database Engine permissions PDF.

Permisos aplicables a elementos protegibles específicos

En la siguiente tabla se enumeran los principales tipos de permisos y los tipos de elementos protegibles a los que se pueden aplicar.

Permiso Se aplica a
ALTER Todas las clases de objetos excepto TYPE.
CONTROL Todas las clases de objetos:

AGGREGATE,
APPLICATION ROLE,
ASSEMBLY,
ASYMMETRIC KEY,
AVAILABILITY GROUP,
CERTIFICATE,
CONTRACT,
CREDENTIALS,
DATABASE,
DATABASE SCOPED CREDENTIAL,
DEFAULT,
ENDPOINT,
FULLTEXT CATALOG,
FULLTEXT STOPLIST,
FUNCTION,
LOGIN,
MESSAGE TYPE,
PROCEDURE,
QUEUE,
REMOTE SERVICE BINDING,
ROLE,
ROUTE,
RULE,
SCHEMA,
SEARCH PROPERTY LIST,
SERVER,
SERVER ROLE,
SERVICE,
SYMMETRIC KEY,
SYNONYM,
TABLE,
TYPE,
USER,
VIEW y
XML SCHEMA COLLECTION
DELETE Todas las clases de objetos excepto DATABASE SCOPED CONFIGURATION, SERVER y TYPE.
Ejecute Tipos de CLR, scripts externos, procedimientos (Transact-SQL y CLR), funciones escalares y de agregado (Transact-SQL y CLR) y sinónimos
IMPERSONATE Inicios de sesión y usuarios
INSERT Sinónimos, tablas y columnas, vistas y columnas. El permiso se puede conceder en el nivel de base de datos, en el de esquema o en el de objeto.
RECEIVE Colas de Service Broker
REFERENCES AGGREGATE,
ASSEMBLY,
ASYMMETRIC KEY,
CERTIFICATE,
CONTRACT,
CREDENTIAL (se aplica a: SQL Server 2022 (16.x) y versiones posteriores),
DATABASE,
DATABASE SCOPED CREDENTIAL,
FULLTEXT CATALOG,
FULLTEXT STOPLIST,
FUNCTION,
MESSAGE TYPE,
PROCEDURE,
QUEUE,
RULE,
SCHEMA,
SEARCH PROPERTY LIST,
SEQUENCE OBJECT,
SYMMETRIC KEY,
TABLE,
TYPE,
VIEW y
XML SCHEMA COLLECTION
SELECT Sinónimos, tablas y columnas, vistas y columnas. El permiso se puede conceder en el nivel de base de datos, en el de esquema o en el de objeto.
TAKE OWNERSHIP Todas las clases de objetos excepto DATABASE SCOPED CONFIGURATION, LOGIN, SERVER y USER.
UPDATE Sinónimos, tablas y columnas, vistas y columnas. El permiso se puede conceder en el nivel de base de datos, en el de esquema o en el de objeto.
VIEW CHANGE TRACKING Esquemas y tablas
VIEW DEFINITION Todas las clases de objetos excepto DATABASE SCOPED CONFIGURATION y SERVER.

Precaución

Los permisos predeterminados que se conceden a objetos del sistema en el momento de la instalación se evalúan detenidamente frente a posibles amenazas y no necesitan modificarse como parte de la protección de la instalación de SQL Server. Los cambios a los permisos de los objetos del sistema podrían limitar o interrumpir la funcionalidad y dejar potencialmente a su instalación de SQL Server en un estado no admitido.

Permisos de SQL Server

La tabla siguiente contiene una lista completa de los permisos de SQL Server. Los permisos de Azure SQL Database solo están disponibles para elementos protegibles de base que se admiten. No se pueden conceder permisos de nivel de servidor en Azure SQL Database; sin embargo, en algunos casos los permisos de base de datos están disponibles en su lugar.

Elemento protegible base Permisos granulares del elemento protegible base Código del tipo de permiso Elemento protegible que contiene un elemento protegible base Permiso para el elemento protegible contenedor que implica permiso granular para el elemento protegible 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
AVAILABILITY GROUP ALTER AL SERVER ALTER ANY AVAILABILITY GROUP
AVAILABILITY GROUP CONTROL CL SERVER CONTROL SERVER
AVAILABILITY GROUP TAKE OWNERSHIP TO SERVER CONTROL SERVER
AVAILABILITY GROUP VIEW DEFINITION VW SERVER VIEW ANY DEFINITION
CERTIFICADO ALTER AL DATABASE ALTER ANY CERTIFICATE
CERTIFICADO CONTROL CL DATABASE CONTROL
CERTIFICADO REFERENCES RF DATABASE REFERENCES
CERTIFICADO TAKE OWNERSHIP TO DATABASE CONTROL
CERTIFICADO 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
CREDENTIAL CONTROL CL SERVER CONTROL SERVER
CREDENTIAL REFERENCES RF SERVER ALTER ANY CREDENTIAL
DATABASE ADMINISTER DATABASE BULK OPERATIONS DABO SERVER CONTROL SERVER
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 COLUMN ENCRYPTION KEY ALCK

Se aplica a: SQL Server (desde SQL Server 2016 (13.x) hasta la versión actual), Azure SQL Database.
SERVER CONTROL SERVER
DATABASE ALTER ANY COLUMN MASTER KEY ALCM

Se aplica a: SQL Server (desde SQL Server 2016 (13.x) hasta la versión actual), Azure SQL Database.
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 DATABASE EVENT SESSION AADS SERVER ALTER ANY EVENT SESSION
DATABASE ALTER ANY DATABASE EVENT SESSION ADD EVENT LDAE SERVER ALTER ANY EVENT SESSION ADD EVENT
DATABASE ALTER ANY DATABASE EVENT SESSION ADD TARGET LDAT SERVER ALTER ANY EVENT SESSION ADD TARGET
DATABASE ALTER ANY DATABASE EVENT SESSION DISABLE DDES SERVER ALTER ANY EVENT SESSION DISABLE
DATABASE ALTER ANY DATABASE EVENT SESSION DROP EVENT LDDE SERVER ALTER ANY EVENT SESSION DROP EVENT
DATABASE ALTER ANY DATABASE EVENT SESSION DROP TARGET LDDT SERVER ALTER ANY EVENT SESSION DROP TARGET
DATABASE ALTER ANY DATABASE EVENT SESSION ENABLE EDES SERVER ALTER ANY EVENT SESSION ENABLE
DATABASE ALTER ANY DATABASE EVENT SESSION OPTION LDSO SERVER ALTER ANY EVENT SESSION OPTION
DATABASE ALTER ANY DATABASE SCOPED CONFIGURATION ALDC

Se aplica a: SQL Server (desde SQL Server 2016 (13.x) hasta la versión actual), Azure SQL Database.
SERVER CONTROL SERVER
DATABASE ALTER ANY DATASPACE ALDS SERVER CONTROL SERVER
DATABASE ALTER ANY EXTERNAL DATA SOURCE AEDS SERVER CONTROL SERVER
DATABASE ALTER ANY EXTERNAL FILE FORMAT AEFF SERVER CONTROL SERVER
DATABASE ALTER ANY EXTERNAL JOB AESJ SERVER CONTROL SERVER
DATABASE ALTER ANY EXTERNAL LANGUAGE ALLA SERVER CONTROL SERVER
DATABASE ALTER ANY EXTERNAL LIBRARY ALEL SERVER CONTROL SERVER
DATABASE ALTER ANY EXTERNAL STREAM AEST SERVER CONTROL SERVER
DATABASE ALTER ANY FULLTEXT CATALOG ALFT SERVER CONTROL SERVER
DATABASE ALTER ANY MASK AAMK

Se aplica a: SQL Server (desde SQL Server 2016 (13.x) hasta la versión actual), Azure SQL Database.
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 SECURITY POLICY ALSP

Se aplica a: SQL Server (desde SQL Server 2016 (13.x) hasta la versión actual), Azure SQL Database.
SERVER CONTROL SERVER
DATABASE ALTER ANY SENSITIVITY CLASSIFICATION AASC
Se aplica a: SQL Server (desde SQL Server 2019 (15.x) hasta la versión actual), Azure SQL Database.
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 ALTER LEDGER ALR SERVER CONTROL
DATABASE ALTER LEDGER CONFIGURATION ALC 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 ANY DATABASE EVENT SESSION CRDS SERVER CREATE ANY EVENT SESSION
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 EXTERNAL LANGUAGE CRLA SERVER CONTROL SERVER
DATABASE CREATE EXTERNAL LIBRARY CREL SERVER CONTROL SERVER
DATABASE CREATE FULLTEXT CATALOG CRFT SERVER CONTROL SERVER
DATABASE CREAR FUNCIÓN 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 USER CUSR 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 DROP ANY DATABASE EVENT SESSION DRDS SERVER DROP ANY EVENT SESSION
DATABASE ENABLE LEDGER EL SERVER CONTROL
DATABASE Ejecute EX SERVER CONTROL SERVER
DATABASE EXECUTE ANY EXTERNAL ENDPOINT EAEE SERVER CONTROL SERVER
DATABASE EXECUTE ANY EXTERNAL SCRIPT EAES

Se aplica a: SQL Server (desde SQL Server 2016 (13.x) hasta la versión actual).
SERVER CONTROL SERVER
DATABASE INSERT IN SERVER CONTROL SERVER
DATABASE KILL DATABASE CONNECTION KIDC

Solo se aplica a Azure SQL Database. Use ALTER ANY CONNECTION en SQL Server.
SERVER ALTER ANY CONNECTION
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 UNMASK UMSK

Se aplica a: SQL Server (desde SQL Server 2016 (13.x) hasta la versión actual), Azure SQL Database.
SERVER CONTROL SERVER
DATABASE UPDATE UP SERVER CONTROL SERVER
DATABASE VIEW ANY COLUMN ENCRYPTION KEY DEFINITION VWCK

Se aplica a: SQL Server (desde SQL Server 2016 (13.x) hasta la versión actual), Azure SQL Database.
SERVER VIEW SERVER STATE
DATABASE VIEW ANY COLUMN MASTER KEY DEFINITION VWCM

Se aplica a: SQL Server (desde SQL Server 2016 (13.x) hasta la versión actual), Azure SQL Database.
SERVER VIEW SERVER STATE
DATABASE VIEW ANY SENSITIVITY CLASSIFICATION VASC SERVER CONTROL SERVER
DATABASE VIEW CRYPTOGRAPHICALLY SECURED DEFINITION VCD SERVER VIEW ANY CRYPTOGRAPHICALLY SECURED DEFINITION
DATABASE VIEW DATABASE PERFORMANCE STATE VDP SERVER VIEW SERVER PERFORMANCE STATE
DATABASE VIEW DATABASE SECURITY AUDIT VDSA SERVER CONTROL SERVER
DATABASE VIEW DATABASE SECURITY STATE VDS SERVER VIEW SERVER SECURITY STATE
DATABASE VIEW DATABASE STATE VWDS SERVER VIEW SERVER STATE
DATABASE VIEW DEFINITION VW SERVER VIEW ANY DEFINITION
DATABASE VIEW LEDGER CONTENT VLC SERVER CONTROL
DATABASE VIEW SECURITY DEFINITION VWS SERVER VIEW ANY SECURITY DEFINITION
DATABASE VIEW PERFORMANCE DEFINITION VWP SERVER VIEW ANY PERFORMANCE DEFINITION
DATABASE SCOPED CREDENTIAL ALTER AL DATABASE CONTROL
DATABASE SCOPED CREDENTIAL CONTROL CL DATABASE CONTROL
DATABASE SCOPED CREDENTIAL REFERENCES RF DATABASE REFERENCES
DATABASE SCOPED CREDENTIAL TAKE OWNERSHIP TO DATABASE CONTROL
DATABASE SCOPED CREDENTIAL VIEW DEFINITION VW DATABASE VIEW 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 Ejecute EX SCHEMA Ejecute
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 UNMASK UMSK SCHEMA UNMASK
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 CREATE SEQUENCE CRSO DATABASE CONTROL
SCHEMA DELETE DL DATABASE DELETE
SCHEMA Ejecute EX DATABASE Ejecute
SCHEMA INSERT IN DATABASE INSERT
SCHEMA REFERENCES RF DATABASE REFERENCES
SCHEMA SELECT SL DATABASE SELECT
SCHEMA TAKE OWNERSHIP TO DATABASE CONTROL
SCHEMA UNMASK UMSK DATABASE UNMASK
SCHEMA UPDATE UP DATABASE UPDATE
SCHEMA VIEW CHANGE TRACKING VWCT DATABASE VIEW CHANGE TRACKING
SCHEMA VIEW DEFINITION VW DATABASE VIEW DEFINITION
SEARCH PROPERTY LIST ALTER AL SERVER ALTER ANY FULLTEXT CATALOG
SEARCH PROPERTY LIST CONTROL CL SERVER CONTROL
SEARCH PROPERTY LIST REFERENCES RF SERVER REFERENCES
SEARCH PROPERTY LIST TAKE OWNERSHIP TO SERVER CONTROL
SEARCH PROPERTY LIST VIEW DEFINITION VW SERVER VIEW DEFINITION
SERVER ADMINISTER BULK OPERATIONS ADBO No aplicable No aplicable
SERVER ALTER ANY AVAILABILITY GROUP ALAG No aplicable No aplicable
SERVER ALTER ANY CONNECTION ALCO No aplicable No aplicable
SERVER ALTER ANY CREDENTIAL ALCD No aplicable No aplicable
SERVER ALTER ANY DATABASE ALDB No aplicable No aplicable
SERVER ALTER ANY ENDPOINT ALHE No aplicable No aplicable
SERVER ALTER ANY EVENT NOTIFICATION ALES No aplicable No aplicable
SERVER ALTER ANY EVENT SESSION AAES No aplicable No aplicable
SERVER ALTER ANY EVENT SESSION ADD EVENT LSAE No aplicable No aplicable
SERVER ALTER ANY EVENT SESSION ADD TARGET LSAT No aplicable No aplicable
SERVER ALTER ANY EVENT SESSION DISABLE DES No aplicable No aplicable
SERVER ALTER ANY EVENT SESSION DROP EVENT LSDE No aplicable No aplicable
SERVER ALTER ANY EVENT SESSION DROP TARGET LSDT No aplicable No aplicable
SERVER ALTER ANY EVENT SESSION ENABLE EES No aplicable No aplicable
SERVER ALTER ANY EVENT SESSION OPTION LESO No aplicable No aplicable
SERVER ALTER ANY LINKED SERVER ALLS No aplicable No aplicable
SERVER ALTER ANY LOGIN ALLG No aplicable No aplicable
SERVER ALTER ANY SERVER AUDIT ALAA No aplicable No aplicable
SERVER ALTER ANY SERVER ROLE ALSR No aplicable No aplicable
SERVER ALTER RESOURCES ALRS No aplicable No aplicable
SERVER ALTER SERVER STATE ALSS No aplicable No aplicable
SERVER ALTER SETTINGS ALST No aplicable No aplicable
SERVER ALTER TRACE ALTR No aplicable No aplicable
SERVER AUTHENTICATE SERVER AUTH No aplicable No aplicable
SERVER CONNECT ANY DATABASE CADB No aplicable No aplicable
SERVER CONNECT SQL COSQ No aplicable No aplicable
SERVER CONTROL SERVER CL No aplicable No aplicable
SERVER CREATE ANY DATABASE CRDB No aplicable No aplicable
SERVER CREATE AVAILABILITY GROUP CRAC No aplicable No aplicable
SERVER CREATE DDL EVENT NOTIFICATION CRDE No aplicable No aplicable
SERVER CREATE ENDPOINT CRHE No aplicable No aplicable
SERVER CREATE SERVER ROLE CRSR No aplicable No aplicable
SERVER CREATE TRACE EVENT NOTIFICATION CRTE No aplicable No aplicable
SERVER EXTERNAL ACCESS ASSEMBLY XA No aplicable No aplicable
SERVER IMPERSONATE ANY LOGIN IAL No aplicable No aplicable
SERVER SELECT ALL USER SECURABLES SUS No aplicable No aplicable
SERVER SHUTDOWN SHDN No aplicable No aplicable
SERVER UNSAFE ASSEMBLY XU No aplicable No aplicable
SERVER VIEW ANY DATABASE VWDB No aplicable No aplicable
SERVER VIEW ANY DEFINITION VWAD No aplicable No aplicable
SERVER VIEW SERVER STATE VWSS No aplicable No aplicable
SERVER ROLE ALTER AL SERVER ALTER ANY SERVER ROLE
SERVER ROLE CONTROL CL SERVER CONTROL SERVER
SERVER ROLE TAKE OWNERSHIP TO SERVER CONTROL SERVER
SERVER ROLE VIEW DEFINITION VW SERVER VIEW ANY DEFINITION
SERVICE ALTER AL DATABASE ALTER ANY SERVICE
SERVICE CONTROL CL DATABASE CONTROL
SERVICE ENVIAR 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 Ejecute EX SCHEMA Ejecute
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 Ejecute EX SCHEMA Ejecute
XML SCHEMA COLLECTION REFERENCES RF SCHEMA REFERENCES
XML SCHEMA COLLECTION TAKE OWNERSHIP TO SCHEMA CONTROL
XML SCHEMA COLLECTION VIEW DEFINITION VW SCHEMA VIEW DEFINITION

Nuevos permisos granulares agregados a SQL Server 2022

Los permisos siguientes se agregan a SQL Server 2022:

  • Se han agregado 10 nuevos permisos para permitir el acceso a los metadatos del sistema.

  • Se han agregado 18 nuevos permisos para eventos extendidos.

  • Se han agregado 9 nuevos permisos con respecto a los objetos relacionados con la seguridad.

  • Se han agregado 4 permisos para el libro de contabilidad.

  • 3 permisos adicionales de base de datos.

Para obtener más información, consulte Nuevos permisos granulares para SQL Server 2022 y Azure SQL para mejorar la adhesión a PoLP.

Acceso a los permisos de metadatos del sistema

Nivel de servidor:

  • VIEW ANY SECURITY DEFINITION
  • VIEW ANY PERFORMANCE DEFINITION
  • VIEW SERVER SECURITY STATE
  • VIEW SERVER PERFORMANCE STATE
  • VIEW ANY CRYPTOGRAPHICALLY SECURED DEFINITION

Nivel de base de datos:

  • VIEW DATABASE SECURITY STATE
  • VIEW DATABASE PERFORMANCE STATE
  • VIEW SECURITY DEFINITION
  • VIEW PERFORMANCE DEFINITION
  • VIEW CRYPTOGRAPHICALLY SECURED DEFINITION

Sesiones de eventos extendidos

Nivel de servidor:

  • CREATE ANY EVENT SESSION
  • DROP ANY EVENT SESSION
  • ALTER ANY EVENT SESSION OPTION
  • ALTER ANY EVENT SESSION ADD EVENT
  • ALTER ANY EVENT SESSION DROP EVENT
  • ALTER ANY EVENT SESSION ENABLE
  • ALTER ANY EVENT SESSION DISABLE
  • ALTER ANY EVENT SESSION ADD TARGET
  • ALTER ANY EVENT SESSION DROP TARGET

Todos estos permisos están bajo el mismo permiso primario: ALTER ANY EVENT SESSION

Nivel de base de datos:

  • CREATE ANY DATABASE EVENT SESSION
  • DROP ANY DATABASE EVENT SESSION
  • ALTER ANY DATABASE EVENT SESSION OPTION
  • ALTER ANY DATABASE EVENT SESSION ADD EVENT
  • ALTER ANY DATABASE EVENT SESSION DROP EVENT
  • ALTER ANY DATABASE EVENT SESSION ENABLE
  • ALTER ANY DATABASE EVENT SESSION DISABLE
  • ALTER ANY DATABASE EVENT SESSION ADD TARGET
  • ALTER ANY DATABASE EVENT SESSION DROP TARGET

Todos estos permisos están bajo el mismo permiso primario: ALTER ANY DATABASE EVENT SESSION

  • CONTROL (CREDENTIAL)
  • CREATE LOGIN
  • CREATE USER
  • REFERENCES (CREDENTIAL)
  • UNMASK (OBJECT)
  • UNMASK (SCHEMA)
  • VIEW ANY ERROR LOG
  • VIEW SERVER SECURITY AUDIT
  • VIEW DATABASE SECURITY AUDIT

Permisos del libro de contabilidad

  • ALTER LEDGER
  • ALTER LEDGER CONFIGURATION
  • ENABLE LEDGER
  • VIEW LEDGER CONTENT

Otros permisos de base de datos

  • ALTER ANY EXTERNAL JOB
  • ALTER ANY EXTERNAL STREAM
  • EXECUTE ANY EXTERNAL ENDPOINT

Resumen del algoritmo de comprobación de permiso

Comprobar los permisos puede ser complejo. El algoritmo de comprobación de permiso incluye la superposición de la pertenencia a grupos y el encadenamiento de propiedad, tanto el permiso explícito como el implícito, y puede ser afectado por los permisos en las clases protegibles y que contienen la entidad protegible. El proceso general del algoritmo es reunir todos los permisos pertinentes. Si no se encuentra ningún bloqueo DENY, el algoritmo busca un permiso GRANT que proporcione el acceso suficiente. El algoritmo contiene tres elementos esenciales, el contexto de seguridad, el espacio del permisoy el permiso necesario.

Nota:

No puede conceder, denegar ni revocar permisos a sa, dbo, al propietario de la entidad, information_schema, sys ni a usted mismo.

  • Contexto de seguridad

    Es el grupo de entidades de seguridad que aportan los permisos para la comprobación de acceso. Son los permisos que están relacionados con el inicio de sesión actual o el usuario, a menos que el contexto de seguridad se cambiara a otro inicio de sesión o usuario utilizando la instrucción EXECUTE AS. El contexto de seguridad incluye las entidades de seguridad siguientes:

    • El inicio de sesión

    • El usuario

    • Pertenecientes al rol

    • Pertenecientes al grupo Windows

    • Si se utiliza la firma de módulo, cualquier cuenta de inicio de sesión o de usuario da cuenta del certificado utilizado para firmar el módulo que el usuario está ejecutando actualmente, así como de los pertenecientes al rol asociados de ese entidad de seguridad.

  • Espacio del permiso

    Es la entidad protegible y todas las clases protegibles que contiene la entidad protegible. Por ejemplo, una tabla (una entidad protegible) está contenida en la clase de esquema protegible y en la clase de base de datos protegible. El acceso puede verse afectado por permisos de nivel de tabla, esquema, base de datos y servidor. Para obtener más información, vea Jerarquía de permisos (motor de base de datos).

  • Permiso necesario

    El tipo de permiso que se necesita. Por ejemplo, INSERT, UPDATE, DELETE, SELECT, EXECUTE, ALTER, CONTROL, etc.

    El acceso puede requerir varios permisos, como en los ejemplos siguientes:

    • Un procedimiento almacenado puede requerir el permiso EXECUTE sobre el procedimiento almacenado y el permiso INSERT sobre varias tablas a las que hace referencia el procedimiento almacenado.

    • Una vista de administración dinámica puede requerir los permisos VIEW SERVER STATE y SELECT sobre la vista.

Pasos generales del algoritmo

Cuando el algoritmo está determinando si permite el acceso a un elemento protegible, los pasos precisos que utiliza pueden variar, dependiendo de las entidades de seguridad y de los elementos protegibles implicados. Sin embargo, el algoritmo da los siguientes pasos generales:

  1. Omite la comprobación del permiso si el inicio de sesión es un miembro del rol fijo de servidor sysadmin o si el usuario es el usuario de dbo en la base de datos actual.

  2. Permite el acceso si es aplicable el encadenamiento de propiedad y la comprobación de acceso en el objeto anterior de la cadena pasó la comprobación de seguridad.

  3. Agrega las identidades de nivel del servidor, de base de datos y de módulo firmado que se asocian al autor de las llamadas para crear el contexto de seguridad.

  4. Para ese contexto de seguridad, reúne todos los permisos que se conceden o deniegan para el espacio del permiso. El permiso se puede nombrar explícitamente como GRANT, GRANT WITH GRANT o DENY; o los permisos pueden ser un permiso GRANT o DENY implícito o inclusivo. Por ejemplo, el permiso CONTROL sobre un esquema implica CONTROL sobre una tabla. Asimismo, CONTROL sobre una tabla implica SELECT. Por consiguiente, si se otorgó CONTROL sobre el esquema, se otorgó SELECT sobre la tabla. Si se denegó CONTROL sobre la tabla, también se denegó SELECT sobre ella.

    Nota:

    Un permiso GRANT de nivel de columna invalida un permiso DENY en el nivel de objeto. Puede obtener más información al respecto en DENY permisos de objeto (Transact-SQL).

  5. Identifique el permiso requerido.

  6. La comprobación del permiso no se realiza correctamente si el permiso requerido es denegado directa o implícitamente a cualquiera de las identidades del contexto de seguridad para los objetos del espacio del permiso.

  7. La comprobación del permiso es correcta si no se denegó el permiso requerido y el permiso requerido contiene un permiso GRANT o un permiso GRANT WITH GRANT directo o implícito para cualquiera de las identidades del contexto de seguridad de cualquier objeto del espacio del permiso.

Consideraciones especiales sobre los permisos de nivel de columna

Los permisos de nivel de columna se conceden con la sintaxis <table_name>(<column _name>). Por ejemplo:

GRANT SELECT ON OBJECT::Customer(CustomerName) TO UserJoe;

Un permiso DENY en la tabla se reemplaza por un permiso GRANT en una columna. Pero un permiso DENY subsiguiente en la tabla quitará la columna GRANT.

Ejemplos

En los ejemplos de esta sección se muestra cómo se recupera la información sobre permisos.

A Devolver la lista completa de los permisos que pueden concederse.

La siguiente instrucción devuelve todos los permisos del motor de base de datos mediante la función fn_builtin_permissions. Para obtener más información, consulte sys.fn_builtin_permissions (Transact-SQL).

SELECT * FROM fn_builtin_permissions(default);
GO

B. Devolver los permisos de una clase de objetos concreta

En el ejemplo siguiente se usa fn_builtin_permissions para ver todos los permisos que están disponibles para una categoría de elemento protegible. El ejemplo devuelve permisos de ensamblados.

SELECT * FROM fn_builtin_permissions('assembly');
GO

C. Devolver los permisos de un objeto concedidos a la entidad de seguridad que se ejecuta

En el ejemplo siguiente se usa fn_my_permissions para devolver una lista de los permisos efectivos que son retenidos por la entidad de seguridad de la llamada sobre un elemento protegible específico. El ejemplo devuelve los permisos de un objeto denominado Orders55. Para obtener más información, consulte sys.fn_my_permissions (Transact-SQL).

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

D. Devolver los permisos aplicables a un objeto especificado

El ejemplo siguiente devuelve los permisos aplicables a un objeto denominado Yttrium. Observe que la función integrada OBJECT_ID se utiliza para recuperar el identificador del objeto Yttrium.

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

Consulte también