I've been struggling with this- ensuring that our users have the minumum permissions on our ESX VC system. When we first set up our first ESX cluster and VC, we gave everyone VM Admin permissions on their own folders and VM's, as well as VM Admin privs on the datacenter, cluster and host server (without propagating thos permissions past past the host server). This allows users to mess with VM advanced settings, like CPU affinity, which screws up Vmotion on the ESX cluster. So, what I've done is clone the VM Admin role and remove anything that allows the user to edit advanced settings on the VM, or anything on the host except create/remove VM's. So far, All of the users can edit their VM's (but not the advanced settings), take and manage snapshots- they can do everything they need except clone a VM.
The way permissions are set up: put the most permissions at the top of the heiarchy, and then limiting them as you drill down the ladder (something VMware tech support had us do when we initially set up our system two years ago). For the sake of the explaination, we'll call my altered VM Admin role as Company User.
On the Hosts and Clusters view, the typical user has Company User privs On the Hosts and Clusters object, which is propogated down to the datacenter object, cluster object and host server objects. At the Host server, the role is changed to not propogate any further. On any datacenterthat the user is not supposed to access, the permissions are change to "no access".
On the Folders and Templates view, the Company User role is assigned to the user at the Folder and Templates object, and allowed to propogate down through the datacenter object. On each of the folders under the datacenter object, the user is either change to "no access" if they're not supposed to access that folder, or the permission is allowed to propogate.
Here's the permissions I have set up on the Company User role:
Global
Host
Local Operations
Create Virtual Machine
Delete Virtual Machine
Virtual Machine
Inventory
Interaction
Power On
Power Off
Suspend
Reset
Answer Question
Console Interaction
Device Connection
Configure CD Media
Configure Floppy Media
Tools Install
Configuration
Rename
Add Existing Disk
Add New Disk
Remove Disk
Change CPU COunt
Memory
Add/Remove Device
Modify Device Settings
Settings
Upgrade Virtual Hardware
Reset Guest Information
State
Create Snapshot
Revert Snapshot
Remove Snapshot
Rename Snapshot
Provisioning
Resource
Scheduled Task
Create Tasks
Remove Task
Run Task
Modify Task
Finally, this is a VirtualCenter 2.5.0 build 104215, and the ESX servers are running ESX 3.5.0 build 120512