Pregunta

Tengo una base de datos SQL Server 2005 a la que intento acceder como una cuenta de usuario limitada, utilizando la autenticación de Windows.Agregué BUILTIN\Users como usuario de la base de datos (antes de hacerlo, ni siquiera podía abrir la base de datos).Estoy trabajando bajo el supuesto de que se supone que todos deben tener permisos para el rol "público" que se les aplica, por lo que no hice nada con la asignación de roles.En tblFoo, puedo usar el cuadro de diálogo Propiedades de SSMS (página Permisos) para agregar "público" y luego establecer permisos explícitos.Entre ellos se encuentra "Subvención" para SELECT.pero corriendo

SELECT * from tblFoo;

como cuenta limitada (BUILTIN\Users) me da un error "Seleccionar permiso denegado en el objeto 'tblFoo', base de datos 'bar', esquema 'dbo'".En el cuadro de diálogo de propiedades, hay un botón "Permisos efectivos", pero está atenuado.

Además, intenté crear una cuenta no privada llamada "UserTest", agregándola en el nivel del servidor y luego asignándola a la base de datos de la "barra".Esto me permite agregar UserTest a la lista "Usuarios o roles", lo que me permite ejecutar "Permisos efectivos" para la cuenta.No se enumera ningún permiso; esto no parece correcto.La cuenta debe ser pública y las concesiones públicas (entre otras cosas) seleccionan en tblFoo, entonces, ¿por qué la cuenta UserTest no muestra un permiso efectivo?Siento que me estoy volviendo un poco loco aquí.

APARTE:Soy consciente de que a muchas personas no les gusta utilizar la función "pública" para establecer permisos.Este es sólo mi tiempo de retoques;En el diseño final, estoy seguro de que tendremos varias funciones de base de datos flexibles (personalizadas).Solo estoy tratando de descubrir el comportamiento que estoy viendo, así que por favor no "¡No hagas eso!" respuestas.

ACTUALIZAR:Aparentemente conozco suficiente SQL Server como para ser un peligro para mí y para los demás.Al configurar permisos (como dije, "entre otros"), tenía DENEGAR CONTROL.Cuando configuré este permiso, creo que intenté buscar qué hacía, tuve una idea vaga y decidí NEGAR.Actualmente no puedo recordar por qué parecía que esto era lo que debía hacer, pero parece que esa era la razón por la que recibía fallas en los permisos.Entonces estoy actualizando mi pregunta:¿Alguien puede explicar el permiso "CONTROL", en lo que respecta a las tablas?

¿Fue útil?

Solución

Sólo es necesario tener derechos SELECT. En SQL prima (véase el icono "guión" botón / en la caja de diálogo), es GRANT SELECT ON dbo.tblFoo to public. Este es el único permiso necesario para ver los datos,

En este caso, el mensaje de error menciona explícitamente "negar". "Denegar" es un derecho en sí mismo, por lo que lo menciona,

Si tuviera ningún derecho, se obtendría el mensaje (muy aproximadamente) "tblFoo no existe o no tener derechos"

"denegar el control" se menciona aquí . En este caso, se le niega el todos los derechos a la función pública.

  

El concesionario tiene efectivamente todas   permisos definidos en el asegurable

Otros consejos

Suponiendo que "UserTest" es una cuenta de usuario de dominio, conéctese como miembro de la función sysadmin y ejecute

EXEC MASTER.dbo.xp_logininfo 'Domain\UserTest', 'all'

(sustituyendo su nombre de dominio por "Dominio")

esto mostrará los grupos de Windows, etc.de qué cuenta hereda los permisos de seguridad y el nivel de acceso, p.esperarías ver algo como:

account name     type    privilege  mapped  login name       permission path
domain\usertest  user   user               domain\usertest  BUILTIN\Users

Esto ayudará a solucionar problemas de dónde hereda la cuenta los permisos, p.de qué grupos de Windows forma parte y que tienen permisos para la base de datos.Si todo esto parece estar bien, entonces seguiría tu propio consejo y no me metería con el papel público.

  • Cree un papel de base de datos en su base de datos
  • Asignar permisos explícitos para ese rol
  • Cree un servidor inicio de sesión para su cuenta de usuario
  • Abra el inicio de sesión del servidor, vaya a la Mapeo de usuarios, haga clic en el botón base de datos y seleccione la base de datos Rol que has creado
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top