1

我被指派开发一个应用程序,该应用程序将部署在 1000 多个位置。我对我正在使用的数据库有一些安全问题。我只想确保数据库对我的应用程序的可访问性。数据库包含有关数据库的一些非常敏感的信息(要转移资金的冻结银行账户编号),这些信息将保持只读状态,直到远程服务器允许(仅由我访问)。

我实现上述的想法如下,

  1. 在安装应用程序的过程中,sa 密码会被应用程序更改并且密码会被应用程序知道。
  2. 应用程序将禁用 Windows 身份验证,没有 Windows 用户将能够访问 sql management studio。

虽然我的担忧如下,

  1. 任何人在不同的安装中取消附加数据库并附加,数据库的访问权限将由用户获得。
  2. 我必须提供备份数据库的选项,用户可以在不同的安装中恢复数据库。
  3. 我想会有一些方法可以替换 ldf-mdf 文件,因为用户拥有完整的文件系统 Windows 访问权限。

我不介意用户是否获得对数据库的只读访问权限,但我会强烈坚持不允许对数据库进行写操作。

任何建议如何实现这一点。

示例: .net 的 SQLite 具有数据库加密等功能,可确保数据库对应用程序的访问,同时对文件系统具有完全访问权限,但不建议将 sqlite 用于大型应用程序,因为 SQLite 一次只支持单个写入器。

4

2 回答 2

1

我同意 Shivan Raptor 的观点,即您的整体设计存在问题。

部署这样的应用程序很好,但您需要集中 SQL 数据库。如果需要将此类数据库部署在远程位置,则需要对拥有此类数据库的每台计算机进行防弹(即,没有人,即使是本地人,也可以访问它;包括管理员)。SQL Server 部署是以服务器为中心的。预计它们将是集中的。只要有人拥有计算机的管理员 ID,您的数据就不安全。

  1. 最好开发应用程序,可以部署到 1000 个位置;但是所有这些应用程序都会从​​数据中心的集中式 SQL 服务器中提取所需的数据。

  2. 或者,在您的数据中心的 SQL 数据库中部署数据,并为您的 1000 位置和中央 SQL 数据库之间的安全发布者/订阅者关系进行配置——除非您有一个非常特定的场景/环境,否则这是昂贵且不必要的不知道。

  3. 或者为此使用其他平台,例如 IBM Lotus Domino(与上面的 #2 相同)。

最好做#1。请记住,要完全防止写访问;服务器不能位于远程办公室——例如:本地人可以将硬盘从该计算机上拔下,插入另一台计算机,进行所有更改并将其重新插入您的计算机。

于 2013-02-25T06:40:19.707 回答
0

这里有几件事与我有关。为数据库设置访问级别是您最不关心的问题。您的网络和服务器管理员在哪里,他们如何控制对服务器的访问?您是否受到防火墙、正确的端口路由和保护的保护?

在存储银行帐号时,永远不要将它们存储在任何未加密的数据库中。构建用于加密存储和解密数据以供查看的功能。根据当今的隐私法,金融机构也开始对客户姓名、地址和电话号码进行加密。

已经提出了另一个担忧。根据我上面的隐私观点,数据永远不应该在一个以上的系统上可用,例如 1-2 个生产服务器。任何远程、QA 和开发数据库都必须使用清理过的数据……没有银行或抄送帐号,没有电话号码,也没有地址或姓名。

我会尝试为您挖掘一些链接,但是在处理帐号等敏感数据时需要涵盖很多内容。

于 2013-02-25T06:50:50.383 回答