Po prostu nie nadaj żadnym użytkownikom bazy danych (i swojej „publicznej”) roli uprawnienia INSERT do tabeli.
Przyznaj tym użytkownikom uprawnienia do wykonania przechowywanej procedury INSERT - w ten sposób mogą wywoływać przechowywaną procedurę, ale nie mogą bezpośrednio wstawiać żadnych danych do tabeli bazowej.
DENY INSERT ON dbo.YourTable TO PUBLIC
GRANT EXECUTE ON dbo.InsertDataProc TO PUBLIC