+1

---------------------------------------------------------------------------------------
I call a vote to accept OpenAz as a new Incubator project.

The proposal can be found here: https://wiki.apache.org/incubator/OpenAZProposal

and is included below in this email.

Voting will remain open until at least January 20, 2015 23:00 ET.

Hal Lockhart

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

Abstract

OpenAz is a project to create tools and libraries to enable the development of 
Attribute-based
Access Control (ABAC) Systems in a variety of languages. In general the work is 
at least consistent
with or actually conformant to the OASIS XACML Standard.

Proposal

Generally the work falls into two categories: ready to use tools which 
implement standardized
or well understood components of an ABAC system and design proposals and proof 
of concept
code relating to less well understood or experimental aspects of the problem.

Much of the work to date has revolved around defining interfaces enabling a PEP 
to request
an access control decision from a PDP. The XACML standard defines an abstract 
request format
in xml and protocol wire formats in xaml and json, but it does not specify 
programmatic interfaces
in any language. The standard says that the use of XML (or JSON) is not 
required only the
semantic equivalent.

The first Interface, AzAPI is modeled closely on the XACML defined interface, 
expressed in
Java. One of the goals was to support calls to both a PDP local to the same 
process and a
PDP in a remote server. AzAPI includes the interface, reference code to handle 
things like
the many supported datatypes in XACML and glue code to mate it to the open 
source Sun XACML
implementation.

Because of the dependence on Sun XACML (which is XACML 2.0) the interface was 
missing some
XACML 3.0 features. More recently this was corrected and WSo2 has mated it to 
their XACML
3.0 PDP. Some work was done by the JPMC team to support calling a remote PDP. 
WSo2 is also
pursuing this capability.

A second, higher level interface, PEPAPI was also defined. PEPAPI is more 
intended for application
developers with little knowledge of XACML. It allows Java objects which contain 
attribute
information to be passed in. Conversion methods, called mappers extract 
information from the
objects and present it in the format expected by XACML. Some implementers have 
chosen to implement
PEPAPI directly against their PDP, omitting the use of AzAPI. Naomaru Itoi 
defined a C++ interface
which closely matches the Java one.

Examples of more speculative work include: proposals for registration and 
dispatch of Obligation
and Advice handlers, a scheme called AMF to tell PIPs how to retrieve 
attributes and PIP code
to implement it, discussion of PoC code to demonstrate the use of XACML 
policies to drive
OAuth interations and a proposal to use XACML policies to express OAuth scope.

AT&T has recently contributed their extensive XACML framework to the project.

The AT&T framework represents the entire XACML 3.0 object set as a collection 
of Java
interfaces and standard implementations of those interfaces. The AT&T PDP 
engine is built
on top of this framework and represents a complete implementation of a XACML 
3.0 PDP, including
all of the multi-decision profiles. In addition, the framework also contains an 
implementation
of the OASIS XACML 3.0 RESTful API v1.0 and XACML JSON Profile v1.0 WD 14. The 
PEP API includes
annotation functionality, allowing application developers to simply annotate a 
Java class
to provide attributes for a request. The annotation support removes the need 
for application
developers to learn much of the API.

The AT&T framework also includes interfaces and implementations to standardize 
development
of PIP engines that are used by the AT&T PDP implementation, and can be used by 
other
implementations built on top of the AT&T framework. The framework also includes 
interfaces
and implementations for a PAP distributed cloud infrastructure of PDP nodes 
that includes
support for policy distribution and pip configurations. This PAP infrastructure 
includes a
web application administrative console that contains a XACML 3.0 policy editor, 
attribute
dictionary support, and management of PDP RESTful node instances. In addition, 
there are tools
available for policy simulation.

Background

Access Control is in some ways the most basic IT Security service. It consists 
of making a
decision about whether a particular request should be allowed and enforcing 
that decision.
Aside from schemes like permission bits and Access Control Lists (ACLs) the 
most common way
access control is implemented is as code in a server or application which 
typically intertwines
access control logic with business logic, User interface and other software. 
This makes it
difficult to understand, modify, analyze or even locate the security policy. 
The primary challenge
of Access Control is striking the right balance between powerful expression and 
intelligibility
to human beings.

The OASIS XACML Standard exemplifies Attribute-Based Access Control (ABAC). In 
ABAC, the Policy
Decision Point (PDP) is isolated from other components. The Policy Enforcement 
Point (PEP)
must be located so as to be able to enforce the decision, typically near the 
resource. The
PEP first asks the PDP if access should be allowed and provides data, in the 
form of Attributes,
to be used as input to the policies held by the PDP.

In addition to responding permit or deny, XACML allows a policy to emit 
Obligations or Advice,
which direct the PEP to do certain things, such logging the access or failure 
or promising
to get rid of the data after 30 days.

