wiki:FeddGeniUseCases

Version 5 (modified by faber, 14 years ago) (diff)

--

TIED / ABAC Architecture and Applications

We discuss the general architecture for applying Attribute Based Access Control to the TIED/GENI system. We lay out the general architecture of the authorization system and then provide worked examples how the system can be configured to implement several access control systems, including the DETER Federation Architecture (DFA)'s level naming system, a centralized (but fairly scalable) GENI certification system, and the several Slice Based Architecture scenarios discussed in the PlanetLab GENI SFA design document. We also describe how the ABAC realization of these policies is more expressive than the existing proposals.

ABAC proves attributes about principals scalably, expressively, according to well-defined semantics. We have described the basic operation of ABAC. This document outlines the ABAC principals, how they relate to GENI actors and illustrates the flow of operations and authentication information in slice manipulation.

We talk of the ABAC authorization negotiations as happening outside the simple request-response paradigm of the various GENI SBA interfaces. We believe this is correct for two reasons:

  • Though many authorization decisions will be as simple as checking credentials supplied by the requester, some authorization decisions will be more complex and require actors to gather information from other sources or provide more information about one another before releasing all information - all of which is supported by ABAC. By separating these interactions from the simple SBA operations, we allow room for more complex interactions when we need them, while keeping simple interactions simple.
  • We expect that other GENI systems and subsystems will find these operations useful - for example granting access to the measurement subsystems or OMIS data. Separating the authorization system insulates the concerns of an authorization system from the operative system.

TIED Authorization Architecture

The TIED authorization architecture brings together the GENI actors who participate in slice allocation and a set of ABAC prinicpals and attributes and rule. The attributes and rules vary with policy (and some policies require more principals than the simple ones), but the core principals in the exchanges remain the same. The GENI actors are:

  • A researcher who wants to create a slice
  • A slice manager that will coordinate creation of a slice
  • The slice to which resources will be attached
  • The various resource contollers - aggregates and components

One can blur the line between the slice manager and the researcher, but it somewhat aids the intuition and mapping to the existing models to make it explicit.

Each of these is also an ABAC principal. It is pretty obvious that most of these are principals who take part in the authorization decisions. It may be surprising that the slice is a principal; it is helpful to have that principal available as a delegation point. An ABAC principal is the object of an assertion or a delegation, and it is helpful to have a principal to which the researcher and other authorization players can delegate, rather than vesting all slices a researcher is creating with the researcher's full credentials or vesting the slice manager with the union of all the principals' credentials (that they choose to delegate to slices) that it manages slices for. This should be clearer as we walk through the operation below.

Flow of operations

The basic operations in using a slice or running an experiment are:

  1. Create an empty slice from the slice manager (slice manager checks researcher credentials)
  2. Researcher delegates attributes to the slice
  3. Researcher requests operation on slice (slice manager checks researcher credentials)
  4. Slice manager operates on various aggregates to carry out operation (aggregates check slice credentials)

As a researcher may perform many operations on a slice - creating it, expanding it, configuring it, restarting it - steps 3 and 4 will cycle.

The Slice Principal and Delegation

The appearance of the slice as principal facilitates three properties of the system that we argue are useful: it allows researchers to control what authority possessed by the researcher can be exerted on bahalf of the slice, it allows researchers to combine or transfer slice authority, and finally it constrains the amount of authority that the slice manager can exert on its own behalf.

A given researcher is likely to have a range of authority/attributes available to him or her, but probably wants to constrain individual experiments to only exert some of that authority. The possessor of a security clearance will want to perform unclassified experiments. Delegating authority explicitly to the slice ensures that a given slice can only exercise that authority not the full authority of either the reseracher or the slice authority. The slice prinicpal provides an entity to which those attributes can be delegated.

That delegation is functionally distinct from the operation of the slice manager. The researcher can issue certificates delegating whatever authority/attributes it chooses to without the slice manager needing to understand the semantics or format of them. (For sensitive attributes, a slightly more involved delegation procedure is required.) This frees the slice manager from dealing with these credentials beyond loading them into its ABAC negotiator for when it acts on behalf of the slice. If the researcher is willing to publish the credentials, it need not pass them to the slice manager at all.

