Создайте IHTTPModule и создайте подкласс контекстного события AuthenticateRequest.
В процедуре AuthenticateRequest вы можете проверить, какой тип действия происходит, а затем перенаправить пользователя на страницу SharePoint «Отказано в доступе». Именно так SharePoint выполняет эту функцию, поэтому опыт использования UX будет таким же.
Если вы хотите узнать мое мнение, я бы остановился на том, как SharePoint обрабатывает разрешения «из коробки» и нарушает наследование ролей. Конечно, это добавит новые сложности в вашу жизнь. Но я думаю, что вы можете лучше управлять этими сложностями с помощью SharePoint Admin Toolkit и некоторых пользовательских утилит для управления разрешениями. Я думаю, что это лучшее решение, чем то, что вы пытаетесь сделать.