Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 67 additions & 6 deletions ansible/files/postgresql_config/sbpostgres_apparmor
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,43 @@ profile sbpostgres flags=(attach_disconnected) {
/** rw,
owner /** m,
/ wr,
/nix/store/** m,

# /nix/store is immutable: postgres may read and execute from it, never modify it.
deny /nix/store/** wl,
deny /nix/var/nix/profiles/** wl,
deny /var/lib/postgresql/.nix-profile{,/,/**} wl,
deny /var/lib/postgresql/.local/state/nix/** wl,
deny /var/lib/postgresql/.local{,/} wl,
deny /var/lib/postgresql/.local/state{,/} wl,
deny /var/lib/postgresql/.local/state/nix{,/} wl,
/nix/store/** mr,

deny /tmp/** mx,
deny /var/tmp/** mx,
deny /dev/shm/** mx,

/etc r,
/usr/local r,
# lock permission for pgroonga
/data/pgdata/pgroonga.log k,

# sensitive paths that postgres should never need access to
deny /etc/adminapi/** rw,
deny /etc/auth.d/** rw,
deny /etc/envoy/** rw,
deny /etc/gotrue*.env rw,
deny /etc/kong/** rw,
deny /etc/postgrest/** rw,
deny /etc/salt/** rw,
deny /etc/ssl/adminapi/** rw,
deny /etc/vector/** rw,
deny /opt/gotrue/** rw,
deny /opt/saltstack/** rw,
deny /opt/supabase-state/** rw,

# lock permission for duckdb extension downloads
/var/lib/postgresql/.duckdb/** rwk,

# WAL directory - needs link permission for segment recycling
/data/pgdata/pg_wal/** rwkl,
/data/pgdata/pg_wal/ rw,
Expand Down Expand Up @@ -62,13 +93,16 @@ profile sbpostgres flags=(attach_disconnected) {
/usr/bin/dash Pix -> postgres_shell,
/nix/store/*/bin/bash Pix -> postgres_shell,
/usr/lib/postgresql/bin/pgsodium_getkey.sh Pix -> postgres_shell,
/usr/lib/postgresql/15/bin/pgsodium_getkey.sh Pix -> postgres_shell,
/usr/bin/cat Pix -> postgres_shell,
/bin/cat Pix -> postgres_shell,
/usr/bin/admin-mgr Pix -> postgres_shell,
/nix/store/*/bin/wal-g-2 Pix -> postgres_shell,
/nix/store/*/bin/wal-g-3 Pix -> postgres_shell,
/usr/local/bin/wal-g Pix -> postgres_shell,
/nix/store/*/bin/pgbackrest Pix -> postgres_shell,
/nix/store/*/bin/pg_dump ix,
/nix/store/*/bin/pg_archivecleanup ix,
/usr/bin/pgbackrest Pix -> pgbackrest_shell,
/usr/bin/nix Pix -> pgbackrest_shell,
/usr/bin/sudo Pix -> pgbackrest_shell,
Expand Down Expand Up @@ -102,21 +136,25 @@ profile sbpostgres flags=(attach_disconnected) {

# backup things
/usr/lib/postgresql/bin/pgsodium_getkey.sh ix,
/usr/lib/postgresql/15/bin/pgsodium_getkey.sh ix,
/usr/bin/admin-mgr ix,
/opt/supabase-admin-agent/supabase-admin-agent ix,
/opt/supabase-admin-agent/supabase-admin-agent-linux-arm64 ix,
/opt/supabase-admin-agent/supabase-admin-agent-linux-amd64 ix,
/nix/store/*/bin/.postgres-wrapped ix,
/nix/store/*/bin/wal-g-2 ix,
/nix/store/*/bin/wal-g-3 ix,
/usr/local/bin/wal-g ix,
/nix/store/*/bin/pgbackrest ix,
/nix/store/*/bin/pg_dump ix,
/nix/store/*/bin/pg_archivecleanup ix,

# file path permissions
/** r,
/data/wal_fetch_dir/ rw,
/data/wal_fetch_dir/** rw,
/tmp/wal_fetch_dir/ rw,
/tmp/wal_fetch_dir/** rw,
/var/lib/postgresql/data rw,
/data/pgdata rw,
/data/pgdata/pg_wal/** rwkl,
Expand All @@ -132,12 +170,22 @@ profile sbpostgres flags=(attach_disconnected) {
/etc/** r,
/usr/local/** r,


# sensitive paths that postgres should never need access to
deny /etc/adminapi/** rw,
deny /etc/auth.d/** rw,
deny /etc/envoy/** rw,
deny /etc/gotrue*.env rw,
deny /etc/kong/** rw,
deny /etc/postgrest/** rw,
deny /etc/salt/** rw,
deny /etc/ssl/adminapi/** rw,
deny /etc/vector/** rw,
deny /opt/gotrue/** rw,
deny /opt/saltstack/** rw,
deny /opt/supabase-state/** rw,
deny /var/lib/supabase/** rwx,
deny /var/lib/supabase-admin-agent/** rwx,
deny /var/cache/supabase-admin-agent/** rwx,
deny /opt/saltstack/** rwx,
deny /etc/salt/** rwx,
deny /root wr,
deny /home/** wr,
# wal-g needs access to its own home directory
Expand Down Expand Up @@ -179,7 +227,9 @@ profile sbpostgres flags=(attach_disconnected) {
# file path permissions
/** r,
/data/wal_fetch_dir/ rw,
/data/wal_fetch_dir/** rw,
/tmp/wal_fetch_dir/ rw,
/tmp/wal_fetch_dir/** rw,
/var/lib/postgresql/data rw,
/data/pgdata rw,
/data/pgdata/pg_wal/** rwkl,
Expand All @@ -195,11 +245,22 @@ profile sbpostgres flags=(attach_disconnected) {
/etc/** r,
/usr/local/** r,

# sensitive paths that postgres should never need access to
deny /etc/adminapi/** rw,
deny /etc/auth.d/** rw,
deny /etc/envoy/** rw,
deny /etc/gotrue*.env rw,
deny /etc/kong/** rw,
deny /etc/postgrest/** rw,
deny /etc/salt/** rw,
deny /etc/ssl/adminapi/** rw,
deny /etc/vector/** rw,
deny /opt/gotrue/** rw,
deny /opt/saltstack/** rw,
deny /opt/supabase-state/** rw,
deny /var/lib/supabase/** rwx,
deny /var/lib/supabase-admin-agent/** rwx,
deny /var/cache/supabase-admin-agent/** rwx,
deny /opt/saltstack/** rwx,
deny /etc/salt/** rwx,
deny /root wr,
deny /home/** wr,

Expand Down
Loading