stringtranslate.com

XACML

El lenguaje de marcado de control de acceso extensible ( XACML ) es un lenguaje de marcado estándar basado en XML para especificar políticas de control de acceso . El estándar, publicado por OASIS , define un lenguaje de política de control de acceso detallado y declarativo basado en atributos , una arquitectura y un modelo de procesamiento que describe cómo evaluar las solicitudes de acceso de acuerdo con las reglas definidas en las políticas. [2]

XACML es principalmente un sistema de control de acceso basado en atributos . En XACML, los atributos (información sobre el sujeto que accede a un recurso, el recurso que se va a abordar y el entorno) actúan como entradas para la decisión de si se concede o no el acceso. [3] XACML también se puede utilizar para implementar control de acceso basado en roles . [4]

En XACML, las decisiones de control de acceso que se deben tomar se expresan como Reglas. Cada Regla comprende una serie de condiciones que deciden si una determinada solicitud es aprobada o no. Si una regla es aplicable a una solicitud pero las condiciones dentro de la regla no se evalúan, el resultado es Indeterminado. Las reglas se agrupan en Políticas y un Conjunto de Políticas contiene Políticas y posiblemente otros Conjuntos de Políticas. Cada uno de ellos también incluye un Objetivo, una condición simple que determina si debe evaluarse para una solicitud determinada. La combinación de algoritmos se puede utilizar para combinar reglas y políticas con resultados potencialmente diferentes de varias maneras. XACML también admite obligaciones y expresiones de asesoramiento. Las obligaciones especifican acciones que deben ejecutarse durante el procesamiento de una solicitud, por ejemplo para el registro. Las expresiones de consejo son similares, pero pueden ignorarse. [3]

XACML separa la funcionalidad de control de acceso en varios componentes. Cada entorno operativo en el que se utiliza el control de acceso tiene un Punto de cumplimiento de políticas (PEP) que implementa la funcionalidad para exigir autorización y otorgar o denegar acceso a los recursos. Estos se refieren a un Punto de Decisión de Política (PDP) central e independiente del entorno que realmente toma la decisión sobre si se concede o no el acceso. El PDP se refiere a las políticas almacenadas en el Punto de Recuperación de Políticas (PRP). Las políticas se gestionan a través de un Punto de Administración de Políticas (PAP). [3]

La versión 3.0 fue ratificada por OASIS en enero de 2013. [5]

Historia

La versión 1.0 fue ratificada por la organización de estándares OASIS en 2003. [ cita necesaria ]

La versión 2.0 fue ratificada por la organización de estándares OASIS el 1 de febrero de 2005. [ cita necesaria ]

La versión 3.0 fue ratificada por OASIS en enero de 2013.

Arquitectura

Terminología

Terminología no normativa (según RFC 2904, excepto PAP)

Fluir

Esta imagen muestra la arquitectura XACML y un flujo de autorización de muestra.
Esta imagen muestra la arquitectura XACML y un flujo de autorización de muestra.
  1. Un usuario envía una solicitud que es interceptada por el Punto de aplicación de políticas (PEP)
  2. El PEP convierte la solicitud en una solicitud de autorización XACML.
  3. El PEP remite la solicitud de autorización al Punto de Decisión de Políticas (PDP)
  4. El PDP evalúa la solicitud de autorización según las políticas con las que está configurado. Las pólizas se adquieren a través del Punto de Recuperación de Políticas (PRP) y son administradas por el Punto de Administración de Políticas (PAP). Si es necesario, también recupera valores de atributos de los puntos de información de políticas (PIP) subyacentes.
  5. El PDP llega a una decisión (Permitir / Denegar / No Aplicable / Indeterminado) y la devuelve al PEP

Elementos de política

Elementos estructurales

XACML está estructurado en 3 niveles de elementos:

Un conjunto de políticas puede contener cualquier número de elementos de política y elementos de conjunto de políticas. Una política puede contener cualquier número de elementos de regla.

Atributos y categorías

Las políticas, conjuntos de políticas, reglas y solicitudes utilizan sujetos, recursos, entornos y acciones.

Objetivos

