Вы можете использовать комбинацию роли, иерархии ролей и избирателя
/** security.yaml **/
role_hierarchy:
ROLE_ADMIN
ROLE_STUDENT_BOOK: ROLE_STUDENT
ROLE_STUDENT_PROJECT: ROLE_STUDENT
ROLE_STUDENT_LIBRARY: [ROLE_STUDENT_BOOK, ROLE_STUDENT_PROJECT]
Здесь ваш пользователь может иметь роль ROLE_STUDENT_BOOK и управлять книгой, где другой студент управляет проектами, а третий управляет обоими ... но, в конце концов, они все еще являются студентами со всеми разрешениями ROLE_STUDENT. И, конечно, никто из у них есть права администратора
Тогда вы можете использовать избирателя для более точного контроля над тем, кто может что-то делать с вашим объектом
https://symfony.com/doc/current/security/voters.html