Compartir a través de


Usuarios Contenidos de Base de Datos - Hacer que su Base de Datos sea Portátil

Use usuarios de base de datos independientes para autenticar conexiones de SQL Server y SQL Database en el nivel de base de datos. Una base de datos independiente es una base de datos aislada de otras bases de datos y de la instancia de SQL Server/SQL Database (y la base de datos maestra) que hospeda la base de datos. SQL Server admite usuarios de bases de datos independientes para la autenticación de Windows y SQL Server. Al usar SQL Database, combine usuarios de base de datos independientes con reglas de firewall de nivel de base de datos. En este tema se revisan las diferencias y ventajas de usar el modelo de base de datos independiente en comparación con el modelo de inicio de sesión o usuario tradicional y las reglas de firewall de nivel de servidor o Windows. Es posible que los escenarios específicos, la capacidad de administración o la lógica de negocios de aplicaciones sigan necesitando el uso de reglas tradicionales de inicio de sesión o usuario y firewall de nivel de servidor.

Nota:

A medida que Microsoft evoluciona el servicio SQL Database y avanza hacia acuerdos de nivel de servicio de mayor garantía, es posible que tenga que cambiar al modelo de usuario de base de datos independiente y a las reglas de firewall con ámbito de base de datos para lograr el Acuerdo de Nivel de Servicio de mayor disponibilidad y mayores tasas de inicio de sesión máximas para una base de datos determinada. Microsoft le anima a considerar estos cambios hoy en día.

Modelo de usuario y inicio de sesión tradicional

En el modelo de conexión tradicional, los usuarios de Windows o los miembros de grupos de Windows se conectan al motor de base de datos proporcionando credenciales de usuario o grupo autenticadas por Windows. O bien, la conexión proporciona un nombre y una contraseña y se conecta mediante la autenticación de SQL Server (que es la única opción al conectarse a SQL Database). En ambos casos, la base de datos maestra debe tener un inicio de sesión que coincida con las credenciales de conexión. Una vez que el motor de base de datos confirma las credenciales de autenticación de Windows o autentica las credenciales de autenticación de SQL Server, la conexión normalmente intenta conectarse a una base de datos de usuario. Para conectarse a una base de datos de usuario, las credenciales de acceso deben poder vincularse (es decir, asociarse) con un usuario en dicha base de datos. La cadena de conexión también puede especificar la conexión a una base de datos específica, que es opcional en SQL Server, pero necesaria en SQL Database.

El principio importante es que tanto el inicio de sesión (en la base de datos maestra) como el usuario (en la base de datos de usuario) deben existir y estar relacionados entre sí. Esto significa que la conexión a la base de datos de usuario tiene una dependencia del inicio de sesión en la base de datos maestra y esto limita la capacidad de mover la base de datos a otro servidor de SQL Server o Azure SQL Database de hospedaje diferente. Y si, por cualquier motivo, no se puede establecer una conexión a la base de datos maestra (por ejemplo, si está en curso una conmutación por error), se incrementará el tiempo total de conexión o podría agotarse el tiempo de espera de la conexión. Como consecuencia, esto podría reducir la capacidad para escalar conexiones.

Modelo de usuario de base de datos confinada

En el modelo de usuario de base de datos independiente, el inicio de sesión en la base de datos maestra no está presente. En su lugar, el proceso de autenticación se produce en la base de datos de usuario y el usuario de base de datos de la base de datos de usuario no tiene asociado ningún inicio de sesión en la base de datos maestra. El modelo de usuario de base de datos independiente admite la autenticación de Windows (en SQL Server) y la autenticación de SQL Server (tanto en SQL Server como en SQL Database). Para conectarse como usuario de base de datos independiente, la cadena de conexión siempre debe contener un parámetro para la base de datos de usuario para que el motor de base de datos sepa qué base de datos es responsable de administrar el proceso de autenticación. La actividad del usuario de base de datos independiente se limita a la base de datos de autenticación, por lo que al conectarse como un usuario de base de datos independiente, la cuenta de usuario de la base de datos debe crearse de forma independiente en cada base de datos que necesitará el usuario. Para cambiar las bases de datos, los usuarios de SQL Database deben crear una nueva conexión. Los usuarios de bases de datos independientes de SQL Server pueden cambiar las bases de datos si un usuario idéntico está presente en otra base de datos.