Attributes are identified as being in a certain category which represents one 
element in the
proposed access. For example attributes may be associated with the resource 
being accessed,
the action being taken or the environment, .e.g. date/time. Attributes may also 
be associated
with any or several types of Subjects, which represent the active parties to 
the access, such
as the requester, intermediaries, the recipient (if different), the codebase, 
the machine
executing the code.

Attributes may be provided by the PEP and usually at least a few are, but 
Attributes may also
added by other components of the system. It is also possible for a PDP to add 
attributes in
the middle of policy evaluation. All of these obtain Attributes from the Policy 
Information
Point (PIP).

The Policy Administration Point (PAP) creates policies and manages then through 
their life
cycles and generally the entire infrastructure.

The XACML language is essentially a set of expressions which evaluate to a 
Boolean. If true
the policy is said to be applicable. The Policy contains permit or deny and may 
include Permissions
and or Advice. If policies disagree we resolve the conflict with combining 
algorithms. XACML
provides some standard ones and you can implement your own. Mostly they are 
common sense like
drop non-applicable polices. A commonly used algorithm is default deny. Deny 
overrides permit.

Rationale

Access Control may be the most basic security service, but for the most part it 
remains primitive
in practice. While other services like message protection and authentication 
have seen many
advances in recent years and decades, deployed access control systems are 
opaque, difficult
to us and harder to manage. Most organizations claim that they have security 
policies, protect
privacy and accurately report financial results, but in practice they have no 
real way of
discovering whether their systems actually behave the way they are alleged to 
do.

Just the foreground problems relating to deploying practical ABAC systems make 
a formidable
list. If only the PDP knows what the policies are, how do we make sure it gets 
the attributes
it needs to evaluate policies? How can we name organize, register and dispatch 
Obligations
and Advice, allowing handlers to be provided by the system and added by users? 
How can the
XACML 3.0 feature of being able to create your own attribute categories best be 
supported
by the infrastructure and utilized by users? What are the best ways to create 
and test policies?
What tools will best help us analyze the effects of the policies in force?

However, new requirements are rapidly being introduced and need to be met. 
Privacy requirements
continue to increase in complexity and scope. Data which moves around, such as 
documents,
need to be protected. We need secure ways to delegate authority without 
undermining the integrity
of the access control system. New applications, business and social 
relationships are driving
the need for new policy and delegation capabilities.

We believe that the way to meet these challenges is to get more people actively 
engaged in
using what is currently available so they can understand its limitations and 
make it better.
We need to make it far easier to get a basic access control infrastructure up 
and running.
We need more people who are familiar with XACML the way many people are 
familiar with SQL.
If as some people say, XACML is the assembly language of access control, we 
need the real
world experience with it that will lead us to the useful abstractions that can 
be implemented
in higher level languages and other tools.

Initial Goals

Work is currently underway to extend the PEPAPI and increase its flexibility. 
Since it does
not directly correspond to any standard the way AzAPI does, it is necessary to 
struggle with
the issues of what to expose and what to hide from consumers of the API.

Other work in progress involves the architecture of Obligations and Advice. 
There is also
an effort to develop a remote client which can easily be dropped into any Java 
environment
and make decision requests of any commercial or open source XACML PDP.

The contribution of AT&T's framework creates a need to integrate the prior work 
with it.
Most of the focus will be on AzAPI and the corresponding AT&T API, which do 
largely the
same thing. The result is likely to be a synthesis, since each has features the 
other lacks.
Then PEPAPI will need to be integrated with the new API. The AT&T PDP and PAP 
will be
incorporated as is. There has been some parallel work done in the area of PIPs. 
Work will
be required to understand how to proceed here.

Current Status

Meritocracy

The project was started by Prateek Mishra, Rich Levinson and Hal Lockhart in 
2010. Rich Levinson
wrote most of the AzAPI and PEPAPI code. Naomaru Itoi defined the C++ version 
of the PEPAPI.
In 2013 Duanhua Tu and Ajith Nair contributed code both using and extending 
AzAPI and PEPAPI
and incorporating PIPs using the AMF as originally proposed by Hal Lockhart. In 
2013 Erik
Rissanen, Srijith Nair and Rich Levinson updated AzAPI to include all XACML 3.0 
features.
In 2014 Pam Dragosh and Chris Rath contributed the XACML infrastructure they 
had developed
at AT&T.

During most of its history the project has been very small and has made 
decisions by informal
consensus. Major design issues have been decided by open debate. Minor issues 
and experimental
proposals have been openly welcomed. Several of the participants have a 
background in open
consensus-based standards making.

In addition to the mailing list, the project has regular phone calls every 
other Thursday.

Community

The original focus of the project was to attract developers of XACML products, 
either individuals
or corporations, and to build alignment among vendors on a common API that 
could simplify
technical integration for their customers. As OpenAz has matured, our community 
has grown
to include application developers working to adopt and deploy XACML in their 
applications.
So, for example, contributions reflect what individual developers have learned 
in vertical
industries such as financial services, healthcare, and computing and 
communications services,
and our APIs and internal component architecture have evolved to reflect a 
strong practical
understanding of what it takes to deploy XACML applications in a large 
organization.

