17 | | An attribute is a property of a principal created by the assertion of another princppal. The University of Southern California (a principal) may assert that Ted Faber (a principal) is a staff member (attribute). The attributes are scoped by prinicpal, that is if USC asserts Ted Faber is staff, that is one attribute, if ISI also asserts that Ted Faber is staff that is a second attribute. Assertions are represented as a digitally signed statement, called a credential. |
18 | | |
19 | | A given prinicpal may also assert rules about how attributes relate. The GPO may assert that all USC GENI staff are also GPO prototypers. That delegates authority to USC add to GPO prototypers. In this case the delegated attribute (GPO prototypers) is given to prinicpals who also possess the delegating attribute (ISI GENI). |
20 | | |
21 | | Finally, a principal may delegate at one remove. The GPO may assert that any NSF PI (any principal that the NSF has asserted a PI attribute about) can designate a principal as a GENI user and that user will be a GPO GENI user. The NSF can affect GPO GENI users by creating or deleting PIs; that is, by adding or removing assertions that a particular principal is a PI. Individual PIs can also directly designate local GENI users that are also GPO GENI users as above. |
22 | | |
23 | | In this case, the delegated attribute (GPO GENI user) is delegated to principals who possess a one (or more) of a set of attributes (''P'' GENI user for many ''P''). That set is defined in terms of an authorizer attribute (NSF PI). Any principal with the authorizer attribute can assign the delegated attribute by assigning their local version of the delegating attribute (''P'' GENI user where ''P'' has the NSF PI attribute). This links the authorizer attribute to the delegating attributes, and is often called a linked attribute. |
24 | | |
25 | | Each of these delegations is expressed as an ABAC credential: an a signed assertion that can be used in a proof. Because each of these is a signed assertion of a fact or delegation of authority, connecting them in following the rules above corresponds to collecting those signed credentials, which establishes a trust relationship. ABAC credentials allow principals to negotiate directly about what they consider adequate proof. Below we show a simple visualization that represents constructing that proof as finding a path between two nodes in a graph; the actual negotiation protocol can be similarly simple. |
26 | | |
27 | | Until an authorization decision needs to be made, all of these credentials can be kept locally and brought together to make the decision. Principals can also pass them around so they are available when needed. For example, when the NSF designates a PI, it may send that PI the signed attribute so that the PI can use it in authorization requests. |
28 | | |
29 | | === Visualizing ABAC Attributes === |
30 | | |
31 | | In TIED's attribute browser, we use some graphical conventions that may make these ideas easier to follow. |
32 | | |
33 | | [[Image(Basic.png)]] |
34 | | |
35 | | Principals are represented as circles. Our principals are labeled with simple, human-readable names, but in reality the assertions being made are being made about their globally unique identifiers. Those IDs are essentially a public key that identifies the principal (though some systems like Kerberos may have a more intricate implementation). Tools, including ours, represent principals using a readable name, but that's to help users of those tools. |
36 | | |
37 | | Attributes are a rectangle containing the principal that asserts the attribute and the attribute name in dotted notation. The ISI.GENI attribute means that the ISI principal is asserting a GENI attribute. Again, ISI is shorthand for that principal's unique identifier, but the attribute names are simple strings. |
38 | | |
39 | | The arrow connecting an attribute to a principal indicates that the principal has the attribute. We point the arrow toward the attribute, indicating that the principal is in the group. The presence of such an arrow indicates that the principal controlling the attribute has issued a signed assertion that the other principal has the given attribute. In the example ISI has issued an assertion that Ted is in ISI.GENI. |
40 | | |
41 | | [[Image(Simple.png)]] |
42 | | |
43 | | The image above shows a simple delegation. The GPO prinicpal has delegated the power to grant principals the GPO.demo attribute to USC by asserting that any principal with the ISI.GENI attribute also has the GPO.demo attribute. We now show how to demonstrate that a given principal has a delegated attribute. |
44 | | |
45 | | [[Image(Creds.png)]] |
46 | | |
47 | | The image above shows how to walk the chain of attribute assignments and delegations to prove a principal has a given attribute. In this case, it shows that Ted has the GOP.demo attribute. Proving a principal has an attribute is equivalent to finding a path from principal to attribute in the graph induced above. The edges all represent credentials that the GPO or Ted are in possesion of that can be combined to demonstrate that Ted possesses the GPO.demo attribute. |
48 | | |
49 | | We use this representation in our configuration and visualization tool to help administrators. |
50 | | |
51 | | [[Image(Linked.png)]] |
52 | | |
53 | | A linked role is specified by a different attribute that links the authorizing attribute (in parens) to the delegating attribute by a dot, and the arrow completes the delegation. The following shows the graphical representation of walking a chain of credentials that inclides a linked credential showing that Ted has the GPO.demo attribute. |
54 | | |
55 | | [[Image(LinkedCreds.png)]] |
56 | | |
57 | | This introduces two kind of links to the graph. The first is a link that represents a linked role, the link from the red box to the GPO.demo attribute represents a new kind of credential - one that defines conditions for delegation (a linked role) rather than a direct delegation. The presence of that credential, and the credential indicating that the NSF asserts that ISI is NSF.funded creates the blue dotted edge. No single credential represents that edge; the presence of both a credential defining the authorizing set for GPO.demo and one showing that ISI is in the authorizing set creates the edge. |
58 | | |
59 | | Once the edge is present, again, showing that Ted has the GPO.demo attribute is a matter of showing the path. |
60 | | |
61 | | === Distributed Authorization === |
62 | | |
63 | | In the examples above, creating the paths from principal to attribute that constitute a proof are all done assuming total information in the hands of the prover. ABAC does not require a prover to hold all such information initally and provides a negotiation protocol to gather it. We sketch that protocol here. |
64 | | |
65 | | Getting access from an ABAC controller consists of constructing a proof that the requesting principal has a given attribute. The two endpoints provide parts of the graph to one another until they have constructed a graph using the rules above that contains such a path. Because credentials define node-edge-node sequences in graphs, the building of graphs is an exchange of credentials. |
66 | | |
67 | | As a simple case, consider creating a graph for the linked role example above. Initially TED has two credentials one signed by ISI indicating that TED has the ISI.GENI attribute and one signed by NSF indicating that ISI has the NSF.funded attribute. The GPO has a single credential signed by itself stating that principals who have the NSF.funded attribute are delegated the power to assign the GPO.demo attribute by assigning their local GENI attribute. |
68 | | |
69 | | Ted asks for a resource from the GPO. The GPO's ABAC controller responds telling Ted that it is trying to prove that Ted has the GPO.demo attribute, and giving the relevant credential. Ted checks the credential and finds that it forms the following graph: |
70 | | |
71 | | [[Image(Proto1.png)]] |
72 | | |
73 | | Ted now assesses its credentials and sees what edges it can add to the graph. In this specific case, its two credentials create an implied link that completes a path to Ted. Ted responds by sending those credentials to the GPO which checks the signatures and agrees that the valid graph allows access. |
74 | | |
75 | | [[Image(Proto2.png)]] |
76 | | |
77 | | During the negotiation, the GPO controller will need to get access to material to confirm ISI's signature on its credential, but it can presumably get that information from the NSF. The GPO controller knows NSF well enough to delegate authority to it, so it presmably has keying information for the NSF. If the keying information is public, Ted can pass along ISI's identifier/key as well. |
78 | | |
79 | | The basic protocol action is to present the other side with part of a graph and reply by extending the graph as much as possible toward the goal. How that exchange pans out depends considerably on what the participants know beforehand and the access control policies they place on their credentials. |
80 | | |
81 | | In an open environment, the GPO may publish its credential broadly. This means that requesters can start with enough information in their possession to create the entire authorization graph and include it in their request, reducing the number of exchanges. Conversely, a tight lipped requester may only disclose its NSF funding status to an requester that has some NSF credential. Such a requester would reply to the initial request with nodes indicating that the controller needs to prove a subordinate credential to the requester. On receipt of that proof, the requester would sahre the NSF.funding credential. Such an exchange continues as long as either side is able and willing to extend a graph and the initial request path has not been established. |
82 | | |
83 | | This simple operation - building graphs collaboratively from validated credentials - can result in a broad range of negotiation strategies. It can be used to facilitate disconnected operation (by bounding the necessary interactions) or to maintain control over sensitive information. |
84 | | |
85 | | == Rich Auditing Information == |
86 | | |
87 | | The graphs generated by the authorization negotiation also act as detailed logs of what was allowed and why. A log entry containing the credentials and identifiers/keys used to validate them provides the complete set of information that led to the access control decision. Such logging is of significant use in assessing intrusions or demonstrating that an entity has adhered to a resource control policy. Such adherence may be important if a resource control policy is mandated by a funder or other contract. |
88 | | |
89 | | === Authentication and entering the ABAC system === |
90 | | |
91 | | A key aspect of ABAC's power is that its reasoning system makes few demands on the systems used to establish principals in the system. |
92 | | Principals need to have three properties: |
93 | | |
94 | | * An entity claiming to be a given principal can prove it interactively |
95 | | * Two entities referring to the same principal must be sure that they are referring to the same entity |
96 | | * A principal must be able to sign assertions |
97 | | |
98 | | Any authentication system that establishes a public key meets these requirements, modulo a system to map various key types into a single identifier, e.g. hashing the bits of the keys in a common format. PGP keys and X.509 certificates directly meet those requirements (even self-signed X.509 certificates will do). Systems that attest user attributes, like [http://shibboleth.internet2.edu/ Shibboleth ] can attest a public key/principal as an attribute. Such systems have the added utility that they can act as external credential stores as well. |
99 | | |
100 | | Some principals never attest attributes, e.g., end users. Such users that are only identifiable by something like an !InCommon [http://www.incommonfederation.org/attributesummary.html#eduPersonPrincipalName eduPersonPrincipalName] or kerberos name can be converted to the same principal identifier space by hashing the name along with the namespace (Kerberos, !InCommon, etc.) into the same hash space as the public-key based systems. Some care must be taken with functions and hashspace sizes, but collisions can be made arbitrarily unlikely. |
101 | | |
102 | | When possible binding to a public-key-based identifier is infinitely preferred. |
103 | | |
104 | | == An Example == |
105 | | |
106 | | === Scenario === |
107 | | |
108 | | Consider the ACM using GENI to run a contest like the University of [http://ictf.cs.ucsb.edu/ Santa Barbara International Capture the Flag Contest] on a larger scale. The plan is for security experts from several universities to configure a large network of machines as a playground for intrusion testers. A slice will be created containing many (virtual) machines that will be configured with a variety of known shortcomings. Signed data is hidden in various places on the machines. Then players from many universities - in fact many players from across the country - are granted access to the slice and a scavenger hunt ensues. The team that most completely audits the security of the network, by capturning the most sensitive data, wins. There may be other scoring. |
109 | | |
110 | | There are two classes of princpals that will be requesting access to GENI resources for this contest. There will be a comparatively small number of officials that will need allocation and configuration rights to the slice in order to set up and administer the game. There will also be the thousands or more contestants who will need access to the slice, but not configuration rights. Because of the large number of contestants, the ACM does not want to be directly in charge of vetting each one. Individual universities (and perhaps other sites) will be able to decide on the criteria to admit players from their institutions independently. Should anything go amiss - or any kind of cheating be detected - officials will want to know where the contestent came from and how they were admitted. |
| 15 | There are two classes of princpals that will be requesting access to GENI resources for this contest. There will be a comparatively small number of officials that will need allocation and configuration rights to the slice in order to set up and administer the game. There will also be the thousands or more contestants who will need access to the slice, but not configuration rights. Because of the large number of contestants, the ACM does not want to be directly in charge of vetting each one. Individual universities (and perhaps other sites) will be able to decide on the criteria to admit players from their institutions independently. Should anything go amiss - or any kind of cheating be detected - officials will want to know where the contestant came from and how they were admitted. |
| 18 | |
| 19 | We assume that an empty slice has been created by a GENI principal, and the ability to configure (add, remove, modify resources) the slice and access it are controlled by different attributes issued by that principal. For simplicity of exposition we assume that these GENI attributes are sufficient to acquire the resources being added to the slice. |
| 20 | |
| 21 | In this example, we will describe the assignment of ABAC attributes to facilitate this scenario, how those attributes are translated into credentials and how those credentials are exchanged to negotiate access. |
| 22 | |
| 23 | == The TIED Attribute Explorer == |
| 24 | |
| 25 | The TIED attribute explorer is an application that represents the ABAC attribute interrelationships graphically. Users can create attributes and rules from various principals and see how those credentials interact. There is a graphical query engine that allows one to see which prinicpals have a given attribute and how they would prove it. |
| 26 | |
| 27 | The explorer can generate credentials for a principal if it has that principal's key (in some format). Credentials are changes by ABAC's negotiation protocols to secure access. While this function makes the explorer useful as a simple attribute configuration tool, we do not suggest that it is reasonable to use for large scale attribute administration. It is primarily a tool for visualizing fairly simple relationships. |
| 28 | |
| 29 | Throughout this example we will make use of screenshots from the program to illustrate points. The program is itself is available via a Web Start/JLNP link. Clicking on that link will start the program on your desktop if your machine is configured to use Web Start. Instructions for that configuration are [http://java.sun.com/javase/technologies/desktop/javawebstart/index.jsp available on the web]. Feel free to follow along. |
| 30 | |
| 31 | == Attributes for Officials == |
| 32 | |
| 33 | First we consider the attributes used to control the contest slice. The GENI principal will have created these with the slice, and much of the ABAC configuration that follows is delegating the authority to assign other principals those attributes. We name them '''GENI.CTFaccess''' and '''GENI.CFTadmin''' for the abilities to access and administrate the slice respectively. |
| 34 | |
| 35 | An attribute name encodes the controller of that attribute and the attribute name being granted. The controller is a principal (identified by a unique identifier/key that the explorer maps to a readable string) and the attribute name is a string. Prinicpals using each others attributes agree on the semantics of the names. The '''GENI.CTFaccess''' attribute is controlled by the GENI principal and is named CTFaccess. |
| 36 | |
| 37 | In order to assign that attribute to a principal using the explorer, one connects the principal representation (an ellipse with that prinicpal's name in it) to the attribute in question. The following shows the '''BBNAdmin''' principal being assigned the '''GENI.CTFAdmin''' attribute. |
| 38 | |
| 39 | [[Image(example0.png)]] |