1.1 MATRIZ DE ACCESO Nuestro modo de protección puede visualizarse de forma abstracta como una matriz, llamada matriz de acceso. Las filas de la matriz de acceso representan dominios, y las columnas, objetos.
Cada entrada de la matriz consiste en un conjunto de derechos
de acceso. Dado de que la columna define explícitamente el objeto, podemos omitir el nombre del objeto en el derecho de acceso. La entrada a acceso(i,j) define el conjunto de operaciones que un proceso que se ejecuta en el dominio D i puede invocar con el objeto Oj. Para ilustrar estos conceptos, consideremos la matriz de acceso que se muestra en la Figura 2.
Hay cuatro dominios y cuatro objetos: tres archivos (F 1, F2 y F3) y una
impresora láser.
Cuando un proceso se ejecuta en el dominio D 1, puede leer los
archivos F1 y F3.
Un proceso que se ejecuta en el dominio D 4 , tiene los mismos
privilegios que en el dominio D1, pero además, puede escribir en los archivos F1 y F3. Sólo los procesos que se ejecutan en el dominio D2 tienen acceso a la impresora.
DOMINIOS D1 D2 D3 D4
OBJETOS F2
F1 leer
F3 leer
Impresora imprimir
leer leer/escribir
ejecutar leer/escribir
Figura 2. Matriz de Acceso El esquema de matriz de acceso nos proporciona el mecanismo para especificar diversas
políticas. El mecanismo consiste en implementar la matriz de acceso y
asegurar
que
se
cumplan
realmente
las
propiedades
semánticas
que
bosquejemos. En términos más específicos, debemos asegurar que un
proceso
que se ejecuta en el dominio Di, pueda acceder sólo a los objetos especificados en la fila i, y sólo como lo especifican las entradas de la
matriz
de
acceso.
Las decisiones de política relativas a la protección se pueden implementar con la matriz de acceso. Dichas decisiones se refieren a qué derechos deben incluirse en la (i,j)-ésima entrada. proceso. operativo.
También debemos decidir en qué dominio se ejecutará cada
Esta última decisión de política generalmente corresponde al sistema
Los usuarios normalmente deciden el contenido de las entradas de la matriz de acceso. Cuando un usuario crea un objeto nuevo Oj, se añade la columna Oj a la matriz de acceso con las entradas iniciales apropiadas, a gusto del creador. El usuario podría decidir colocar algunos derechos en algunas entradas de la columna j y otros derechos en otras entradas, según sus necesidades. La matriz de acceso proporciona un mecanismo apropiado para definir e implementar un control estricto de la asociación tanto estática como dinámica entre procesos y dominios.
Cuando conmutamos un proceso de un dominio a otro, estamos
ejecutando una operación (conmutar) con un objeto (el dominio). Podemos controlar la conmutación de dominios incluyendo dominios entre los objetos de la matriz de acceso.
Así mismo, cuando modificamos el contenido de la matriz de acceso,
estamos realizando una operación con un objeto: la matriz de acceso. Una vez más, podemos controlar estos cambios incluyendo la matriz de acceso misma como un objeto. En realidad, puesto que cada entrada de la matriz de acceso se puede modificar individualmente, debemos considerar cada entrada de la matriz de acceso como un objeto que debe protegerse. Ahora bien, sólo tenemos que considerar las operaciones que son posibles con estos nuevos objetos (dominios y la matriz de acceso) y decidir cómo queremos que los procesos puedan ejecutar dichas operaciones. Los procesos deberán poder cambiar de un dominio a otro.
Se permite la
conmutación del dominio Di al dominio D j si y sólo si el derecho de acceso conmutar acceso(i,j). Así, en la Figura 3, un proceso que se ejecuta en el dominio D
2
puede
cambiar al dominio D 3 o al D 4. Un proceso del dominio D 4 puede cambiar a D 1 , y uno del dominio D 1 puede cambiar al dominio D 2.
DOMINIOS D1 D2 D3 D4
F1 leer
F2
F3 leer
leer
ejecutar leer/escribir
OBJETOS Impresora D1
D2 conmutar
imprimir leer/escribir
D3
D4
conmutar conmutar conmutar
Figura 3. Matriz de Acceso de la Figura 2 con dominios como objetos. Para poder modificar de forma controlada el contenido de las entradas de la matriz de acceso se requieren tres operaciones adicionales: copiar (copy), dueño (owner) y control. La capacidad para copiar un derecho de acceso de un dominio (fila) de la matriz de acceso a otro se denota con un asterisco (*) añadido al derecho de acceso. El derecho copiar permite copiar el derecho de acceso sólo dentro de la columna
(esto es, el objeto) para la cual se define el derecho. Por ejemplo, en la Figura 4.a, un proceso que se ejecuta en el dominio D2 puede copiar la operación de leer en cualquier entrada asociada al archivo F2 . Así, la matriz de acceso de la Figura 4.a se puede modificar a la que se muestra en la Figura 4.b.
DOMINIOS D1 D2 D3
F1 Ejecutar Ejecutar Ejecutar
OBJETOS F2 Leer*
F3 Escribir* Ejecutar
a.
DOMINIOS D1 D2 D3
F1 Ejecutar Ejecutar Ejecutar
OBJETOS F2 Leer* Leer
F3 Escribir* Ejecutar
b.
Figura 4. Matriz de Acceso con derechos de copiar. Este esquema tiene dos variantes: 1. Se copia un derecho de acceso(i,j) a acceso(k,j); luego se elimina de acceso(i,j); esta acción es una transferencia de un derecho, más que una copia. 2. La propagación del derecho de copiar podría estar limitada. Es decir, cuando el derecho R* se copia de acceso(i,j) a acceso(k,j), sólo se crea el derecho R (No R*). Un proceso que se ejecute en el dominio Dk no podrá copiar el derecho R. Un sistema podría seleccionar solo uno de estos tres derechos de copiar, o podría ofrecer los tres identificándolos como derechos distintos: copiar, transferir y copiar limitado. El derecho copiar permite a un proceso copiar algunos derechos de una entrada de una columna a otra entrada de la misma columna.
También necesitamos un
mecanismo para añadir nuevos derechos y quitar algunos derechos. El derecho de dueño controla estas operaciones. Si acceso(i,j) incluye el derecho dueño, un proceso que se ejecuta en el dominio Di
puede quitar y agregar derechos en cualquier
entrada de la columna j. Por ejemplo, en la Figura 5.a, el dominio D 1 es el dueño de F1 , por lo tanto, puede agregar y eliminar cualquier derecho válido de la columna F 1. De
forma similar, el dominio D2 , es el dueño de F2 y F3, y por lo tanto, puede agregar y quitar cualquier derecho válido dentro de estas dos columnas.
Así, la matriz de
acceso de la figura 5.a se puede transformar en la que se muestra en la Figura 5.b.
DOMINIOS D1
OBJETOS F2
F1 Dueño Ejecutar
Leer* Dueño
D2
F3 Escribir Leer*/Escribir* Dueño
Ejecutar
D3
a.
DOMINIOS D1
OBJETOS F2
F1 Dueño Ejecutar
Leer*/Escribir* Dueño Escribir
D2 D3
F3
Leer*/Escribir* Dueño Escribir
b. Figura 5. Matriz de Acceso con derechos de dueño.
Los derechos copiar y dueño permiten a un proceso modificar las entradas de una columna. También se requiere un mecanismo para modificar las entradas de una fila. El derecho control solo aplica a los objetos dominio. Si acceso(i,j), incluye el derecho control, un proceso que se ejecuta en el dominio D i, puede quitar cualquier derecho de acceso a la fila j.
Por ejemplo, supongamos que, en la Figura 6 incluimos el
derecho control en acceso(D2, D4). Entonces un Proceso que se ejecuta en el dominio D2 podría modificar al dominio D4 , como se muestra en la Figura 6. Aunque los derechos copiar y dueño proporcionan un mecanismo para limitar la propagación de los derechos de acceso, no ofrecen las herramientas apropiadas para evitar la propagación de información (es decir, la revelación de información). El problema de garantizar que ninguna información que inicialmente está contenida en un objeto pueda migrar fuera de su entorno de ejecución se denomina problema de confinación. Este problema no puede resolverse en el caso general.
DOMINIOS D1 D2
F1 leer
F2
F3 leer
OBJETOS Impresora D1
D2 conmutar
imprimir
leer Ejecutar D3 escribir Ejecutar D4 Figura 6. Matriz de Acceso modificada de la Figura 3.
conmutar
D3
D4
conmutar
Conmutar Control
En sí, estas operaciones con los dominios y la matriz de acceso no son demasiado importantes. Lo que es más importante es que ilustran la capacidad del modelo de la matriz de acceso para implementar y controlar las necesidades de protección dinámica. Es posible crear dinámicamente objetos y dominios nuevos e incluirlos en le modelo de la matriz de acceso.
Sin embargo, sólo hemos mostrado la existencia del
mecanismo básico; bajo las decisiones de política sobre qué dominios habrán de tener acceso a qué objetos y de qué maneras corresponden a los diseñadores y usuarios del sistema. 2.4 IMPLEMENTACION DE LA MATRIZ DE ACCESO ¿Cómo puede implementarse de forma efectiva la matriz de acceso? En general, la matriz estará poco poblada; es decir, la mayor parte de las entradas estarán vacías. Aunque existen técnicas de estructuras de datos para representar matrices poco pobladas, no son muy útiles para esta aplicación a causa de la forma en que se usa el recurso de protección.