mirror of
https://github.com/zebrajr/postgres.git
synced 2026-01-15 12:15:21 +00:00
Update sepgsql to add mandatory access control for TRUNCATE
Use SELinux "db_table: { truncate }" to check if permission is granted to
TRUNCATE. Update example SELinux policy to grant needed permission for
TRUNCATE. Add new regression test to demonstrate a positive and negative
cases. Test will only be run if the loaded SELinux policy has the
"db_table: { truncate }" permission. Makes use of recent commit which added
object TRUNCATE hook. Patch by Yuli Khodorkovskiy with minor
editorialization by me. Not back-patched because the object TRUNCATE hook
was not.
Author: Yuli Khodorkovskiy
Reviewed-by: Joe Conway
Discussion: https://postgr.es/m/CAFL5wJcomybj1Xdw7qWmPJRpGuFukKgNrDb6uVBaCMgYS9dkaA%40mail.gmail.com
This commit is contained in:
@@ -287,6 +287,20 @@ echo "found ${NUM}"
|
||||
echo
|
||||
echo "============== running sepgsql regression tests =============="
|
||||
|
||||
make REGRESS="label dml ddl alter misc" REGRESS_OPTS="--launcher ./launcher" installcheck
|
||||
tests="label dml ddl alter misc"
|
||||
|
||||
# Check if the truncate permission exists in the loaded policy, and if so,
|
||||
# run the truncate test
|
||||
#
|
||||
# Testing the TRUNCATE regression test can be done by manually adding
|
||||
# the permission with CIL if necessary:
|
||||
# sudo semodule -cE base
|
||||
# sudo sed -i -E 's/(class db_table.*?) \)/\1 truncate\)/' base.cil
|
||||
# sudo semodule -i base.cil
|
||||
|
||||
if [ -f /sys/fs/selinux/class/db_table/perms/truncate ]; then
|
||||
tests+=" truncate"
|
||||
fi
|
||||
|
||||
make REGRESS="$tests" REGRESS_OPTS="--launcher ./launcher" installcheck
|
||||
# exit with the exit code provided by "make"
|
||||
|
||||
Reference in New Issue
Block a user