Práctico 1: Administrar Permisos
En los siguientes ejemplos vamos a ver que efectos tiene en diferentes ámbitos o contextos. También veremos cadenas de permisos y la utilización de firmas digitales.
Asignar permisos sobre objetos |
Verificar contexto de usuario
select suser_sname()
USER_NAME()
Cambiar contexto y listar objetos
---- Cambiamos de contexto
use abel;
go
--- vemos un listado de objetos
select * from sys.sysobjects
go
-- cambiamos el contexto de usuario (personificamos)
execute as user = 'WIN-NSC8T5308LK\pruebaSQL'
go
-- comprobamos que asì sea
select SUSER_NAME(),
USER_NAME()
go
-- vemos un listado de objetos
select * from sys.sysobjects
go
-- salimos de la personificación
revert
go
-- comprobamos que asì sea
select SUSER_NAME(),
USER_NAME()
go
(cabe aclarar que en mi db el usuario pruebaSQL no tiene permisos para ver la definición de los objetos de la db, con lo cual no ve nada) --- Creamos algunos objetos para jugar con la seguridad
--- Aunque podríamos establecer los permisos en el mismo
--- comando create schema, no lo hacemos para simplificar
--- y que se entienda bien.
create schema miEsquema
create table t1 (c1 int, c2 int);
create table t1 (c1 int, c2 int);
go
--- Otorgamos permiso select sobre tabla t1
grant select on miEsquema.t1 to [WIN-NSC8T5308LK\pruebaSQL]
go
--- Probamos que pueda hacer un select
execute as user = 'WIN-NSC8T5308LK\pruebaSQL'
go
select * from sys.sysobjects
select * from miEsquema.t1
revert
go
grant select on schema::miEsquema to [WIN-NSC8T5308LK\pruebaSQL]
go
execute as user = 'WIN-NSC8T5308LK\pruebaSQL'
go
select * from sys.sysobjects
revert
go
grant select on database::abel to [WIN-NSC8T5308LK\pruebaSQL]
go
execute as user = 'WIN-NSC8T5308LK\pruebaSQL'
go
select * from sys.sysobjects
revert
go
deny view definition to [WIN-NSC8T5308LK\pruebaSQL]
go
execute as user = 'WIN-NSC8T5308LK\pruebaSQL'
go
select * from sys.sysobjects
select * from miEsquema.t1
revert
go
revoke view definition to [WIN-NSC8T5308LK\pruebaSQL]
go
execute as user = 'WIN-NSC8T5308LK\pruebaSQL'
go
select * from sys.sysobjects
select * from miEsquema.t1
revert
go
revoke select on database::abel to [WIN-NSC8T5308LK\pruebaSQL]
go
execute as user = 'WIN-NSC8T5308LK\pruebaSQL'
go
select * from sys.sysobjects
select * from miEsquema.t1
revert
go
revoke select on schema::miEsquema to [WIN-NSC8T5308LK\pruebaSQL]
go
execute as user = 'WIN-NSC8T5308LK\pruebaSQL'
go
select * from sys.sysobjects
select * from miEsquema.t1
revert
go
revoke select on miEsquema.t1 to [WIN-NSC8T5308LK\pruebaSQL]
go
execute as user = 'WIN-NSC8T5308LK\pruebaSQL'
go
select * from sys.sysobjects
revert
go

Comentarios recientes