I'm working on creating a managed package and am struggling to understand the permission model. The managed package will be accessed by a Sales Manager kind of profile and needs access to few custom objects present in the package. I have permission sets which assign permissions to all objects and fields.
I have the following questions:
Should I be providing permission to the System admin for all fields/objects? Or the System admin can assign the permission set to itself after install?
Will the system admin use the permission set to assign permissions to users?
Does the system admin need access to all custom objects and fields in the managed package? Or I can have objects which are not accessible by the System admin? If yes, how would the apex code (which runs in system mode) access these variables? If not, Is the assumption that system admin indeed needs access to all custom objects/fields, correct?