OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

xacml message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Re: [xacml] Groups - XACML v3.0 Obligation and Advice Authority (OAA) Profile Version 1.0 uploaded


Hi Steven,

I think that looks pretty neat. I am not sure about the other use cases. You should know more.

There was discussion about obligations on N/A or Indeterminate a few years back. I had a customer who wanted it for some reason so I brought it up as a suggestion here in the TC, but we very quickly concluded that it is some sort of contradiction in terms to have obligations on N/A or Indeterminate.

The meaning of N/A is that there is no applicable policy, so it appears strange to add an obligation to the decision, since no policy applied, so where did the obligation come from? That of course changes slightly if the policies which contain obligations are separate. But it still appears a bit contradictory to me from the PEP's point of view and I am afraid that there are all sort of subtle issues around those which we don't realize.

Similarly, Indeterminate means that there was some kind of error and the decision could not be calculated. Again, if the decision is not known, how would we know what obligations apply?

So if those are the benefits of the OAA, then I don't think they are reasons for going for the OAA solution if conditional obligations are a better solution in other respects.

Best regards,
Erik



On 2013-06-14 03:48, Steven Legg wrote:

Hi Erik,

On 13/06/2013 5:07 PM, Erik Rissanen wrote:
Hi Steven,

I agree that conditionals on obligations would be the proper solution to this, rather than the OAA. Obligations are very much coupled to the access decision making since they are to be enforced with the access decision. But as your examples show, they are not always 100% congruent with the access decision
making, leading to redundancy in policy expressions.

If you had conditionals in obligations, I suspect that you could do all you want to by means of setting the right conditionals and putting the obligations at the right depth in the access decision tree.

Conditions on obligations would address my immediate requirements. One thing that the OAA can do that conditions on obligations couldn't is return obligations on NotApplicable and Indeterminate decisions. That isn't a particular requirement
for me, but others may find it useful.


What I don't like with the OAA policies is that there is an access decision being used to select the obligations and advice. This works, but it's a bit clumsy since the way in most cases you want to correlate the obligation policies with your access decision policies, you need to partially mirror the access policies, leading to redundancy. Also, I suspect that it will also be a bit tricky to use the decision
combining algorithms to select among the obligations.

I understand that you are trying to avoid to change the core schema, but what is your opinion? Would
conditional obligations be a better solution ideally?

I don't think it's universally the case that one is better than the other. For instance, one could use the first-applicable combining algorithm in an OA policy to do overrides between obligations more easily than with conditions on obligations. On balance, conditions on obligations are probably better, and easier for users to get their heads around if they are modifying policies at a low level (a good PAP interface can, of course, hide the
gory details).


If so, and since we are modifying the PDP behavior anyway to support this profile, we could define a separate schema which links obligations with conditionals into the access policy set through policy
identifiers.

Something like this:

<ObligationExpression location="some-policy-identifiers">

That would have to be a list of policy (set) identifier and version pairs, and a separate list of rule identifiers since they are strings rather than URIs.

   <Condition>....</Condition>
<AttributeAssignmentExpression>....</AttributeAssignmentExpression>
</ObligationExpression>

A PDP which implements this profile would be required to accept files with augmented obligations like these
and reference them during policy evaluation.

A reason why I didn't go with a separate schema was to avoid having to define additional protocol support for fetching the separate stuff from a PAP. A deployment could also make use of stock standard, off-the-shelf PDPs and PAPs by building a simple front-end that sends the original request to the access PDP, forms the OA request to send to a second PDP acting as the OAA and combines the results to send to the PEP. If there is wide support from PDP vendors to do something more intrusive, then the
latter point is no longer important.

The additional protocol support is still relevant, so I would rather than we use XML Schema extensibility to actually add conditions to obligation expressions. That way the extra "stuff" just gets piggy-backed around with the policies and policy sets.
I was thinking of substitution groups used like so:

    <xs:element name="ConditionalObligationExpression"
                type="ConditionObligationExpressionType"
substitutionGroup="xacml:ObligationExpression"/>

    <xs:complexType name="ConditionalObligationExpressionType">
      <xs:complexContent>
        <xs:extension base = "xacml:ObligationExpressionType">
          <xs:sequence>
            <xs:element ref="xacml:Condition" minOccurs="0"/>
          </xs:sequence>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>

Similarly for AdviceExpression.

The attachment is what my example policy from the profile would look like using ConditionalObligationExpression. In practice, the obligation expressions would be
pushed to an outer policy set to expand the scope.

While we're about it we could add conditions to targets in the same way.

Regards,
Steven


It's a bit more intrusive to implement than a separate OAA, but not by much I think. And tooling could easily give a fully transparent view of this so it appears as if you had conditionals in obligations in the
XACML policy.

Best regards,
Erik


On 2013-05-30 09:40, Steven Legg wrote:

Hi Mohammad,

On 29/05/2013 2:52 PM, Mohammad Jafari wrote:
I see.
I think the root of this problem is that the schema does not allow writing a pure obligation rule without making any authorization decision, i.e. once more, there is a forced coupling between authorizations and
obligations.

I think if we allow an explicit Indeterminate in rules (i.e. <Rule RuleId=... Effect="Indeterminate">), this will allow pure obligation rules which are agnostic w.r.t. authorization. Intuitively, it must be possible to write a rule that only triggers obligations (either OnPermit or OnDeny) with no influence on the Permit/Deny. I think this solves the problem in the case of your
use-case as well.