XACML proporciona un objetivo, que es básicamente un conjunto de condiciones simplificadas para el sujeto, recurso y acción que deben cumplirse para que un conjunto de políticas, políticas o reglas se apliquen a una solicitud determinada. Una vez que se determina que una política o un conjunto de políticas se aplican a una solicitud determinada, sus reglas se evalúan para determinar la decisión de acceso y la respuesta.

Además de ser una forma de comprobar la aplicabilidad, la información de destino también proporciona una forma de indexar políticas, lo cual es útil si necesita almacenar muchas políticas y luego examinarlas rápidamente para encontrar cuáles se aplican. Cuando llega una solicitud para acceder a ese servicio, el PDP sabrá dónde buscar políticas que podrían aplicarse a esta solicitud porque las políticas están indexadas en función de sus restricciones de destino. Tenga en cuenta que un objetivo también puede especificar que se aplica a cualquier solicitud.

El conjunto de políticas, la política y la regla pueden contener elementos de destino.

Condiciones

Las condiciones sólo existen en las reglas. Las condiciones son esencialmente una forma avanzada de un objetivo que puede utilizar una gama más amplia de funciones y, lo que es más importante, se puede utilizar para comparar dos o más atributos juntos, por ejemplo, id-sujeto==id-doctor. Con condiciones, es posible implementar controles de segregación de funciones o control de acceso basado en relaciones.

Obligaciones y asesoramiento

Dentro de XACML, se puede utilizar un concepto llamado obligaciones. Una obligación es una directiva desde el punto de decisión de políticas (PDP) hasta el punto de aplicación de políticas (PEP) sobre lo que se debe llevar a cabo antes o después de que se apruebe un acceso. Si la PEP no puede cumplir con la directiva, el acceso aprobado puede o no realizarse. El aumento de obligaciones elimina una brecha entre los requisitos formales y la aplicación de políticas. Un ejemplo de obligación podría verse así:

Regla de control de acceso: Permitir el acceso al recurso MedicalJournal con el atributo PatientID=x si el sujeto coincide con DesignatedDoctorOfPatient y se lee la acción con obligación en permiso: doLog_Inform(ID de paciente, Asunto, hora) en Denegar: doLog_UnauthorizedLogin(ID de paciente, Asunto, hora)

La obligación de XACML puede ser una forma eficaz de cumplir requisitos formales (no repudio, por ejemplo) que pueden ser difíciles de implementar como reglas de control de acceso. Además, cualquier requisito formal formará parte de la política de control de acceso como obligaciones y no como funciones separadas, lo que hace que las políticas sean coherentes y la centralización del entorno de TI sea más fácil de lograr.

Las obligaciones se pueden utilizar para escenarios de "romper el cristal" o elevación de confianza ("no se pueden transferir $1,000 sin autenticación de dos factores; aquí está el enlace a la página 2FA").

Además de las obligaciones, XACML admite asesoramiento que es idéntico a las obligaciones con la diferencia de que una PEP no está obligada a hacer cumplir el asesoramiento (de ahí su nombre).

Combinando algoritmos

¿Qué sucede en XACML si hay dos reglas (o políticas) que se contradicen? Imagine, por ejemplo, una primera regla que diga que los gerentes pueden ver los documentos y una segunda regla que diga que nadie puede trabajar antes de las 9 a.m. ¿Qué pasa si la solicitud se refiere a que Alice intenta ver un documento a las 8 a. m.? ¿Qué regla gana? Esto es lo que nos dicen los algoritmos combinados. Ayudan a resolver conflictos.

XACML define una serie de algoritmos de combinación que pueden identificarse mediante un atributo RuleCombiningAlgId o PolicyCombiningAlgId de los elementos <Policy> o <PolicySet>, respectivamente. El algoritmo de combinación de reglas define un procedimiento para llegar a una decisión de acceso dados los resultados individuales de la evaluación de un conjunto de reglas. De manera similar, el algoritmo de combinación de políticas define un procedimiento para llegar a una decisión de acceso dados los resultados individuales de la evaluación de un conjunto de políticas.

Funciones

XACML define una larga lista de funciones (cerca de 300) para manipular y comparar atributos con otros atributos y valores:

Las funciones y sus identificadores se describen completamente en la norma. Las funciones son específicas del tipo, es decir, hay una función para la igualdad de cadenas y otra diferente para la igualdad de enteros.

