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
    
    
  • Personalizar al usuario "pruebaSQL" y ver una lista de objetos
    -- 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)
  • Otorgamos permisos al sobre algunos objetos al usuario pruebaSQL
    --- 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
    
  • Ahora otorgamos permisos sobre el esquema y vemos los resultados
    grant select on schema::miEsquema to [WIN-NSC8T5308LK\pruebaSQL]
    go
    
    execute as user = 'WIN-NSC8T5308LK\pruebaSQL'
    go
    
    select * from sys.sysobjects
    revert
    go
  • Ahora otorgamos permisos sobre la base de datos y vemos los resultados
    grant select on database::abel to [WIN-NSC8T5308LK\pruebaSQL]
    go
    
    execute as user = 'WIN-NSC8T5308LK\pruebaSQL'
    go
    
    select * from sys.sysobjects
    revert
    go
    
  • Ahora le vamos a quitar la posibilidad de ver la definición de los objetos
    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
    
  • Ahora restauramos los permisos quitados en el paso anterior
    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
  • Ahora vamos a quitarle el permiso SELECT sobre la db, pero tenga en cuenta que aún cuenta con los permisos para ver el contenido del esquema "miEsquema"
    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
  • Ahora le quitamos los permisos sobre el esquema, pero, como en el caso anterior, tenga en cuenta que el usuario aún conserva permisos sobre la tabla miEsquema.t1
    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
  • Y ahora le quitamos también los permisos select sobre la tabla miEsquema.t1
          revoke select on miEsquema.t1 to [WIN-NSC8T5308LK\pruebaSQL]
          go
    
          execute as user = 'WIN-NSC8T5308LK\pruebaSQL'
          go
    
          select * from sys.sysobjects
          revert
          go
    
    

Tags for Práctico 1: Administrar Permisos