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]
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.
Terminología no normativa (según RFC 2904, excepto PAP)
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.
Las políticas, conjuntos de políticas, reglas y solicitudes utilizan sujetos, recursos, entornos y acciones.
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.
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.
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).
¿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.
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.
Consulte la norma para obtener una definición formal de estas funciones.
Consulte la norma para obtener una definición formal de estas funciones.
La lista de funciones de orden superior se muestra a continuación. Para obtener una definición formal, consulte el estándar XACML.
anyOf(function[stringEqual], allowedRoles, stringOneAndOnly(role))
devolverá verdadero si (a) el rol tiene un solo valor, (b) hay al menos un valor en el conjunto de atributos permitidoRoles igual al valor dentro del rol del conjunto de atributos de un solo valor.http://docs.oasis-open.org/xacml/3.0/xacml-core-v3-schema-wd-17.xsd
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.
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 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
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>
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>
<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>
<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>
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>
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.
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 }] }] }}
{ "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" } }