Para SQL Database, no se requieren cambios en la cadena de conexión al cambiar del modelo tradicional al modelo de usuario de base de datos independiente. Para las conexiones de SQL Server, el nombre de la base de datos debe agregarse a la cadena de conexión, si aún no está presente.

Importante

Al usar el modelo tradicional, los roles de nivel de servidor y los permisos de nivel de servidor pueden limitar el acceso a todas las bases de datos. Cuando se usa el modelo de base de datos independiente, los propietarios de bases de datos y los usuarios de base de datos con el permiso ALTER ANY USER pueden conceder acceso a la base de datos. Esto reduce el control de acceso de los inicios de sesión de servidor con privilegios elevados y amplía el control de acceso para incluir usuarios de bases de datos con privilegios elevados.

Cortafuegos

SQL Server

Las reglas de firewall de Windows se aplican a todas las conexiones y tienen los mismos efectos en los inicios de sesión (conexiones de modelo tradicionales) y los usuarios de bases de datos independientes. Para obtener más información sobre el firewall de Windows, vea Configurar un Firewall de Windows para el acceso al motor de base de datos.

Cortafuegos de bases de datos SQL

SQL Database permite reglas de firewall independientes para las conexiones de nivel de servidor (inicios de sesión) y para las conexiones de nivel de base de datos (usuarios de base de datos independientes). Al conectarse a una base de datos de usuario, se comprueban las reglas de firewall de la primera base de datos. Si no hay ninguna regla que permita el acceso a la base de datos, se comprueban las reglas de firewall de nivel de servidor, lo que requiere acceso a la base de datos maestra del servidor lógico. Las reglas de firewall de nivel de base de datos combinadas con usuarios de base de datos independientes pueden eliminar la necesidad de acceder a la base de datos maestra del servidor durante la conexión, lo que proporciona una escalabilidad de conexión mejorada.

Para obtener más información sobre las reglas de firewall de SQL Database, consulte los temas siguientes:

Diferencias de sintaxis

Modelo tradicional Modelo de usuario de base de datos independiente
Cuando se conecta a la base de datos maestra:

CREATE LOGIN login_name WITH PASSWORD = 'strong_password';

A continuación, cuando esté conectado a una base de datos de usuario:

CREATE USER 'user_name' FOR LOGIN 'login_name';
Cuando se conecta a una base de datos de usuario:

CREATE USER user_name WITH PASSWORD = 'strong_password';
Modelo tradicional Modelo de usuario de base de datos independiente
Para cambiar la contraseña, en el contexto de la base de datos maestra:

ALTER LOGIN login_name WITH PASSWORD = 'strong_password';
Para cambiar la contraseña, en el contexto de la base de datos de usuario:

ALTER USER user_name WITH PASSWORD = 'strong_password';

Observaciones

  • En SQL Server, los usuarios de base de datos contenidos deben estar habilitados para la instancia de SQL Server. Para obtener más información, consulte opción de configuración del servidor de autenticación de base de datos independiente.

  • Los usuarios de bases de datos independientes y los inicios de sesión con nombres no superpuestos pueden coexistir en las aplicaciones.

  • Si hay un inicio de sesión en la base de datos maestra con el nombre name1 y crea un usuario de base de datos independiente denominado name1, cuando se proporciona un nombre de base de datos en la cadena de conexión, el contexto del usuario de la base de datos se seleccionará en el contexto de inicio de sesión al conectarse a la base de datos. Es decir, el usuario de base de datos contenido tendrá prioridad sobre los inicios de sesión con el mismo nombre.

  • En SQL Database, el nombre del usuario de base de datos independiente no puede ser el mismo que el nombre de la cuenta de administrador del servidor.

  • La cuenta de administrador del servidor de SQL Database nunca puede ser un usuario de base de datos independiente. El administrador del servidor tiene permisos suficientes para crear y administrar usuarios de bases de datos independientes. El administrador del servidor puede conceder permisos a usuarios de bases de datos contenidas en bases de datos de usuario.

  • Dado que los usuarios de base de datos independientes son entidades de seguridad de nivel de base de datos, debe crear usuarios de base de datos independientes en todas las bases de datos que los va a usar. La identidad se limita a la base de datos y es independiente en todos los aspectos de un usuario con el mismo nombre y la misma contraseña en otra base de datos del mismo servidor.

  • Use las mismas contraseñas de seguridad que normalmente usaría para los inicios de sesión.

Véase también

Bases de datos independientes
Prácticas recomendadas de seguridad con bases de datos independientes
CREAR USUARIO (Transact-SQL)