Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的多租户安全管理器_Java_Security_Security Policy - Fatal编程技术网

Java中的多租户安全管理器

Java中的多租户安全管理器,java,security,security-policy,Java,Security,Security Policy,我正在尝试为每个租户将多个策略配置文件加载到java security manager中。正如指定的,可以将多个策略文件加载到策略对象,但我的要求是如何在扩展默认安全模型的多租户安全模型中指定在运行时必须将哪个策略文件加载到哪个用户 这听起来有点吓人。如果可能的话,我会为每个租户使用不同的VM。如果您不能做到这一点,可能需要使用Policy.setPolicy。您将需要一个定制的策略实现,它基本上是多个策略的包装器。它可能必须参考一些ThreadLocal变量,以查看哪个用户上下文适用于当前线程

我正在尝试为每个租户将多个策略配置文件加载到java security manager中。正如指定的,可以将多个策略文件加载到策略对象,但我的要求是如何在扩展默认安全模型的多租户安全模型中指定在运行时必须将哪个策略文件加载到哪个用户

这听起来有点吓人。如果可能的话,我会为每个租户使用不同的VM。如果您不能做到这一点,可能需要使用Policy.setPolicy。您将需要一个定制的策略实现,它基本上是多个策略的包装器。它可能必须参考一些ThreadLocal变量,以查看哪个用户上下文适用于当前线程,然后委托给相应的包装策略实现。要读取策略文件,您可能必须直接引用。不要忘记默认情况下不允许反射,否则您的策略逻辑将很难规避。

试着看一下。Jens Nordahl描述了如何对不受信任的插件进行沙箱处理,这听起来像是您需要的


顺便说一句,很抱歉打断了这篇文章,但它是谷歌上最高的帖子之一。

为什么你想让单独的安全管理员?一个单独的安全管理器以不同的方式处理不同的代码源难道还不够吗?不,我想要一个单独的安全管理器。一个多租户安全管理器,它实际上扩展了已经实现的安全管理器。正如您所说的,如果它以不同的方式处理不同的代码源就足够了。但我遇到的问题是,我无法为每个租户指定如何不同地使用它的逻辑,对于不同的租户,将哪个租户加载到安全管理器中。您可以根据代码库指定权限。但是,如果您可以使用单独的进程和操作系统安全性,我强烈建议您这样做。谢谢您的建议,我将尝试一下。不要忘记默认情况下不允许反射,否则您的策略逻辑将是微不足道的,您可以在这一点上详细说明吗?您正在使用安全管理器来确保代码不能执行某些操作。但是反射让您几乎可以做任何事情,包括违反安全管理器所依赖的假设。想象一下,如果反射调用直接修改了私有变量,在public方法中绕过访问检查。当我说默认情况下,我的意思是从禁用反射开始。然后根据需要允许白名单某些用途。真的,不要依赖于查找线程。小程序使用ThreadGroup,但是有很多黑客和非公共接口如果可能的话,我当然会对每个租户进行处理。