I can see two options, which have already been suggested above. Without trying to duplicate, just add more clarity as I have achieved a similar approach.
If each user has a login, then you will have to use Piwik sites to fully exclude access to data. You can segment, but then the user could change the segment to All Visits and see the whole data collected.
If each user has an account, then you could use the API to embed a full custom and unique dashboard that is pre-segmented for each user, by using their authentication token. You could also hide the segment filter so this could not be changed to “All Visits”.
This isn’t a great solution, but does work for such a use case.