数据库安全

edg*_*tze 1 mysql oracle sql-server

为了拥有一个安全的数据库,应该考虑哪些方面?

除了避免sqlInjection,还应该考虑什么?什么是应该做的?

Gar*_*ary 6

关闭它并擦拭磁盘......几次。稍微不那么极端的是

首先保护服务器、存储、网络和操作系统级别

  1. 数据库服务器应该有最少的开放端口(例如,只有端口 22 上的 SSH 和 1521 上的侦听器)。还要注意传出连接。数据库可以发出 HTTP 请求、发送电子邮件和各种您可能不希望在安全环境中使用的东西。
  2. 没有人应该有权访问数据库服务器。实际上,最高级的 DBA 可能需要访问权限,如果高级 DBA 生病或无法访问,则可能需要一名副手。您可能希望审核所有访问权限。您可能希望强制 DBA 在他们可以访问服务器之前实际请求系统管理员的访问。您可能想要锁定他们可以从哪里访问它(即特定的工作 PC)以及可能的时间。
  3. 应该使用透明数据加密,以便数据库中的所有数据在到达文件之前都被加密。因此,即使有人获得了磁盘或备份,他们也无法读取
  4. 您可能希望加密数据库和应用程序之间的网络流量。

接下来要锁定用户数据库访问

  1. 通常,只有在安装/升级时才需要架构所有者的访问权限。除此之外,模式应该被锁定。
  2. 在DB中分离出一个应用层更安全,这样应用账户只能执行预定义的功能(即不能删除表中的每一行)。DB 应用程序层是对 SQL 注入的一个很好的防御,因为连接的用户根本没有表的选择权限。
  3. 优先存储加密值而不是明文,优先存储散列值而不是加密值,并且不存储您不需要的任何内容。你真的需要人们的姓名、地址、电话号码、信用卡、SSN、密码吗?
  4. 根据您的架构,您可能会受益于定期过期的密码,或者通过其他机制进行身份验证。

不要忘记博士。虽然我开玩笑说要擦除磁盘,但如果您的风险评估是有人会很好地让您停业几天(或永久),那么烧毁您的数据中心是一个安全问题。