AS/400 - IBM i BASICS: Autorización pública por defecto de objetos nuevos
Conozca cómo se asigna en AS400 - IBM i la autorización pública por defecto cada vez que se crea un nuevo objeto en una biblioteca determinada dentro de su sistema.
La seguridad del AS/400 - IBM i se construye a partir de innumerables componentes y especificaciones, interactuantes e interrelacionadas. Es así que el nivel de acceso a cualquier objeto almacenado en el sistema es la resultante de un entramado de autorizaciones, originados desde diversas fuentes: atribuciones especiales de los perfiles de usuario, y las autoridades definidas dentro del objeto, autoridad pública, listas de autorización etc.
En el marco de las autorizaciones asignadas a los objetos, es importante reconocer cómo IBM i provee el acceso a objetos y bibliotecas para los usuarios publicos (*PUBLIC) por defecto, y en consecuencia los inconvenientes que estos "defaults" podrían ocasionar cuando están asignados a objetos con información "sensible", para usuarios que no deberían tener acceso a ellos.
Discutiremos en esta nota cuándo y cómo se asigna la autoridad *PUBLIC en un objeto nuevo, en consecuencia, con qué autorización accede "el público" a los objetos nuevos creados en una biblioteca específica.
¿Qué es la autorización *PUBLIC?
Cada vez que un usuario requiere acceder a un objeto, el sistema operativo efectúa una serie de comprobaciones de autoridad para determinar si el usuario puede o no acceder a ese objeto, y realizar la operación solicitada de acuerdo a las autorizaciones que él posee sobre el objeto.
Existen varios niveles de comprobaciones de autoridad que incluyen el chequeo de autorizaciones del perfil de usuario individual, el de cualquiera de los grupos a los que pertenece o el de la lista de autorizaciones a la que ese usuario o grupo pertenecen.
Cuando el sistema terminó de verficar todas las autorizaciones de usuario, de grupo, y de la lista de autorizaciones, efectúa una última comprobación para ver si ese usuario finalmente logra acceder al objeto como un "usuario general con autorización pública" (*PUBLIC). Es decir, *PUBLIC hace referencia a cualquier usuario en el sistema que no tiene una autorización explícita ni para él ni para el (o los grupos) a los que pertenece.
Asignación de la autoridad *PUBLIC para objetos
La autorización *PUBLIC, está presente en todos los objetos, y se establece en el momento de su creación. Por lo tanto, todos los comandos con verbo CRT poseen el parámetro adicional Autorización (palabra clave AUT), y su valor por default en la mayoría de los comandos es: *LIBCRTAUT.
- *LIBCRTAUT indica al sistema que la autoridad pública del objeto a crear, será la especificada en el parámetro Autorización para crear (palabra clave CRTAUT) asociado a la biblioteca donde se almacenará el objeto.
No importa en qué biblioteca se cree el objeto, toda biblioteca tiene el parámetro CRTAUT, por lo tanto siempre se podrá determinar el permiso asignado a un objeto creado en ella.
De todas maneras, dependiendo del objeto que se cree (qué comando CRT se utilice), la autorización para *PUBLIC puede no tener por default *LIBCRTAUT, sino explícitamente una autorización: *ALL, *CHANGE, *USE, *EXCLUDE.
Tener en cuenta que un cambio en el valor del parámetro CRTAUT (Autorización para crear) de la biblioteca, NO AFECTA a los objetos ya creados en esa biblioteca, sólo a los nuevos objetos que se vayan creando. Por lo tanto, una vez creado el objeto, la autorización ya asignada al mismo puede ser modificada posteriormente con el comando EDTOBJAUT.
Asignación de la autoridad *PUBLIC para las bibliotecas
La creación de bibliotecas, asímismo, utiliza un comando CRT (el comando CRTLIB), por lo tanto también poseen autorización pública (usuario *PUBLIC) donde el default del parámetro AUT (de la biblioteca) referencia en este caso al parámetro CRTAUT (Autorización para crear) de la biblioteca QSYS, la biblioteca "madre".
Se puede conocer qué valor tiene especificado el parámetro CRTAUT de una biblioteca determinada que YA fue creada (ej. Biblioteca TEKEXE), ejecutando el comando DSPLIBD:
Puede notarse en la imagen anterior que el parámetro CRTAUT (Autorización para crear) no tiene una autorización específica para los objetos que se creen dentro de ella (*ALL, CHANGE, *USE o *EXCLUDE), sino que hace referencia a un *SYSVAL.
Por lo tanto, ¿Qué significa ésto? Esto implica que la autorización pública para todos los objetos creados dentro de la biblioteca TEKEXE del ejemplo, tomarán la autorización que esté especificada dentro de un valor del sistema, denominado QCRTAUT.
Así, si se ejecutara el comando DSPSYSVAL SYSVAL(QCRTAUT), se observará que el valor que trae asignado por default es *CHANGE, por lo tanto esta especificación implicará que TODO objeto creado en la biblioteca TEKEXE tendrá asignado en su autorización pública (*PUBLIC), la autorización *CHANGE, a menos que el propio comando CRT, indique específicamente algo diferente.
Algunos ejemplos para aclarar conceptos ...
El esquema siguiente muestra algunos ejemplos de cómo se asigna la autorización *PUBLIC, dependiendo de lo que se especifique en el parámetro AUT (Autorización) de cada comando CRT, en cada caso:
Analizando algunos de los ejemplos del esquema ...
a) Creación de un objeto (CLIENTES)
- En la biblioteca CURSOLIB el parámetro CRTAUT (Autorización de creación) tiene especificado *USE.
- *USE es la autorización asignada a *PUBLIC en el objeto CLIENTES de la biblioteca CURSOLIB
- Esto es así debido a que el parámetro AUT del comando CRTPF que crea este archivo, tiene el valor default *LIBCRTAUT
- *LIBCRTAUT le indica que haga referencia al parámetro "Autorización de creación" de la Biblioteca CURSOLIB para tomar la autorización correspondiente, en este caso *USE
b) Creación de una biblioteca (PRUEBAS)
- En la biblioteca QSYS el parámetro CRTAUT (Autorización de creación) tiene especificado *SYSVAL
- *CHANGE es la autorización asignada a *PUBLIC de la biblioteca PRUEBAS
- Esto es así debido a que el parámetro AUT del comando CRTLIB que crea esta biblioteca, tiene el valor default *LIBCRTAUT
- *LIBCRTAUT le indica que haga referencia al parámetro "Autorización de creación" de la biblioteca QSYS para tomar la autorización correspondiente.
- En este caso toma la autorización del valor del sistema QCRTAUT, es decir *CHANGE
Para tener en cuenta ...
- El parámetro CRTAUT (Autorización de creación) puede tener como valor especificado el nombre de una Lista de autorizaciones. De esta manera, cualquier objeto nuevo creado en la biblioteca con AUT(*LIBCRTAUT), tomará los permisos para el usuario *PUBLIC de la lista de autorizaciones indicada, y la autoridad pública para el objeto tendrá *AUTL.
- Los comandos mover un objeto (comando MOVOBJ), crear un objeto duplicado (CRTDUPOBJ) o restaurar objeto (RSTOBJ), no tienen en cuenta el valor de CRTAUT de la bilbioteca a donde se mueven/copian/restauran; en cambio, se utilizará la autoridad pública del objeto existente.
- Por lo explicado en este artículo, es importante y conveniente evaluar qué autorización tiene *PUBLIC en los objetos con datos sensibles. El comando PRTPUBAUT genera un listado de objetos de un determinado tipo y biblioteca, con los objetos que tengan autorización pública distinta de *EXCLUDE.
- Founder NS iTech - Capacitación IBM i - Especialista AS400 - IBM i - Supervisor Editorial Teknodatips |
Copyright 2016 - Teknoda S.A.
IMPORTANTE: “Notas técnicas de AS/400 - IBM i" se envía con frecuencia variable y sin cargo como servicio a nuestros clientes IBM i - AS/400. Contiene notas/tutoriales/artículos técnicos desarrollados en forma totalmente objetiva e independiente. NS iTech - Teknoda es una organización de servicios de tecnología informática y NO comercializa hardware, software ni otros productos. |