Tenemos un IBM System i que ejecuta IBM i OS v6r1. En este sistema, he creado algunas vistas de bases de datos. Lo que quiero hacer es dar acceso a un grupo de usuarios en particular SOLO a estas vistas y nada más dentro de la biblioteca en la que residen las vistas. es posible? Tenía un grupo de usuarios que tenía permisos de solo lectura para todas las tablas y vistas en la biblioteca en la que se encuentran mis vistas, y el acceso funciona cuando el usuario está bajo este grupo de usuarios. Intenté copiar el grupo de usuarios y luego asignar permisos para incluir solo las vistas que he creado, y el acceso es denegado. ¿Un usuario o grupo de usuarios también debe tener permisos en la tabla desde la que se origina la vista para poder acceder a la vista?
fuente
Respuestas:
Si. No es suficiente otorgar autoridad para usar una vista. El usuario también debe tener autoridad para la tabla subyacente.
Una forma de permitir el acceso a un usuario restringido es la autorización adoptada. Por ejemplo, supongamos lo siguiente:
El usuario RESTRINGIDO no tiene acceso a ninguna tabla. Todas las bibliotecas son AUT (* EXCLUDE) -o- El usuario RESTRINGIDO tiene la autorización * EXCLUDE para todas las bibliotecas. USUARIO PERMITIDO puede acceder (o ser propietario) de las tablas y bibliotecas. Library DATA tiene las tablas. PROGRAMAS de biblioteca tiene los programas y procedimientos almacenados.
PERMISO crear un procedimiento almacenado RPG en la biblioteca PROGRAMAS. Asegúrese de que el programa tenga especificado USRPRF (* PROPIETARIO). Esto significa que cuando el programa se ejecute utilizará la autoridad del propietario (PERMITIDO) en lugar de la autoridad del perfil que lo ejecuta (RESTRINGIDO).
Otorgue al usuario AUTORIZACIÓN * AUTORIZACIÓN de uso para el objeto del programa RPG -o bien- OTORGAR vía SQL. Además, otorgue al usuario RESTRICTED * USE acceso a la biblioteca PROGRAMAS. Esto permitirá a RESTRICTED ejecutar el procedimiento / programa almacenado.
Tenga en cuenta que el usuario RESTRICTED no tiene derechos para acceder a las tablas en DATA y desea dejarlo así.
Ahora haga que el usuario RESTRINGIDO use SQL para LLAMAR al procedimiento almacenado. Ella tiene autoridad para ejecutar el programa porque tiene derechos * USE para los PROGRAMAS de la biblioteca, así como para el objeto del programa compilado. El procedimiento almacenado se ejecuta bajo la autoridad del propietario, PERMITIDO y dado que PERMISO tiene acceso completo a los DATOS de la biblioteca y las tablas que contiene, el procedimiento almacenado puede acceder / actualizar esas tablas. Cualquier SQL sin formato que RESTRINGIDO intente utilizar fallará debido a una autoridad insuficiente; lo único que puede hacer es llamar a los procedimientos almacenados creados para ella.
Si sus programas se almacenan en la misma biblioteca que sus datos, deberá otorgarle la autorización RESTRICTED * USE a la biblioteca y restringirla específicamente (a través de * EXCLUDE) sobre todas las tablas de esa biblioteca. Puede ser más fácil crear una biblioteca RESTRINGIDA que solo contenga los procedimientos almacenados y autorizarla a esa biblioteca. Esto facilita el mantenimiento continuo porque no tendrá que intentar recordar restringirla de las tablas recién creadas en DATA.
fuente