@@ -823,3 +823,79 @@ by the user that initiates the collection.
823823
824824
825825{{% /notice %}}
826+
827+
828+ # # Managing org access
829+
830+ Velociraptor provides ACL separation to users based on an org (or
831+ tenant) model. This means the same user may have different ACLs in
832+ different orgs - they may only have read access in one org and full
833+ admin access in another org.
834+
835+ While this is convenient, it is not enough to provide complete
836+ separation to untrusted users.
837+
838+ If an untrusted user has access to one org but does not have access to
839+ another, there are multiple ways which allow the user to read/modify
840+ data in the other org :
841+
842+ # ## Shelling out
843+
844+ By default, users have access to the `execve()` plugin providing they
845+ have the `EXECVE` permission (normally given to administrators). This
846+ allows an administrator in one org to run arbitrary code on the
847+ server - which may allow them to just read the file store of another
848+ org.
849+
850+ You may disable the `execve()` plugin using the [configuration
851+ file](/docs/deployment/references/#security.denied_plugins)
852+
853+ ` ` ` yaml
854+ security:
855+ denied_plugins:
856+ - execve
857+ ` ` `
858+
859+ # ## Accessing files directly
860+
861+ Velociraptor org data are stored on disk in separate directories. This
862+ means that users that have access to the `file` accessor can simply
863+ read the other org's data bypassing the ACLs.
864+
865+ For example, the following query will read all orgs datastore files :
866+
867+ ` ` ` vql
868+ SELECT * FROM glob(globs="/opt/velociraptor/orgs/**")
869+ ` ` `
870+
871+ In recent versions of Velociraptor, it is possible to restrict the
872+ operation of the `file` accessor using the [configuration
873+ file](/docs/deployment/references/#security.denied_file_accessor_prefix). The
874+ following stops direct file access to the `/opt/velociraptor/`
875+ directory. On Linux many files can be read using the `/proc/`
876+ filesystem too. A more restrictive deployment will have more paths
877+ here.
878+
879+ ` ` ` yaml
880+ security:
881+ denied_file_accessor_prefix:
882+ - /opt/velociraptor/
883+ - /etc/
884+ - /proc/
885+ ` ` `
886+
887+ Other accessors may provide access to different orgs in some
888+ situations. For example when running the server as root, the `ext4` or
889+ ` ntfs` accessors may allow direct reading of the filesystem
890+ inode. Usually we recommend running the server on Linux as a non-root
891+ user to prevent these issues.
892+
893+ In summary, although it is possible to restrict user access to
894+ different orgs this should be considered best effort. Much thought is
895+ required to truly isolate an untrusted user to some orgs, preventing
896+ access to other orgs. The recommendation is to avoid giving untrusted
897+ and potentially malicious users to the Velociraptor GUI at all.
898+
899+ If you require true data isolation between orgs, we recommend to spin
900+ up a separate Velociraptor instance (Virtual Machine or container) for
901+ each unique deployment.
0 commit comments