Compartir a través de


Habilitar el acceso entre bases de datos en SQL Server (ADO.NET)

Actualización: November 2007

Si el procedimiento de una base de datos depende de objetos incluidos en otra base de datos, se produce el encadenamiento de propiedad entre bases de datos. Las cadenas de propiedad entre bases de datos actúan de la misma forma que el encadenamiento de propiedad en una sola base de datos, excepto en que las cadenas de propiedad continuas requieren que todos los propietarios de objeto se asignen a la misma cuenta de inicio de sesión. Si el objeto de origen en la base de datos de origen y los objetos de destino en las bases de datos de destino pertenecen a la misma cuenta de inicio de sesión, SQL Server no comprueba los permisos en los objetos de destino.

Desactivado de forma predeterminada

A partir de SQL 2000 SP3, el encadenamiento de propiedad entre bases de datos está desactivado de forma predeterminada. Microsoft recomienda deshabilitar el encadenamiento de propiedad entre bases de datos, ya que da lugar a los siguientes riesgos para la seguridad:

  • Los propietarios de base de datos y los miembros de las funciones de base de datos db_ddladmin o db_owners pueden crear objetos que pertenezcan a otros usuarios. Estos objetos pueden establecer como destino objetos de otras bases de datos. Esto significa que, si habilita el encadenamiento de propiedad entre bases de datos, debe otorgar a estos usuarios plena confianza en los datos de todas las bases de datos.

  • Los usuarios con permiso CREATE DATABASE pueden crear nuevas bases de datos y adjuntar bases de datos existentes. Si el encadenamiento de propiedad entre bases de datos está habilitado, estos usuarios pueden tener acceso a objetos de otras bases de datos para los que podrían no disponer de privilegios desde las bases de datos creadas o adjuntadas que crean.

Habilitar el encadenamiento de propiedad entre bases de datos

El encadenamiento de propiedad entre bases de datos sólo se debe habilitar en entornos donde puede tener plena confianza en los usuarios con un alto nivel de privilegios. Se puede establecer durante la configuración de todas las bases de datos o bien de forma selectiva para bases de datos específicas mediante los comandos sp_configure y sp_dboption de Transact-SQL.

SQL Server 2000 SP3 introdujo la opción Cross DB Ownership Chaining como una mejora en la seguridad que permite configurar el encadenamiento de propiedad entre bases de datos. Para configurar de forma selectiva el encadenamiento de propiedad entre bases de datos en SQL Server 2005 y versiones posteriores, utilice en primer lugar sp_configure para desactivar el encadenamiento en el servidor. A continuación, utilice el comando ALTER DATABASE con SET DB_CHAINING ON para configurar el encadenamiento de propiedad entre bases de datos únicamente para las bases de datos que lo necesiten.

SQL dinámico

El encadenamiento de propiedad entre bases de datos no funciona en los casos en que se ejecutan instrucciones SQL creadas de forma dinámica, a menos que exista el mismo usuario en ambas bases de datos. Podrá resolver esto en SQL Server 2005 mediante la creación de procedimientos almacenados con acceso a otra base de datos y firmando el procedimiento con un certificado que exista en ambas bases de datos. Con ello el usuario obtiene acceso a los recursos de la base de datos que utiliza el procedimiento sin concederle permisos ni acceso a la base de datos.

Recursos externos

Para obtener más información, vea los siguientes recursos.

Recurso

Descripción

Extending Database Impersonation by Using EXECUTE AS y Cross DB Ownership Chaining Option en los Libros en pantalla de SQL Server 2008

En los temas se describe cómo configurar el encadenamiento de propiedad entre bases de datos para una instancia de Microsoft SQL Server 2008.

Extending Database Impersonation by Using EXECUTE AS y Cross DB Ownership Chaining Option en los Libros en pantalla de SQL Server 2005

En los temas se describe cómo configurar el encadenamiento de propiedad entre bases de datos para una instancia de Microsoft SQL Server 2005.

Cross DB Ownership Chaining, en los Libros en pantalla de SQL Server 2000

Se describe cómo configurar el encadenamiento de propiedad entre bases de datos mediante las opciones introducidas en SQL Server 2000 SP3.

Vea también

Conceptos

Administrar permisos con procedimientos almacenados en SQL Server (ADO.NET)

Escribir SQL dinámico seguro en SQL Server (ADO.NET)

Firmar procedimientos almacenados en SQL Server (ADO.NET)

Otros recursos

Proteger aplicaciones de ADO.NET

Información general sobre seguridad de SQL Server (ADO.NET)