For those of my Friends who are on postgres RDS and require to backup the globas for a rds instance you would soon find it can't perform a backup with pg_dumpall --globals-only. The default user that gets created along with the RDS postgres instance does not have adequate permission to get through the backup processes. Bellow is the message that you would receive.
The default user created with the instance is not a real sysadmin(even a user with rds_admin) and i actually admire why AWS didn't treat the rds_admin user like a typical sysadmin. The pg_authid view has the user credentials exposed and thats a potential security risk, as a result good AWS folks have taken a conscious decision to disallow the user with rds_admin to get to the mentioned view. That said, the rds_admin user can read the pg_roles view which is similar to pg_authid but with out the credentials exposed.
I was hoping to write a method to override the default behaviour when i stumbled on the --no-role-password option in postgresv10. What this means is that the pg_dumpall can be executed with --globals-only and the credentials will not make it to the backup file. This will introduce a different challenge to get the restored database to be functional , but i have left that for a different day to fight.
ie. pg_dumpall -h <> -U <> -l <> --no-role-password --globals-only -s -f
pg_dumpall.exe : pg_dumpall: query failed: ERROR: permission denied for relation pg_authid
At line:1 char:1
+ & 'C:\setup_msi\postgres\bin\pg_dumpall.exe' -h XXXXXX.cXXXX...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (pg_dumpall: que...ation pg_authid:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
pg_dumpall: query was: SELECT oid, rolname, rolsuper, rolinherit, rolcreaterole, rolcreatedb, rolcanlogin, rolconnlimit, rolpassword, rolvaliduntil, rolreplication, rolbypassrls,
pg_catalog.shobj_description(oid, 'pg_authid') as rolcomment, rolname = current_user AS is_current_user FROM pg_authid WHERE rolname !~ '^pg_' ORDER BY 2
The default user created with the instance is not a real sysadmin(even a user with rds_admin) and i actually admire why AWS didn't treat the rds_admin user like a typical sysadmin. The pg_authid view has the user credentials exposed and thats a potential security risk, as a result good AWS folks have taken a conscious decision to disallow the user with rds_admin to get to the mentioned view. That said, the rds_admin user can read the pg_roles view which is similar to pg_authid but with out the credentials exposed.
I was hoping to write a method to override the default behaviour when i stumbled on the --no-role-password option in postgresv10. What this means is that the pg_dumpall can be executed with --globals-only and the credentials will not make it to the backup file. This will introduce a different challenge to get the restored database to be functional , but i have left that for a different day to fight.
ie. pg_dumpall -h <> -U <> -l <> --no-role-password --globals-only -s -f
Fyi : For those folks who are postgres fluent, you would find that i may not use the common terms relating to postgres as i am a working in progress fella.
RDS backup is very important and this blog explain very well. RDS automates common administrative tasks such as performing backups and patching the software that powers your database. Thanks for sharing useful info.
ReplyDeleteThanks you so much
ReplyDelete