51 | | This is the most complex of the accessDBs. Its purpose is to configure how an access control component maps a [FeddAbout#GlobalIdentifiers:Three-levelNames three level name] to a local testbed user and project, as well as the rights the project must possess (the node types it can access). It also includes information about which kinds of nodes are restricted and allows a testbed owner to supply additional attributes used in accessing the testbed. |
| 51 | This is the most complex of the accessDBs. Its purpose is to configure how an access control component maps a [FeddAbout#GlobalIdentifiers:Three-levelNames three level name] to a authorization attribute and local access control information. Usually the authorization attribute information is 'access' implying the ability to create new experiments. Other plug-ins are free to create and interpret other attributes. |
| 52 | |
| 53 | In addition to that, a mapping can have local values, interpreted by the plug-in. By convention the attribute is unadorned and the optional plug-in dependent information is separated by a comman and enclosed in parentheses. |
| 54 | |
| 55 | The general format looks like: |
| 56 | {{{ |
| 57 | (testbed, project, user) -> attribute |
| 58 | }}} |
| 59 | |
| 60 | With testbed dependent information: |
| 61 | |
| 62 | {{{ |
| 63 | (testbed, project, user) -> attribute, (some, testbed, stuff) |
| 64 | }}} |
| 65 | |
76 | | (fedid:ce90957dd5b7d20f9c3890c4599313b7f1cf31ea, <any>, bill) -> (fed, foo, bar) |
77 | | (fedid:ce90957dd5b7d20f9c3890c4599313b7f1cf31ea, <none>, faber) -> (fed, baz, quux) |
78 | | (fedid:ce90957dd5b7d20f9c3890c4599313b7f1cf31ea, <any>, <none>) -> (fed, foo, fred) |
| 90 | (fedid:ce90957dd5b7d20f9c3890c4599313b7f1cf31ea, <any>, bill) -> access, (fed, foo, bar) |
| 91 | (fedid:ce90957dd5b7d20f9c3890c4599313b7f1cf31ea, <none>, faber) -> access, (fed, baz, quux) |
| 92 | (fedid:ce90957dd5b7d20f9c3890c4599313b7f1cf31ea, <any>, <none>) -> access, (fed, foo, fred) |
88 | | (fedid:ce90957dd5b7d20f9c3890c4599313b7f1cf31ea, Deter, <any>) -> (fed, foo, <same>) |
89 | | (fedid:ce90957dd5b7d20f9c3890c4599313b7f1cf31ea, <none>, faber) -> (<dynamic>, <dynamic>, <dynamic>) |
| 102 | (fedid:ce90957dd5b7d20f9c3890c4599313b7f1cf31ea, Deter, <any>) -> access, (fed, foo, <same>) |
| 103 | (fedid:ce90957dd5b7d20f9c3890c4599313b7f1cf31ea, <none>, faber) -> access, (<dynamic>, <dynamic>, <dynamic>) |
97 | | (fedid:ce90957dd5b7d20f9c3890c4599313b7f1cf31ea, Deter, <any>) -> (foo, <same>, <same>) |
98 | | (fedid:ce90957dd5b7d20f9c3890c4599313b7f1cf31ea, <any>, faber) -> (bar, <same>, <same>) |
| 111 | (fedid:ce90957dd5b7d20f9c3890c4599313b7f1cf31ea, Deter, <any>) -> access, (foo, <same>, <same>) |
| 112 | (fedid:ce90957dd5b7d20f9c3890c4599313b7f1cf31ea, <any>, faber) -> access, (bar, <same>, <same>) |
103 | | Other than the access rules, two types of line can appear in the acesss accessdb. A line of the form: |
104 | | |
105 | | {{{ |
106 | | restricted: node_type |
107 | | }}} |
108 | | |
109 | | indicates that the use of `node_type` is not open to all users. If a requester asks for access to a restricted node type and is mapped to a project that does not include access to that type, the `fedd` will deny the request. To specify multiple such types, include multiple such lines. |
110 | | |
111 | | For example if `node_type` is restricted and `(fedid:ce90957dd5b7d20f9c3890c4599313b7f1cf31ea,emulab-ops, faber)` makes an access request, that user will succeed if he or she matches: |
112 | | |
113 | | {{{ |
114 | | (fedid:ce90957dd5b7d20f9c3890c4599313b7f1cf31ea,emulab-ops, faber) -> (emulab-ops:node_type, <same>, <same>) |
115 | | }}} |
116 | | |
117 | | but fail if the matching line is: |
118 | | |
119 | | {{{ |
120 | | (fedid:ce90957dd5b7d20f9c3890c4599313b7f1cf31ea,emulab-ops, faber) -> (emulab-ops:pc3000, <same>, <same>) |
121 | | }}} |
133 | | ==== Attributes ==== |
134 | | |
135 | | A line of the form: |
136 | | |
137 | | {{{ |
138 | | attribute: connectorImage value: FBSD7-TVF |
139 | | }}} |
140 | | |
141 | | specifies an attribute to be passed back to the requester. In this case the attribute specifies that nodes used to connect this testbed to another federant should use local Emulab image FBSD7-TVF. Attribute values start with the first non-whitespace character after '''value:''' and continue until the end of the line. |
142 | | |
143 | | Currently `fedd`'s experiment system understands the following attributes: |
144 | | |
145 | | '''!ConnectorImage''':: |
146 | | The local image to load on federation connectors |
147 | | '''!ConnectorType''':: |
148 | | The Emulab node type to request for federation connectors. For example, this type may have access to the wide area Internet when others do not. |
149 | | '''!MasterConnectorStartCmd''':: |
150 | | When this testbed is a master, run the given command on starting a federation connector node. |
151 | | '''!MasterNodeStartCmd''':: |
152 | | When this testbed is a master, run the given command on starting an experimental node. |
153 | | '''!SlaveConnectorStartCmd''':: |
154 | | When this testbed is a slave, run the given command on starting a federation connector node. |
155 | | '''!SlaveNodeStartCmd''':: |
156 | | When this testbed is a slave, run the given command on starting an experimental node. |
157 | | '''SMBShare''':: |
158 | | The name of the machine that the SMB file system is exported from. Defaults to USERS which is usually correct. If not, swap in a windows experiment and see where your testbed exports from. |
159 | | '''dragon''':: |
160 | | The endpoint designator of this testbed to DRAGON. This indicates that the testbed is DRAGON-connected. |
161 | | '''vlans''':: |
162 | | The acceptable vlan numbers to allocate from DRAGON, if any. Ranges and comma separated lists (and lists of ranges) are acceptable. |
163 | | |
164 | | Generally the '''!StartCmd''' attributes do not need to be modified. |