1
PostgreSQL上金融应用程序的身份验证方法的选择
首先介绍一些背景。 LedgerSMB项目是在PostgreSQL上运行的开源财务会计软件项目。我们在用户定义的函数中实现了大量的业务逻辑,这些逻辑充当程序对象方法与数据库行为之间的主要映射工具。当前,我们将数据库用户用作身份验证用户,部分是通过选择(这允许集中的安全逻辑,以便可以编写其他工具并重复使用授予用户的权限),另一部分是根据需要(在从SQL-Ledger分叉之后)在该代码库上加装安全性的选择不多)。 这使我们可以访问PostgreSQL可以访问的合理数量的单点登录选项,从LDAP到Kerberos5。我们甚至可以在涉及密码的情况下使用PAM。它还允许我们在与其他应用程序集成或允许其他客户端界面时重用权限。对于财务会计应用程序来说,这似乎是一个净赢。 涉及明显的成本。对于Web应用程序,我们非常受支持的http auth类型限制。例如DIGEST完全被淘汰。BASIC可以正常工作,并且我们可以很容易地实现KRB5(我计划对此提供支持,并在1.4版本开箱即用)。虽然很可能会在必要时对它们进行垫片化(例如,BASIC +带有用户名和特定根ca的cn的cn的客户端SSL证书),但不能直接在此上正确地管理非常强大的身份验证措施。 同时,我们受到了很多批评,大多数是来自开发人群,还有一些是来自dba的批评,他们告诉我应用程序应该是安全屏障,而不是数据库。我仍然认为,较小的安全范围通常更好,重用业务逻辑和安全逻辑在一起,并且重用业务逻辑而不在同一级别重用安全逻辑使我感到非常危险。该程序。 我在这里错过任何重大的权衡吗?是否有我没有考虑的陷阱?