【发布时间】:2020-06-21 14:48:43
【问题描述】:
我正在尝试将 Spring Boot 与 Oracle 数据库一起使用。在开发过程中,我们一直在使用休眠设置 spring.jpa.hibernate.ddl-auto=验证 但是现在我们正朝着生产版本迈进,我们想要锁定连接权限。 但是,即使在生产版本中,保留 hibernate validate 启动处理提供的健全性检查也会很好。
遗憾的是,当我尝试使用具有足够权限来运行 Spring Boot 应用程序的数据库连接来执行此操作时,休眠验证阶段在 bean 初始化期间失败,因为它说表丢失。 现在我知道这不是真的,所以我打赌 hibernate 使用额外的查询来验证模式并且这些查询需要额外的访问。如果我将该值设置为 none,则应用程序可以工作,但不会检查架构兼容性。如果我将 DBA 权限授予连接用户并且一切正常,包括验证。但我绝对不会在生产中的应用程序中提供这种级别的访问权限。
那么,有谁知道我可以添加到用户帐户的最低权限,以便我可以启用休眠验证?理想情况下,我只会在表上提供 SELECT、INSERT、UPDATE 和 DELETE,并在用户帐户上提供 CONNECT 权限,但这不足以启用验证。
我曾考虑在某处创建一个特殊的自动模式版本变量并在运行时对其进行验证,但它看起来很混乱。如果我能找到一个可接受的 Oracle 权限组合来启用验证步骤而无需过多打开连接,那么我更愿意使用这种方法。
我还可以在我们的持续集成服务器上定义一个特殊的作业,这样它就可以临时为一个作业启用所有数据库权限。但是我觉得这是一种大锤的方法,感觉不优雅。
感谢您的任何提示。
非常感谢, 乔纳森
【问题讨论】:
-
我不知道;我不使用休眠。然而,只是为了鼓励你——在我看来,你选择了正确的方法。仅授予最低权限;如果事实证明您需要额外的,请稍后授予它们。另外,考虑不授予 CONNECT;它是一个预定义的角色,曾经非常流行(与 RESOURCE 一起)。如今,您宁愿逐个授予特权。而不是 CONNECT,您实际上会授予 CREATE SESSION。是的,我知道,这还不够,不,我不知道您还应该授予什么。如果您有任何错误可以分享,请分享。也许帮助会更容易
-
该资源描述了使用 flywaydb 和 Spring Boot 的应用用户和数据用户之间的分离。 jcon.no/oracle/?p=1730
标签: oracle hibernate spring-boot hibernate-validator