We already have a way to trigger obligations without influencing the decision. That's what obligation expressions on policies and policy sets do, but they trigger on the full scope of the target of the policy or policy set. I've said previously that what's needed is a condition in an obligation expression so that we can be more selective. On OA policy with deny-overrides and a bunch of OA rules with obligations is acting much the same as having those same obligations embedded in the outermost access policy set and the conditions from the OA rules attached directly to the obligation expressions instead.

Regards,
Steven


This requires a small change to the core schema though.

Regards,
Mohammad


-----Original Message-----
From: Steven Legg [mailto:steven.legg@viewds.com]
Sent: Tuesday, May 28, 2013 6:27 PM
To: Mohammad Jafari
Cc: xacml@lists.oasis-open.org
Subject: Re: [xacml] Groups - XACML v3.0 Obligation and Advice Authority
(OAA) Profile Version 1.0 uploaded


Hi Mohammad,

On 28/05/2013 2:17 PM, Mohammad Jafari wrote:
Thanks Steven for posting this.

In Section 2 there is a use-case which motivates the profile. To summarize,
your use-case requires:

-Bob can "create", "read", "update" and "destroy" documents.

-Alice can only "read" document.

-"Create", "update" and "destroy" by anyone must be logged.

-Any operation on sensitive resources must take approval.

You have argued that adding the obligations requires splitting the
authorization rules, but I don't see why this is necessary. Correct me if I am wrong but I think these requirements can be formulated by the
following PolicySet without splitting the rules:

(I have attached a PDF if you are reading in plain text):

=================================================

   * PolicySet 1 (deny-overrides)
       o PolicySet 1.1 (deny-unless-permit)
           + Policy: 1.1.1 (deny-overrides)
               # If Resource.type=*document:*
               # Rule: 1.1.1.1:
* Permit, if Subject.id=*Alice,* and Action.id=*read*
               # Rule: 1.1.1.2:
* Permit, if**Subject.id=*Bob* and Action.id in {*create*, *read*,
*update*, *destroy*}
       o Policy: 1.2 (deny-overrides)
           + Rule 1.2.1: CUP-log
# Permit if Action.id in {*create*, *update*, *destroy* }, and
Resource.type=*document:*
               # Obligation (OnPermit): log
           + Rule 1.2.2: Sensitive-docs
# Permit if Resource.approval-required*=true *and**Action.id in
{*create*, *read*, *update*,
                 *destroy*}:
               # Obligation (OnPermit): approval-required

=================================================

Suppose Bob wants to update a sensitive document. This will match
policyset 1, 1.1, and 1.1.1 and causes rule 1.1.1.2 to evaluate,
permitting the access. But since the overarching combining algorithm
is deny-overrides, policy 1.2 is also evaluated. Again since the combing
algorithm is deny-override, both rules are evaluated triggering both
obligations to log and take approval.

Any other authorization rule can go under policyset 1.1 and any other
obligation rule can go under policy 1.2.

PolicySet 1 isn't entirely equivalent to my example because it turns
NotApplicable and Indeterminate decisions into Deny decisions, so it depends on an assumption that the PEPs were deny-biased. However, it isn't a general solution because it doesn't support deny obligations (and it would suppress any useful missing-attribute errors). I tried a range of variations on the same theme to support both permit and deny obligations, but the best I could come up with was an arrangment that had the unfortunate side-effect of turning NotApplicable and Indeterminate decisions into Deny decisions with
obligations.
Ouch!

Regards,
Steven


Regards,

Mohammad Jafari, Ph.D.

Security Architect, Edmond Scientific Company

*From:*xacml@lists.oasis-open.org [mailto:xacml@lists.oasis-open.org]
*On Behalf Of *Steven Legg
*Sent:* Monday, May 27, 2013 7:56 PM
*To:* xacml@lists.oasis-open.org
*Subject:* [xacml] Groups - XACML v3.0 Obligation and Advice Authority
(OAA) Profile Version 1.0 uploaded

/Submitter's message/
This is the initial draft for the Obligation and Advice Authority Profile.
-- Dr. Steven Legg

*Document Name*: XACML v3.0 Obligation and Advice Authority (OAA)
Profile Version 1.0
<https://www.oasis-
open.org/apps/org/workgroup/xacml/document.php?docu
ment_id=49348>

----------------------------------------------------------------------
--------------------------------------

*Description*
This specification defines a new XACML system entity, the Obligation
and Advice Authority (OAA), which makes obligations and advice easier
to manage by separating the determination of applicable obligations
and advice from the determination of the access decision by the PDP.
Download Latest Revision
<https://www.oasis-
open.org/apps/org/workgroup/xacml/download.php/4934
8/latest/xacml-3.0-oa-authority-v1.0-wd01.doc>
Public Download Link
<https://www.oasis-
open.org/committees/document.php?document_id=49348&
wg_abbrev=xacml>

----------------------------------------------------------------------
--------------------------------------

*Submitter*: Dr. Steven Legg
*Group*: OASIS eXtensible Access Control Markup Language (XACML) TC
*Folder*: Specifications and Working Drafts *Date submitted*:
2013-05-27 18:56:15




---------------------------------------------------------------------
To unsubscribe from this mail list, you must leave the OASIS TC that generates this mail. Follow this
link to all your TCs in OASIS at:
https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php


---------------------------------------------------------------------
To unsubscribe from this mail list, you must leave the OASIS TC that generates this mail. Follow this link
to all your TCs in OASIS at:
https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php




[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]