-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Simplify the policy language model (XML schema) - Merge Obligation/Advice(Expression)s into one element #6
Comments
I suggest simply Notice or Notification for the new element name with IsObligation or Obligatory for the new attribute name. |
Back in 2013 I drafted "XACML v3.0 Obligation and Advice Authority (OAA) Profile Version 1.0" (link to be provided when the TC migration is finished) which described a solution for better handling the applicability of obligations and advice. The solution used a separate PDP to generate obligations and advice. However, most of the use cases could be solved by adding a condition to ObligationExpression and AdviceExpression. This feature request provides an opportunity to do that. The XSD would be:
So the obligation/advice/notice is only returned if the effect type matches and the condition is true. An absent condition is treated as true. |
Agreed 👍 <xs:attribute name="IsObligation" type="xs:boolean" use="optional" default="false" /> |
Good idea; I've amended the XSD. |
The consensus of the active members of the TC is that the preferred base name is "Notice", which leads to "Notice", "NoticeExpressions" and "NoticeExpression" as element names and "NoticeType", "NoticeExpressionsType" and "NoticeExpressionType" as type names. We seem to have consensus that instead of defining two versions of NoticeExpression, one for policies with AppliesTo and one for rules without AppliesTo, we will make AppliesTo optional and say in the prose that an absent AppliesTo means the NoticeExpression applies to both Permit and Deny. Rules can then just leave it out. |
In order to remove duplication in the XSD and in the XACML spec and possibly in implementation code, we propose to merge the Obligation and Advice (and similarly Obligations, ObligationExpression(s), AssociatedAdvice and AdviceExpression(s)) elements into one element, e.g. AssociatedNotice (name to be decided, see down below for suggestions), with a boolean attribute like
isObligation
= true|false to say this is an Obligation or an Advice.This change is not backward compatible, therefore the target milestone should be next major release (4.0).
For the name of that new element replacing Obligation / Advice, here are a few suggestions:
Options 1 and 2 are inspired by the existing AssociatedAdvice element from the XACML spec (list of Advice elements). Other suggestions are welcome, especially from native English speakers.
As a reminder, here are the current definitions of obligation / advice from XACML spec:
To go into further details about resulting changes, if we take the first option - AssociatedNotice - as an example, this means the following changes:
<ObligationExpression ObligationId="x" FulfillOn="Permit|Deny">
is replaced with<AssociatedNoticeExpression Id="x" isObligation="true" AppliesTo="Permit|Deny">
;<Obligation ObligationId="x">
is replaced with<AssociatedNotice Id="x" isObligation="true">
;<AdviceExpression AdviceId="x" AppliesTo="Permit|Deny">
is replaced with<AssociatedNoticeExpression Id="x" AppliesTo="Permit|Deny">
;<Advice AdviceId="x">
is replaced with<AssociatedNotice Id="x">
.In Rules, the AppliesTo/FulfillOn is useless, Obligations/Advice should apply to the Rule's Effect always. So we should define a AssociatedNoticeExpressionType without the AppliesTo attribute for Rules, then a PolicyAssociatedNoticeExpressionType that extends the AssociatedNoticeExpressionType with the AppliesTo for Policies/PolicySets.
Plus,
<Obligations>
,<ObligationExpressions>
and<AssociatedAdvice>
,<AdviceExpressions>
become obsolete if we change the XACML schema as follows:... with:
... with:
Note: it would be easy to provide an XSLT stylesheet that converts a Policy(Set) in the old model to the new.
The text was updated successfully, but these errors were encountered: