如何在SQLite中启用访问控制?

Fav*_*ius 2 c sqlite encryption access-control

我们有一个使用SQLite作为嵌入式RDBMS的应用程序.最初,该应用程序适用于单个计算机和单个用户.但随着时间的推移,项目范围已扩大.现在,我们需要的功能之一是Fine grained access control.

现在正如SQLite适当用途所述

... SQLite不得不牺牲一些人认为有用的其他特性,例如高并发性,细粒度访问控制,丰富的内置函数集......

并在这个论坛帖子

sqlite没有用户名和密码.您无法以这种方式保护数据文件.

因此,从上面可以看出,访问控制不可用.在某种程度上它是有道理的,因为它主要用于移动应用程序,浏览器或需要嵌入式数据库的地方.

根据此SO帖子,可以加密数据库.但据我所知,我无法描述它,fine grained access control因为SQLite数据库被限制为单个加密密钥.此外,我不能拥有多个用户和不同的访问级别.

Now my question are:

  1. 是否可以在SQLite中启用访问控制?(我可能已经回答了我的问题,但仍然,为了我的内心满足,我问这一个:))
  2. 我对fine grained access control加密相关的理解是否正确?
  3. 让我们说如果我对单个机器和单个用户使用加密,那么它在真实上有fine grained access control什么缺点?(性能可能是其中之一,因为我们必须为每个连接解密它..不确定)

Some Useful Information

  1. 我们正在使用最新版本的SQLite.
  2. SQLite作为源代码的一部分嵌入.
  3. 在它的全部容量中,我们可以期待一个大小为1 GB或大约1 GB的数据库.

注意:我知道使用任何其他可用访问控制的RDBMS都很好,但问题对SQLite非常具体.请从那个角度回答他们.谢谢.

Lar*_*tig 6

SQLite中没有访问控制(意味着GRANT/REVOKE表级访问控制).您必须通过应用程序代码提供所需的任何访问控制.加密仅在最粗糙的级别提供访问控制 - 您可以访问数据库,也可以不访问数据库.

  • 好吧,您的第一级防御是将SQLite文件视为包含敏感公司信息的Word文档.使文件无法访问.之后是,加密可以提供非常广泛的访问控制.但这不是一个非常精细的控制水平. (2认同)