Charles's explanation is a very good one. One piece that may not
have been completely clear about it is that Globus is modular in
nature, and this means that we have intentionally avoided lumping a
whole bunch of separate tasks into a single piece of code. In this
case, the code in question is GRAM. The task that it performs is to
provide a remote interface to local resource management
capabilities. Those capabilities could be a local scheduler or
queueing system (if the target system uses those to implement a local
resource sharing policy), or it could be some kind of execution
environment (either direct execution via fork or managed execution
using a VM or sandboxing tool).
We have intentionally avoiding "bundling" other capabilities into
GRAM. For example, GRAM does not provide a built-in mechanism for
implementing resource management policies, and it does not provide a
built-in mechanism for implementing sophisticated security schemes.
Instead, it provides a very simple default mechanism for each (the
fork jobmanager provides direct execution, the grid-mapfile provides
a simple mapping between a Grid ID and a local account) AND it
provides very nice interfaces that you can use to add your own--more
sophisticated--mechanisms for these tasks.
The jobmanager interface allows you to plug-in your own execution
mechanism, whether that is a different scheduler or queuing system or
a different way to manage jobs (like a VM or a sandbox). Our
expectation is that if you need something other than the basic fork
mechanism or the predefined scheduler interfaces, you will seek out
(or develop) your own execution manager and integrate it with GRAM
via a jobmanager script. For example, there's quite a lot of
interest in the Globus community right now around exploring the use
of VM technology for job execution. (For example, see the Virtual
Workspace service - http://dev.globus.org/wiki/Incubator/
Virtual_Workspaces.) Some of the production Grids in the science
community (OSG, TeraGrid) are also exploring more lightweight
sandboxing tools that do things like limit the memory usage of each
job or restrict access to file spaces on the system.
The grid-mapfile mechanism is pretty simple. All it does is map a
Grid ID (certificate DN) to a local account so that jobs submitted
with a given Grid ID are executed using the corresponding local
account. But it can be combined with other tools to map individual
end user requests to a static or dynamic pool of shared accounts.
The authorization and authentication callout interfaces in WS GRAM
allow you to plug-in your own authorization & authentication
mechanisms to replace the simple grid-mapfile mechanism with more
sophisticated mechanisms. There's quite lot of activity in the
Globus community at present to integrate role-based authorization
with GRAM (see GridShib and VOMS). Combining a pool of shared
accounts with role-based authorization is a powerful model for
provisioning dynamic collaborations without creating individual
accounts for each member of the collaboration, while retaining the
ability to implement and enforce local policies.
The bottom line is that WS GRAM "out of the box" is pretty simple
with respect to both execution management and authentication/
authorization. But its modular design offers the interfaces
necessary to add other Globus or non-Globus tools to provide very
powerful capabilities. Given this flexibility, it's important for
you to decide how you *want* your system to work so that you can
decide which tools, if any, to add to the basic GRAM service to get
things to work exactly how you want.
-- Lee
On Jun 15, 2007, at 8:40 AM, Charles Bacon wrote:
It comes down to trust, right? There are some questions to answer:
1) Do you know who bob is?
2) Do you trust bob?
And for 2, what exactly do you trust bob to do? If you gave bob
access to the globus user's account, would he do something he
shouldn't do? This gets harder when you also want to add alice.
Do you trust bob and alice to both use the account how they're
supposed to, and not to interfere with each other?
Many people find the answer to "do I trust bob to use a shared
account" to be no. For this reason, most sites will only map bob's
DN to an account that bob already owns. Other people decide that
it's okay for bob not to have an account of his own, and there are
various technical solutions to the problem.
One solution to the problem is to create a pool of anonymous
accounts, and map incoming DNs you trust to the random pool.
Another solution might be to start each new job inside a virtual
machine sandbox to isolate it from other users and the real system
underneath.
So the answer is that you can do with the tools whatever makes you
comfortable as a system owner. :-)
Charles