example_configs/proxmox.md
Proxmox Virtual Environment is a hyper-converged infrastructure open-source software. It is a hosted hypervisor that can run operating systems including Linux and Windows on x64 hardware. In this example we will setup user and group syncronization, with two example groups proxmox_user and proxmox_admin. This example was made using Proxmox VE 8.0.3.
Server View open the Datacenter pagePermissions > Realms menuAdd > LDAP Serverdc=example,dc=comuid3890uid=admin,ou=people,dc=example,dc=com
bind_user) instead of admin for sharing Bind credentials with other services. The bind_user should be a member of the lldap_strict_readonly group to limit access to your LDAP configuration in LLDAP.mailcn(&(objectClass=person)(|(memberof=cn=proxmox_user,ou=groups,dc=example,dc=com)(memberof=cn=proxmox_admin,ou=groups,dc=example,dc=com)))
proxmox_user or proxmox_admin groups. If you want to enable all users in lldap, this filter can be used: (objectClass=person)(&(objectClass=groupofuniquenames)(|(cn=proxmox_user)(cn=proxmox_admin)))
proxmox_user or proxmox_admin groups explicitly. If you want to sync all groups, this filter can be used: (objectClass=groupofnames)Users and GroupsProxmox operates LDAP authentication by syncronizing with your lldap server to a local database. This sync can be triggered manually, and on a scheduled basis. Proxmox also offers a preview feature, which will report any changes to the local DB from a sync, without applying the changes. It is highly recommended to run a preview on your first syncronization after making any filter changes, to ensure syncronization is happening as expected.
Permissions > Realms page, select the LDAP realm you just created and click SyncRealm Sync dialog for the ldap realm we created.Permissions > Realms page.Add under Realm Sync JobsCreateOnce you have users and groups syncronized from lldap, it is necessary to grant some perimssions to these users or groups so that they are able to use Proxmox. Proxmox handles this with a filesystem-like tree structure, and "roles" which are collections of permissions. In our basic example, we will grant the built-in Administrator role to our proxmox_admin role to the entire system. Then we will also grant the proxmox_user group several roles with different paths so they can clone and create VMs within a specific resource pool (UserVMs), but are otherwise restricted from editing or deleting other resources.
Note that Promox appends the realm name to groups when syncing, so if you named your realm
lldapthe groups as synced will beproxmox_user-lldapandproxmox_admin-lldap
Permissions menu page.Add > Group Permission/proxmox_admin-lldap in our example)AdministratorAdd button and this access should now be grantedThis example assumes we have created Resource Pools named
UserVMsandTemplates
Permissions menu page.Add > Group Permission
/pool/UserVMs, Group: proxmox_user-lldap, Role: PVEVMAdmin/pool/UserVMs, Group: proxmox_user-lldap, Role: PVEPoolAdmin/pool/Templates, Group: proxmox_user-lldap, Role: PVEPoolUser/pool/Templates, Group: proxmox_user-lldap, Role: PVETemplateUser/sdn/zones/localnetwork, Group: proxmox_user-lldap, Role: PVESDNUser/storage/local-lvm, Group: proxmox_user-lldap, Role: PVEDatastoreUserThat completes our basic example. The ACL rules in Proxmox are very flexible though, and custom roles can be created as well. The Proxmox documentation on User Management goes into more depth if you wish to write a policy that better fits your use case.