Saltar al contenido

¿Puedo conectarme a la base de datos como el usuario “dbo”?

No olvides que en las ciencias informáticas un problema casi siempre tiene diversas soluciones, no obstante nosotros mostraremos lo mejor y más eficiente.

Solución:

La primera parte a entender es la diferencia entre un usuario y un inicio de sesión en SQL Server. Este artículo proporciona un breve resumen para comprender la diferencia, pero en pocas palabras, un inicio de sesión es un principal de nivel de servidor que proporciona autenticación y autorización para el acceso a nivel de servidor. Un usuario es una entidad de seguridad a nivel de base de datos que proporciona autorización para el acceso a nivel de base de datos.

Hay muchos escenarios, pero normalmente un inicio de sesión se asigna a uno o más usuarios, pero solo un usuario por base de datos. Un usuario solo se asigna a un inicio de sesión (excepto para los usuarios de bases de datos independientes, pero ese es un escenario diferente que se puede ignorar por ahora).

El usuario dbo es un usuario de base de datos incorporado en cada base de datos que representa al propietario de la base de datos. Este usuario tiene acceso completo sin restricciones a la base de datos. Si bien no puede iniciar sesión en un servidor como “dbo”, puede iniciar sesión con un inicio de sesión asignado al usuario dbo en una o más bases de datos. Cuando el contexto de la base de datos de la conexión es una base de datos donde ese inicio de sesión está asignado a dbo, entonces la identidad en ese contexto es como “dbo”.

Además, según los comentarios, cualquier inicio de sesión que tenga la función de administrador del sistema también aparecerá como dbo en cada base de datos, incluso si no está configurado explícitamente como el propietario de la base de datos.

Para responder a sus preguntas específicas:

Durante la auditoría de seguridad, se nos pregunta si el inicio de sesión de dbo es interactivo. Tengo entendido que la cuenta es creada y administrada automáticamente por el propio servidor SQL y no es directamente interactiva.

Sí, la cuenta dbo está integrada y no se puede eliminar, bloquear, deshabilitar ni eliminar. Tampoco se puede iniciar sesión directamente, es decir, no puede iniciar sesión como usuario “dbo” con una contraseña.

Intenté demostrar que los usuarios de un administrador del sistema aparecerían en SESSION_USER como dbo al autenticarse, pero no están completamente convencidos. Su pregunta ahora es si es posible autenticarse directamente en dbo iniciando sesión con su contraseña.

es posible? Ni siquiera sé dónde encontraría la contraseña de dbo si tiene una.

No, no es posible. No existe una “contraseña” para dbo. Puede haber una contraseña para el inicio de sesión asignado si es un inicio de sesión de autenticación de SQL, pero no un inicio de sesión directo para dbo.

Este artículo proporciona una explicación de dbo y también algunas consultas útiles para identificar sus inicios de sesión que están asignados a dbo en cada base de datos. Le sugiero que informe a los auditores que no es posible en SQL Server iniciar sesión directamente como dbo, ni puede ajustar ningún permiso o deshabilitar/eliminar esta cuenta, luego proporcione la lista de asignaciones y una lista de administradores de sistemas o inicios de sesión con CONTROL Permisos de SERVIDOR para ilustrar quién puede asumir el contexto de usuario dbo en cada base de datos.

1er punto:

Durante la auditoría de seguridad, se nos pregunta si el inicio de sesión de dbo es interactivo.


dbo no es un inicio de sesión, es un usuario y revisando la documentación verás que

Los inicios de sesión deben asignarse a las cuentas de usuario de la base de datos para poder trabajar con los objetos de la base de datos.

Si no es un inicio de sesión, no puede proporcionarle una contraseña para conectarse a una instancia de SQL Server e interactuar con ella. Debe proporcionar un acceso con una contraseña para hacer eso.

Otra característica de la dbo user es que, de forma predeterminada, es miembro del rol de base de datos fijo db_owner y, según Microsoft:

Los roles de base de datos fijos tienen un conjunto predefinido de permisos que están diseñados para permitirle administrar fácilmente grupos de permisos. Los miembros del rol db_owner pueden realizar todas las actividades de configuración y mantenimiento en la base de datos.

Como se puede ver el usuario dbo tiene bastantes privilegios sobre una base de datos.

La siguiente imagen puede ayudarte a explicar la existencia de la dbo usuario. Es de una nueva instalación de SQL Server. Fíjate que no hay dbo iniciar sesión entre los que están en el Logins carpeta. Sin embargo, hay un dbo usuario en cada una de las bases de datos del sistema incluyendo model (lo que significa que habrá un dbo usuario en cada base de datos que cree).

sa inicio de sesión vinculado al usuario dbo

Observe que el inicio de sesión sa está asignado al usuario dbopor lo que en este caso debe proporcionar el inicio de sesión sa y su contraseña en la pantalla de conexión para actuar como usuario dbo en la base de datos model de la imagen

El inicio de sesión relacionado con el dbo el usuario no siempre será el sa inicie sesión y se puede cambiar en las bases de datos de usuario mediante el procedimiento sp_changedbowner.

2do Punto:

Intenté demostrar que los usuarios de un administrador del sistema aparecerían en SESSION_USER como dbo al autenticarse, pero no están completamente convencidos. Su pregunta ahora es si es posible autenticarse directamente en dbo iniciando sesión con su contraseña.


Puede usar la documentación para hacer cumplir su argumento como dice:

El dbo, o propietario de la base de datos, es una cuenta de usuario que tiene permisos implícitos para realizar todas las actividades en la base de datos. Los miembros del rol de servidor fijo sysadmin se asignan automáticamente a dbo.

La función SESSION_USER también podría devolver el usuario dbo como respuesta para cualquier inicio de sesión que se asignó al usuario dbo como sigue:

CREATE DATABASE MyNewDB;

CREATE LOGIN Ronaldo WITH PASSWORD = 'MySafePassWd123';

USE MyNewDB;

EXEC sp_changedbowner 'Ronaldo';

Ahora, si inicio sesión como Ronaldo en la instancia y abro una sesión en la base de datos MyNewDB, la función SESSION_USER devoluciones:

usuario ronaldo dbo

Espero que haya sido útil y complementario a la respuesta de HandyD.

Comentarios y puntuaciones

Si haces scroll puedes encontrar las explicaciones de otros gestores de proyectos, tú además eres capaz dejar el tuyo si te gusta.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *