Compartir a través de


Propiedad y separación usuario-esquema en SQL Server (ADO.NET)

Actualización: November 2007

Un concepto básico en la seguridad de SQL Server es que los propietarios de los objetos disponen de permisos irrevocables para administrarlos. No puede quitar privilegios de un propietario del objeto y no puede eliminar usuarios de una base de datos si en ella existen objetos que les pertenezcan. En SQL 2000, si un usuario crea un objeto sin especificar el propietario, el usuario se convierte en el propietario del objeto y dispone de permisos irrevocables para administrarlo. Esto da lugar a problemas si el objeto pertenece a varios usuarios. Si todos los objetos de base de datos pertenecen a un único propietario se simplifica la administración de permisos en SQL Server 2000, ya que se aprovechan las ventajas del encadenamiento de propiedad, tal como se explica en Autorización y permisos en SQL Server (ADO.NET).

Nota:

Los miembros de la función fija de servidor sysadmin y de la función fija de base de datos db_owner también cuentan con permisos de propiedad irrevocables en todos los objetos de una base de datos.

Las versiones de SQL Server anteriores a SQL Server 2005 usan la siguiente sintaxis de asignación de nombre de cuatro partes para hacer referencia a los objetos.

Server.Database.ObjectOwner.DatabaseObject

Si tanto el usuario de base de datos Bob como el usuario de base de datos Sue crean Table1, debe usar el nombre completo. Si un administrador de sistema o un propietario de base de datos crean un objeto, éste pertenece a la cuenta de usuario dbo, no a un usuario individual.

SELECT col1 FROM Bob.Table1
SELECT col1 FROM Sue.Table1
SELECT col1 FROM dbo.Table1
Nota:

No es necesario usar la sintaxis ObjectOwner.DatabaseObject al hacer referencia a un objeto que pertenezca a dbo, si bien resulta más eficaz de esta manera. Si no se indica el nombre de propietario, SQL Server 2000 comprueba en primer lugar si existe el objeto bajo el nombre del usuario actual y, a continuación, si el objeto pertenece a dbo. Si se indica el nombre de dos partes, se ahorra un paso adicional.

Separación usuario-esquema

SQL Server 2005 introduce la separación usuario-esquema, que permite disponer de más flexibilidad en la administración de los permisos de objeto de base de datos. Un esquema es un contenedor con nombre para objetos de base de datos, que permite agrupar objetos en espacios de nombres independientes. Por ejemplo, la base de datos de ejemplo de AdventureWorks contiene esquemas para Production, Sales y HumanResources.

La sintaxis de asignación de nombres de cuatro partes para hacer referencia a los objetos especifica el nombre de esquema.

Server.Database.DatabaseSchema.DatabaseObject

Propietarios y permisos de esquemas

Los esquemas pueden pertenecer a cualquier entidad de seguridad de base de datos y una entidad de seguridad puede ser propietaria de varios esquemas. Puede aplicar reglas de seguridad a un esquema, que heredan todos los objetos incluidos en él. Después de configurar los permisos de acceso de un esquema, estos permisos se aplican automáticamente a medida que se agregan nuevos objetos al esquema. Se puede asignar un esquema predeterminado a los usuarios y varios usuarios de base de datos pueden compartir el mismo esquema.

De forma predeterminada, cuando los programadores crean objetos en un esquema, éstos pertenecen a la entidad de seguridad a la que pertenece el esquema y no al programador. La propiedad del objeto se puede transferir con la instrucción ALTER AUTHORIZATION de Transact-SQL. Un esquema también puede contener objetos que pertenecen a diferentes usuarios y disponer de más permisos granulares que los asignados al esquema, si bien esto no resulta recomendable ya que agrega complejidad a la administración de permisos. Los objetos se pueden mover entre los esquemas y la propiedad del esquema se puede transferir entre entidades de seguridad. Se pueden eliminar usuarios de base de datos sin que esto afecte a los esquemas.

Esquemas integrados

SQL Server incluye diez esquemas predefinidos que usan el mismo nombre que los usuarios y las funciones de base de datos integrados. Estos esquemas se han creado principalmente por compatibilidad con versiones anteriores. No puede eliminar los esquemas con el mismo nombre que las funciones fijas de base de datos, aunque no los necesite. No puede eliminar los siguientes esquemas:

  • dbo

  • guest

  • sys

  • INFORMATION_SCHEMA

Si los elimina de la base de datos model, no aparecerán en las nuevas bases de datos.

Nota:

Los esquemas sys y INFORMATION_SCHEMA están reservados para los objetos del sistema. No puede crear objetos en ellos ni eliminarlos.

Esquema dbo

dbo es el esquema predeterminado en una base de datos recién creada. El esquema dbo pertenece a la cuenta de usuario dbo. De forma predeterminada, los usuarios creados con el comando CREATE USER de Transact-SQL usan dbo como esquema predeterminado.

Los usuarios a los que se asigna el esquema dbo no heredan los permisos de la cuenta de usuario dbo. Los usuarios no heredan ningún permiso de un esquema; los permisos de esquema se heredan en los objetos de base de datos incluidos en el esquema.

Nota:

Cuando se hace referencia a objetos de base de datos con un nombre de una sola parte en SQL Server 2005, SQL Server busca en primer lugar en el esquema predeterminado del usuario. Si no se encuentra el objeto, SQL Server busca a continuación en el esquema dbo. Si el objeto tampoco se encuentra en el esquema dbo, se muestra un error.

Recursos externos

Para obtener más información sobre la propiedad de objetos y los esquemas, vea los siguientes recursos.

Recurso

Descripción

Separación usuario-esquema en los Libros en pantalla de SQL Server 2008

Describe los cambios que introduce la separación usuario-esquema. Incluye el nuevo comportamiento, así como su impacto en la propiedad, las vistas de catálogo y los permisos.

Separación usuario-esquema, en los Libros en pantalla de SQL Server 2005

Describe los cambios que introduce la separación usuario-esquema. Incluye el nuevo comportamiento, así como su impacto en la propiedad, las vistas de catálogo y los permisos.

Using Ownership Chains, en los Libros en pantalla de SQL Server 2000

Describe cómo los usuarios pueden heredar permisos de los propietarios de objeto.

Vea también

Conceptos

Escenarios de seguridad de aplicaciones en SQL Server (ADO.NET)

Autenticación en SQL Server (ADO.NET)

Funciones de servidor y base de datos en SQL Server (ADO.NET)

Autorización y permisos en SQL Server (ADO.NET)

Otros recursos

Proteger aplicaciones de ADO.NET