This separation of delegation has another significant benefit. Researchers can combine or transfer slice authority. A long lived slice may change owners as the graduate student responsible for it graduates or a programmer changes jobs. ABAC allows the slice to exert the attributes of the new "owner" by delegating a subset of that new owner's attributes to the slice (and allowing the old attribute delegations to time out). If configuration of existing resources (and perhaps maintaining control of those resources) requires different attributes, a professor or higher ranking authority can create a slice, then pass control of it to a student or subordinate who has authority to maintain and configure the resources, but not grow the slice.

In addition to simple delegation of slice control, ABAC allows a slice to be imbued with attributes from more than one principal, directly. A slice can be given delegated power to carry out operations that neither principal can do alone.

Examples

To demonstrate the expressive power of ABAC in GENI terms, we lay out several example policies as ABAC configurations. Notation follows the ABAC papers:

P1.attr <-- P2
Principal P1 assigns attribute P1.attr to P2. "P1 says P2 is attr."
P1.attr1 <-- P2.attr2
Principal P1 assigns attribute P1.attr1 to all principals that P2 has assigned P2.attr2, that is all principals with attribute P2.attr2. "P1 says any principal that P2 says is attr2 is attr1." Note that the attr1 and attr2 strings may be the same. "GENI.researcher <-- DETER.researcher" encodes the policy that GENI recognizes all DETER researchers as GENI researchers.
P1.attr1 <-- (P2.link_attr).attr2
Principal P1 assigns attribute P1.attr1 to any principal that has attribute P2.link_attr asserts has attr2 in that principal's name space. For example if P3 has the P2.link_attr attribute and P3 assigns P4 the P3.attr2 attribute, P1 has assigned it the P1.attr1 attribute. All principals with the P2.link_attr attribute have been granted authority to assign the P1.attr1 attribute by assigning their local attr2 attribute. "GENI.researcher <-- (NSF.funded).researcher" encodes the policy that GENI recognizes all researchers funded by NSF (and issued an NSF.funded credential) as GENI researchers.

Three Level Names

The initial fedd three-level name system of authentication allowed testbeds to make access control decisions based on the user and project identifiers that a testbed asserted about a requesting user. The request was made on behalf of that user by fedd, with later requests made on behalf of the allocation created above. The fedd representing a testbed was identified by its fedid, which anchored the attributes, assserted as a triple.

The acces control database section gives examples of how to express and configure access control based on these options. Three relevant examples are:

(fedid:ce90957dd5b7d20f9c3890c4599313b7f1cf31ea, Deter, <any>) -> (TIED, <same>, <same>)
(fedid:ce90957dd5b7d20f9c3890c4599313b7f1cf31ea, <any>, faber) -> (TIED, faber, <same>)
(fedid:ce90957dd5b7d20f9c3890c4599313b7f1cf31ea, Deter, faber) -> (TIEDadmin, faber, <same>)

An access controller on an emulab based testbed that was configured with those lines would grant any user that testbed fedid:ce90957dd5b7d20f9c3890c4599313b7f1cf31ea (let's call it deterlab.net) asserted was in the Deter project access to the local testbed and map it to the local TIED project with the same username (ignore the second username for now). If that same testbed asserted that the requesting username was faber in any project the local testbed would allow access nd map that user into the local TIED project with username faber. If the testbed asserted that the requesting project was Deter and the requesting username was faber, access would be permitted and the user mapped to the local TIEDadmin project with local username faber. The most specific match wins and others are not allowed access.

On the experiment controller side, lines like the following configure assignment of attributes to users:

fedid:1234567890abcdef1234567890abcdef12345678 -> faber
fedid:fedcba0987654321fedcba0987654321fedcba09 -> (Deter, faber)

These lines map the first user (with the ascending fedid) to the faber username and the second (with the descending one) to both the faber username and the Deter project. If contacting a

Attachments (2)

Download all attachments as: .zip