💬 In plain words: Two locks on data: object-level (can you touch Accounts at all — Create/Read/Update/Delete) and field-level (okay, but can you see the Salary field?). Sharing decides WHICH records; CRUD/FLS decides WHAT you can do with the object and its fields. 📌 Example: Asha can see the Candidate object (object-level ✓) but the Salary field is hidden from her profile (field-level ✗). She opens the record fine — the Salary column is simply not there, even in reports and the API. Concept CRUD (object permissions) and FLS (field permissions) are granted via profiles and permission sets. They are enforced automatically in the standard UI, standard controllers, and Lightning Data Service — but NOT automatically in Apex, which runs in system mode by default on legacy API versions. Apex Enforcement: In Apex code, security must be explicitly opted into: SOQL queries with WITH USER_MODE , DML with as user , or Security.stripInaccess...
Salesforce Security & Access