Access control in database security
How database access control works: least privilege, discretionary vs mandatory models, flow and inference controls, and why it matters for WordPress data.
Topics Login & access
How database access control works: least privilege, discretionary vs mandatory models, flow and inference controls, and why it matters for WordPress data.
Topics Login & access
A database is useful only if the right people and apps can read and write the right rows. Access control is how you decide that. Get it wrong and you get data leaks, silent corruption, or outages. Get it right and most attackers never reach the interesting tables.
For WordPress, that database holds users, posts, options, and often customer data. Plugin bugs and SQL injection still matter, but so does who is allowed to touch what once they are inside.
Most designs aim at three outcomes:
Policies answer basic questions: who can access which objects, under what conditions, and who can grant that access to someone else.
Security policies often sit on a spectrum:
Closed systems take more setup. They fail safer when someone invents a new account or a forgotten app starts querying production.
How grants are managed shapes risk:
Pick a model you can audit. An undocumented grant is a future incident report.
Flow control limits how data moves between objects: read from X, write to Y. Policies usually follow classification levels (what may flow up or down the ladder).
Sometimes the danger is not a direct SELECT on a secret column. It is combining allowed answers to infer the secret. Classic cases:
Statistical databases often answer aggregates only. Defenses include data perturbation (noise or substitutes) and query control (limits on what a single query may touch). Query control is effective and expensive to administer well.
Two classic families still show up in textbooks and product designs:
The data owner decides. Grants are flexible. Central policy is weaker because each owner can create their own mess. Ownership-based admin is usually DAC.
A global policy assigns security levels to subjects and objects. Flow between levels is enforced by the system, not by individual owners. Harder to bend for one app, stronger when classification matters (defense, regulated health data, and similar).
Object-oriented and composite models add inheritance, versions, and nested objects on top of subjects, objects, and rights. Relational systems still lean on matrices of (subject, object, permission). The right model depends on requirements analysis, not on a brand name.
You rarely configure ORION-style models by hand. You do control:
Pair access control with app hardening: WordPress security checklist, role hygiene in WordPress user roles, and monitoring for odd admin activity via something like Events Logger.
Access control will not replace patches or backups. It shrinks what a stolen credential or buggy query can reach.
Found this useful? Share it.