¿Cuál es el significado y la diferencia entre sujeto, usuario y principal?


En el contexto de los marcos de seguridad, algunos términos comúnmente ocurren sujeto, usuario y principal, de los cuales no he podido encontrar una definición clara y la diferencia entre ellos.

Entonces, ¿qué significan exactamente estos términos, y por qué son necesarias estas distinciones de sujetoy principal?

Author: nbro, 2011-02-14

6 answers

Estos son jerárquicos en la forma en que el género, la especie y el individuo son jerárquicos.

  • Subject - En un contexto de seguridad, un subject es cualquier entidad que solicita acceso a un object. Estos son términos genéricos utilizados para denotar la cosa que solicita acceso y la cosa contra la que se hace la solicitud. Cuando inicia sesión en una aplicación, usted es el sujeto y la aplicación es el objeto. Cuando alguien llama a tu puerta el visitante es el sujeto solicitar acceso y su casa es el objeto de acceso se solicita.
  • Principal - Un subconjunto de sujeto que está representado por una cuenta, rol u otro identificador único. Cuando llegamos al nivel de detalles de implementación, las principales son las claves únicas que usamos en las listas de control de acceso. Pueden representar usuarios humanos, automatización, aplicaciones, conexiones, etc.
  • User - Un subconjunto de principal normalmente se refiere a un operador humano. La distinción se difumina con el tiempo porque las palabras "usuario" o "ID de usuario" se intercambian comúnmente con "cuenta". Sin embargo, cuando necesita hacer la distinción entre la clase amplia de cosas que son principios y el subconjunto de estos que son operadores interactivos que conducen transacciones de una manera no determinista, "usuario" es la palabra correcta.

Sujeto/Objeto hereda de los mismos términos que se usan en la gramática. En una oración el sujeto es el actor y el el objeto es la cosa sobre la que se actuó. En este sentido, el uso ha existido desde antes de que se inventaran los ordenadores. En un contexto de seguridad, un sujeto es cualquier cosa que puede hacer una solicitud. Como se ha señalado anteriormente, no es necesario limitarse a la seguridad informática, por lo que se trata de una clasificación muy amplia. Lo interesante es que el sujeto implica objeto. Sin un objeto, no hay sujeto.

Los principales son lo que los sujetos resuelven. Cuando presenta su tarjeta de crédito usted es el sujeto y la cuenta número es el principal. En otros contextos, su ID de usuario o identificación emitida por el estado es su principal. Pero los directores pueden estar asociados con muchos tipos de sujetos que no son personas. Cuando las aplicaciones hacen solicitudes para funciones a nivel de sistema, el principal puede ser el firmante de un módulo de código ejecutable firmado, pero incluso en ese caso, el usuario que conduce la solicitud sigue siendo el sujeto.

User es más específico que subject o principal en que normalmente se refiere a un operador interactivo. Es por eso que tenemos una Interfaz gráfica de Usuario y no una Interfaz Gráfica Principal. Un usuario es una instancia de sujeto que se resuelve en un principal. Un solo usuario puede resolver a cualquier número de entidades principales, pero se espera que cualquier entidad principal resuelva a un solo usuario (suponiendo que las personas observen el requisito de no compartir ID). En el ejemplo anterior, el firmante de un módulo de código ejecutable es definitivamente no el usuario, pero es válido principal. El el operador interactivo que intenta cargar el módulo es el usuario.

Como se indica en los comentarios, incluso las fuentes autorizadas no están de acuerdo con estos términos. Busqué NIST, SANS, IEEE, MITRE y varias fuentes "cuasiautoritarias", como las guías de exámenes de seguridad, mientras preparaba esta respuesta. Ninguna fuente única que encontré que fuera al menos cuasi autorizada cubría los tres términos y todos diferían significativamente en su uso. Esta es mi opinión sobre cómo los términos deben ser utilizado pero desde un punto de vista práctico, cuando usted está estudiando detenidamente un manual en medio de la noche, las definiciones tienden a ser lo que el vendedor o escritor dicen que son. Esperemos que las respuestas aquí proporcionen suficiente información para navegar por las aguas y analizar cualquier documento de seguridad utilizando estos términos.

 216
Author: T.Rob,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-17 20:12:03

Echa un vistazo a mi Mapa conceptual de autenticación :

introduzca la descripción de la imagen aquí

 50
Author: Marinus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-09 08:02:59

Creo que la terminología está tomada de JAAS.

