Prostě neudělujte žádnému uživateli databáze (a vaší „veřejné“ roli) oprávnění INSERT na tabulku.
Udělte těmto uživatelům oprávnění ke spuštění INSERT uloženého procesu – tímto způsobem mohou volat uložený proces, ale nemohou přímo vkládat žádná data do podkladové tabulky.
DENY INSERT ON dbo.YourTable TO PUBLIC
GRANT EXECUTE ON dbo.InsertDataProc TO PUBLIC