update example ejemplo create sql-server permissions sql-server-2016 grant

example - SQL Server: ¿puede limitar el acceso a una sola tabla?



update sql server ejemplo (7)

Creo que la respuesta es no, pero estoy buscando darle acceso a alguien a una base de datos de SQL Server , pero solo quiero que tengan acceso a una tabla.

Es bastante fácil limitar a alguien para que solo acceda a una base de datos, pero no tengo idea si puedo limitarme a una sola tabla.

Mis pensamientos fueron crear otra base de datos con un sinónimo a la otra tabla y luego limitar el acceso a esa base de datos, pero me pregunté si alguien podría pensar en una mejor manera.

Tampoco estoy convencido de que funcionará ya que creo que habrá un conflicto de permisos.


Ciertamente. GRANT los permisos que desee.

Cuando le da a un usuario acceso a una base de datos, mire los roles que tienen asignados y los derechos que tienen esos roles.

El problema es que las personas generalmente otorgan permisos demasiado amplios al principio.


El problema con recorrer todas las tablas y negar el acceso sería si agrega una nueva tabla.

Lo importante es no otorgarle al usuario ''db_datareader'' acceso a toda la base de datos. Usando la interfaz de usuario, puede usar la pestaña Asignación de usuarios debajo del inicio de sesión, puede crear al usuario solo con acceso "público". Luego, puede ir a la base de datos y otorgarle a ese usuario el acceso SELECT a la tabla en particular (haciendo clic en el botón "Buscar" con el nombre extraño en la pestaña Securables).

Este enfoque también funcionaría con el script, por supuesto.


La mejor manera es crear asegurable para esa tabla específica. Te preguntará qué vas a asegurar; tabla, vista, base de datos. Luego elige la tabla específica para asegurar y excluir a ese usuario de esa tabla.


Sí.

exec sp_msforeachtable "DENY SELECT ON ? TO [username];" GO GRANT SELECT ON [schemaName].[tableName] to [username] Go

Si bien eso funciona, probablemente sería mejor que administras permisos usando roles y grupos de AD.


Seguro que puede. Después de crear al usuario y darle acceso a la base de datos, conceda solo el acceso de selección (o el nivel que necesite) a esa tabla.


Un mejor enfoque sería crear un schema separado, crear un proc en ese schema . A continuación, permita que el usuario EXEC ese proc . Eso es. Podría crear una view en ese schema y eso podría ser más de lo que está buscando.


GRANT SELECT ON [SchemaName].[TableName] to [UserName]