系列:安全保护项目 分阶段为数据库基础架构构建安全屏障 作者:Arup Nanda
假设您刚开始担任 DBA 一职。第一天您就听到了这样的传闻:实施符合 Sarbanes-Oxley 要求的安全性审计迫在眉睫。只有尽快熟悉环境,您才能知晓哪些地方需要立即采取措施,或施以预防性措施。 或者,假设情况并不象上面那么严重(但也很令人担忧),您已“继承”了就您所知从未进行过加固的数据库和服务器,而审计即将开始。您必须尽快采取措施来保护它们,而且无人可以求助,一切只能靠自己。 抑或是,您可能是一位经验丰富的 DBA,已从事数据库维护工作一段时间了。离审计还有一段时间,但您关心大体上的安全性并希望能够对安全性了如指掌。 无论哪种特定情况,您都可以安全地进行以下三种假设: - 您必须加快工作速度。无论审计是否迫在眉睫,您都无法承担将环境置于不安全状态下的后果,除非很短的时间(如果可以)。
- 您必须仔细地、系统地进行工作,因为您要修改的是正在使用的数据库。
- 您必须在执行其他例行活动(如维护数据库、救火、处理相关客户事宜等等)的同时进行有关该项目的工作。
很明显,根据这些假定,您需要分阶段保护数据库基础架构,这种方法使您可以根据需要使用 Oracle 技术。在本系列中,您将了解到这一规划的蓝图。我称之为安全保护项目。 该项目可划分为四个截然不同的阶段,每个阶段都是可实现的,并在特定时段内(一天、一周、一个月以及一个季度)显著改善安全性: (这些持续时间仅仅是估计;根据您的安装,所需时间可能要比上述时间长或短。)在每一阶段中,您都可通过代码示例、示例以及任务清单来专门了解需要执行的操作。 开始本项目之前,我建议您阅读下面的“安全性入门简介”,了解一些常用术语和概念。 这些活动因 Oracle 版本而大不同,因此,此处仅探讨与从 Oracle 版本 9.2.0.x(Oracle9i Database 第 2 版)到 11.2.x(Oracle Database 11g 第 2 版)有关的活动。在可能并适用的情况下,将指出操作系统间的明显不同之处。 此处提供的内容始终仅用于教学,Oracle 不提供保证,请自行承担使用风险!请勿将其认为是咨询或服务产品的组成部分。 安全性入门简介 首先,有必要了解一下“安全性”在该项目环境中意味着什么。 数据库安全如同建筑物的屋顶。该屋顶由身份验证、授权、保证和问责机制这四个支柱支撑,每个支柱都以不同的方式构成安全性的核心原则。 身份验证意味着建立身份 — 确认用户的真实身份。如果身份验证较弱,入侵者可能会登录到该基础架构中。对用户进行身份验证时,只允许她查看“授权”查看的数据。 授权意味着在用户经过身份验证之后,对她能够或不能查看的内容进行控制;在此阶段,不再怀疑身份。(“身份验证”和“授权”经常混淆或互换使用,这是错误的。)基本上,授权在数据库内部建立用户的访问边界,如果该边界薄弱,则合法用户能够查看的内容远远多于其应该查看的内容 作为合法用户,经过正确身份验证后可在授权范围内操作数据,而数据在数据库安全性保护“屋顶”内部和外部移动。为了确保在该过程中数据不被侵害或遭遇非法操作,需要保证发挥作用。 最后,如果用户不对其操作负责,安全性就不完整。如果没有安全性的约束,那么任何人都可执行完全合法但可能会影响系统整体稳定性的操作。因此,安全性涉及的不仅是允许合法用户在授权模式下工作,而且还涉及合法用户所执行的操作以及执行这些操作的原因。因此,问责机制的概念是安全基础架构的最后一个支柱。 这四个支柱是支撑安全性屋顶所必需的。如果其中任何一个支柱断裂,屋顶就会彻底坍塌。您必须竖立和加固所有四个支柱以创建合理的安全结构;该架构中的一个弱点将使整个基础架构容易受到攻击。 分层方法 下面是对安全性的另一种看法。假设您要通过正规商业承运商寄送一件非常贵重的精致物品。您会简单地将它装进信封并投入邮筒或承运商的箱子里吗?不太可能。相反,您可能会用气泡垫或报纸将其包好,然后放在起保护性的盒子里。(根据物品的特性,您可能还要加用防水容器。)现在,这件贵重的物品就有了保护层,其中每层可实现特定的功能。如果某人想要获得该物品,他必须逐个去除(或穿过)这些层,直至够到包裹内装的物品。 数据库安全性的工作方式与此类似;您需要为数据加上一些安全层,每层都保护特定区域。例如,您的组织可以为企业网络设置防火墙以防止外部攻击。在组织内部,您可以为数据库服务器再设置一道防火墙,仅针对应用服务器开放端口。穿过这些层之后,入侵者必须克服第三道障碍:身份验证(即,证明她是合法用户)。例如,如果入侵者使用窃取的口令通过这一层,她仍被正确授权层限制为只能查看可以查看的内容,您可以使用正确授权层保护关键组件(例如,包含敏感信息的表)。最后,如果所有这些层都失败,入侵者可以访问“内部密室”,那么您只剩下最后一道防线:伪装数据(加密)。 风险 该模型运行得好吗?大多数情况下运行良好,但也有例外。例如,如果非法入侵来自组织内部(实际上,大多数非法入侵的确如此),应该怎么办;如果数据备份丢失或被盗,又该怎么办? 第一种情况说明尽管设置防火墙相对比较容易,但如果入侵者已在防火墙之内,则防火墙的设置没有任何意义。因为内部人员(例如,好奇或心存不满的员工)通常已经过正确身份验证,他们是合法用户,所以您必须加固下一层,即访问控制。您必须验证仅授予工作所需的那些权限;仅此而已。在此需要“最低权限”原则,而不是用于执行某项任务的冗余权限。 第二种情况甚至更令人恐惧。即使您将数据库设计得像一座堡垒,至少在备份存储时数据要离开堡垒。许多组织将备份磁带发送到一个远程位置,以保护它们免受火灾、洪水之类的本地灾难;在许多情况下,这种远程机构是专门从事该业务的其他公司。如果没有适当的保护措施,磁带可能会在该机构内部或去往该机构的途中被盗(或只是丢失)。得到这些磁带的入侵者理论上可以将磁带恢复到他有权访问的服务器中,然后慢慢浏览数据。最恐怖的是,有时甚至可以在数据外泄未被发现的情况下安全地将磁带还回存储机构。 这两种风险都会破坏您仔细计划的安全性。不过,可通过以下组合方法来保护数据库免于出现这两种情况: - 可靠的身份验证模式 — 如果用户是 SCOTT,应毫无疑问地确认他确实是 SCOTT,而不是 MARTIN
- 防止假冒
- 防止未授权用户非法窃取
- 保护“处于静止状态”的数据不被非法修改
- 审计用户活动
……这是您将了解的要在安全保护项目中实现的内容。下面我们就开始吧! | Arup Nanda 是 Oracle ACE 总监,担任 Oracle DBA 已逾 12 载,处理过从性能优化到安全性和灾难恢复等各方面的数据库管理问题。他与人合著有《PL/SQL for DBAs》 (O'Reilly Media, 2005)。他于 2003 年被 Oracle Magazine 授予“年度 DBA”称号。 |