Jean-Paul,
The PDP would find the values through its context handler and PIP
configuration.
Also, if you really need to do a template, you can simply use the
attribute designator as your syntax. There is no need for any new
syntax. Any Policy Template Engine can simply be configured to
replace one or more of the attribute designators with static
values.
Best regards,
Erik
On 2012-10-09 10:40, Jean-Paul Buu-Sao wrote:
For sake of clarity I would like to rephrase the thought
process.
Here is the excerpt of a policy (TAA-1.1), expressing that
the subject attribute "http://schemas.tscp.org/2012-03/claims/OrganizationID"
must be in
the bag {"Curtiss", "Packard"}
<Condition
FunctionId="urn:oasis:names:tc:xacml:1.0:function:and">
<Apply xsi:type="AtLeastMemberOf"
functionId="urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of">
<Apply
functionId="urn:oasis:names:tc:xacml:1.0:function:string-bag">
<AttributeValue
DataType="http://www.w3.org/2001/XMLSchema#string">Curtiss</AttributeValue>
<AttributeValue
DataType="http://www.w3.org/2001/XMLSchema#string">Packard</AttributeValue>
</Apply>
<AttributeDesignator
AttributeId="http://schemas.tscp.org/2012-03/claims/OrganizationID"
DataType="http://www.w3.org/2001/XMLSchema#string" />
</Apply>
(etc...)
</Condition>
Here is the excerpt of a policy (TAA-1.2), expressing that
the subject attribute "http://schemas.tscp.org/2012-03/claims/OrganizationID"
must be in
the bag {"Curtiss", "Spad"}
<Condition
FunctionId="urn:oasis:names:tc:xacml:1.0:function:and">
<Apply xsi:type="AtLeastMemberOf"
functionId="urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of">
<Apply
functionId="urn:oasis:names:tc:xacml:1.0:function:string-bag">
<AttributeValue
DataType="http://www.w3.org/2001/XMLSchema#string">Curtiss</AttributeValue>
<AttributeValue
DataType="http://www.w3.org/2001/XMLSchema#string">Spad</AttributeValue>
</Apply>
<AttributeDesignator
AttributeId="http://schemas.tscp.org/2012-03/claims/OrganizationID"
DataType="http://www.w3.org/2001/XMLSchema#string" />
</Apply>
(etc...)
</Condition>
The two policies (TAA-1.1 and TAA-1.2) are similar, with
the exception of the hard-coded values of the string bags used
by the AtLeastMemberOf function. The idea is to have only one
policy that does not contain these hard-coded values. Instead
we have
a construct that would substitute the appropriate values. In
the example above: {“Curtiss”, “Packard”} for TAA-1.1,
{“Curtiss”, “Spad”} for TAA-1.2.
My initial proposal was to using the element
<AttributeValue> without qualifying its contents values,
but by specifying a ParameterId attribute, that would allow to
substitute the appropriate values:
<Condition
FunctionId="urn:oasis:names:tc:xacml:1.0:function:and">
<Apply xsi:type="AtLeastMemberOf"
functionId="urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of">
<Apply
functionId="urn:oasis:names:tc:xacml:1.0:function:string-bag">
<AttributeValue
ParameterId="organizations"
DataType=http://www.w3.org/2001/XMLSchema#string/>
</Apply>
<AttributeDesignator
AttributeId="http://schemas.tscp.org/2012-03/claims/OrganizationID"
DataType="http://www.w3.org/2001/XMLSchema#string" />
</Apply>
(etc...)
</Condition>
I understand that instead, and in order to achieving the
same effect, Erik’s proposal is to replace the
<AttributeValue ParameterId=…> construct with the more
standard <AttributeDesignator> construct, given
something like:
<Condition
FunctionId="urn:oasis:names:tc:xacml:1.0:function:and">
<Apply xsi:type="AtLeastMemberOf"
functionId="urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of">
<Apply
functionId="urn:oasis:names:tc:xacml:1.0:function:string-bag">
<AttributeDesignator
CategoryId="urn:oasis:names:tc:xacml:1.0:policy:"
AttributeId="organizations"
DataType="http://www.w3.org/2001/XMLSchema#string" />
</Apply>
<AttributeDesignator
AttributeId="http://schemas.tscp.org/2012-03/claims/OrganizationID"
DataType="http://www.w3.org/2001/XMLSchema#string" />
</Apply>
(etc...)
</Condition>
If my interpretation is correct (at least on the intent,
not on exact syntax; Erik, I apologize if I totally missed
your point), then some questions arise:
A.1) How would the authorization engine know where to go
and fetch the desired values (i.e. from the TAA-1.1
template-data or the TAA-1.2 template-data)?
A.2) The <AttributeDesignator> construct was, so far,
meant to retrieve attributes values from (Subject, Resource,
Environment) attributes. Are we introducing the possibility
for the same construct to also retrieve attribute values from
(policy-template)
attributes? If so we need to make it explicit on the
specification, I would think.
B) Can the two use-cases called out at the beginning of [https://wiki.oasis-open.org/xacml/Policy%20Template%20Profile]
be supported by <AttributeDesignator>?
I assumed that use-case 1 requires a static reduction, that
happens far before any actual authorization decision; hence
<AttributeDesignator> cannot be used for the purpose of
parameterization. If my assumption is correct, then we need a
different mechanism
to support use-case 1, which is damageable. My proposal was to
find a single syntax that would equally support both
use-cases.
Thanks,
Jean-Paul
-----Original Message-----
From: Erik Rissanen [mailto:]
Sent: Tuesday, October 09, 2012 08:32
To: Steven Legg
Cc: Jean-Paul Buu-Sao; Danny Thorpe;
Subject: Re: [xacml] Updated policy template wiki
Steven,
I am arguing against the whole concept of a template, thus
there is no Policy Template Engine in my proposal.
What I am trying to say is that instead of adding a Policy
Template Engine to the PDP before the policy is evaluated by
the XACML engine, you can just use a regular XACML policy in
the XACML engine.
You can solve the same use case this way. Say that you want
a template which has a parameter called "foo" and then a
Policy Template Engine which substitutes "foo" with values
before the XACML engine. Instead you can have a regular XACML
policy with attribute
designator "foo" and a PIP which provides the value which
would have been provided by the policy template engine.
Best regards,
Erik
On 2012-10-09 02:46, Steven Legg wrote:
>
> Erik,
>
> Sorry, I read too much into what you were saying.
Please disregard my
> previous response.
>
> On 8/10/2012 5:38 PM, Erik Rissanen wrote:
>> Steven,
>>
>> Yes, just replace all parameters with attribute
designators.
>
> An issue with using attribute designators as
parameters is that there
> is ambiguity for the Policy Template Engine to
resolve. Some attribute
> designators in the policy template are "real" and are
preserved as is,
> and the other attribute designators are actually
parameters that need
> to be replaced by a bag of attribute values from the
policy template
> data.
>
> Your example only has one parameter as a designator
and that
> designator uses the same URI for the Category and
AttributeId. Were
> you intending that equivalence as a way of
distinguishing an attribute
> designator that is actually a parameter, or is it just
because you had
> to put something in the Category ? A Policy Template
Engine could
> always look in the policy template data to work out
which designators
> are really parameters, but I think it would be better
if it were clear
> from the designator. I suggest using a special
category URI just for
> parameters.
>
> The attribute designators that are actually parameters
should always
> use MustBePresent="true" so that an implementation
that blindly
> evaluates a policy template as a normal policy will
appropriately
> return an indeterminate decision.
>
> It seems we have three proposals for representating
parameters in
> policy
> templates:
>
> (1) Just use attribute designators. This means that
targets can't have
> parameters, but on-permit-apply-second can be used to
get the same
> effect.
> Policy template data writers can determine whether a
parameter is
> single-valued or multi-valued by seeing whether the
corresponding
> attribute designator is wrapped in type-one-and-only.
>
> (2) <ValueParameter> and <BagParameter>
elements. Targets can have
> value parameters, but not bag parameters, though
> on-permit-apply-second can be used to get the same
effect. It's
> obvious to policy template data writers what the
parameters are and
> whether a parameter is single-valued or multi-valued.
>
> (3) ParameterId XML attribute on
<AttributeValue> elements. It's
> reasonably obvious to policy template data writers
what the parameters
> are. An additional XML attribute to indicate whether
the parameter is
> single-valued or multi-valued would make this solution
cleaner.
> Targets can have value parameters. Targets could also
have bag
> parameters provided the target is transformed by the
Policy Template
> Engine. Alternatively, bag parameters in targets could
be disallowed
> because on-permit-apply-second can be used to get the
same effect.
>
> I don't see a compelling need for transformations of
conditions.
> Proposals
> (1) and (2) don't lend themselves to transformations,
but it could be
> done.
> The difference in the proposals is mostly around the
syntax for
> representing parameters.
>
> Regards,
> Steven
>
>>
>> I don't understand why you need to evaluate the
template twice. I
>> tried to understand it from the wiki, but to me it
all looks like
>> simple value substitution, which can handled
better with attribute
>> designators.
>>
>> Best regards,
>> Erik
>>
>> On 2012-10-08 04:32, Steven Legg wrote:
>>>
>>> Erik,
>>>
>>> On 5/10/2012 6:03 PM, Erik Rissanen wrote:
>>>> Jean-Paul,
>>>>
>>>> I put in one such example on the wiki
page. Search for
>>>> "on-permit-apply-second" and you will find
it.
>>>
>>> This strategy only works if there is one
policy template data for
>>> the policy template. In general, there may be
many policy template
>>> data per policy template. The example in the
wiki has two: TAA-1.1 and TAA-1.2.
>>>
>>> Although you didn't do it, I assume you meant
to replace the
>>> parameters in the condition with attribute
designators as well,
>>> i.e., designators for "organizations",
"nationals" and "workEfforts".
>>>
>>> The policy needs to be evaluated twice. The
first time the attribute
>>> designator for PolicyIdOnResource needs to
return
>>> "urn:curtiss:ba:taa:taa-1.1", the designator
for "organizations"
>>> needs to return the bag of { "Curtiss",
"Packard" }, the designator
>>> for "nationals" needs to return the bag of {
"US", "GB" }, and
>>> "workEfforts" needs to return {
"DetailedDesign", "Simulation" }.
>>> The second time, PolicyIdOnResource needs to
return
>>> "urn:curtiss:ba:taa:taa-1.2", "organizations"
needs to return {
>>> "Curtiss", "Spad" }, "nationals" needs to
return { "US", "FR" } and
>>> "workEfforts"
>>> needs to return { "Integration", "Simulation"
}.
>>>
>>> Of course, we don't currently have a way to
cause a policy to be
>>> evaluated multiple times with the attribute
designators returning
>>> different bags each time. For one thing, the
result of an attribute
>>> designator is fixed for the entire duration of
the processing of an
>>> authorization request. The expansion of the
policy template into a
>>> policy template instance for each policy
template data achieves the
>>> same end.
>>>
>>> The use of on-permit-apply-second is a good
idea for removing the
>>> need for any special processing of parameters
in targets.
>>>
>>> Regards,
>>> Steven
>>>
>>>>
>>>> Best regards,
>>>> Erik
>>>>
>>>> On 2012-10-04 23:01, Jean-Paul Buu-Sao
wrote:
>>>>>
>>>>> Greetings,
>>>>>
>>>>> Apologies for missing the call today,
as I was in a TSCP event,
>>>>> together with Gerry and David of
Axiomatics.
>>>>>
>>>>> I have been much interested in the
last findings, and agree that
>>>>> if the “template” property that we are
(all, I think) looking for
>>>>> could be achieved with standard the
<AttributeDesignator>
>>>>> construct, rather than introducing new
concepts, then this would
>>>>> be for the better.
>>>>>
>>>>> May I suggest that, in order to verify
this assertion (so to
>>>>> speak), some folks, such as Erik or
Danny, would be kind enough to
>>>>> propose an alternate proposal to the
sample found on our Wiki
>>>>> (https://wiki.oasis-open.org/xacml/Policy%20Template%20Profile%20Examples)?
>>>>> By the way, as a word of
>>>>> caution, please disregard the
in-correctness of the XCAML 3.0 of
>>>>> section 1. of the example (yes the
devil is in the details, and
>>>>> David shown me how this example could
be made compliant).
>>>>>
>>>>> Thanks in advance,
>>>>>
>>>>> Jean-Paul
>>>>>
>>>>> *From:*
>>>>> [mailto:]
*On Behalf Of *Danny Thorpe
>>>>> *Sent:* Thursday, October 04, 2012
20:11
>>>>> *To:* Erik Rissanen;
>>>>> *Subject:* RE: [xacml] Updated policy
template wiki
>>>>>
>>>>> When the original proposal for policy
templates was brought
>>>>> forward, I noted that simply replacing
a single AttributeValue
>>>>> element with a list of values from the
policy template <Parameter>
>>>>> would fail in <Match>
expressions, since <Match> is very explicit
>>>>> about one value, one
designator/selector. I offered a transform
>>>>> to help produce valid match
expressions.
>>>>>
>>>>> AttributeDesignator does provide
similar
>>>>> “insert-multiple-values-here”
operations to the policy template
>>>>> substitution behavior, but I believe
the suggestion of policy
>>>>> parameterization came up because of
situations in which
>>>>> AttributeDesignator cannot be used.
Comparing an attribute
>>>>> against a static list of test values
(specific to an organization
>>>>> or location and applied to a generic
policy), for example, is a
>>>>> many-to-many comparison, but cannot be
expressed in a <Match>
>>>>> element.
>>>>>
>>>>> As we discussed on the TC call today,
we’re finding more
>>>>> difficulties with parameter
substitution the deeper we dig. Steven
>>>>> Legg noted in an earlier email that
some Xacml functions that take
>>>>> single <AttributeValue> won’t
work if multiple values are dropped
>>>>> in to replace the
<AttributeValue>. This means some sort of
>>>>> _expression_ transform will be necessary
in condition expressions as
>>>>> well to move policy templates forward.
>>>>>
>>>>> In light of these increasing
complexities and challenges, I’m
>>>>> beginning to agree with you that
perhaps the policy template use
>>>>> case can better be addressed using the
existing
>>>>> <AttributeDesignator>.
>>>>>
>>>>> This would mean:
>>>>>
>>>>> 1.Giving up parameterization behavior
in <Match> expressions and
>>>>> moving that logic into conditions
using <AttributeDesignator> to
>>>>> reference an attribute ID representing
the parameterization data.
>>>>>
>>>>> 2.Moving parameterization data from a
static policy generator step
>>>>> to a PIP to fill
<AttributeDesignator> references to a particular
>>>>> attribute ID with parameterization
data in the PDP at auth request
>>>>> evaluation time.
>>>>>
>>>>> Using <AttributeDesignator>
instead of policy templates does
>>>>> impact the use case quite a bit
because populating PIP data is not
>>>>> part of the Xacml spec. Policies could
be shared between
>>>>> organizations per the use case, but
how the parameterization data
>>>>> is applied to those policies would
become a vendor-specific
>>>>> implementation detail.
>>>>>
>>>>> I can see the attraction of
parameterizing policies to allow
>>>>> up-front synthesis of specific
policies, but as we say “the devil
>>>>> is in the details.” The details are
winning. :/
>>>>>
>>>>> -Danny
>>>>>
>>>>> *Danny Thorpe *
>>>>>
>>>>> Authorization Architect
>>>>>
>>>>> Dell | Identity & Access
Management, Quest Software
>>>>>
>>>>> Quest Software is not part of Dell.
>>>>>
>>>>> *From:*
>>>>> <mailto:>
>>>>> [mailto:]
>>>>> <mailto:[mailto:]>
*On Behalf Of *Erik
>>>>> Rissanen
>>>>> *Sent:* Thursday, October 04, 2012
4:42 AM
>>>>> *To:*
>>>>> <mailto:>
>>>>> *Subject:* Re: [xacml] Updated policy
template wiki
>>>>>
>>>>> All,
>>>>>
>>>>> I still fail to see why this is
useful.
>>>>>
>>>>> If you take a policy template, and
replace each <Parameter> with
>>>>> an appropriate
<AttributeDesignator>, then you get a regular XACML
>>>>> policy, and the PEP/PDP can "fill in"
>>>>> the "template" at runtime using normal
XACML attributes.
>>>>>
>>>>> Why do we need a new standard? In
particular I would be opposed to
>>>>> "implementation option C", that is a
PDP would construct the
>>>>> policy from the template at runtime.
>>>>> That's lots of heavy machinery for no
gain.
>>>>>
>>>>> Best regards,
>>>>> Erik
>>>>>
>>>>> On 2012-09-20 20:25, Danny Thorpe
wrote:
>>>>>
>>>>> I’ve updated the policy template
wiki
>>>>> (https://wiki.oasis-open.org/xacml/Policy%20Template%20Profile)
>>>>> with text about required Match
_expression_ rewriting in
>>>>> parameter substitution and optional
use of
>>>>> AttributeDesignators and
AttributeSelectors in Parameter data
>>>>> in dynamic policy template reduction
>>>>> implementations.
>>>>>
>>>>> -Danny
>>>>>
>>>>> *Danny Thorpe *
>>>>>
>>>>> Product Architect | | *Quest
Software*- /Now including the
>>>>> people and products of BiTKOO/ |
>>>>> www.quest.com <http://www.quest.com>
>>>>>
>>>>
>>>
>>
>