Matriz de acceso
El modelo de protección del sistema se puede ver en forma abstracta como
una matriz, la matriz de acceso.
Una matriz de acceso es una representación abstracta del concepto de
dominio de protección.
Este modelo fue propuesto por Lampson [4] como una descripción
generalizada de mecanismos de protección en sistemas operativos. Es el modelo más
utilizado, del que existen numerosas variaciones, especialmente en su
implementación.
Los elementos básicos del modelo son los siguientes:
• Sujeto: Una entidad capaz de acceder a
los objetos. En general, el concepto de sujeto es equiparable con el de
proceso. Cualquier usuario o aplicación consigue acceder en realidad a un
objeto por medio de un proceso que representa al usuario o a la aplicación.
• Objeto: Cualquier cosa cuyo acceso debe
controlarse. Como ejemplo se incluyen los archivos, partes de archivos,
programas y segmentos de memoria.
• Derecho de acceso: la manera en que un
sujeto accede a un objeto. Como ejemplo está Leer, Escribir y Ejecutar.
El modelo considera un conjunto de recursos, denominados objetos, cuyo
acceso debe ser controlado y un conjunto de sujetos que acceden a dichos
objetos. Existe también un conjunto de permisos de acceso que especifica los
diferentes permisos que los sujetos pueden tener sobre los objetos (normalmente
lectura, escritura, etc., aunque pueden ser diferentes, en general, dependiendo
de las operaciones que puedan realizarse con el objeto).
Se trata de especificar para cada pareja (sujeto, objeto), los permisos
de acceso que el sujeto tiene sobre el objeto. Esto se representa mediante una
matriz de acceso M que enfrenta todos los sujetos con todos los objetos. En
cada celda M [i, j] se indican los permisos de acceso concretos que tiene el
sujeto i sobre el objeto j.
La figura 6.3.1 representa una matriz de acceso, y la figura 6.3.2 es
una matriz de acceso derivada de la figura 6.3 de dominios de protección.
El mecanismo de protección es la matriz, junto con todos los elementos
que se han de añadir para que se cumplan de manera efectiva todas las
restricciones de acceso a los objetos.
• La política consiste en decidir cómo rellenar las distintas
celdas de la matriz.
• La MA permite implementar operaciones de cambio de domino.
• El objeto sobre el que trabajamos es el Dominio → aparecen
tantas columnas como dominios haya en el sistema.
• La operación es la conmutación de un dominio a
otro.
• También la MA es un objeto que se puede modificar.
De este modo
podemos definir tres operaciones:
• Copiar derechos de acceso de una celda a otra
dentro de la misma columna. Consiste en pasar el derecho de acceso a un objeto
de un Dominio que lo tiene, a otro donde originalmente no lo tenía. Se señala
con un asterisco (*).
• Copia ilimitada con propagación del propio derecho de copia.
• Copia limitada sin propagación.
• Movimiento de derecho.
• Dueño. Un proceso ejecutándose en un dominio
que tiene derecho de “dueño” sobre un objeto, puede repartir cualquier derecho
de acceso sobre cualquier dominio para dicho objeto.
• Control. Opera solo sobre dominios. Ejercer el
control sobre un dominio implica que se puede quitar cualquier
derecho sobre una fila de dominio.
• La MA también ha de ser protegida.
Implementación de la Matriz de Acceso
Tabla Global
Sencilla. Se almacena una lista de ternas {<dominio, objeto,
permisos>...}.
Como el número de objetos y dominios es posiblemente muy grande, se debería
guardar en memoria virtual.
Ejemplo de una tabla global
Lista de acceso para objetos (ACL)
Se expresa la MA por columnas {<dominio, permisos>,...}. Se
descartan las entradas vacías.
Se puede crear una lista de permisos por defecto para hacer más fácil su
uso.
Dado que cada vez que se va a usar un objeto hay que comprobar si hay o
no permiso para hacerlo, es lógico poner la ACL allí donde estén descritos los
atributos del objeto.
- Asocia
a cada objeto una lista ordenada con:
- Todos
los dominios que pueden tener acceso al objeto.
- La
forma de dicho acceso (ej.: lectura (r), grabación (w), ejecución (x)).
Una forma
de implementar las ACL consiste en:
- Asignar
tres bits (r, w, x) para cada archivo, para:
- El
propietario, el grupo del propietario y los demás usuarios.
- Permitir
que el propietario de cada objeto pueda modificar su ACL en cualquier
momento:
- Permite
prohibir accesos antes permitidos.
Lista de Capacidades
Se expresa la MA por filas. Cada dominio tiene una lista de la forma
{<objeto, permisos>,...}
Para identificar el objeto se usa o bien su nombre lógico, o un puntero
a él (la estructura de datos que le describe); a esta dirección se la llama capacidad.
Solo se podrá realizar la operación M sobre el objeto O si se dispone de
la capacidad (puntero) al objeto.
Ejemplo de una lista de capacidades
Mecanismo de Cerradura-Llave
Cada objeto tiene una lista de patrones llamados cerradura.
Cada dominio tiene una lista de patrones llamados claves.
Un proceso que se ejecuta en un dominio solo tendrá acceso a un objeto
si el dominio contiene una llave que coincida con una de las cerraduras.
Comparación
La tabla global es una matriz dispersa, es ineficiente para su
almacenamiento.
ACL → Cuando se accede a un objeto es fácil determinar si hay o no
permiso para usarlo.
Capacidades → Las ACL están distribuidas, es difícil saber cuáles son
los derechos de acceso para un proceso, cosa que si se puede hacer con la lista
de capacidades.
Los sistemas reales suelen usar una mezcla de todos.
Ej. UNIX: Se abre un fichero, se verifica en la ACL si tiene permiso o
no. Si lo tiene, se consigue un descriptor de fichero, es decir una capacidad
que será lo que se use a partir de entonces.
No hay comentarios:
Publicar un comentario