Descripción del contexto de ejecución

El contexto de ejecución está determinado por el usuario o el inicio de sesión que está conectado a la sesión o que está ejecutando (llamando) un módulo. Establece la identidad para la que se comprueban los permisos para ejecutar instrucciones o realizar acciones. El contexto de ejecución está representado por un par de símbolos de seguridad: un símbolo de inicio de sesión y un símbolo de usuario. Los símbolos identifican las entidades de seguridad primaria y secundaria para las que se comprueban los permisos y el origen utilizado para autenticar el símbolo. Un inicio de sesión que se conecta a una instancia de SQL Server tiene un símbolo de inicio de sesión y uno o más símbolos de usuario en función del número de bases de datos a la que tiene acceso la cuenta.

Símbolos de seguridad de usuario e inicio de sesión

Un símbolo de seguridad para un usuario o un inicio de sesión está formado por:

  • Una entidad de seguridad de servidor o base de datos como identidad primaria
  • Una o varias entidades de seguridad como identidades secundarias
  • Cero o más autenticadores
  • Los privilegios y permisos de las identidades primaria y secundaria

Las entidades de seguridad son los individuos, grupos y procesos que pueden solicitar los recursos de SQL Server. Las entidades de seguridad se clasifican por su ámbito de influencia: nivel de Windows, nivel de SQL Server o nivel de base de datos. Para obtener más información, vea Entidades de seguridad.

Los autenticadores son entidades de seguridad, certificados o claves asimétricas que avalan la autenticidad del símbolo. A menudo, el autenticador de un símbolo es la instancia de SQL Server. Para obtener más información acerca de los autenticadores, vea Extender la suplantación de la base de datos mediante EXECUTE AS. Para obtener más información acerca de los certificados y las claves asimétricas, vea Jerarquía de cifrado.

Un símbolo de inicio de sesión tiene validez en toda la instancia de SQL Server. Contiene las identidades primaria y secundaria para las que se comprueban los permisos de nivel de servidor y cualquier permiso de nivel de base de datos asociado a estas identidades. La identidad primaria es el propio inicio de sesión. La identidad secundaria incluye permisos heredados de reglas y grupos.

Un símbolo de usuario sólo es válido para una base de datos específica. Contiene las identidades primaria y secundaria para las que se comprueban los permisos de nivel de base de datos. La identidad primaria es el propio usuario de base de datos. La identidad secundaria incluye permisos heredados de funciones de bases de datos. Los símbolos de usuario no contienen miembros de función de servidor y no respetan los permisos de nivel de servidor para las identidades del símbolo incluidas las que se conceden a la función public de nivel de servidor.

Si se crea explícitamente una cuenta de inicio de sesión o usuario de SQL Server, el Id. de inicio de sesión o usuario creado para esa cuenta se utiliza como la identidad primaria en el símbolo de inicio de sesión o usuario. Cuando una entidad de seguridad tiene acceso implícito a una instancia de SQL Server o acceso a una base de datos mediante los permisos CONTROL SERVER, la identidad primaria del símbolo de inicio de sesión es la función public predeterminada. La identidad primaria del símbolo de usuario es public.

ms187096.note(es-es,SQL.90).gifImportante:
Los miembros de la función fija de servidor sysadmin siempre utilizan dbo como identidad primaria de su símbolo de usuario.

Ejemplo de símbolo de inicio de sesión

Mary tiene un inicio de sesión de SQL Server que está asignado a su cuenta de usuario MyDomain\Mary de Windows. Para ver la información sobre el símbolo de inicio de sesión creado para ella, Mary ejecuta esta instrucción:

SELECT principal_id, sid, name, type, usage FROM sys.login_token;
GO

El conjunto de resultados es similar al siguiente:

principal_id  sid         name          type           usage
------------  ----------- ------------- -------------- -------------
261           0x583EA     MyDomain\Mary WINDOWS LOGIN  GRANT OR DENY
2             0x02        public        SERVER ROLE    GRANT OR DENY
(2 row(s) affected)

