Permisos de IBM System i en vistas de base de datos

8

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?

Big EMPin
fuente
Considere publicar esto en dba.stackexchange.com
WarrenT
@WarrenT lo creas o no, esta es en realidad una pregunta de administración del sistema tanto como una pregunta de DB para iSeries / midrange: la base de datos de DB2 está estrechamente integrada en OS / 400 y, según la pregunta, parece que son permisos de OS / 400 en el biblioteca que está tropezando cosas. (¡Desafortunadamente ha pasado tanto tiempo desde que inicié sesión en un cuadro de rango medio que no estoy 100% seguro de cómo resolver el problema!)
voretaq7
@ voretaq7 Sí. La base de datos no solo está entretejida en la esencia del sistema operativo, está diseñada en la máquina misma (la interfaz de la máquina, MI). Ha pasado más de una década desde que era QSECOFR, por lo que tendría que buscar la respuesta. Pero dado que nadie aquí ha respondido todavía, y es un juego justo para ambos sitios, estaba pensando que podría haber alguien en dba que podría saberlo de la cabeza.
WarrenT

Respuestas:

4

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.

Buck Calabro
fuente