Преимущества использования SECURITY DEFINER в PostgreSQL:
- позволяет функциям выполняться с привилегиями пользователя, создавшего функцию, а не пользователя, вызвавшего её; www.restack.io
- удобен, когда функции нужно выполнять операции, на которые у вызывающего пользователя может не быть прав. www.restack.io
Недостатки использования SECURITY DEFINER:
- при неправильном использовании может представлять угрозу безопасности, так как есть риск эскалации привилегий; www.restack.io
- рекомендуется устанавливать путь поиска (search_path) для конкретной схемы, чтобы предотвратить непредвиденное поведение из-за изменений в схеме; www.restack.io
- доступ к функциям SECURITY DEFINER следует плотно контролировать, их не следует размещать в схемах, которые открыты для API. www.restack.io
Также стоит учитывать, что использование SECURITY DEFINER может замедлять работу функций, особенно для больших наборов данных. stackoverflow.com