mirror of
https://github.com/postgres/postgres.git
synced 2025-07-28 23:42:10 +03: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