Skip to content

Instantly share code, notes, and snippets.

@ferrao
Last active November 6, 2019 13:44
Show Gist options
  • Save ferrao/33b393abf3b1e4a5b123a5e1586c5c15 to your computer and use it in GitHub Desktop.
Save ferrao/33b393abf3b1e4a5b123a5e1586c5c15 to your computer and use it in GitHub Desktop.
AWS RDS

AWS RDS - Postgres 11

Recreate Database

\c postgres
SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = 'postgres'
  AND pid <> pg_backend_pid();
\c template1;
drop database postgres;
create database postgres;

List user/roles

 SELECT                            
      r.rolname, 
      ARRAY(SELECT b.rolname
            FROM pg_catalog.pg_auth_members m
            JOIN pg_catalog.pg_roles b ON (m.roleid = b.oid)
            WHERE m.member = r.oid) as memberof
FROM pg_catalog.pg_roles r
WHERE r.rolname NOT IN ('pg_signal_backend','rds_iam',
                        'rds_replication','rds_superuser',
                        'rdsadmin','rdsrepladmin')
ORDER BY 1;

Read Only User

  • Revoke privileges from 'public' role
REVOKE CREATE ON SCHEMA public FROM PUBLIC;
REVOKE ALL ON DATABASE postgres FROM PUBLIC;
  • Read-only role
CREATE ROLE readonly;
GRANT CONNECT ON DATABASE postgres TO readonly;
GRANT USAGE ON SCHEMA public TO readonly;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO readonly;
  • Read-only user
CREATE USER reporting WITH PASSWORD 'some_secret_passwd';
GRANT readonly TO reporting;

Read Write User

  • Read/write role
CREATE ROLE readwrite;
GRANT CONNECT ON DATABASE postgres TO readwrite;
GRANT USAGE, CREATE ON SCHEMA public TO readwrite;
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO readwrite;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO readwrite;
GRANT USAGE ON ALL SEQUENCES IN SCHEMA public TO readwrite;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT USAGE ON SEQUENCES TO readwrite;
  • Read/write user

-- Users creation

CREATE USER user WITH PASSWORD 'some_secret_passwd';
GRANT readwrite TO user;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment