Cómo agregar un grupo de usuarios de Active Directory como inicio de sesión en SQL Server

108

Tengo una aplicación .net que se conecta a SQL Server mediante la autenticación de Windows.

No podemos utilizar la autenticación de SQL Server en la aplicación. Tenemos muchos usuarios de Active Directory para nuestro proyecto. Entonces, tenemos que crear una cuenta de inicio de sesión separada para cada usuario de Active Directory en SQL Server en lugar de crear una cuenta de inicio de sesión separada para cada usuario de AD, ¿hay alguna forma de usar el grupo de usuarios de Active Directory en SQL Server?

Jibu P C_Adoor
fuente

Respuestas:

162

En SQL Server Management Studio, vaya a Object Explorer > (your server) > Security > Loginsy haga clic con el botón derecho en New Login:

ingrese la descripción de la imagen aquí

Luego, en el cuadro de diálogo que aparece, elija los tipos de objetos que desea ver ( Groupsestá deshabilitado de manera predeterminada, ¡verifíquelo!) Y elija la ubicación donde desea buscar sus objetos (por ejemplo, usar Entire Directory) y luego busque su grupo de AD .

ingrese la descripción de la imagen aquí

Ahora tiene un inicio de sesión de SQL Server regular, como cuando crea uno para un solo usuario de AD. Dale a ese nuevo inicio de sesión los permisos en las bases de datos que necesita, ¡y listo!

Cualquier miembro de ese grupo de AD ahora puede iniciar sesión en SQL Server y usar su base de datos.

marc_s
fuente
¿Hay alguna posibilidad de crear grupos en mysql como el anterior?
uzay95
2
¡Gracias por una respuesta muy clara con capturas de pantalla anotadas! Ojalá todas las respuestas fueran así ...
NickG
1
@NickG: Utilicé Paint.NET gratuito para cargar la imagen e insertar los rectángulos rojos redondeados
marc_s
7
Esto no me funciona. Tengo un grupo de Windows "DataAccess", del cual "UserX" es miembro. Creé un inicio de sesión para el grupo DataAccess y configuré la asignación de usuario del inicio de sesión para tener acceso público, lector de datos y escritor de datos en una base de datos. El usuario no puede iniciar sesión. Si agrego al usuario específicamente y le asigno exactamente el mismo permiso de mapeo, él puede iniciar sesión. Cuando hago clic en Securables> Permisos efectivos para el grupo, dice "No se puede ejecutar como principal del servidor debido a que el principal 'GroupName' no se cierra, este tipo de principal no se puede suplantar o usted no tiene permiso ".
Triynko
1
@Tim: el nombre del usuario - sigue siendo el usuario el que inicia sesión - simplemente no tiene permiso directamente - como usuario - sino al ser miembro de ese grupo que tiene permisos
marc_s
21

Puede utilizar T-SQL:

use master
GO
CREATE LOGIN [NT AUTHORITY\LOCALSERVICE] FROM WINDOWS WITH
DEFAULT_DATABASE=yourDbName
GO
CREATE LOGIN [NT AUTHORITY\NETWORKSERVICE] FROM WINDOWS WITH
DEFAULT_DATABASE=yourDbName

Utilizo esto como parte de la restauración del servidor de producción a la máquina de prueba:

USE master
GO
ALTER DATABASE yourDbName SET OFFLINE WITH ROLLBACK IMMEDIATE
RESTORE DATABASE yourDbName FROM DISK = 'd:\DropBox\backup\myDB.bak'
ALTER DATABASE yourDbName SET ONLINE
GO
CREATE LOGIN [NT AUTHORITY\LOCALSERVICE] FROM WINDOWS WITH
DEFAULT_DATABASE=yourDbName
GO
CREATE LOGIN [NT AUTHORITY\NETWORKSERVICE] FROM WINDOWS WITH
DEFAULT_DATABASE=yourDbName
GO

Deberá utilizar el nombre de los servicios localizado en el caso de Windows en alemán o francés, consulte ¿Cómo crear un inicio de sesión de SQL Server para una cuenta de servicio en Windows que no sea inglés?

Tomas Kubes
fuente
En caso de que también necesite configurar el inicio de sesión / principal de nivel de base de datos, aquí hay otra respuesta que encontré útil dba.stackexchange.com/a/2578/60876
Agostino
Me pregunto si esto se puede utilizar para otorgar acceso de lectura a un determinado grupo de Active Directory a un determinado esquema; en pseudo sql, CREATE LOGIN ... WITH DEFAULT_SCHEMAlos puntos ... deben hacer referencia a un determinado grupo de anuncios. Tenemos varios grupos y nos gustaría dar accountantsacceso a un grupo de directorio activo al esquema ´A´ pero no al esquema ´B´ y ´C´. Asimismo, el grupo ´facturación` solo debe tener acceso al esquema ´B´. Como interfaz, estamos usando acceso a msft.
surfmuggle
0

Vaya a SQL Server Management Studio, vaya a Seguridad, vaya a Inicios de sesión y haga clic con el botón derecho del ratón. Aparecerá un menú con un botón que dice "Nuevo inicio de sesión". Allí podrá agregar usuarios y / o grupos de Active Directory a sus "permisos" de SQL Server. Espero que esto ayude


fuente
0

Aquí está mi observación. Creé un inicio de sesión (solo lectura) para una cuenta de usuario de Windows (AD) de grupo, pero actúa de manera desafiante en diferentes servidores SQL. En los servidores SQl que los usuarios no pueden ver las bases de datos, agregué la definición de vista verificada y también le di permeación de ejecución de base de datos a la base de datos maestra para evitar el error 229. No tengo este problema si creo un inicio de sesión para un usuario.

BDEZ
fuente
Eso podría haberse comentado en lugar de utilizar una respuesta. Pero aún no puedes comentar. Así que no jaja ^^
finnmglas