Hi
Like others mentioned, there is no straightforward way to achieve this using out of the box features but that does not mean its not possible. You could consider one of the following options.
No Code approach - Security Roles Enabled Form
Create a form that only has the fields that are on the view and make that form as the fall-back form. This form will be accessible to all.
Make all other forms accessible only certain security roles, this way you can control access via security roles.
Downside to this approach is that users can still do advance find and get to the data if they really want to see the data
Code based approach - Plugin on Retrieve Message
You can create a plugin that triggers on Retrieve message on the entity and checks if the user is allowed to view the record, if not, it could throw an exception saying you do not have permissions to view this record. This approach will prevent user from viewing the record from any client not just the form.
Please note users can create personal views add all the columns they need and still view all the data from a personal view View if you do not restrict them from creating personal views. If you want to prevent user from creating personal views, you could look into restricting view security role, by setting permissions on Saved View.

Hope this helps