https://www.elastic.co/guide/en/kibana/master/xpack-spaces.html explains how to create spaces. You can assign users to a space and any user not assign to that space will not be able to see the space or any of the dashboards within that space.
The downside of this is that as dashboards and visualizations are completely separate, any changes you make to one dashboard will not be applied to the same dashboard in a different space. Can be solved easy enough by importing/exporting dashboards but something to keep in mind.