OSGi:如何安全地共享bundle之间的连接

时间:2015-10-18 09:38:39

标签: java database osgi mariadb osgi-bundle

我正在尝试开发一个基于OSGi(Apache Felix)的java软件,不同的模块(可能包含多个jar文件)可以由来自不同公司的不同开发人员开发。

问题是:我想知道如何为这些模块提供数据库连接。如果我在模块之间共享相同的用户凭证,他们可能会意外或故意使用因信息隐私而应避免的其他表或数据。或者,如果我强制每个模块与自己的用户凭证建立自己的连接,那么就会有很多连接。

注意:我使用mariadb作为后端。

我知道这个问题不是OSGi特有的问题。我想知道是否有人遇到过这样的问题并且已经证明了这种情况的解决方案(我只描述了我的开发环境)。

任何想法,

感谢

2 个答案:

答案 0 :(得分:1)

首先,您的多租户问题不是任何系统(无论是否为OSGi)。因此,您需要自己处理。如果您想通过JPA连接到数据库,大多数OSGi应用程序仍然使用数据源。通常这些数据源被注册为OSGi服务。

回到您的多租户问题,您应确保每个人都有另一个数据源,并在您的应用程序中使用该数据源。例如,确保每个租户都拥有自己的配置,因此可以按照配置中的配置接收自己的数据源。这样您就可以确保每个租户彼此分开。

答案 1 :(得分:1)

OSGi无法达到此方案所需的安全级别。 OSGi框架旨在表示单个逻辑应用程序。如果捆绑包存在于同一个JVM和OSGi框架中,那么很难防止数据泄露,特别是对于已确定的攻击者。

您至少需要隔离进程,并将这些进程作为单独的用户ID运行。