Igualdad, desigualdad y otras funciones de emparejamiento

Funciones aritméticas

Consulte la norma para obtener una definición formal de estas funciones.

Funciones de cadena

Consulte la norma para obtener una definición formal de estas funciones.

Funciones lógicas (y, o, no)

Funciones de juego y bolsa.

Funciones de expresión regular

Funciones XPath

Funciones de orden superior

La lista de funciones de orden superior se muestra a continuación. Para obtener una definición formal, consulte el estándar XACML.

XACML 3.0

Esquema

http://docs.oasis-open.org/xacml/3.0/xacml-core-v3-schema-wd-17.xsd

Tipos de datos

Nuevo en XACML 3.0

Nuevos perfiles

XACML 3.0 introduce la delegación administrativa, el perfil JSON de XACML (solicitud/respuesta), el perfil REST de XACML, el perfil de decisión múltiple de XACML y muchos más.

Delegación

La implementación de la delegación es nueva en XACML 3.0. El mecanismo de delegación se utiliza para respaldar la administración descentralizada de las políticas de acceso. Permite que una autoridad (delegador) delegue total o parcialmente su propia autoridad o la autoridad de otra persona a otro usuario (delegado) sin necesidad de modificar la política raíz.

Esto se debe a que, en este modelo de delegación, los derechos de delegación están separados de los derechos de acceso. Más bien, se las denomina políticas de control administrativo. El control de acceso y las políticas administrativas funcionan juntas como en el siguiente escenario:

Los numerosos servicios de una asociación de empresas están protegidos por un sistema de control de acceso. El sistema implementa las siguientes reglas centrales para proteger sus recursos y permitir la delegación:

Reglas de control de acceso: Permitir el acceso al recurso con atributo WebService si el asunto es Empleado y la acción es lectura o escritura. Normas de control de la administración: Permitir delegación de la regla de control de acceso n.° 1 a sujetos con atributo Consultor. Condiciones: la delegación debe expirar en un plazo de 6 meses, El recurso no debe tener el atributo StrictlyInternal. 

(Los atributos se pueden obtener de una fuente externa, por ejemplo, un catálogo LDAP).

Cuando un consultor ingresa a la corporación, su supervisor puede emitir una delegación localmente autorizando el acceso del consultor a los sistemas directamente.

El delegado (el supervisor en este escenario) solo puede tener derecho a delegar un conjunto limitado de derechos de acceso a los consultores.

Otras características

Otras características nuevas de XACML 3.0 se enumeran en http://www.webfarmr.eu/2010/07/enhancements-and-new-features-in-xacml-3-axiomatics/

El TC XACML también publica una lista de cambios aquí: http://wiki.oasis-open.org/xacml/DifferencesBetweenXACML2.0AndXACML3.0

Políticas de muestra

Autorización basada en fecha y hora en XACML

Esta regla implementa el paradigma de control de acceso úsalo-pérdelo. Si un usuario no inicia sesión durante 30 días, pierde el acceso.

En pseudocódigo: negar si currentDateTime > lastLogin + 30 días

<Rule RuleId="f6637b3f-3690-4cce-989c-2ce9c053d6fa" Effect="Deny" > <Description> Úselo o piérdalo: esta política deniega el acceso si faltan más de 30 días para el último inicio de sesión </Description> < Destino/> <Condición> <Aplicar FunctionId="urn:oasis:names:tc:xacml:1.0:function:any-of" > <Function FunctionId="urn:oasis:names:tc:xacml:1.0:function:dateTime -mayor que" /> <Apply FunctionId="urn:oasis:names:tc:xacml:3.0:function:dateTime-add-dayTimeDuration" > <Apply FunctionId="urn:oasis:names:tc:xacml:1.0: función: fecha y hora única" > <Designador de atributosCategoría="urna:oasis:nombres:tc:xacml:1.0:subject-category:access-subject"AttributeId="com.acme.user.lastLogin"DataType="http://www.w3.org/2001/XMLSchema#dateTime" MustBePresent="false" /> </Apply> <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#dayTimeDuration " > P30D </AttributeValue> </Apply> <AttributeDesignatorCategoría="urna:oasis:nombres:tc:xacml:3.0:atributo-categoría:entorno"AttributeId="urna:oasis:nombres:tc:xacml:1.0:environment:current-dateTime"DataType="http://www.w3.org/2001/XMLSchema#dateTime" MustBePresent="false" /> </Apply> </Condition> </Rule>

