文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-12-01 17:46

关注

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

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

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

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

SQL中的安全性和性能

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

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

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

性能和安全问题的后果

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

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

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

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

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

SQL客户端的安全与性能

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

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

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

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

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

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

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

总结    

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

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

原文链接:

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

译者介绍

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

来源:51CTO内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