[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [xacml] Comments on admin spec aka delegation profile
Hi Erik,
I am just starting to go thru your comments, but fyi, the core version
I am looking at is xacml-3.0-core-spec-wd-04-en.doc from
the wd4 zip file. The sections are 5.13 <Policy> the one line expl of
PolicyIssuer. Since this is under the Policy section, why
does it say "policy set" and not "policy"? 1966, 1968 are in
5.5 <Target>.
Thanks,
Rich
Erik Rissanen wrote:
> Hi Rich,
>
> Thanks a lot for the detailed review and comments! See responses inline.
>
> Best regards, Erik
>
> Rich Levinson wrote:
>> Hi Erik,
>>
>> Based on discussion of 2.0->3.0 and use of the Categories
>> in the admin spec, I have gone thru the admin spec and assembled
>> the following comments. Most are typos and questions that I had
>> reading the text that did not have obvious answers without looking
>> at the whole thing and making deductions. However, I left those
>> questions in the comments below to be considered as suggestions
>> for clarifying the text for readers. Also there are a couple of
>> items for the core spec. Finally, I rev'd v17 accidentally, but then
>> checked and it appears v18 is simply the AnyOf, AllOf replacement
>> so the line numbers did not change.
>
> Yes, it's easy to miss the latest version. Since Anne left nobody is
> updating the web page. We need to find someone to do the updates.
>
>> imo, the spec looks pretty solid, but I'd like to make sure that I
>> understand things correctly. In fact, my overall suggestion is that
>> section 4 be beefed up considerably with clear concepts that
>> would be helpful reading the rest of the spec. As it is now, what
>> I found was that it was very obscure and difficult to understand
>> until I walked thru the example, which is very good, notwithstanding
>> the comments that I made to it below.
>
> Actually section 4 used to be longer, but I thought it was so obscure
> already, so I just gave up on it and made it shorter. As the text used
> to be, it used different terminology than the rest of the doc and
> tried to define the basic operations of the processing model in a
> couple of sentences. This just didn't work.
>
> I suggest that we do not attempt to make a summary of the processing
> model. Instead we can rewrite section 4 to explain the basic principle
> that policy must be traced back to a trusted source, but don't try to
> explain any of the technical details here. It is understood better
> from the actual processing model, which itself is a just a few pages
> long anyway and the example.
>
> Here is a proposal for an updated text for section four:
>
> ***
> The purpose of the delegation model is to make it possible to express
> permissions about the right to issue policies and to verify issued
> policies against these permissions.
>
> A policy may contain a <PolicyIssuer> element that describes the
> source of the policy. A special form of <PolicyIssuer> element, called
> the trusted issuer, is used to specify that a policy is trusted by the
> PDP. A missing <PolicyIssuer> element is shorthand for the trusted
> issuer.
>
> A policy with the trusted issuer is considered trusted and valid and
> its origin is not verified by the PDP.
>
> Policies which have an issuer different from the trusted issuer need
> to have their authority verified. The essence of the verification is
> that the issuer of the policy is checked against the trusted policies,
> directly or through other policies with non-trusted issuers. During
> this check the right of the issuer to issue a policy about the current
> access request is verified.
>
> If the authority of the policy issuer can be traced back to the
> trusted policies, the policy is used by the PDP, otherwise it is
> discarded as an unauthorized policy. The authority of the issuer
> depends on which access situation the current access request applies
> to, so a policy can be both valid and invalid depending on the access
> request.
>
> Steps in the validation process are performed using a special case
> XACML requests, called administrative requests, which contain
> information about the policy issuers and the access situation.
> ***
>
>> Comments:
>>
>> comments on Delegation profile
>>
>> page 1: should it be called the
>> XACML v3.0 Administration and Delegation Profile
>>
>> or something more descriptive of what it actually is than
>> the current title, "Administrative Policy", indicates?
>
> I don't know. Could someone who is a native English speaker comment on
> this?
>
>> core spec line 2154 should this say "policy" instead of "policy set"?
>>
>> core spec line 1966, 1968 should <DisjuntiveMatch> be replaced w
>> <AnyOf> ?
>> was probably missed by search and replace,
>> core spec Suggestion: have parent AllOf in Target element rather than
>> implicit "conjunctive sequence"
>
> The line numbers in the doc I am looking at seem to be completely off
> your numbers. Did you review wd 4? Could you say which sections the
> two comments above refer to?
>
>> Should example in section 6 replace <Disjunctive... with AnyOf, etc.?
>
> Yes, as you already noted at the top of your email, this is already
> done in wd 18.
>
>> line 272 PolicySet needs policy-combining-algorithm moved up from
>> line 275-276,
>> line 274 Policy needs rule-combining-algorithm
>
> Yes, I am fixing these for the next version. I am also adding a
> PolicySetId.
>
>> line 297 should there be a " " before "urn"? if so, then what about
>> lines 285, 309?
>> also check other Policys for similar
> No, there should not be a space there. This is caused by Word
> autocorrect which is not very fond of XACML and keeps braking it...
> Thanks for noticing. I also noticed missing quotes around a datatype
> xml attribute in policy 1.
>
>> line 506-507 should this replace "subjects, resources, and actions"
>> with something about categorys?
>
> Yes, I am changing it to "The target with the standard attribute
> categories for the subject, resource and action constrain the
> situation that the policy applies to."
>
>> line 508 "or rule" should be "or by rule" in order to avoid ambiguity
>> as to what can contain targets.
>
> Fixed.
>
>> line 509-514: I don't understand the point. Line 509 says that Policy 1
>> allows any situation which is an employee who prints on the printer.
>> If they are already allowed, what is the point of granting the
>> privilege to allow Carol to allow employees to print who are already
>> allowed to print? (If the case is that an "administrative" policy
>> does not actually grant the initial privilege, please state that
>> explicitly, so as to give this use case some substantive meaning)
>
> I changed this to "In this case the policy allows granting policies
> about any situation which is an employee who prints on the printer."
>
>> line 91-103: on first and second readings, I did not "get" from this
>> that the presence of a "delegated" category implies the policy is
>> "administrative" as implied by the example text on line 510-511.
>> line 83-84: further confusion on what characterizes admin vs access
>> policys since this says "possible to write a policy which matches
>> both types of request".
>
> I prose that we throw away lines 91-103 and 83-84, as I suggested
> above considering section 4.
>
>> line 558: refers to section 5.2.6, which is not in this doc
>
> I am removing this reference. It was a remnant from an older version
> of the doc. It used to refer to the processing model as it was before
> we generalized the attribute categories. Section 5.2.6 contained a
> number of special case matching rules to work around the lack of
> generalized categories. With the general categories this is not needed
> anymore and the target matching is given by the normal XACML 3.0 model.
>
>> line 561: should the PolicySet be considered "trusted" because there
>> issuer? Also might want to mention this on line 506 as well.
>
> Yes, the policy set is trusted since there is no issuer. However, the
> policy/policy set where the PDP start evaluation is a special case
> because if the policy set/policy would have an issuer, then there
> would be no way to reduce it anyway since it has no neighboring policies.
>
> This is an old issue in the issues list and we decided to ignore this
> problem, and the result of the evaluation is returned as it is
> regardless the trustfulness of the initial policy set/policy. In other
> words, it is implicitly assumed that the top level policy is always
> trusted.
>
> See issue 27 in the issues list:
>
> http://wiki.oasis-open.org/xacml/ClosedIssues
>
>> line 564: why do we want to consider the question of whether there
>> is an "edge" between policy 4 and policy 2
>
> We need to consider whether there are any edges between policy 4 and
> any other policy in the policy set. The example starts with policy 2
> just for simplicity in the presentation, since we know that there will
> be an edge in this case. I am reformulating the text like this:
>
> "Policy 3 and Policy 4 need to be reduced since they are not trusted.
> We begin by creating the reduction graph. Creating the reduction graph
> means finding any edges between the policies in the policy set. We
> need to check each pair of policies for an edge (although in
> pracictice a PDP may optimize the search to find a minimum set of
> edges as needed to determine the result). First, consider the question
> whether there is any edge between Policy 4 and Policy 2:"
>
>> line 569: why would an admin req to policy 2 answer the above question?
>
> This is because of the definition of an edge from the processing model
> spec. There is an edge if and only if the admin request evaluates to
> permit or indeterminate. I have updated the text:
>
> "As defined by the processing model, there is an edge if and only if
> the administrative request generated from policy 4 evalutes to Permit
> (or Indeterminate) for policy 2. So to test for an edge, we create the
> following administrative request, and evaluate it against Policy 2:"
>
>> line 624: please mention that "Bob" is the issuer of policy 4 here.
> Done!
>
>> line 505,556,622: please label these listings as Listing 1,2,3 or other
>> referencable identifier.
> Done!
>
>>
>> line 624-625: please state that the subject, resource, and action from
>> "listing 2", the original request are copied to "listing 3" the admin
>> request, and the subject, resource and action categories are transformed
>> to "delegated".
>>
>> line 607-611: I understand that above this, Bob, is copied from policy 4
>> in listing 1, however, I do not understand why this "administrator"
>> element has been added. Lines 628-629 say that the CH did this, but
>> how would the CH know it needed to do this and how would it know
>> Bob was in the administrators group?
>
> The context handler provides all available attributes in the
> <Attributes> elements of the request. This is the job of the context
> handler. It is an abstract architectural concept, so there is no
> detailed specification for how to do it in practice. It would depend
> on the implementation and environment.
>
> For instance, the context handler could know that the subject-id
> attribute can be used to look up more attributes from an LDAP
> accessible directory. The administrators group could be found there.
> But these details are out of scope in this document. There is a note
> on the context handler in section 5.5.
>
> What you are really asking for is a standardized context context
> handler specification, which is really the same question you have been
> asking many times in the context of the core spec, that is missing
> attributes, etc. Such a spec might be interesting to do for common
> setups, such as SOAP based webservices and federated attributes based
> on WS-* and/or SAML. But it doesn't belong in the delegation spec.
>
> To clarify, I added the following text:
>
> "(The details of how the context handler found the administrator
> attribute depend on the PDP implementation and the available attribute
> sources in the particular implementation.)"
>
>> line 633-635: Since policy 2 is permit-overrides, why would one generate
>> a Deny request here, since we already got a "permit"?
>
> The particular combining algorithm does not matter. It has to do with
> the definition of the reduction graph. By the definition, the edge
> exists in the graph so I included it in the example. I tried to make
> the example as close as possible to the definition of the processing
> model, not performing any optimizations for instance.
>
> However, since policy 4 evaluated to Permit, we are not really
> interested in the DP edge since we are looking for only PP edges. So a
> PDP can optimize in this case and skip this administrative request. I
> have added the following note to clarify this:
>
> "Also note that since policy 4 evaluated to “Permit”, the DP edge is
> not really needed, although it is specified in the definition of the
> graph, so this request could be skipped by an optimizing PDP."
>
>>
>> line 638: I understand that policy 2 is not trusted so we keep going,
>> but
>> why did we not first try to go direct from policy 4 to policy 1? If this
>> would have worked, why bother with policy 2? Oh, because policy 4 was
>> issued by Bob? So, that above we have to look for policies where Bob
>> is the "delegate"?
>
> Yes, by the definition of the graph, we would try to go directly to
> policy 1, but since I know that it won't lead to a valid path (because
> Bob is the issuer, and Bob is not allowed by policy 1), I wrote the
> example walkthrough in this order. At the end of the walkthrough I say
> that in this case there are no more edges and we have the full graph,
> so this covers the case of going from 4 to 1.
>
>> If that's the case, then why do we talk about the "reduction graph" on
>> line 564? Don't we just run the listing 3 admin request and it finds
>> that
>> Bob is the delegate of policy 2 automatically? I think the graphs just
>> confuse things. They may be useful for referencing what is happening
>> automatically, but the text makes it seem like they are some kind of
>> construct that one needs to build into the PDP?
>
> The delegation model is defined in terms of the graph. It will be
> necessary for a PDP to build the graph, but an optimizing PDP will in
> many cases be able to find a definite result without building the
> whole graph as defined by the formal specification. I wrote the
> example as close to the specification as possible, rather than as an
> example of an efficient PDP. The PDP could conceivably do very clever
> things, which would confuse someone just trying to understand the
> basic model. To clarify this, I have added the following text at the
> beginning of the example:
>
> "As specified in the processing model, reduction consists of two
> steps. First a reduction graph is built, and then the PDP searches the
> graph for a path to the trusted policies for each policy with an
> issuer different from the trusted issuer. Note that this example
> follows the definition of the processing model and does not attempt to
> be efficient. An efficient PDP can mix edge creation and path
> searching so that only those edges which are actually needed are
> created. This example does not do so for simplicity. We create a full
> graph before we do a search."
>
>> line 692: listing 4
>
> Done.
>
>> line 693: here it would useful to say that since Carol is the issuer of
>> policy 2, that here she is the requesting "delegate" of listing 4.
>> How come Carol doesn't get an administrator group or something else
>> like Bob did?
>
> It just happens that Carol is not in the administrator group. The
> context handler again. I added a note about this in the text.
>
>> line 694: again, why a subsequent Deny when we are operating under
>> permit-overrides?
>
> Again, this is for building the full reduction graph.
>
>>
>> line 707: what if the PolicySet is not trusted, i.e. what if it had
>> an issuer like "Carol"? Do we have to go all the way up the tree?
>> i.e. can untrusted issuers create PolicySets that contain trusted
>> Policys with which they could possibly override other protections?
>
> I wrote about this above in this email. As I wrote, we discussed this
> in the past and we decided to just ignore this issue and let it be
> implementation specific. Presumably no-one would run the PDP with an
> non-trusted policy as the initial policy.
>
>
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]