We have an audit finding which says that the "postgres" role must not be used at all.
This statement could be viewed in two ways and I'll address both:
- The PostgreSQL cluster must be installed with no reference to an account/role called 'postgres'.
This would be utter nonsense, akin to trying to run a Linux machine without a root account or renaming the "root" account to some other name, like "fred". It relies on Security through Obscurity (another Bad Idea), adds nothing of value and confuses everyone when things they normally expect to find are not there or are called something "weird".
Save your sanity, go back to the Auditors and challenge this "finding", asking them for both justification for it and recommendations on how to make it work.
- The postgres role must not be used for anything other than the internal operation of the PostgreSQL cluster.
By this, I meant that no individual ever logs on directly with this role (and password) or has it granted to their own account and no Application ever makes use of it. DBAs, of course, connect implicitly as the installation owner, but only on from the database host itself.
I'd say that this one is quite a Good Idea.
You don't have to "leak" these highly-elevated credentials, or have to weaken your security to allow it and you keep control of the all-powerful postgres account.
Always keep the biggest and best tools in the box for yourself, to clean up the mess that everyone/everything else makes!