Skip to content
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

Is XACML the right name? #35

Open
steven-legg opened this issue Jul 18, 2024 · 15 comments
Open

Is XACML the right name? #35

steven-legg opened this issue Jul 18, 2024 · 15 comments
Labels
question Further information is requested

Comments

@steven-legg
Copy link

We're intending to make it possible to implement the next version of XACML exclusively using JSON (so without touching XML at all). However, anyone seeing "XACML 4.0" is likely to assume that it is still based in XML and may not look any deeper. Should we be calling the next iteration something else?

What we call things is intertwined with how we separate the specification into multiple documents and how we present the JSON (Schema) versus XML (Schema) representations, which we give prominence and what is deemed optional. We should consider a potential rename first because it will drive those decisions.

Here are some thoughts in no particular order.

The X in XACML doesn't really stand for XML but kind of implies it, so we swap that out (JACML) or drop it and be agnostic (ACML). The "ML" (markup language) is also a bit of a throwback to the XML world so maybe we just shorten JACML to JACL.

A question arises over the version number. JACL 4.0 and ACML 4.0 are a bit strange without there being a preceding JACL 3 or ACML 3.

We could go with an overarching name (e.g., ACML 1.0) that has two representations known as JACL 1.0 and XACML 4.0, either of which could be an optional, separate profile. That solves the versioning question and indicates the continuity from XACML 3.0 to XACML 4.0.

We could name the representations relative to the overarching name, e.g., ACML-J 1.0, ACML-X 1.0 (a.k.a. XACML 4.0). Or ACML-JSON and ACML-XML.

ACML still has that "M" stuck in there, but ACL is a bit too nondescript. Perhaps we swap the X to E and drop the M: XACML -> EACL, perhaps with representations JEACL 1.0 and XACML 4.0.

@steven-legg steven-legg added the question Further information is requested label Jul 18, 2024
@steven-legg
Copy link
Author

ALFA 2.0 can slot in beside JACL 1.0 and XACML 4.0.

@cdanger
Copy link

cdanger commented Jul 23, 2024

I would avoid anything with suffix "ACL" which may lead people to think this is a language for ACLs = Access Control Lists. (XACML is much more, this is ABAC!)
Maybe ACPL instead? (P for Policy), so JACPL, XACPL (a.k.a. XACML), YACPL (for YAML)...

@steven-legg
Copy link
Author

steven-legg commented Jul 24, 2024

If we swap "access control" (AC) with "authorization" (A) we get the easier to pronounce JAPL, XAPL and YAPL ("japple", "zapple" and "yapple") and of course the specification that ties them together is the APL Core 😄.

@humantypo
Copy link

JAzL, XAzL? AuthZ Language. Mixed cases, nice syllabic tempo. Rhymes with dazzle 😄

@cdanger
Copy link

cdanger commented Jul 26, 2024

If we swap "access control" (AC) with "authorization" (A) we get the easier to pronounce JAPL, XAPL and YAPL ("japple", "zapple" and "yapple") and of course the specification that ties them together is the APL Core 😄.