Autorización basada en tiempo en XACML

Esta regla otorga acceso si la hora actual es mayor que las 9 a. m. y menor que las 5 p. m.

<Rule RuleId="c01d7519-be21-4985-88d8-10941f44590a" Effect="Permit" > <Description> Permitir tiempo entre 9 y 5 </Description> <Target> <AnyOf> <AllOf> <Match MatchId="urn :oasis:names:tc:xacml:1.0:function:time-greater-than" > <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#time" > 09:00:00 </AttributeValue > <Designador de atributoCategoría="urna:oasis:nombres:tc:xacml:3.0:atributo-categoría:entorno"AttributeId="urna:oasis:nombres:tc:xacml:1.0:entorno:tiempo-actual"DebeEstarPresente="falso"DataType="http://www.w3.org/2001/XMLSchema#time" /> </Match> </AllOf> </AnyOf> <AnyOf> <AllOf> <Match MatchId="urn:oasis:names: tc:xacml:1.0:function:time-less-than" > <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#time" > 17:00:00 </AttributeValue> <AttributeDesignatorCategoría="urna:oasis:nombres:tc:xacml:3.0:atributo-categoría:entorno"AttributeId="urna:oasis:nombres:tc:xacml:1.0:entorno:tiempo-actual"DebeEstarPresente="falso"DataType="http://www.w3.org/2001/XMLSchema#time" /> </Match> </AllOf> </AnyOf> </Target> </Rule>

Ejemplos de solicitudes y respuestas

Solicitud XACML 3.0

<xacml-ctx:Request ReturnPolicyIdList="true" CombinedDecision="false" xmlns:xacml-ctx="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" > <  xacml-ctx:Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action" >  <xacml-ctx:Attribute AttributeId="actionId" IncludeInResult="true" >  <xacml-ctx:AttributeValue DataType="http: //www.w3.org/2001/XMLSchema#string" > ver </xacml-ctx:AttributeValue>  </xacml-ctx:Attribute>  </xacml-ctx:Attributes>  <xacml-ctx:Attributes Category="urn :oasis:names:tc:xacml:3.0:attribute-category:resource" >  <xacml-ctx:Attribute AttributeId="resource-id" IncludeInResult="true" >  <xacml-ctx:AttributeValue DataType="http:// www.w3.org/2001/XMLSchema#string" > doc#123 </xacml-ctx:AttributeValue>  </xacml-ctx:Attribute>  </xacml-ctx:Attributes>  <xacml-ctx:Attributes Category="urn :oasis:names:tc:xacml:1.0:subject-category:access-subject" >  <xacml-ctx:Attribute AttributeId="user.identifier" IncludeInResult="true" >  <xacml-ctx:AttributeValue DataType="http: //www.w3.org/2001/XMLSchema#string" > Alicia </xacml-ctx:AttributeValue>  </xacml-ctx:Attribute>  </xacml-ctx:Attributes> </xacml-ctx:Request>

Respuestas XACML 3.0

Respuesta de muestra de XACML 3.0

<xacml-ctx:Respuesta xmlns:xacml-ctx="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" >  <xacml-ctx:Resultado>  <xacml-ctx:Decisión> No aplicable < /xacml-ctx:Decisión>  <xacml-ctx:Estado>  <xacml-ctx:StatusCode Value="urn:oasis:names:tc:xacml:1.0:status:ok" />  </xacml-ctx:Estado>  < /xacml-ctx:Resultado> </xacml-ctx:Respuesta>

Respuesta de muestra XACML 3.0 con obligación

A continuación se incluye un bloque de Obligación. Las obligaciones son declaraciones que pueden devolverse junto con una decisión para enriquecer el flujo de decisiones. En este ejemplo, la PEP debe registrar que se concedió el acceso.

