26 | | When the experiment controller is run as a service, it acts as a separate principal for the purposes of experiment creation, and the user and the controller negotiate what principal the controller will act as when making resource allocations from access controllers. This allows a user to delegate a subset of attributes to the experiment principal and then allow the experiment controller to act as that principal. (The experiment principal may have attributes delegated by multiple principals, if needed). This extra principal is required to prevent the experiment controller from combining rights from multiple principals that did not intend it. |
| 27 | When the experiment controller is run as a service, it acts as a separate principal for the purposes of experiment creation, and the user and the controller negotiate what principal the controller will act as when making resource allocations from access controllers. This allows a user to delegate a subset of attributes to the experiment principal and then allow the experiment controller to act as that principal. (The experiment principal may have attributes delegated by multiple principals, if needed). This extra principal is required to prevent the experiment controller from combining rights from multiple principals that did not intend it. The figure below shows this: |
| 28 | |
| 29 | [[Image(complex.png)]] |
| 30 | |
| 31 | When a user is running an experiment controller on their own behalf, like a utility program, the situation is much simpler. Both experiment controller operations and experiment allocations are simply carried out as the user. The user's fedid is specified for both the experiment controller's ID and the experiment ID, leading to the simpler situation below: |
| 32 | |
| 33 | [[Image(simple.png)]] |
| 34 | |
| 35 | |