Просто не давайте на потребители на база данни (и вашата "обществена" роля) разрешението INSERT за таблицата.
Дайте на тези потребители разрешение да изпълнят съхранената процедура INSERT - по този начин те могат да извикат съхранената процедура, но не могат директно да вмъкват никакви данни в основната таблица.
DENY INSERT ON dbo.YourTable TO PUBLIC
GRANT EXECUTE ON dbo.InsertDataProc TO PUBLIC