<xacml-ctx:Response xmlns:xacml-ctx="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" >  <xacml-ctx:Resultado>  <xacml-ctx:Decisión> Permiso < /xacml-ctx:Decisión>  <xacml-ctx:Estado>  <xacml-ctx:StatusCode Value="urn:oasis:names:tc:xacml:1.0:status:ok" />  </xacml-ctx:Estado>  < xacml-ctx:Obligaciones>  <xacml-ctx:Obligación ObligationId="logAccess" >  </xacml-ctx:Obligación>  </xacml-ctx:Obligaciones>  <xacml-ctx:PolicyIdentifierList>  <xacml-ctx:PolicyIdReference Version=" 1.0" > http://www.axiomatics.com/automatic-unique-id/18a9eae9-c92b-4087-b2ac-c5a33d7ff477 </xacml-ctx:PolicyIdReference>  </xacml-ctx:PolicyIdentifierList>  </xacml-ctx: Resultado> </xacml-ctx:Respuesta>

El perfil de decisión múltiple de XACML 3.0

De forma predeterminada, un PDP procesa una única solicitud a la vez, por ejemplo, "¿Puede Alice ver el elemento n.° 1?". El PPD responde entonces con una única decisión. A veces, sin embargo, es necesario enviar varias solicitudes a la vez, por ejemplo, "¿Puede Alice ver/editar/eliminar los elementos n.° 1, n.° 2 y n.° 3?". El perfil de decisión múltiple de XACML permite este caso de uso. El PDP generalmente hará el producto de todas las combinaciones, es decir, en el ejemplo mencionado anteriormente, se devolverán 1 x 3 x 3 = 9 decisiones en una sola respuesta.

Solicitud JSON de muestra para el perfil de decisión múltiple

La forma de habilitar el MDP es enviar una matriz de objetos para cualquiera de las categorías en lugar de una matriz de un objeto (o simplemente un objeto). Por ejemplo, AccessSubject es un objeto pero Resource es una matriz de objetos. Este último activará el proceso de MDP en los PDP que soporten el perfil. Tenga en cuenta también el uso del atributo IncludeInResult que le dice al PDP que devuelva el atributo XACML y su valor en la respuesta para que las decisiones puedan correlacionarse con los valores de atributos relevantes.

{ "Solicitud" : { "ReturnPolicyIdList" : verdadero , "AccessSubject" : { "Atributo" : [{ "AttributeId" : "com.acme.user.username", "Valor" : "Alice" }] }, "Recurso" : [{ "Atributo" : [{ "AttributeId" : "com.acme.objectType", "Valor" : "registro" }, { "AttributeId" : "com.acme.record.recordId", "Valor" : "123", "IncludeInResult" : verdadero }] },{ "Atributo" : [{ "AttributeId" : "com.acme.objectType", "Valor" : "registro" }, { "AttributeId" : "com.acme.record.recordId", "Valor" : "124", "IncludeInResult" : verdadero }] },{ "Atributo" : [{ "AttributeId" : "com.acme.objectType", "Valor" : "registro" }, { "AttributeId" : "com.acme.record.recordId", "Valor" : "125", "IncludeInResult" : verdadero }] }], "Acción" : [{ "Atributo" : [{ "AttributeId" : "com.acme.action", "Valor" : "vista", "IncludeInResult" : verdadero }] },{ "Atributo" : [{ "AttributeId" : "com.acme.action", "Valor" : "editar", "IncludeInResult" : verdadero }] },{ "Atributo" : [{ "AttributeId" : "com.acme.action", "Valor" : "eliminar", "IncludeInResult" : verdadero }] }] }}

Ejemplo de respuesta JSON para el perfil de decisión múltiple

