Access audit of baresql_fx_clean

26 October 2026, 12:00 UTC · PostgreSQL 16.15 (Ubuntu 16.15-0ubuntu0.24.04.1) · 2 logins · BareSQL 0.1.0

0high
0medium
0low
1logins that read personal data
2columns with personal data
BareSQL logged in as postgres (a superuser) over an unencrypted connection and read the system catalogs inside one read-only transaction. It read up to 200 rows of each table to see what the columns hold; the values were looked at in memory and are not in this report. For every login, the server's own privilege checks were asked about every table and column, and each answer below comes with the grant, membership, ownership or view that gives it.

Findings

Nothing to flag.

Who can read personal data

LoginPersonal dataColumnsTablesChangesNotes
clean_appemail addressperson's name211

Columns and tables count base tables, partitions and materialized views, reached in any way listed below. Changes counts tables with personal data the login can insert into, update, delete from or empty.

Personal data in this database

ColumnHoldsHow BareSQL knowsRead by
app.customers.email
table · text
email address
high confidence
30 of 30 sampled values are email addressesclean_app
app.customers.full_name
table · text
person's name
medium confidence
the column name suggests person's nameclean_app

Logins

clean_app

member of no role · password stored as a SCRAM hash

Personal data it can readHoldsHow
app.customers.email
table
email address
  • granted to clean_app
app.customers.full_name
table
person's name
  • granted to clean_app
6 other columns it can read
ColumnHow
app.customers.id
  • granted to clean_app
app.customers.created_at
  • granted to clean_app
app.orders.id
  • granted to clean_app
app.orders.customer_id
  • granted to clean_app
app.orders.total
  • granted to clean_app
app.orders.created_at
  • granted to clean_app
What it can change (3)
TablePrivilegeHow
app.customers personal dataINSERT
  • granted to clean_app
app.customers personal dataUPDATE
  • granted to clean_app
app.ordersINSERT
  • granted to clean_app

clean_reports

member of no role · no password set

Reads no personal data.

5 other columns it can read
ColumnHow
app.orders.total
  • through view reports.daily_sales (rights of clean_owner)
app.orders.created_at
  • through view reports.daily_sales (rights of clean_owner)
reports.daily_sales.day
  • granted to clean_reports
reports.daily_sales.orders
  • granted to clean_reports
reports.daily_sales.revenue
  • granted to clean_reports
Functions that run with someone else's rights (1)
FunctionRuns asHow
reports.order_count()clean_counter
  • granted to clean_reports

Everyone (PUBLIC)

What every role can read, including roles created after this audit.

No personal data is open to every role.

Method

Schemas audited: app, public, reports. Connection: postgres://[email protected]:5432/baresql_fx_clean, login method md5.

BareSQL never calls a function written in SQL or a procedural language, never reads views or foreign tables, and never writes. Sampled values are turned into text by their type's own output function, never by a cast, and each table is read on its own, without its partitions or child tables. Views are traced to the columns they read from their stored definitions, without running them.

Every fact in this report is also in audit.json, which baresql diff and baresql audit --baseline compare with a later audit.