Hace poco quería compartir derechos de acceso regulares con un usuario de un servidor y me di cuenta de que un simple CREATE USER
y los GRANT ALL ON DATABASE
comandos no le permitieron ejecutar un simple SELECT
en los datos.
Me gustaría otorgar derechos a todas las tablas de una base de datos dada a un usuario específico, pero no estoy seguro de si es la mejor idea otorgarle acceso a todo el esquema, public
ya que no sé si permitiría algún tipo de privilegio escalada. ¿Hay alguna otra manera?
GRANT SELECT ON TableName TO [Domain\User]
? Por lo general, solo asigno usuarios a ladb_datareader
función si todo lo que necesitan es acceso de lectura a todas las tablas, pero no estoy seguro de cuán granular quiere ser.Respuestas:
El privilegio
DATABASE
solo otorga derechos de conexión generales a la base de datos y no más. Un usuario con ese privilegio solo puede ver lo que el público en general puede ver.Para otorgar acceso de lectura a todas las tablas , también necesita privilegios en todos los esquemas y tablas:
También es posible que desee establecer privilegios predeterminados para futuros esquemas y tablas. Corre por cada rol que cree objetos en tu base de datos
Pero realmente necesitas entender todo el concepto primero.
Y casi siempre es mejor agrupar privilegios en roles grupales y luego otorgar / revocar el rol grupal a / desde roles de usuario. Relacionado:
fuente
myusr
un error tipográfico? ¿No debería sermyuser
?