Principle of Least Privilege
Grant a component only the minimum access it actually needs to do its job — nothing more, so a compromise stays small.
The principle of least privilege says every user, service, and process should hold only the permissions it strictly needs, for only as long as it needs them. It doesn’t prevent a compromise, but it caps the blast radius: an attacker who takes over a service that can only read one table does far less damage than one who takes over a service running with admin rights it never actually used.
Worked example: grant each user, service, or token only the exact permissions it needs and nothing more, so a compromised component does limited damage rather than owning everything. Gotcha: it fights convenience — broad ‘admin’ roles are easier to hand out — so privilege creep is the default failure; enforce it with short-lived scoped credentials and periodic access review, and design so revoking an over-grant does not break production (which is why grants accumulate).