Permisos (motor de base de datos)
Todos los elementos protegibles de SQL Server tienen permisos asociados que se pueden conceder a una entidad de seguridad. Este tema proporciona la siguiente información:
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 servidor protegible.
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.
USUARIO IMPERSONATE <>
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
Para ver un gráfico de tamaño cartel de todos los permisos del Motor de base de datos en formato PDF, vea https://github.com/microsoft/sql-server-samples/blob/master/samples/features/security/permissions-posters/Microsoft_SQL_Server_2017_and_Azure_SQL_Database_permissions_infographic.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 |
---|---|
SELECT | Sinónimos Tablas y columnas Funciones con valores de tabla, Transact-SQL y Common Language Runtime (CLR) y columnas Vistas y columnas |
VIEW CHANGE TRACKING | Tablas Esquemas |
UPDATE | Sinónimos Tablas y columnas Vistas y columnas Objetos de secuencia |
REFERENCES | Funciones escalares y de agregado (Transact-SQL y CLR) Colas deService Broker Tablas y columnas Funciones con valores de tabla (Transact-SQL y CLR) y columnas Tipos Vistas y columnas Objetos de secuencia |
INSERT | Sinónimos Tablas y columnas Vistas y columnas |
Delete | Sinónimos Tablas y columnas Vistas y columnas |
Ejecute | Procedimientos (Transact-SQL y CLR) Funciones escalares y de agregado (Transact-SQL y CLR) Sinónimos Tipos CLR |
RECEIVE | Colas deService Broker |
VIEW DEFINITION | Grupos de disponibilidad Procedimientos (Transact-SQL y CLR) Colas deService Broker Funciones escalares y de agregado (Transact-SQL y CLR) Inicios de sesión, usuarios y roles Sinónimos Tablas Funciones con valores de tabla (Transact-SQL y CLR) Vistas Objetos de secuencia |
ALTER | Grupos de disponibilidad Procedimientos (Transact-SQL y CLR) Funciones escalares y de agregado (Transact-SQL y CLR) Objetos de secuencia Inicios de sesión, usuarios y roles Colas deService Broker Tablas Funciones con valores de tabla (Transact-SQL y CLR) Vistas |
TAKE OWNERSHIP | Grupos de disponibilidad Roles Procedimientos (Transact-SQL y CLR) Funciones escalares y de agregado (Transact-SQL y CLR) Roles del servidor Sinónimos Tablas Funciones con valores de tabla (Transact-SQL y CLR) Vistas Objetos de secuencia |
CONTROL | Grupos de disponibilidad Procedimientos (Transact-SQL y CLR) Funciones escalares y de agregado (Transact-SQL y CLR) Inicios de sesión, usuarios y roles Colas deService Broker Sinónimos Tablas Funciones con valores de tabla (Transact-SQL y CLR) Vistas Objetos de secuencia |
IMPERSONATE | Inicios de sesión y usuarios |
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.
SQL Server y los permisos de Base de datos SQL
La tabla siguiente contiene una lista completa de los permisos de SQL Server . SQL Database permisos solo están disponibles para los elementos protegibles base que se admiten. Los permisos de nivel de servidor no se pueden conceder en SQL Database, pero 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 |
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 DATABASE EVENT SESSION | AADS Nota: Solo se aplica a SQL Database. |
SERVER | ALTER ANY EVENT SESSION |
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 SECURITY POLICY | ALSP Nota: Solo se aplica a 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 | 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 | Ejecute | EX | SERVER | CONTROL SERVER |
DATABASE | INSERT | IN | SERVER | CONTROL SERVER |
DATABASE | KILL DATABASE CONNECTION | KIDC Nota: Solo se aplica a 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 | 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 | 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 | 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 |
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 |
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 | 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 | 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 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 AVAILABILITY GROUP | ALAG | 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 AVAILABILTITY 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 |
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
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:
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.
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.
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.
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.
Identifique el permiso requerido.
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.
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.
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 de 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, vea 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
Jerarquía de permisos (motor de base de datos)
sys.database_permissions (Transact-SQL)