ブループリントで作った関数であれば Access Specifier を Protected にすることで他のクラスからのアクセスを制限できます。
C++でも下のように定義すれば protected 扱いになると思いきや、BP側では他のクラスからもアクセスできてしまいます。
protected: UFUNCTION(BlueprintCallable) void TestFunc();
BP側でも protected 扱いにするには明示的に BlueprintProtected を付ける必要があります。
protected: UFUNCTION(BlueprintCallable, meta = (BlueprintProtected)) void TestFunc();
UE Version : 5.0.0-19044958