Tem a ver com o modelo de objeto do Python - sempre há uma maneira de obter uma referência a objetos que podem não ser seguros. Consulte a documentação do módulo rexec e o capítulo de execução restrita dos documentos para obter algumas informações sobre os problemas, bem como:
As limitações não têm nada a ver com o PostgreSQL, são inerentes à implementação do interpretador CPython ou, possivelmente, até à linguagem Python.
Algumas outras linguagens verificaram tempos de execução, como Perl, Java, JavaScript e Lua. A maioria deles enfrentou uma série de problemas de segurança, pois esses ambientes de execução confinados são muito difíceis de proteger contra todas as possíveis explorações de jailbreak.
Não há realmente nada impedindo o PostgreSQL de adicionar um interpretador Python semitrusted, pois o rexec é "bom o suficiente" para muitos propósitos. O PostgreSQL não tende a gostar apenas de apenas o tipo de bom o suficiente. Provavelmente, isso só será aceito se marcado como somente superusuário, mas você sempre poderá conceder acesso a ele para usuários específicos. Seria melhor do que Python não confiável.
Pessoalmente, acho que o PL / V8 ou similar é o futuro aqui e gostaria de vê-lo avançar para ser apoiado no núcleo.
Eu também explorei vagamente a idéia de um Mono confiável que pode carregar assemblies "seguros" escritos em C #, VB.NET, IronPython ou qualquer outra coisa, mas que não conseguiu fazer muito sobre esse tópico.
rexec
módulo Python por ser inerentemente inseguro, conforme vinculado acima. Eu imagino que talvez um plpython usando PyPi possa entregar um modo restrito que a Pg possa usar. Não olhei para ver se há muito trabalho. Você também está incorreto em relação a uma "versão confiável confiável do Perl" - na verdade, é perfeitamente comum o Perl, o mesmo intérprete é usado para o plperl e o plperlu. A diferença é a configuração do tempo de execução.pp_require_safe
eplperl_trusted_init
. Eu não sei o suficiente para ter muita opinião sobre a verdadeira segurança da execução restrita de Perl. Eu preferiria ver uma versão confiável do Lua ou obter uma melhor compreensão e adoção, um intérprete JavaScript confiável. Mas o que temos é menos por enquanto.