Hi Conrad,
I think the ideal solution involves having your on-premise install synchronise content to a cloud site - that way all your reports and customisations can run on-premise with external users accessing it via the cloud. The cloud sync functionality is still being written, but the current plan is to release it as an update for 4.0.x as soon as possible.
In the mean time, the solution is probably a combination of making sure information you don't want everyone to access is in private sites (you could add a hook to ensure that all sites are private if you wanted) and perhaps adding a custom module that locks down other features you don't want them to have access to (you can apply modules based on an evaluator that e.g. looks at the user's email address), depending on your needs.
Hope that helps,
David.