Next in thread → Next in month →

Re: [xacml] Dynamic Attributes versus Existing Attributes

From
Steven Legg <>
Date
2021-09-16T05:03:16+00:00
ID
Thread
Re: [xacml] Dynamic Attributes versus Existing Attributes
The XACML core specification allows some leeway in how a context handler obtains attributes
and in my implementation the context handler doesn't attempt to obtain attributes from a PIP
if those attributes were supplied in the request (this gives the PEP some control over the
request context). So PEP attributes override PIP attributes. With that in mind ...

I had intended that an optimal implementation of a co-located DAA would be able to continue to
use the same request context for evaluating the final request against regular policies that
had been constructed while evaluating the initial request against the DA policies. This is to
avoid having to actually construct an explicit final request and rebuilding the request
context from scratch. However, I've come across an issue in how the merge strategy would
work when the attribute being merged is not in the initial request but fetched from a PIP. It
makes a difference whether or not the DA policies happen to evaluate the attribute.

Suppose that some DA policy references the attribute with an attribute designator that is
evaluated during processing by a co-located DAA. Since the attribute is not in the request the
context handler will try to fetch the attribute from the PIPs. Suppose that it finds some
values and adds them to the request context. By the end of processing the DAA generates some
include obligations for some more values for the same attribute. The context handler processes
the obligations and adds the values to the attribute in the request context (in lieu of
creating an explicit final request), which now has both the values fetched from the PIP and
the values generated by the DAA. Attribute designators in regular polices will return a bag
containing both collections of values.

Suppose instead that the DAA doesn't have a policy that references the attribute or doesn't
need to evaluate any policy that does. At the end of DAA processing the attribute hasn't been
fetched into the request context. The context handler processes the obligations and adds the
values to the attribute in the request context, which this time only has the values generated
by the DAA. Attribute designators in regular polices will return a bag containing only the
generated values. While it is expected that results will vary depending on what attribute
designators evaluate to, it is isn't expected that results will vary depending on whether an
attribute designator is evaluated at all.

Attribute designators in regular polices will also return a bag containing only the generated
values if a standalone DAA is used because any attributes it fetches from a PIP will go into
its own request context that the context handler doesn't see. It is also the case with an
explicit final request since a dynamic attribute in the final request will stop my context
handler fetching that attribute from a PIP.

The final processing step in the latest DAA draft talks about merging the dynamic attributes
into the request context but it should talk about merging the dynamic attributes into the
initial request as mentioned elsewhere in the draft since the state of the request context is
uncertain. Implementors need to work out the consequences on the request context for their
own implementation strategy. A "PEP overrides PIP" context handler with a co-located DAA
needs to be able to tell the difference between values that came from the PEP and values that
came from the PIPs so that values that came from a PIP can be discarded (overridden) when
merging dynamic attributes into the request context. An alternative context handler
implementation that usually merges PEP and PIP attributes would need to do something
different.

If the dynamic attributes are merged into the initial request then they are combined with the
PEP attributes. Whether the context handler then merges or overrides the PIP attributes when
evaluating the final request remains implementation defined. To be consistent the
ignore-other-values obligation should only apply to PEP attribute values.

The "dynamic attribute overrides" strategy would also need to be with respect to PEP
attributes because it lacks a mechanism to force the context handler to ignore certain PIP
attributes while evaluating the final request if it's not a "PEP overrides PIP" context
handler.

The "existing attribute overrides" strategy could include PIP attributes though it relegates
the DAA to being the least authoritative source of attributes.

Regards,
Steven

On 15/09/2021 10:30 am, Steven Legg wrote:
Next in thread → Next in month →