Cuando una aplicación utiliza JAAS autenticación para autenticar el usuario (u otra entidad como un servicio), un Sujeto {[7] } se crea como un resultado. El propósito del Tema es para representar al usuario autenticado. A El tema se compone de un conjunto de Principales , donde cada Principal representa una identidad para ese usuario. Por ejemplo, un Sujeto podría tener un nombre Principal ("Susan Smith") y un Número de Seguro Social Principal ("987-65-4321"), por lo tanto distinguir este Tema de otros Tema.

 14
Author: Aravind R. Yarram,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-01 00:10:37

Subject es la entidad que solicita un servicio. Puede ser un usuario o un proceso. Probablemente es por eso que se eligió el nombre Sujeto en lugar de usuario.

Cuando un sujeto intenta acceder a un servicio, primero debe autenticarse. La autenticación exitosa termina con la carga de las Entidades de seguridad para ese Sujeto. Por ejemplo, en un sistema de Control de Acceso Basado en Roles, un usuario autenticado (conectado) generalmente tendrá dos principales: userId y RoleId. En tales sistemas, los privilegios(es decir, quién puede acceder a qué) se especifican para ambos roles y para los usuarios. Durante la autorización (es decir, verificar si el servicio solicitado debe ser permitido), el sistema de seguridad verificará la accesibilidad contra ambos directores.

Por lo tanto, desde la perspectiva de la autorización, los principales son las entidades reales para las que se permite o no se permite el acceso. El sujeto es solo un usuario / hilo / proceso que contiene algunos principios.

 10
Author: rahulmohan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-16 20:54:45

Como explicó T. Rob, Sujeto es cualquier entidad que solicita acceso a un objeto. A partir de ese punto he encontrado un comentario en javax.seguridad.auth.Código de asunto que he encontrado MUY útil y fácil de entender:

"Los sujetos pueden potencialmente tener múltiples identidades. Cada identidad es representada como un Principal dentro del Sujeto. Los principales simplemente vinculan nombres a un Sujeto. Por ejemplo, un Sujeto que resulta ser una persona, Alice, podría tener dos Principios: uno que vincula " Alice Bar", el nombre en su licencia de conducir, al Sujeto, y otro que vincula, "999-99-9999", el número en su tarjeta de identificación de estudiante, al Sujeto. Ambos Directores se refieren al mismo Tema a pesar de que cada uno tiene un nombre diferente."

Espero que ayude.

 9
Author: Rafael,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-09 10:33:45

Este es el enlace para la siguiente explicación de la Documentación de Oracle JAVA SE.

Sujetos, Entidades principales, Autenticación y Credenciales Para autorizar el acceso a los recursos, las aplicaciones primero deben autenticar el origen de la solicitud. El marco JAAS define el término sujeto para representar la fuente de una solicitud. Un sujeto puede ser cualquier entidad, como una persona o servicio. Un sujeto está representado por el javax.seguridad.auth.Subject class.

La autenticación representa el proceso por el cual se verifica la identidad de un sujeto, y debe realizarse de manera segura; de lo contrario, un perpetrador puede hacerse pasar por otros para obtener acceso a un sistema. La autenticación típicamente implica que el sujeto demuestre alguna forma de evidencia para probar su identidad. Dicha evidencia puede ser información que solo el sujeto probablemente conozca o tenga (como una contraseña o huella digital), o puede ser información que solo el sujeto podría producir (como datos firmados usando una clave privada).

Una vez autenticado, un Sujeto se rellena con identidades asociadas, o Principals (de tipo java.seguridad.Principal ). Un Tema puede tener muchos Principios. Por ejemplo, una persona puede tener un Director de nombre ("John Doe") y un Director de SSN ("123-45-6789"), que lo distinguen de otros Sujetos.

Además de los Principales asociados, un Sujeto puede poseer atributos relacionados con la seguridad, a los que se hace referencia como credenciales. Una credencial puede contener información utilizada para autenticar al sujeto a nuevos servicios. Estas credenciales incluyen contraseñas, tickets de Kerberos y certificados de clave pública. Las credenciales también pueden contener datos que permiten al sujeto realizar ciertas actividades. Las claves criptográficas, por ejemplo, representan credenciales que permiten al sujeto firmar o cifrar datos. Las clases de credenciales públicas y privadas no forman parte de la API principal de J2SE. Cualquier clase, por lo tanto, puede representa una credencial.

 3
Author: fgul,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-02 11:43:55