Case Study On User Roles
Case Study On User Roles
w -- UPDATE ("write")
a -- INSERT ("append")
d -- DELETE
D -- TRUNCATE
x -- REFERENCES
t -- TRIGGER
X -- EXECUTE
U -- USAGE
C -- CREATE
c -- CONNECT
T -- TEMPORARY
arwdDxt -- ALL PRIVILEGES (for tables, varies for other objects)
* -- grant option for preceding privilege
-bash-4.2$ psql
psql.bin (10.7)
Type "help" for help.
/******* Creating role which has access to create other roles *****/
postgres=# \z
Access privileges
Schema | Name | Type | Access privileges | Column
privileges | Policies
--------+----------------+-------+----------------------------
+-------------------+----------
public | dept | table | |
|
public | emp_assignment | table | |
|
public | emp_contact | table | |
|
public | employee | table | postgres=arwdDxt/postgres +|
|
| | | demo_role=awd/postgres +|
|
| | | test_user=arwdDxt/postgres |
|
public | hash | table | |
|
public | manager | table | postgres=arwdDxt/postgres +|
|
| | | test_user=arwdDxt/postgres |
|
public | thur | table | |
|
(7 rows)
postgres=# \du
List of roles
Role name | Attributes |
Member of
-----------+------------------------------------------------------------
+-------------
admin | Create role, Create DB, Cannot login |
{}
demo_role | |
{}
efm | Superuser |
{}
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS |
{}
test_user | |
{demo_role}
postgres=# \du
List of roles
Role name | Attributes |
Member of
-----------+------------------------------------------------------------
+-------------
admin | Create role, Create DB |
{}
demo_role | |
{}
efm | Superuser |
{}
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS |
{}
test_user | |
{demo_role}
postgres=# \z
Access privileges
Schema | Name | Type | Access privileges | Column
privileges | Policies
--------+----------------+-------+----------------------------
+-------------------+----------
public | dept | table | |
|
public | emp_assignment | table | |
|
public | emp_contact | table | |
|
public | employee | table | postgres=arwdDxt/postgres +|
|
| | | demo_role=awd/postgres +|
|
| | | test_user=arwdDxt/postgres |
|
public | hash | table | |
|
public | manager | table | postgres=arwdDxt/postgres +|
|
| | | test_user=arwdDxt/postgres |
|
public | thur | table | |
|
(7 rows)
postgres=> \z
Access privileges
Schema | Name | Type | Access privileges | Column
privileges | Policies
--------+----------------+-------+----------------------------
+-------------------+----------
public | dept | table | |
|
public | emp_assignment | table | |
|
public | emp_contact | table | |
|
public | employee | table | postgres=arwdDxt/postgres +|
|
| | | demo_role=awd/postgres +|
|
| | | test_user=arwdDxt/postgres |
|
public | hash | table | |
|
public | manager | table | postgres=arwdDxt/postgres +|
|
| | | test_user=arwdDxt/postgres |
|
public | t1 | table | admin=arwdDxt/admin +|
|
| | | test1=arwdDxt/admin |
|
public | thur | table | |
|
(8 rows)
-bash-4.2$ psql
psql.bin (10.7)
Type "help" for help.
postgres=# \du+
List of roles
Role name | Attributes |
Member of | Description
-----------+------------------------------------------------------------
+-----------+-------------
adduser | Cannot login |
{test} |
admin | Create role, Create DB |
{} |
demo_role | |
{} |
efm | Superuser |
{} |
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS |
{} |
readuser | |
{} |
suser | Create DB, Cannot login |
{} |
test | Cannot login |
{} |
zabbix | |
{} |
postgres=# \z
Access privileges
Schema | Name | Type | Access privileges | Column
privileges | Policies
--------+----------+-------+---------------------------
+-----------------------+-----------------------------------------
public | accounts | table | postgres=arwdDxt/postgres+| id:
+| test (w): +
| | | readuser=r/postgres +|
adduser=w/postgres | (u): ((CURRENT_USER)::text = manager)+
| | | adduser=arw/postgres |
| (c): ((id >= 1) AND (id <= 5))
public | employee | table | postgres=arwdDxt/postgres+| employee_name:
+|
| | | suser=arwdDxt/postgres +|
readuser=r/postgres |
| | | adduser=a/postgres |
|
public | test1 | table | | id:
+|
| | | |
readuser=w/postgres+|
| | | | name:
+|
| | | |
readuser=r/postgres |
public | test2 | table | |
|
(4 rows)