ACLs¶
Privileges on database objects, grouped by the kind of object they are on. Written under grants: or revocations: on the role, user, or group they apply to, so a role file is the whole story of what that role can do. ALL stands for every privilege the object type has. Append WITH GRANT OPTION to a privilege to let the grantee grant it onward.
Properties¶
| Property | Type | Required | Description |
|---|---|---|---|
columns |
map | — | Privileges on individual columns, keyed by schema.table.column. Each value is an array of (SELECT | INSERT | UPDATE | REFERENCES | ALL). |
databases |
map | — | Privileges on databases, keyed by database name. Each value is an array of (CREATE | CONNECT | TEMP | TEMPORARY | ALL). |
domains |
map | — | Privileges on domains, keyed by schema.domain. Each value is an array of (USAGE | ALL). |
foreign_data_wrappers |
map | — | Privileges on foreign data wrappers, keyed by wrapper name. Each value is an array of (USAGE | ALL). |
foreign_servers |
map | — | Privileges on foreign servers, keyed by server name. Each value is an array of (USAGE | ALL). |
functions |
map | — | Privileges on functions and procedures, keyed by schema.function(argument types): the signature, since the name alone is ambiguous across overloads. Each value is an array of (EXECUTE | ALL). |
groups |
array of (string | object) |
— | Memberships in other roles. Each entry is the role name on its own when the membership behaves the way GRANT <role> TO <member> grants it, or a mapping when it does not. admin: true writes WITH ADMIN OPTION. inherit and set write the per-membership WITH INHERIT / WITH SET options, which need PostgreSQL 16 or later; omit inherit to defer to the member role's own inherit option, which is what PostgreSQL does. The grantor (GRANTED BY) is not carried: it records who granted the membership in one cluster, not what the schema is. Entries must be unique. |
languages |
map | — | Privileges on procedural languages, keyed by language name. Each value is an array of (USAGE | ALL). |
large_objects |
map | — | Privileges on large objects, keyed by OID. Each value is an array of (SELECT | UPDATE | ALL). |
roles |
array of (string | object) |
— | Memberships in other roles. Each entry is the role name on its own when the membership behaves the way GRANT <role> TO <member> grants it, or a mapping when it does not. admin: true writes WITH ADMIN OPTION. inherit and set write the per-membership WITH INHERIT / WITH SET options, which need PostgreSQL 16 or later; omit inherit to defer to the member role's own inherit option, which is what PostgreSQL does. The grantor (GRANTED BY) is not carried: it records who granted the membership in one cluster, not what the schema is. Entries must be unique. |
schemata |
map | — | Privileges on schemas, keyed by schema name. Each value is an array of (CREATE | USAGE | ALL). |
sequences |
map | — | Privileges on sequences, keyed by schema.sequence. Each value is an array of (SELECT | UPDATE | USAGE | ALL). |
tables |
map | — | Privileges on tables, keyed by schema.table. Privileges on a view may be written here or under views: PostgreSQL grants on a view with TABLE syntax, so both emit GRANT ... ON TABLE. Each value is an array of (SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER | MAINTAIN | ALL). |
tablespaces |
map | — | Privileges on tablespaces, keyed by tablespace name. Each value is an array of (CREATE | USAGE | ALL). |
types |
map | — | Privileges on types, keyed by schema.type. Each value is an array of (USAGE | ALL). |
views |
map | — | Privileges on views, keyed by schema.view. Emitted as GRANT ... ON TABLE, as PostgreSQL requires. Each value is an array of (SELECT | ALL). |
No other properties are accepted.
Source: schemata/acls.yml · Resolved JSON Schema: acls.json