jueves, mayo 12, 2005

Permisos en Sybase

El otro día hablaba con un compañero (Edu) sobre cómo se podría "deshabilitar" un procedimiento almacenado en Sybase. En Oracle tienes la opción de marcar el package (que no es lo mismo aunque se parece) como inválido con lo que nadie puede usarlo.
La primera opción que se nos ocurrió es renombrar el PA, pero tiene el problema de una ejecución manual (sólo evitaríamos las ejecuciones de aplicaciones). Seguimos pensando y se nos ocurrió quitarle los permisos de ejecución, pero mi compañero dijo que no le puedes quitar permisos al dbo. Esto me recordó a que, con la 12.5 (no estoy seguro de si en 12 tb pasaba) le puedes quitar permisos sobre una tabla al
propietario de la tabla (demo un poco más abajo). El caso es que me dió por probarlo. Estas son las conclusiones:

/home/sybase> isql -Usa -Smigracion -w132
Password:
1> select @@version
2> go

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Adaptive Server Enterprise/12.5.0.2/EBF 10746 ESD#1/P/Sun_svr4/OS
5.8/rel12502/1867/64-bit/FBO/Sun Dec 15 11:11:22 2002

(1 row affected)
1> sp_addlogin "map", "xxxxxxxx", map
2> go
1> use map
2> go
1> sp_addalias map, dbo
2> go
Alias user added.
(return status = 0)
1> use map
2> go
1> use master
2> go
1> sp_addlogin "mapUser", "mordekai", map
2> go
1> use map
2> go
1> sp_adduser mapUser, mapUser
2> go
1> grant create table to mapUser
2> go
/home/sybase> isql -Umap -Smigracion -w132
Password:
1> use map
2> go
1> create table t1 (c1 int, c2 varchar (10))
2> go
1> revoke select on mapUser.t1 from mapUser -----> Ejecutado como sa
2> go
1> select * from t1
2> go
Msg 10330, Level 14, State 1:
Server 'migracion', Line 1:
SELECT permission denied on object t1, database map, owner mapUser
--> Demostrados los permisos de tablas para usuarios normales
/home/sybase>isql -Umap -Smigracion -w132
Password:
1> use map
2> go
1> create table t1 (c1 int, c2 varchar (10))
2> go
1> revoke select on t1 to dbo ----> Ejecutado como sa
2> go
1> select * from t1
2> go
Msg 10330, Level 14, State 1:
Server 'migracion', Line 1:
SELECT permission denied on object t1, database map, owner dbo --->
Con el dbo funciona igual que con un usuario normal.
1> create proc sp_map1 as select 1 -----> Creamos un pa como dbo
2> go
1> exec sp_map1
2> go

-----------
1
1> revoke exec on sp_map1 to dbo -----> Le quitamos los permisos de
ejecución como sa
2> go
1> exec sp_map1
2> go
Msg 10330, Level 14, State 1:
Server 'migracion', Procedure 'sp_map1':
EXECUTE permission denied on object sp_map1, database map, owner dbo
(return status = -4) -----> Demostrado queda

5 comentarios:

cubik dijo...

Existe un tag html que se llama <pre> que es muy util para formatear codigo, ahora que no se si lo acepta el blogger este.

tirkha/MAP/Miguel Angel dijo...

Le echaré un vistazo a ver si me sirve (supongo que sí que lo aceptará el blogger)
Gracias!

cubik dijo...

De nada!
Por cierto a nivel personal me parecen mas comodos los comments en pop-ups yo es que tarde en descubrir lo que pasaba :$ JAJAJAJA

tirkha/MAP/Miguel Angel dijo...

Umm, es cuestion de gustos, supongo. Yo prefiero no ponerlos pop-up para evitar problemas con pop-up killers. De todos modos si recibo más peticiones lo cambio y listo.

cubik dijo...

Ah!! Ok es verdad!!! :D no habia pensado en los pop-up killers :D