我正在尝试开发一个基于OSGi(Apache Felix)的java软件,不同的模块(可能包含多个jar文件)可以由来自不同公司的不同开发人员开发。
问题是:我想知道如何为这些模块提供数据库连接。如果我在模块之间共享相同的用户凭证,他们可能会意外或故意使用因信息隐私而应避免的其他表或数据。或者,如果我强制每个模块与自己的用户凭证建立自己的连接,那么就会有很多连接。
注意:我使用mariadb作为后端。
任何想法,
感谢
答案 0 :(得分:1)
首先,您的多租户问题不是任何系统(无论是否为OSGi)。因此,您需要自己处理。如果您想通过JPA连接到数据库,大多数OSGi应用程序仍然使用数据源。通常这些数据源被注册为OSGi服务。
回到您的多租户问题,您应确保每个人都有另一个数据源,并在您的应用程序中使用该数据源。例如,确保每个租户都拥有自己的配置,因此可以按照配置中的配置接收自己的数据源。这样您就可以确保每个租户彼此分开。
答案 1 :(得分:1)
OSGi无法达到此方案所需的安全级别。 OSGi框架旨在表示单个逻辑应用程序。如果捆绑包存在于同一个JVM和OSGi框架中,那么很难防止数据泄露,特别是对于已确定的攻击者。
您至少需要隔离进程,并将这些进程作为单独的用户ID运行。