SQL - Usuario con acceso solo a una tabla concreta

 
Vista:
sin imagen de perfil
Val: 14
Ha aumentado su posición en 15 puestos en SQL (en relación al último mes)
Gráfica de SQL

Usuario con acceso solo a una tabla concreta

Publicado por Sergio (24 intervenciones) el 22/03/2021 10:15:53
Buenos días.

Quiero crear un usuario y darle permiso sólo a una tabla de la BD.

Al crear el usuario le tengo que asignar una base de datos, p.ejemplo bdsql

Después entro en bdsql y en ese usuario le selecciono la tabla a la que quiero que tenga acceso, pero después, al logearme con ese usuario en sql, puedo ver todas las tablas de la base de datos bdsql, de el resto de bases de datos no, pero de está sí.

Qué estoy haciendo mal?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Usuario con acceso solo a una tabla concreta

Publicado por Isaias (1921 intervenciones) el 22/03/2021 16:36:00
¿Que motor de base de datos ocupas?, ¿Puede ver las tablas, las puede acceder?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 14
Ha aumentado su posición en 15 puestos en SQL (en relación al último mes)
Gráfica de SQL

Usuario con acceso solo a una tabla concreta

Publicado por Sergio (24 intervenciones) el 22/03/2021 17:15:56
SQL Server 14

Sí, puedo ver las tablas y acceder a ellas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Usuario con acceso solo a una tabla concreta

Publicado por Isaias (1921 intervenciones) el 22/03/2021 17:56:21
¿Pertenece a algun ROL de servidor o de base de datos?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 14
Ha aumentado su posición en 15 puestos en SQL (en relación al último mes)
Gráfica de SQL

Usuario con acceso solo a una tabla concreta

Publicado por Sergio (24 intervenciones) el 23/03/2021 16:25:50
Dentro del servidor pertenece al rol public, y no lo puedo desmarcar.

Y dentro de la base de datos a ninguno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Usuario con acceso solo a una tabla concreta

Publicado por Isaias (1921 intervenciones) el 23/03/2021 18:34:48
El public y dbo, no los puedes quitar, checa si este usuario es ADMINISTRADOR local o de RED y checa que en la parte de usuarios de tu base, NO ESTEN agregados los ADMINISTRADORES y sobre todo, que sean SYSADMIN, te dejo un query que te permite saber que PERMISOS tienen tus usuarios en TODAS LAS BASES DE DATOS

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
DECLARE @DB_USers TABLE
(DBName sysname
, UserName sysname
, LoginType sysname
, AssociatedRole varchar(max)
, create_date datetime
, modify_date datetime)
 
 
INSERT @DB_USers
EXEC sp_MSforeachdb
 