Core Developers

The following developers have written most of the code to date.

Pam Dragosh <pdragosh at research dot att dot com> Rich Levinson < rich.levinson
at oracle dot com> Ajith Nair <ajithkumar.r.nair at jpmchase dot com> Chris Rath
<car at research dot att dot com> Duanhua Tu <duanhua.tu at jpmchase dot com>

The following people made other significant technical contributions.

David Laurence <david.c.laurance at jpmorgan dot com> Hal Lockhart <hal.lockhart
at oracle dot com> Prateek Mishra prateek.mishra at oracle dot com>

Alignment

It has always been a goal to make OpenAz an Apache project. The Apache license 
was used for
all contributions. We believe the project has now reached a critical size in 
terms of developers,
organizations and contributed code to make it appropriate to make a proposal to 
the Incubator.

Known Risks

Orphaned Projects

Given the small size of the project, there is a risk of the project being 
orphaned. There
seems to be strong interest in the use of our tools, which should markedly 
increase with the
contribution of the AT&T code. "Where can I get an open source PDP?" and "where 
can I
get an open source policy editor?" are frequent questions on XACML mailing 
lists.

Inexperience with Open Source

While few of the developers have extensive experience with open source, a 
number of us have
long experience in standards making in open consensus-based environments. For 
example the
XACML TC has operated since 2001 based on consensus building, with few, if any 
votes which
were not unanimous. The main challenge to the project will be managing the 
process with more
participants and a more formal process.

Homogeneous Developers

Currently all the contributors are employees either of companies offering an 
XACML product
or large end users deploying XACML technology for internal use. The positive 
aspect is that
they are all highly experienced senior developers used to operating in a 
disciplined environment.
The disadvantage is that the focus to date has mostly been problems that arise 
in large scale
environments typified by the infrastructure of large corporations.

Reliance on Salaried Developers

All current committers are salaried developers. However the organizations they 
work for have
a long term commitment to the technology. We hope that in the Apache foundation 
we will be
able to attract new developers to help us address the many fascinating unsolved 
technological
problems associated with deploying ABAC.

Relationship with other Apache Projects

As far as we can determine, no existing Apache project overlaps with OpenAz in 
its goals of
the technology developed so far. However, beyond the immediate project goals 
there are many
potential opportunities for integration with existing Apache projects. Shiro, 
Turbine and
WSS4J are Java frameworks which could incorporate XACML as the policy language 
using OpenAz
components. Manifold CF, Qpid and Archiva already have hooks to incorporate 
external access
control systems.

An Excessive Fascination with the Apache Brand

We hope that becoming an Apache project will not only attract new participants 
to OpenAz,
but will draw attention to the neglected field of access control. As previously 
stated it
has always been our goal to join Apache, the only question was when the time 
was ripe.

Documentation

The OpenAz web site is:

http://www.openliberty.org/wiki/index.php/OpenAz_Main_Page

Java docs can be found here:

http://openaz.svn.sourceforge.net/viewvc/openaz/trunk/openaz/test/doc/index.html

Initial Source

The AzAPI, PEPAPI and other related code can be found on sourceforge:

http://openaz.svn.sourceforge.net/viewvc/openaz/

AT&T's framework can be found on github:

https://github.com/att/XACML

Source and Intellectual Property Submission Plan

All the OpenAz code has been submitted under the Apache 2.0 license. The AT&T 
software
is available under the MIT license. Over time the project will move to a single 
license.

External Dependencies

There aren't any we are aware of.

Cryptography

OpenAz does not provide any cryptographic capabilities. The XACML Standard does 
specify some
uses of cryptography directly, e.g. digital signatures over policies and others 
by implication,
e.g. authentication via cryptography.

Required Resources

Mailing lists

The standard lists should be sufficient at the current time.The mailing list 
name will be
openaz.

Git Directory

We propose: https://git-wip-us.apache.org/repos/asf/incubator-openaz.git

Issue Tracking

The project will use JIRA for issue tracking.

Initial Committers

Rich Levinson Hal Lockhart Prateek Mishra David Laurance Duanhua Tu Ajith Nair 
Srijith Nair
Pam Dragosh Chris Rath

Affiliations

Rich Levinson, Hal Lockhart and Prateek Mishra work for Oracle. David Laurance, 
Duanhua Tu
and Ajith Nair work for JP Morgan-Chase. Srijith Nair works for Axiomatics. Pam 
Dragosh and
Chris Rath work for AT&T.

Sponsors

Champion

Paul Fremantle

Nominated Mentors

Emmanuel Lécharny Colm O hEigeartaigh Hadrian Zbarcea

Sponsoring Entity

The Sponsoring Entity will be the Incubator.

---------------------------------------------------------------------
To unsubscribe, e-mail: general-unsubscr...@incubator.apache.org
For additional commands, e-mail: general-h...@incubator.apache.org


Reply via email to