You are right, the microflow that resets the password must have 'Apply entity access' false.
The security of this microflow can be managed with a reset-key and a time-out. When a user asks for a password reset send him a random key (for example a generated GUID). Key must be unique and long enough to disable bruteforce guessing. Keep a list of that keys and generation datetime. When the microflow is invoked check that this key is valid and less than X hours/minutes ago generated. X can be a setting.
You may consider a lock-out mechanism based on ip. If more that 3 request from a ip-address fail, block it. But that requires a customer request handler.
Don't forget the scheduled event to clean up that resetkey list for people who only click the reset link but never actually reset their password.