Yeah I thought of "APL" as well (as in Abac Policy Language or Authorization Policy Language works too) but then I stumbled upon an open source ABAC project called APL: https://github.com/intuit/identity-authz-apl
... which decided to go with its own language, so not XACML :-( .

But If you think that's no big deal, I'm fine with either APL or AzL (JAzL sounds cool for sure, but XAzL a bit hard to pronounce for me).

@steven-legg
Copy link
Author

steven-legg commented Sep 9, 2024

Another suggestion to kick around: OASIS Authorization Policy Language (OAPL, sounds like OPAL), which leads to JOAPL (JOPAL) and YOAPL (YOPAL). The XML version is XACML 4.0.

@cdanger
Copy link

cdanger commented Sep 12, 2024

I think we should set up a vote online for TC members to vote on the proposals we have so far (I can do it with google forms for instance):

  • AzL (Authorization Language): JAzL, YAzL
  • AzPL (Authorization Policy Language): JAzPL, YAzPL
  • OAPL (OASIS Authorization Policy Language): JOAPL, YOAPL

(I've just added the second one.) In all cases, we should keep the name "XACML" for the XML variant (at least in 4.0), that's why I don't mention it above, this is implicit. Let me know what you think.

@humantypo
Copy link

I just realized that I am going to have a hard time requesting Starter Documents for a specification that doesn't have a name...especially Core 😄

I was also thinking that since we are looking at the Core specification as being agnostic linguistically and applicably we might want to consider something more general for that and then introduce the "language" (XML, JSON) and "scope" (Access Control, etc.) into the Profile names.

Perhaps something like SAR for Core (simple reference to the key elements) or SARC (SAR in Context)...?

@steven-legg
Copy link
Author

I just realized that I am going to have a hard time requesting Starter Documents for a specification that doesn't have a name...

Indeed.

What does SAR stand for?

I assume we can fiddle the title in the text anytime, but we can't readily change the URLs and file name. A number of our candidate names revolve around "PL", for policy language. If we start with that then the URLs and filenames won't be that incongruous with whatever overarching name we finally settle on. I'm thinking something like:

I assume the first "xacml" in the URLs is determined by the TC name.

"Concepts" would be a potential substitute for "Core".

@steven-legg
Copy link
Author

From the minutes:

There was a general discussion on GitHub branch naming with the outcome being that the TC's current work would be in a branch and whatever was considered ready for Committee Specification would be merged with main so as to make consumption of the specification easier and to address the dynamic nature of many files creating the potential for a lot of "administrative churn". This was determined to be the best solution for pivoting away from the previous "Editor Submission" model that was used previously.

Thinking further on what we discussed in the TC meeting, it's not really going to work for the long term with all documents in the same repository. We can manage it with the five successors to the core spec for a while but their life cycles will diverge. Especially in the later stages the XPath and JSONPath profiles won't need as many revisions but we're sort of locking ourselves into revving the draft number just because the core needs to. Add in the other profiles like RBAC, Hierarchy, SAML, etc., some of which might not need to revert to wd-01, and it gets messy. If each document is in its own repository then the problem goes away.

The new TC rules let us treat committee specification drafts much like working drafts so we can rev the numbers more frequently without reviews and voting. This will be easier if each document is in its own repository. And we can still release working drafts for a document ahead of its first committee specification draft for interesting milestones.

When we do increment a working draft or committee specification draft we could rename (i.e. renumber) the existing file or freeze the existing file (for historical reference) and create a copy with the new number. I'm thinking we freeze and copy and leave out the older versions when we package things up for TC Admin to publish.

@cdanger
Copy link

cdanger commented Oct 14, 2024

I agree the profiles will have different life cycles from the core, all the more as we make the core spec more format-agnostic, therefore less subject to evolutions of XML, JSON, YAML standards (and possibly new formats in the future like CBOR for instance); and therefore would be better managed with separate github repositories. Also if you need to review the history of changes to the core document only, or to a specific profile, it seems difficult if everything is merged to the main branch in the end.

As an example, OpenC2 TC (OASIS) seems to follow this approach (certain profiles have dedicated repositories).

@humantypo
Copy link

Yes, it really does make the CS look like a Working Draft. Challenging. Particularly from the consumption side. The OpenC2 repository makes a lot of sense in terms of managing updates for highly independent work artifacts. Assume that each of these was one of our Profiles (and XML, JSON and Core) and consider what the consumer friendly way to pull down all of the compatible versions into something that is a holistic spec would be?

Technically, I don't think the fact that there are multiple document "components" in a repository is the issue. Consider an app releasing with multiple libraries, all being updated on different tempos. The overall release version is what allows consumers to know what the latest "prod" version is for the application. Keep in mind that historically there were periods where the Core Specification ran ahead of some of the Profiles so grabbing the "main" branch of each may not guarantee compatibility. I can envision version management becoming even more complex as we are basically creating a "forked" specification with XML and JSON (where, say, the XML and JSON RBAC Profiles are not in lockstep on revisions...or will we need to make that mandatory?)

That said, I think the fact that Profiles are optional (outside of the new concept that at least one "language" Profile must be chosen) makes for a compelling case to keep Profiles separate at some level but, I am concerned that too much granularity will make consumption difficult.

How about we consider 3 "structural" repositories: Core, XML and JSON, with the latter two containing all applicable "traditional" Profiles? We then internally develop a versioning model that spans all 3 repositories and that the main branch in each represents the latest "approved" version (merged from working branch once OK'd by TC)? The goal here is that if a consumer pulls (main) Core + XML or Core + JSON, that the resultant specification will be consistent across all included documents.

Either that or it seems like we may need to provide either some sort of roadmap document that explains what combination of repository versions work together as a "Master Specification" or create and post a static file that the TC builds at each approved "milestone"...?

P.S. All of this makes me wonder about calling the XML and JSON components "Profiles", given they are kinda "Co-Specs" on some level.

P.P.S I think I am starting to overthink this, so stopping for a sanity check. 🤯

@humantypo
Copy link

What does SAR stand for?

Subject, Action, Resource. I was playing around with what it is, rather than what it does, given our discussion our potential forking...

@steven-legg
Copy link
Author

When we do increment a working draft or committee specification draft we could rename (i.e. renumber) the existing file or freeze the existing file (for historical reference) and create a copy with the new number. I'm thinking we freeze and copy and leave out the older versions when we package things up for TC Admin to publish.

It looks like OpenC2 don't use use draft numbers in the file names in GitHub and only apply them when publishing a draft to the TC documents library. On the OASIS side it looks like business as usual.

@humantypo
Copy link

That makes sense. Using the names to store version information has been a construct that allows the traditional static library to act as a repository. Now that the docs are in an actual library it seems to me that the only version reference that is meaningful is that of the CS/Spec and that revisions be handled (opaquely to the Oasis library) in GitHub only. An issue that comes up there is that this means the only place to retrieve a CS/Spec is from the library, as git pulls will vary over time.

On the plus side, business as usual has it’s advantages for consumers.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

3 participants