如何平衡SQL中的安全与性能?

如果你发现自己以某种方式置身于数据库的世界中,想必你已经对数据库的安全和性能有了一些了解。数据库管理系统确实为数据库带来了好处,但你是否考虑过需要从安全性和性能角度进行权衡,以便使你的选择最有效?这正是本文要探讨的。

安全和性能是否联系在一起?

首先要考虑一个事实,性能和安全密切相关。出现这种情况的主要原因是,开发人员,无论是初级的还是资深的,在其职业生涯的某个时刻开始意识到:

  • 安全性提高时,实现性能目标通常会变得有点困难(也就是说,开发人员通常需要“千方百计”来实现他们的目标)
  • 提高性能时,有时会以安全为代价——比如说,放宽权限等等。

用Mark Eldridge制作的图做下说明:

希望你能通过这种图理解前面所要表达的意思。当然,这个箭头反映的是密码管理中安全性和便利性的权衡,这与SQL中的安全性和性能没有直接关系,但是两者可以进行类比。提高安全性通常意味着会把性能相关的任务变得更加困难,反之亦然。

SQL中的安全性和性能

现在,你可能想知道,SQL中,性能和安全性是如何融合在一起的?一句话,显而易见——当其中一个方面(安全性或性能)提升时,另一个则需要额外的维护措施,反之亦然。以下是数据库管理员和开发人员在考虑安全性和性能时通常会想到的一些主要措施:

如上表所示,所有的选择通常都有收益,或者利弊皆有。在这个领域,你还需要考虑另一个问题:你是否具备执行操作所需的知识?在性能领域没有必要的知识可能并不一定是坏事(学习这个领域的知识很快,如果有一天你的查询表现不佳,一两天后的结果可能会大不相同),但是,在安全领域,每件事都在改变并且会比预期更快地咬你一口:忽略了一个必要的方面或者错误地引入,我们可以向你保证,日后当数据窃贼来敲门时,你会记住你的错误(考虑权限的例子:向一个用户授予太多权限是危险的,应该只授予绝对必要的权限)。

一旦出现性能或安全问题,你如何知道怎样纠正错误?这可不像乍看起来那么简单,所以一些额外的知识会有所帮助。

性能和安全问题的后果

SQL世界中性能主要与创建、读取、更新或删除(CRUT)的执行性能相关,而安全性通常与数据库实例的整体安全性有关,但是当出现错误时,如何确定先前采取的哪些操作对数据库有害,为什么?

谢天谢地,答案相当简单——看看你最近采取的行动的后果,再看看下表。下表将问题开始前可能采取的措施与最可能的后果做了关联:

正如你所见到的,当确定导致问题的操作时,特定选项的结果应该是一个很好的起点。每个选项都有自己的好处,但每个选项也会带来一些影响,所以首先要了解需要采取的步骤,评估可用的选项,并谨慎选择。

学习自己需要做的每件事,尤其是在处理性能和安全性方面的工作,特别是你没有太多数据库领域的背景知识时,可能会非常困难:在这种情况下,首先,弄清楚正在使用什么样的数据库管理系统,然后阅读性能或安全领域的文档(或两者都读,取决于需要)。

一旦确定了性能和安全性的组合,就可以考虑使用SQL客户端:查询的性能与构建方式密切相关,SQL客户端不仅可以帮助构建出更好的SQL查询,而且好的SQL客户端通过提供一系列附加选项,比如与团队共享查询结果的选项等,从而使处理数据库实例中的数据变得轻而易举。

SQL客户端的安全与性能

如前所述,正确构建的SQL客户端包含非常广泛的职责,包括自动完成查询、根据查询的输出生成图表等。

SQL客户端不仅使调整数据库实例的性能更容易(例如,能密切关注表结构以确保数据库始终保持高性能),而且还允许执行其他操作,比如,与同事或队友分享编写的查询。就如同下面这样:

使用恰当的SQL客户端时,能够访问一些非常有价值的信息,比如有助于你密切关注数据库模式(请参见上文),帮你处理最宝贵的数据,或者自动完成查询,从而帮你提高数据库性能。

当然,数据库实例的安全性仍然由你负责:对于小型开发团队,通过数据库安全检查清单就够了。或者,看一下所选择的数据库管理系统的安全部分,因为许多与安全相关的选项都取决于所使用的是哪种数据库管理系统。

安全性和性能的良好组合能够充分保护你免受威胁,同时避免来自数据库开发人员的抱怨或客户的投诉。如果数据库和web应用程序协调一致,则应:

  • 初始的(root)账号使用强密码锁
  • 不向用户提供超出严格必要的权限(例如,只从数据库读取的用户应该只拥有SELECT权限等)
  • 通过使用防火墙或开发人员遵循恰当的安全程序,能够抵御比如SQL注入等基本的安全威胁
  • 能够在不妨碍其它操作的情况下快速完成web应用程序所需的全部查询(SQL客户端非常适合这种情况:客户端通常提供完成查询所需的毫秒级时间,因此,如果哪个查询速度慢,就从那里开始。)
  • 不会降低用户体验

上面给出的建议中,如果能将哪怕一小部分作为日常工作的一部分,都有助于你在SQL中找到性能和安全性的良好结合。

当然说起来容易做起来难,但按照本文和所选数据库管理系统文档中给出的建议,一切都能变得轻而易举。别忘了,在数据库领域,事物的发展和变化日新月异,今天有用的东西明天可能就不一定有用了——为了达到精益求精,扩展两个领域的知识,并根据具体情况采用恰当的措施。

总结    

希望这篇文章能帮你深入了解数据库世界及其性能和安全相关的权衡。

为了提高数据库实例的性能和安全性,请务必阅读所选数据库管理系统的文档,运行一两次通过数据泄露搜索引擎(如BreachDirectory)的查询,确保你的基础设施不会受到黑客攻击,并且防止身份盗用。

原文链接:

https://dzone.com/articles/security-vs-performance-in-the-sql-world

译者介绍

杨晓娟,社区编辑,西安电子科技大学计算机专业硕士研究生,资深研发工程师,信息系统项目管理师,拥有近20年Java开发经验。分别在NEC、甲骨文、英方从事数据存储、Oracle数据库的数据迁移以及同构/异构数据库复制等研发工作,尤其在数据库、数据编码等方面有深入钻研和了解。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/263374.html<

(0)
运维的头像运维
上一篇2025-05-04 13:09
下一篇 2025-05-04 13:10

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注