Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Empleo de sp_adduser, sp_grantdbaccess y sp_addrolemember en SQL

Estas en el tema de Empleo de sp_adduser, sp_grantdbaccess y sp_addrolemember en SQL en el foro de SQL Server en Foros del Web. Saludos a todos!! Estoy tratando de crear usuarios de manera remota para que, a partir de esas cuentas creadas, mis usuarios puedan acceder a la ...
  #1 (permalink)  
Antiguo 18/10/2005, 14:05
 
Fecha de Ingreso: octubre-2004
Mensajes: 142
Antigüedad: 19 años, 6 meses
Puntos: 0
Empleo de sp_adduser, sp_grantdbaccess y sp_addrolemember en SQL

Saludos a todos!!

Estoy tratando de crear usuarios de manera remota para que, a partir de esas cuentas creadas, mis usuarios puedan acceder a la base de datos, hasta el momento hge logrado crearlos, pero me marca el siguiente error:

SELECT permission denied on object 'Tabla', database 'Base', owner 'dbo'.

¿como puedo agregarle atributos a las cuentas que he creado?

lo he intentado con sp_grantdbaccess y con sp_addrolemember y me manda el mismo error

Gracias.

Última edición por yoltik; 18/10/2005 a las 14:09 Razón: modificar titulo
  #2 (permalink)  
Antiguo 18/10/2005, 15:30
 
Fecha de Ingreso: octubre-2004
Mensajes: 142
Antigüedad: 19 años, 6 meses
Puntos: 0
Liiissssto!!! ya encontre como!!!

Les desgloso a groso modo, lo que hay que hacer:
A) Agregar usuario (se debe de tener permisos de administrador en sql y estar en la base en la cual se quiere agregar al usuario)

sp_addlogin 'usuario','contraseña','basededatos'

B)Se da acceso a la base de datos (OJO: solo es un acceso, no se puede manipular las tablas pues aún no se le dan atributos ni permisos)

sp_grantdbaccess 'usuario

C)Se le daatributos de acceso al usuario nuevo

sp_addrolemember 'db_owner','usuario'


Todo esto es en SQL para SQL Server 2000

Espero les sirva como a mi me va a servir
  #3 (permalink)  
Antiguo 19/10/2005, 14:15
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Yo lo pensaría 2 veces antes de seguir haciendo eso.

Con lo que acabas de hacer has hecho dueño de la base de datos a todos los usuarios a los que has aplicado esto. Eso implica que pueden borrar (no vaciar, sino eliminar) tablas, borrar usuarios, etc. Un terrible agujero de seguridad.

Mejor crea el usuario y dale acceso, pero para los permisos utiliza el comando grant sobre los objetos que quieras que utilicen:

GRANT SELECT ON tabla TO chona
GRANT INSERT ON otratabla TO pepe
GRANT EXECUTE ON sp_cosa TO pepa
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #4 (permalink)  
Antiguo 31/10/2005, 12:09
 
Fecha de Ingreso: octubre-2004
Mensajes: 142
Antigüedad: 19 años, 6 meses
Puntos: 0
Si, ya habia previsto eso y estaba investigando como hacer que no pasara esta situación. Lo que no entiendo es:
¿tendria que permitir todos los selects, insert y delete que requiero para cada usuario?.
¿No hay una sola instruccion que solo permita la escritura y lectura de esos datos?
Gracias Mithrandir, por el consejo, ten por seguro que lo voy a poner en práctica!!!!

Última edición por yoltik; 31/10/2005 a las 12:23
  #5 (permalink)  
Antiguo 31/10/2005, 15:44
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Si los usuarios pertenecen a un grupo entonces únicamente asigna permisos al grupo, los usuarios los "heredan". Si no tienes el grupo te recomiendo crearlo.

Existe el rol de servidor datareader y datawriter, que permiten acceso de select (datareader) e insert, update y delete (datawriter) en TODAS las tablas de la DB sin necesidad de ir una por una. Aunque no te lo recomiendo por la misma razón que el dbo, es mejor manejar permisos individuales sobre cada tabla/objeto.
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:08.