{ "Respuesta" : [ { "Decisión" : "Denegar", "Estado" : { "StatusCode" : { "Valor" : "urn:oasis:names:tc:xacml:1.0:status:ok" } }, "AssociatedAdvice" : { "Id" : "com.acme.message", "AttributeAssignment" : [ { "AttributeId" : "com.acme.messageContent", "Valor" : "Acceso denegado - autorización insuficiente.", "Categoría" : "urn:oasis:names:tc:xacml:3.0:attribute-category:environment", " Tipo de datos" : "http://www.w3.org/2001/XMLSchema#string" }, { "AttributeId" : "com.acme.user.clearance", "Valor" : "1", "Categoría" : "urna:oasis:nombres:tc:xacml:1.0:categoría-asunto:asunto-acceso", "Tipo de datos " : "http://www.w3.org/2001/XMLSchema#integer" }, { "AttributeId" : "com.acme.record.classification", "Value" : "3", "Category" : "urn:oasis:names:tc:xacml:3.0:attribute-category:resource", "DataType" : "http://www.w3.org/2001/XMLSchema#integer" } ] }, "Categoría" : [ { "CategoryId" : "urna:oasis:names:tc:xacml:3.0:attribute-category:resource", "Attribute" : { "AttributeId" : "com.acme.record.recordId", "Value" : "125" , "Tipo de datos" : "http://www.w3.org/2001/XMLSchema#string" } }, { "CategoryId" : "urn:oasis:names:tc:xacml:3.0:attribute-category:action", "Attribute" : { "AttributeId" : "com.acme.action", "Value" : "view", " Tipo de datos" : "http://www.w3.org/2001/XMLSchema#string" } } ], "PolicyIdentifierList" : { "PolicyIdReference" : [ { "Identificación" : "311a93c0-6e4c-47a0-8e05-76feb39f25e0", "Versión" : "1" }, { "Identificación" : "c6b75be8-f3cb-4bda-9b63-812a1f7e5fae", "Versión" : "1" } ], "Referencia de ID de conjunto de políticas" : [ { "Identificación" : "1016337f-f5f8-4ed4-bd4e-9a2be01fa211", "Versión" : "1" }, { "Identificación" : "http://www.axiomatics.com/automatic-unique-id/5cc13395-20bd-48b3-a56b-68b1c26c3e54", "Versión" : "1.0" } ] } }, { "Decisión" : "Denegar", "Estado" : { "StatusCode" : { "Valor" : "urn:oasis:names:tc:xacml:1.0:status:ok" } }, "AssociatedAdvice" : { "Id" : "com.acme.message", "AttributeAssignment" : [ { "AttributeId" : "com.acme.messageContent", "Valor" : "Acceso denegado - autorización insuficiente.", "Categoría" : "urn:oasis:names:tc:xacml:3.0:attribute-category:environment", " Tipo de datos" : "http://www.w3.org/2001/XMLSchema#string" }, { "AttributeId" : "com.acme.user.clearance", "Valor" : "1", "Categoría" : "urna:oasis:nombres:tc:xacml:1.0:categoría-asunto:asunto-acceso", "Tipo de datos " : "http://www.w3.org/2001/XMLSchema#integer" }, { "AttributeId" : "com.acme.record.classification", "Value" : "2", "Category" : "urn:oasis:names:tc:xacml:3.0:attribute-category:resource", "DataType" : "http://www.w3.org/2001/XMLSchema#integer" } ] }, "Categoría" : [ { "CategoryId" : "urn:oasis:names:tc:xacml:3.0:attribute-category:resource", "Attribute" : { "AttributeId" : "com.acme.record.recordId", "Value" : "124" , "Tipo de datos" : "http://www.w3.org/2001/XMLSchema#string" } }, { "CategoryId" : "urn:oasis:names:tc:xacml:3.0:attribute-category:action", "Attribute" : { "AttributeId" : "com.acme.action", "Value" : "view", " Tipo de datos" : "http://www.w3.org/2001/XMLSchema#string" } } ], "PolicyIdentifierList" : { "PolicyIdReference" : [ { "Identificación" : "311a93c0-6e4c-47a0-8e05-76feb39f25e0", "Versión" : "1" }, { "Identificación" : "c6b75be8-f3cb-4bda-9b63-812a1f7e5fae", "Versión" : "1" } ], "Referencia de ID de conjunto de políticas" : [ { "Identificación" : "1016337f-f5f8-4ed4-bd4e-9a2be01fa211", "Versión" : "1" }, { "Identificación" : "http://www.axiomatics.com/automatic-unique-id/5cc13395-20bd-48b3-a56b-68b1c26c3e54", "Versión" : "1.0" } ] } }, { "Decisión" : "Denegar", "Estado" : { "StatusCode" : { "Valor" : "urn:oasis:names:tc:xacml:1.0:status:ok" } }, "Categoría" : [ { "CategoryId" : "urn:oasis:names:tc:xacml:3.0:attribute-category:resource", "Attribute" : { "AttributeId" : "com.acme.record.recordId", "Value" : "123" , "Tipo de datos" : "http://www.w3.org/2001/XMLSchema#string" } }, { "CategoryId" : "urn:oasis:names:tc:xacml:3.0:attribute-category:action", "Attribute" : { "AttributeId" : "com.acme.action", "Value" : "edit", " Tipo de datos" : "http://www.w3.org/2001/XMLSchema#string" } } ], "PolicyIdentifierList" : { "PolicyIdReference" : { "Id" : "c6b75be8-f3cb-4bda-9b63-812a1f7e5fae", "Versión" : "1" }, "Referencia de ID de conjunto de políticas" : [ { "Identificación" : "1016337f-f5f8-4ed4-bd4e-9a2be01fa211", "Versión" : "1" }, { "Identificación" : "http://www.axiomatics.com/automatic-unique-id/5cc13395-20bd-48b3-a56b-68b1c26c3e54", "Versión" : "1.0" } ] } }, { "Decisión" : "Denegar", "Estado" : { "StatusCode" : { "Valor" : "urn:oasis:names:tc:xacml:1.0:status:ok" } }, "Categoría" : [ { "CategoryId" : "urn:oasis:names:tc:xacml:3.0:attribute-category:resource", "Attribute" : { "AttributeId" : "com.acme.record.recordId", "Value" : "123" , "Tipo de datos" : "http://www.w3.org/2001/XMLSchema#string" } }, { "CategoryId" : "urn:oasis:names:tc:xacml:3.0:attribute-category:action", "Attribute" : { "AttributeId" : "com.acme.action", "Value" : "delete", " Tipo de datos" : "http://www.w3.org/2001/XMLSchema#string" } } ], "PolicyIdentifierList" : { "PolicyIdReference" : { "Id" : "c6b75be8-f3cb-4bda-9b63-812a1f7e5fae", "Versión" : "1" }, "Referencia de ID de conjunto de políticas" : [ { "Identificación" : "1016337f-f5f8-4ed4-bd4e-9a2be01fa211", "Versión" : "1" }, { "Identificación" : "http://www.axiomatics.com/automatic-unique-id/5cc13395-20bd-48b3-a56b-68b1c26c3e54", "Versión" : "1.0" } ] } }, { "Decisión" : "Denegar", "Estado" : { "StatusCode" : { "Valor" : "urn:oasis:names:tc:xacml:1.0:status:ok" } }, "AssociatedAdvice" : { "Id" : "com.acme.message", "AttributeAssignment" : [ { "AttributeId" : "com.acme.messageContent", "Valor" : "Acceso denegado - autorización insuficiente.", "Categoría" : "urn:oasis:names:tc:xacml:3.0:attribute-category:environment", " Tipo de datos" : "http://www.w3.org/2001/XMLSchema#string" }, { "AttributeId" : "com.acme.user.clearance", "Valor" : "1", "Categoría" : "urna:oasis:nombres:tc:xacml:1.0:categoría-asunto:asunto-acceso", "Tipo de datos " : "http://www.w3.org/2001/XMLSchema#integer" }, { "AttributeId" : "com.acme.record.classification", "Value" : "3", "Category" : "urn:oasis:names:tc:xacml:3.0:attribute-category:resource", "DataType" : "http://www.w3.org/2001/XMLSchema#integer" } ] }, "Categoría" : [ { "CategoryId" : "urna:oasis:names:tc:xacml:3.0:attribute-category:resource", "Attribute" : { "AttributeId" : "com.acme.record.recordId", "Value" : "125" , "Tipo de datos" : "http://www.w3.org/2001/XMLSchema#string" } }, { "CategoryId" : "urn:oasis:names:tc:xacml:3.0:attribute-category:action", "Attribute" : { "AttributeId" : "com.acme.action", "Value" : "delete", " Tipo de datos" : "http://www.w3.org/2001/XMLSchema#string" } } ], "PolicyIdentifierList" : { "PolicyIdReference" : [ { "Identificación" : "311a93c0-6e4c-47a0-8e05-76feb39f25e0", "Versión" : "1" }, { "Identificación" : "c6b75be8-f3cb-4bda-9b63-812a1f7e5fae", "Versión" : "1" } ], "Referencia de ID de conjunto de políticas" : [ { "Identificación" : "1016337f-f5f8-4ed4-bd4e-9a2be01fa211", "Versión" : "1" }, { "Identificación" : "http://www.axiomatics.com/automatic-unique-id/5cc13395-20bd-48b3-a56b-68b1c26c3e54", "Versión" : "1.0" } ] } }, { "Decisión" : "Denegar", "Estado" : { "StatusCode" : { "Valor" : "urn:oasis:names:tc:xacml:1.0:status:ok" } }, "AssociatedAdvice" : { "Id" : "com.acme.message", "AttributeAssignment" : [ { "AttributeId" : "com.acme.messageContent", "Valor" : "Acceso denegado - autorización insuficiente.", "Categoría" : "urn:oasis:names:tc:xacml:3.0:attribute-category:environment", " Tipo de datos" : "http://www.w3.org/2001/XMLSchema#string" }, { "AttributeId" : "com.acme.user.clearance", "Valor" : "1", "Categoría" : "urna:oasis:nombres:tc:xacml:1.0:categoría-asunto:asunto-acceso", "Tipo de datos " : "http://www.w3.org/2001/XMLSchema#integer" }, { "AttributeId" : "com.acme.record.classification", "Value" : "3", "Category" : "urn:oasis:names:tc:xacml:3.0:attribute-category:resource", "DataType" : "http://www.w3.org/2001/XMLSchema#integer" } ] }, "Categoría" : [ { "CategoryId" : "urna:oasis:names:tc:xacml:3.0:attribute-category:resource", "Attribute" : { "AttributeId" : "com.acme.record.recordId", "Value" : "125" , "Tipo de datos" : "http://www.w3.org/2001/XMLSchema#string" } }, { "CategoryId" : "urn:oasis:names:tc:xacml:3.0:attribute-category:action", "Attribute" : { "AttributeId" : "com.acme.action", "Value" : "edit", " Tipo de datos" : "http://www.w3.org/2001/XMLSchema#string" } } ], "PolicyIdentifierList" : { "PolicyIdReference" : [ { "Identificación" : "311a93c0-6e4c-47a0-8e05-76feb39f25e0", "Versión" : "1" }, { "Identificación" : "c6b75be8-f3cb-4bda-9b63-812a1f7e5fae", "Versión" : "1" } ], "Referencia de ID de conjunto de políticas" : [ { "Identificación" : "1016337f-f5f8-4ed4-bd4e-9a2be01fa211", "Versión" : "1" }, { "Identificación" : "http://www.axiomatics.com/automatic-unique-id/5cc13395-20bd-48b3-a56b-68b1c26c3e54", "Versión" : "1.0" } ] } }, { "Decisión" : "Denegar", "Estado" : { "StatusCode" : { "Valor" : "urn:oasis:names:tc:xacml:1.0:status:ok" } }, "AssociatedAdvice": { "Id": "com.acme.message", "AttributeAssignment": [ { "AttributeId": "com.acme.messageContent", "Value": "Access denied - insufficient clearance.", "Category": "urn:oasis:names:tc:xacml:3.0:attribute-category:environment", "DataType": "http://www.w3.org/2001/XMLSchema#string" }, { "AttributeId": "com.acme.user.clearance", "Value": "1", "Category": "urn:oasis:names:tc:xacml:1.0:subject-category:access-subject", "DataType": "http://www.w3.org/2001/XMLSchema#integer" }, { "AttributeId": "com.acme.record.classification", "Value": "2", "Category": "urn:oasis:names:tc:xacml:3.0:attribute-category:resource", "DataType": "http://www.w3.org/2001/XMLSchema#integer" } ] }, "Category": [ { "CategoryId": "urn:oasis:names:tc:xacml:3.0:attribute-category:resource", "Attribute": { "AttributeId": "com.acme.record.recordId", "Value": "124", "DataType": "http://www.w3.org/2001/XMLSchema#string" } }, { "CategoryId": "urn:oasis:names:tc:xacml:3.0:attribute-category:action", "Attribute": { "AttributeId": "com.acme.action", "Value": "delete", "DataType": "http://www.w3.org/2001/XMLSchema#string" } }