none
MS SQL SERVER 2012 Usuario y permisos RRS feed

  • Pregunta

  • Estoy aprendiendo con un servidor MS SQL SERVER 2012 y tengo un usuario SQL que he creado (aprendizSQL) con el que me puedo conectar al servidor.

    En el servidor tengo distintas bases de datos y quiero con este usuarios (aprendizSQL) poder acceder únicamente a una base de datos concreta.

    Sobre esta base de datos sólo quiero que el usuario (aprendizSQL) pueda realizar consultas; no pueda modificar ni añadir contenido. Que sólo tenga permisos de lectura vamos a decir.

    He modificado para este usuario el rol de la base de datos, dejando únicamente:

    db_datareader , db_denydatareader y db_denyreader.

    El usuario que he creado (aprendizSQL) va ser un usuario que conectará desde una aplicación y es por motivos de seguridad que sólo quiero que pueda conectarse a una base de datos concreta y de la manera de que sólo pueda leer contenido.

    He realizado los cambios, pese a que el usuario no me aparece en otras bases de datos, es capaz de conectarse al motor y listar todas las bases existentes. Además, de poder acceder a las bases existentes, puede consultar y modificar con total impunidad.

    ¿Cómo puedo limitar este usuario (aprendizSQL) para que únicamente pueda realizar consultas y conectarse a una base de datos específica?

    Salu2

    lunes, 16 de octubre de 2017 12:45

Respuestas

  • Seguramente ese usuario tiene un rol por encima de sysadmin. Ten en cuenta que en sql tienes permisos en dos niveles, nivel de servidor y nivel de base de datos. lo que has hecho en el nivel de base de datos también esta mal, debes darle db_datareader para que pueda leer, si le das ese permiso y el de denegar.. no se que va a pasar ... 

    También puede ser que en tu server, hayas dado sysadmin al grupo public, y todo el mundo pertenece a public. 

    En resumen revisa los permisos a nivel de server.


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA

    • Marcado como respuesta Galder Ak martes, 17 de octubre de 2017 7:19
    martes, 17 de octubre de 2017 5:53
    Moderador

Todas las respuestas

  • Seguramente ese usuario tiene un rol por encima de sysadmin. Ten en cuenta que en sql tienes permisos en dos niveles, nivel de servidor y nivel de base de datos. lo que has hecho en el nivel de base de datos también esta mal, debes darle db_datareader para que pueda leer, si le das ese permiso y el de denegar.. no se que va a pasar ... 

    También puede ser que en tu server, hayas dado sysadmin al grupo public, y todo el mundo pertenece a public. 

    En resumen revisa los permisos a nivel de server.


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA

    • Marcado como respuesta Galder Ak martes, 17 de octubre de 2017 7:19
    martes, 17 de octubre de 2017 5:53
    Moderador
  • Entendido, existen por lo menos permisos en 2 ámbitos (servidor y base de datos). En este caso a nivel servidor prevalece sobre los de la base de datos en concreto.

    He modificado los permisos a nivel servidor y todo correcto. (A nivel base de datos es verdad que había una contradicción y no tiene sentido que se pongan permisos para leer y después negarlos).

    Ya ha sido solucionado el problema, gracias por la ayuda Miguel.

    martes, 17 de octubre de 2017 7:23