none
Como crear un usuario en una base de datos especifica RRS feed

  • Pregunta

  • Hola como están

    Tengo una base de datos y necesito crear un usuario el cual sera usado en el ConnectionString de una aplicacion Web. Este usuario solo debe tener accesos de consultas DML sobre la base de datos (SELECT, INSERT, DELETE y la ejecucion de Store Procedures, de hecho la aplicación solo se comunica a la base de datos por medio de store procedure).

    Cual seria el script para la creación de este usuario? Estuve buscando en la documentación (https://msdn.microsoft.com/en-us/library/ms173463.aspx) y vi que a estos usuarios se les asigna un login pero no se si debo crear un login en particular para el y se le asigna permisos minimos o se puede usar el que uso siempre, aunque creo que sería inseguro.

    Saludos

    viernes, 11 de noviembre de 2016 1:49

Respuestas

  • Cual seria el script para la creación de este usuario? [...] pero no se si debo crear un login en particular para el y se le asigna permisos minimos o se puede usar el que uso siempre, aunque creo que sería inseguro.

    Sí, es necesario crear un login específico. Al login no se le da ningún permiso (más que los mínimos que trae por defecto, que son el de conectarse al servidor y enumerar las bases de datos). Después se crea un User en la base de datos concreta, mapeado a ese Login que creaste. Y los permisos en la base de datos se le asignan al User. Si tu aplicación solo se comunica con la base de datos ejecutando procedimientos almacenados, entonces únicamente necesitas asignar el premiso de ejecutar los procedimientos. Si los procedimientos están bien creados (pertenecen al mismo propietario que las tablas, normalmente el dbo), entonces no hace falta dar permisos de select, insert y deete sobre esas tablas; ya se reciben a través del procedimiento mediante el encadenamiento de propiedad.

    Script:

    create login [nombreLogin] with password='contraseña'
    go
    use [MiBaseDeDatos]
    go
    create user [nombreUsuario] for login [nombreLogin]
    go
    grant execute on [procedimiento] to [nombreUsuario]
    go

    • Marcado como respuesta Zr-.- viernes, 11 de noviembre de 2016 17:21
    viernes, 11 de noviembre de 2016 7:11

Todas las respuestas

  • Puedes crear un usuario de SQL Server, para ello:

    1) tu servidor debe estar configurado para aceptar tanto acceso SQL como Windows (verifícalo en propiedades del servidor en Seguridad)

    2) Crea un login (servidor/Seguridad/logins) y márcalo como usuario SQL y en User Mapping asócialo a la base de datos.

    3) Da permisos en los objetos

    4) Usalo en tu conexión

    saludos

    viernes, 11 de noviembre de 2016 6:47
  • Cual seria el script para la creación de este usuario? [...] pero no se si debo crear un login en particular para el y se le asigna permisos minimos o se puede usar el que uso siempre, aunque creo que sería inseguro.

    Sí, es necesario crear un login específico. Al login no se le da ningún permiso (más que los mínimos que trae por defecto, que son el de conectarse al servidor y enumerar las bases de datos). Después se crea un User en la base de datos concreta, mapeado a ese Login que creaste. Y los permisos en la base de datos se le asignan al User. Si tu aplicación solo se comunica con la base de datos ejecutando procedimientos almacenados, entonces únicamente necesitas asignar el premiso de ejecutar los procedimientos. Si los procedimientos están bien creados (pertenecen al mismo propietario que las tablas, normalmente el dbo), entonces no hace falta dar permisos de select, insert y deete sobre esas tablas; ya se reciben a través del procedimiento mediante el encadenamiento de propiedad.

    Script:

    create login [nombreLogin] with password='contraseña'
    go
    use [MiBaseDeDatos]
    go
    create user [nombreUsuario] for login [nombreLogin]
    go
    grant execute on [procedimiento] to [nombreUsuario]
    go

    • Marcado como respuesta Zr-.- viernes, 11 de noviembre de 2016 17:21
    viernes, 11 de noviembre de 2016 7:11
  • Script:

    create login [nombreLogin] with password='contraseña'
    go
    use [MiBaseDeDatos]
    go
    create user [nombreUsuario] for login [nombreLogin]
    go
    grant execute on [procedimiento] to [nombreUsuario]
    go

    Excelente, justo lo que necesitaba... Muchas gracias y tambien por la explicación de los permisos...

    Saludos

    viernes, 11 de noviembre de 2016 17:21