Simplemente no otorgue a ningún usuario de la base de datos (y su rol "público") el permiso INSERTAR en la tabla.
Otorgue a esos usuarios el permiso para ejecutar el proceso almacenado INSERT; de esa manera, pueden llamar al proceso almacenado, pero no pueden insertar directamente ningún dato en la tabla subyacente.
DENY INSERT ON dbo.YourTable TO PUBLIC
GRANT EXECUTE ON dbo.InsertDataProc TO PUBLIC