Hi! Do you have any more ideas for me? Cordially, Sébastien. Le lun. 28 mars 2022 à 16:39, Sébastien Rebecchi <srebec...@kameleoon.com> a écrit :
> Unfortunately, it is not working even with > "enable_user_defined_functions_threads: false" in cassandra.yaml :/ > Is there any way to check the running configuration? > > Le lun. 28 mars 2022 à 15:35, Benjamin Lerer <ble...@apache.org> a écrit : > >> I do not think that allowing to customize UDF classes whitelist has been >> discussed before. Feel free to open a JIRA ticket :-) >> I have some plans to revisit how we securise UDFs as the current >> threading approach has some impact in terms of latency. That can be a good >> opportunity to look into providing more flexibility. >> >> Le lun. 28 mars 2022 à 15:00, Sébastien Rebecchi <srebec...@kameleoon.com> >> a écrit : >> >>> Thanks you very much! I will try that. >>> As you know, would it be a long-terms solution? Or is there any plan to >>> add the possibility to customize UDF classes whitelist? >>> >>> Le lun. 28 mars 2022 à 14:31, Benjamin Lerer <ble...@apache.org> a >>> écrit : >>> >>>> Is there a way to customize that default behaviour? >>>> >>>> >>>> Looking at JavaBasedUDFunction quickly it seems that the ClassLoader >>>> is only used when you use the UDFExecutorService to execute your UDFs. >>>> You can try to disable it using "enable_user_defined_functions_threads: >>>> false" and see if it works. >>>> Now that also means that you have to ensure that only trusted persons >>>> can create UDF or UDA as it removes all safety mechanisms. >>>> >>>> Le lun. 28 mars 2022 à 13:23, Sébastien Rebecchi < >>>> srebec...@kameleoon.com> a écrit : >>>> >>>>> Hi Benjamin, >>>>> >>>>> Thanks for the answer. >>>>> Is there a way to customize that default behaviour? If no, could you >>>>> indicate where to find this class loader in the github of Cassandra >>>>> please? >>>>> >>>>> Le lun. 28 mars 2022 à 12:40, Benjamin Lerer <ble...@apache.org> a >>>>> écrit : >>>>> >>>>>> Hi Sébastien, >>>>>> >>>>>> Cassandra uses a special classloader for UDFs that limit which >>>>>> classes can be used. >>>>>> You cannot rely on non-JDK classes for UDFs and some of the JDK >>>>>> packages like the IO package for example cannot be used. >>>>>> The goal is simply to ensure that UDFs cannot compromise the server >>>>>> security. >>>>>> >>>>>> Le lun. 28 mars 2022 à 11:31, Sébastien Rebecchi < >>>>>> srebec...@kameleoon.com> a écrit : >>>>>> >>>>>>> Hello, >>>>>>> >>>>>>> I am trying to create a UDF based on custom methods. >>>>>>> So I set enable_user_defined_functions to true and added a jar in >>>>>>> "/usr/share/cassandra/lib/" folder on every node, restarted the nodes >>>>>>> and I >>>>>>> can see from the command line that the jar is indeed used (in the >>>>>>> classpath >>>>>>> with -cp). >>>>>>> >>>>>>> But when i create the UDF I got that error: >>>>>>> >>>>>>> CREATE OR REPLACE FUNCTION blobToJson (input blob) RETURNS NULL ON >>>>>>> NULL INPUT RETURNS text LANGUAGE java AS 'return >>>>>>> com.kameleoon.visit.Visit.writeToJson(com.kameleoon.visit.Visit.readFromByteBuffer(input));'; >>>>>>> InvalidRequest: Error from server: code=2200 [Invalid query] >>>>>>> message="Java source compilation failed: >>>>>>> Line 1: com.kameleoon.visit.Visit cannot be resolved to a type >>>>>>> Line 1: com.kameleoon.visit.Visit cannot be resolved to a type >>>>>>> >>>>>>> Of course the class com.kameleoon.visit.Visit does exist in the jar >>>>>>> and the jar has read rights to every user (chmod 444). So I can not find >>>>>>> the reason. >>>>>>> >>>>>>> versions are: [cqlsh 6.0.0 | Cassandra 4.0.1 | CQL spec 3.4.5 | >>>>>>> Native protocol v5] >>>>>>> >>>>>>> Any help would be appreciated! >>>>>>> >>>>>>> Thanks! >>>>>>> >>>>>>> Sébastien. >>>>>>> >>>>>>