Asignación de múltiples inicios de sesión del servidor a un usuario de la base de datos

11

Esta parece ser una pregunta estúpida, pero a pesar de algunas investigaciones, no pude encontrar ninguna información sobre esto solo (posiblemente debido al uso de una terminología incorrecta).

¿Es posible registrar múltiples inicios de sesión del servidor (autenticación de servidor sql) en un solo usuario de la base de datos (que tiene permisos asignados por ser miembro de un rol de base de datos)?

Tengo docenas de inicios de sesión sql (autenticación de servidor sql) que necesitan leer una configuración de una base de datos central y prefiero asignar todos estos inicios de sesión a un solo usuario de DB en la base de datos de destino que crear un propio usuario de DB para cada inicio de sesión.

En caso afirmativo, ¿cuál sería la sintaxis correcta de T-SQL?

leepfrog
fuente
Cuando dice "inicios de sesión del servidor", ¿se refiere a cuentas de Windows o cuentas de servidor SQL?
Phil Sumner
Estoy hablando de las cuentas del servidor SQL.
Editará
¿Qué tal si creas ROLEy luego agregas usuarios al rol? De esta manera, solo otorga permisos a la función. Esto lo ayudará a administrar la seguridad de una mejor manera. Además, ¿cuál es la versión del servidor sql - 2008R2, 2012?
Kin Shah

Respuestas:

19

Primero para asegurarse de la terminología. Un inicio de sesión es una entidad de seguridad de nivel de instancia ( sys.server_principals) y un usuario es una entidad de seguridad de nivel de base de datos ( sys.database_principals). Están unidos por un SID (identificador de seguridad). Si mira en las vistas del sistema anteriores, puede ver cómo se unen en un formato 1: 1 por SID. Eso es 1 Iniciar sesión para 1 Usuario en una base de datos. Un inicio de sesión puede tener varios usuarios, pero deben estar en diferentes bases de datos.

Por lo tanto, deberá crear un usuario en su base de datos para cada inicio de sesión al que desee tener acceso. Es un comando bastante simple.

CREATE USER [UserName] FROM LOGIN [LoginName]

Desde allí, puede poner a todos sus usuarios en un Rol único (o múltiple). Un rol es un contenedor que tiene permisos y comparte esos permisos con cada usuario (para roles de base de datos) o inicio de sesión (por ejemplo, roles). Hay un rol incorporado en la base de datos llamado db_datareaderque da acceso de lectura a cada tabla y vista en la base de datos. Puede agregar a todos sus usuarios a ese rol. Sin embargo, una mejor idea sería crear un nuevo rol y agregarlo al db_datareaderrol. Luego agregue todos sus usuarios a la nueva función. El beneficio aquí es que si desea agregar permisos adicionales al grupo, simplemente cambie los permisos en el rol.

Crea el rol de la siguiente manera:

CREATE ROLE RoleName

Agregar un usuario a un rol (o un rol a otro)

EXEC sp_addrolemember 'RoleName','UserName'

o si estás en 2012 o superior

ALTER ROLE [RoleName] ADD MEMBER [UserName]
Kenneth Fisher
fuente
Gracias por la explicación detallada y por proporcionar información de fondo Kenneth, de lo que no estaba claro era That's 1 Login to 1 User in a database.
leepfrog