El conjunto de resultados muestra que la cuenta de Windows de Mary es la identidad primaria de su símbolo de inicio de sesión. El principal_id generado al crear su cuenta de inicio de sesión se utiliza como el principal_id primario en el símbolo de inicio de sesión. La función public se incluye como identidad secundaria porque Mary es miembro de dicha función predeterminada. Si Mary fuese miembro de otras funciones de servidor, también aparecerían como identidades secundarias. Al crear el inicio de sesión, su cuenta de Windows fue validada por la instancia de SQL Server. Por lo tanto, cuando Mary inicia sesión en la instancia de SQL Server, la instancia es el autenticador de su símbolo de inicio de sesión. Puesto que la instancia de SQL Server es el autenticador del símbolo de inicio de sesión de Mary, en la consulta no se devuelve un autenticador, como pueda ser una entidad de seguridad, un certificado o una clave asimétrica.

Ejemplo de símbolo de usuario

Mary tiene un símbolo de usuario para cada base de datos a la que tiene acceso. En este primer ejemplo, Mary está conectada a la base de datos master. Para ver la información sobre el símbolo de usuario creado para ella en la base de datos master, Mary ejecuta esta instrucción:

SELECT principal_id, sid, name, type, usage FROM sys.user_token;
GO

El conjunto de resultados es similar al siguiente:

principal_id  sid         name          type           usage
------------  ----------- ------------- -------------- -------------
2             NULL        guest         SQL USER       GRANT OR DENY
0             NULL        public        ROLE           GRANT OR DENY
(2 row(s) affected)

El conjunto de resultados muestra que Mary no es un usuario explícito en la base de datos master, pero en cambio tiene acceso a través de la cuenta guest. La identidad primaria de su símbolo de usuario es el usuario guest. La función public se incluye como identidad secundaria porque guest es miembro de dicha función predeterminada. El símbolo de usuario para Mary en la base de datos master contiene todos los permisos y privilegios del nivle de base de datos para el usuario guest y la función public.

En el siguiente ejemplo se ha creado una cuenta de usuario explícita para Mary en la base de datos Sales. Además, ha sido agregada a la función fija de base de datos db_ddladmin para dicha base de datos. Con Sales como la base de datos actual, Mary vuelve a ejecutar SELECT * FROM sys.user_token.

El conjunto de resultados es similar al siguiente:

principal_id  sid         name          type           usage
------------  ----------- ------------- -------------- -------------
5             0x36CC4BBD1 Mary          SQL USER       GRANT OR DENY
0             NULL        public        ROLE           GRANT OR DENY
16387         NULL        db_ddladmin   ROLE           GRANT OR DENY

Este conjunto de resultados refleja el símbolo de usuario creado para Mary en la base de datos Sales. Puesto que Mary fue agregada explícitamente como usuario a la base de datos Sales, aparece como identidad primaria. Las dos funciones de las que es miembro aparecen como identidades secundarias. El autenticador del símbolo de usuario de Mary es la instancia de SQL Server.

Cambio del contexto de ejecución

En SQL Server 2005, el contexto de ejecución de una sesión puede cambiarse explícitamente mediante la especificación de un nombre de usuario o inicio de sesión en una instrucción EXECUTE AS. El contexto de ejecución de un módulo como, por ejemplo, un procedimiento almacenado, un desencadenador o una función definida por el usuario, puede cambiarse implícitamente mediante la especificación de un nombre de usuario o inicio de sesión en una cláusula EXECUTE AS en la definición del módulo. Cuando el contexto de ejecución cambia a otro usuario o inicio de sesión, SQL Server comprueba los permisos para los símbolos de inicio de sesión y usuario de la cuenta. Básicamente, esa cuenta se suplanta durante el transcurso de la sesión o ejecución del módulo. Para obtener más información, vea Descripción del cambio de contexto y Cadenas de propiedad y cambio de contexto.

Vea también

Conceptos

Entidades de seguridad

Otros recursos

Cambio de contexto
EXECUTE (Transact-SQL)
EXECUTE AS (Transact-SQL)
EXECUTE AS (cláusula de Transact-SQL)
sys.database_principals (Transact-SQL)
sys.server_principals (Transact-SQL)

Ayuda e información

Obtener ayuda sobre SQL Server 2005