'
use [?]
SELECT ''?'' AS DB_Name,
case prin.name when ''dbo'' then prin.name + '' (''+ (select SUSER_SNAME(owner_sid) from master.sys.databases where name =''?'') + '')'' else prin.name end AS UserName,
prin.type_desc AS LoginType,
isnull(USER_NAME(mem.role_principal_id),'''') AS AssociatedRole ,create_date,modify_date
FROM sys.database_principals prin
LEFT OUTER JOIN sys.database_role_members mem ON prin.principal_id=mem.member_principal_id
WHERE prin.sid IS NOT NULL and prin.sid NOT IN (0x00) and
prin.is_fixed_role <> 1 AND prin.name NOT LIKE ''##%'''
 
SELECT
dbname,username ,logintype ,create_date ,modify_date ,
STUFF(
(
SELECT ',' + CONVERT(VARCHAR(500),associatedrole)
FROM @DB_USers user2
WHERE
user1.DBName=user2.DBName AND user1.UserName=user2.UserName
FOR XML PATH('')
)
,1,1,'') AS Permissions_user
FROM @DB_USers user1
GROUP BY
dbname,username ,logintype ,create_date ,modify_date
ORDER BY DBName,username
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 14
Ha aumentado su posición en 15 puestos en SQL (en relación al último mes)
Gráfica de SQL

Usuario con acceso solo a una tabla concreta

Publicado por Sergio (24 intervenciones) el 24/03/2021 18:17:33
después de ejecutar la consulta que me pasas solo me muestra un registro con los siguientes datos:

la base de datos es: bdsql
el usuario al que le tengo que dar permisos a una sola tabla: user_web


dbname: bdsql
username: user_web
logintype: SQL_USER
create_date: 2021-03-21 15:41:39.203
modify_date: 2021-03-21 15:41:39.203
Permissions_user:
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Usuario con acceso solo a una tabla concreta

Publicado por Isaias (1921 intervenciones) el 24/03/2021 20:05:13
Dijiste que era: SQL Server 14
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 14
Ha aumentado su posición en 15 puestos en SQL (en relación al último mes)
Gráfica de SQL

Usuario con acceso solo a una tabla concreta

Publicado por Sergio (24 intervenciones) el 24/03/2021 21:41:54
Entiendo que sí.

Adjunto captura de pantalla del about.

Y los datos:

Microsoft SQL Server Management Studio 14.0.17285.0
Microsoft Analysis Services Client Tools 14.0.1016.283
Microsoft Data Access Components (MDAC) 10.0.19041.1
Microsoft MSXML 3.0 6.0
Microsoft Internet Explorer 9.11.19041.0
Microsoft .NET Framework 4.0.30319.42000
Operating System 6.3.19042

Captura
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 14
Ha aumentado su posición en 15 puestos en SQL (en relación al último mes)
Gráfica de SQL

Usuario con acceso solo a una tabla concreta

Publicado por Sergio (24 intervenciones) el 25/03/2021 18:13:27
Alguna idea?????
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Usuario con acceso solo a una tabla concreta

Publicado por Isaias (1921 intervenciones) el 26/03/2021 03:34:34
Primero, debemos identificar que MOTOR de base de datos estas ocupando, ejecuta en una query, SELECT @@VERSION y publica
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 14
Ha aumentado su posición en 15 puestos en SQL (en relación al último mes)
Gráfica de SQL

Usuario con acceso solo a una tabla concreta

Publicado por Sergio (24 intervenciones) el 26/03/2021 06:08:56
Microsoft SQL Server 2014 (SP1-GDR) (KB4019091) - 12.0.4237.0 (X64) Jul 5 2017 22:03:42 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.3 <X64> (Build 14393: ) (Hypervisor)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Usuario con acceso solo a una tabla concreta

Publicado por Isaias (1921 intervenciones) el 26/03/2021 18:16:14
La consulta que te pase, deberia darte la lista de los PERMISOS y los ROLES a los cuales esta asignado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 14
Ha aumentado su posición en 15 puestos en SQL (en relación al último mes)
Gráfica de SQL

Usuario con acceso solo a una tabla concreta

Publicado por Sergio (24 intervenciones) el 26/03/2021 19:23:23
Querido Isaias, gracias por tu esfuerzo.

Vamos a ver si lo conseguimos.

Te adjunto la captura del único registro que me aparece donde el username es al que yo quiero darle permisos: user_web
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Usuario con acceso solo a una tabla concreta

Publicado por Isaias (1921 intervenciones) el 27/03/2021 02:47:59
Pues algo esta mal, ese usuario ni permisos tiene
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 14
Ha aumentado su posición en 15 puestos en SQL (en relación al último mes)
Gráfica de SQL

Usuario con acceso solo a una tabla concreta

Publicado por Sergio (24 intervenciones) el 27/03/2021 09:43:40
Pues puede hacer login en la base de datos y ver todas las tablas.

Y a mi me interesa que haga login, pero que solo vea una tabla.

No se te ocurre alguna manera? Quitándole acceso a las tablas, pero sí a alguna vista o algo por el estilo.

Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 14
Ha aumentado su posición en 15 puestos en SQL (en relación al último mes)
Gráfica de SQL

Usuario con acceso solo a una tabla concreta

Publicado por Sergio (24 intervenciones) el 27/03/2021 10:20:14
Independientemente de poder seguir probando cosas para ver si conseguimos darle permisos sólo a una tabla.

Aunque sea matar moscas a cañonazos, se me ocurre otra cosa, que es denegar el premiso de lectura y escritura a todas las tablas de la base de datos y después darle el permiso de lectura y escritura a la tabla que yo quiero.

Lo que ocurre es que tengo muchas tablas necesitaría alguna query que lo haga automático, no puedo ir tabla por tabla haciéndolo.
¿Se te ocurre cómo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Usuario con acceso solo a una tabla concreta

Publicado por Isaias (1921 intervenciones) el 27/03/2021 22:37:41
Tal vez

1
2
3
4
select 'REVOKE SELECT, UPDATE, DELETE, INSERT ON OBJECT::[' + TABLE_SCHEMA + '].[' + TABLE_NAME + '] TO user_web'
from Information_Schema.Tables
where TABLE_TYPE = 'BASE TABLE' and
TABLE_NAME not in ('Orders')  -- Solo a esta tabla darle los permisos

El resultado, lo ejecutas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 14
Ha aumentado su posición en 15 puestos en SQL (en relación al último mes)
Gráfica de SQL

Usuario con acceso solo a una tabla concreta

Publicado por Sergio (24 intervenciones) el 29/03/2021 19:01:09
Al final lo he conseguido. No es de la forma que hubiera deseado, pero hace la función que quería.

Me he creado un proceso por el cual ejecuto todos los registros que me devuelve la consulta que me has pasado, por lo que pone todas las tablas con DENY en el SELECT, UPDATE, DELETE e INSERT.
Después pongo GRANT en las tablas que quiero que tenga acceso y solucionado.

Si el usuario entra en la base de datos puede ver los nombres de las tablas pero no su contenido, ni editarlo, ni borrarlo.

Lo único es que en la consulta que tu me pasaste hay que cambiar el REVOKE por DENY.

Gracias por todo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Usuario con acceso solo a una tabla concreta

Publicado por Isaias (1921 intervenciones) el 31/03/2021 22:38:52
Y si ahora ejecutas el primero que te di donde muestra que permisos tiene, ¿que te da como resultado?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Usuario con acceso solo a una tabla concreta

Publicado por Erik Serrano (4 intervenciones) el 05/09/2023 01:53:59
Estimado, se que es antigua la consulta pero igual la dejo por aca por que alguna vez alguien va a tener la misma problematica.
Asi, que para hacer lo que pides debes hacer lo siguiente:

- conectarte a la base sql con un usuario con permisos ( sysadmin) y crear un login .. [nombreUsuario] / ojala SQL_USER
- En el Default BD , apuntas a la base donde se encuentra la tabla a la que quieres otorgar permisos.
- El Server Roles lo dejas public y no haces nada
- En User Mapping , Mapeas a la base donde quieres que este el usuario y no le asignas ningun rol (cuadrados de abajo) , solo debe quedar el public.
- Guardas y cierras
- Luego de ello , Abres una query y ejecutas lo siguiente : grant select on [NOMBRE_BASE].dbo.[NOMBRE_TABLA] to [nombreUsuario] y ejecutas

te conectas con el usuario y pruebas .
Listo,

No creo que ya te sirva , pero si alguien tiene la misma problematica , ahi esta la respuesta ...
Saludos




Erik Serrano Saavedra
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar