当前位置: 首页 > 科技观察

SQL中如何平衡安全性和性能?_0

时间:2023-03-23 11:40:16 科技观察

如果您发现自己以某种方式进入数据库世界,那么您可能已经对数据库安全性和性能有所了解。数据库管理系统确实给数据库带来了好处,但是您是否考虑过从安全和性能的角度需要做出的权衡,以便使您的选择最有效?这就是本文的主题。安全性和性能是否相关?首先要考虑的是性能和安全性密切相关。这样做的主要原因是开发人员,无论是初级还是高级,在他们职业生涯的某个时刻开始意识到,当安全性提高时,性能目标通常会变得有点困难(即,开发人员通常需要“转弯”来实现他们的目标目标)来提高性能,有时会以牺牲安全为代价——例如,放宽权限等。用MarkEldridge做的图来说明:希望你能通过这张图理解前面表达的意思。当然,这个箭头反映了密码管理中安全性和便利性之间的权衡,这与SQL中的安全性和性能没有直接关系,但两者可以进行比较。提高安全性通常意味着使与性能相关的任务更加困难,反之亦然。SQL中的安全性和性能现在,您可能想知道,SQL中的性能和安全性是如何结合在一起的?总之,很明显——当一个方面(安全性或性能)提高时,另一个方面需要额外的维护措施,反之亦然。以下是DBA和开发人员在考虑安全性和性能时通常会想到的一些主要措施:如上表所示,所有选择通常都有好处,或两者兼而有之。在这方面,您还需要考虑另一个问题:您是否具备执行操作所需的知识?在性能领域没有必要的知识可能不一定是坏事(学习这个领域很快,如果有一天你的查询表现不佳,一两天后结果可能会大不相同),但是,在安全方面领域,一切都在变化,并且会比预期更快地咬你:忽略一个必要的方面或错误地介绍它,我们可以向你保证,当数据窃贼来敲你的门时,你会记住你的错误(考虑权限的例子:授予给一个用户太多的权限是危险的,应该只授予绝对必要的权限)。一旦出现性能或安全问题,您如何知道如何纠正错误?它并不像乍看起来那么简单,所以一些额外的知识会有所帮助。性能和安全问题的后果SQL世界中的性能主要与创建、读取、更新或删除(CRUT)的执行性能有关,而安全性通常与数据库实例的整体安全性有关,但是当出现问题时,你如何确定之前采取了哪些对数据库有害的操作以及为什么?值得庆幸的是,答案相当简单——看看你最近的行为的后果,然后看看下表。下表将问题开始之前可能采取的行动与最可能的后果相关联:如您所见,在确定导致问题的行动时,特定选项的结果应该是一个很好的起点。每个选项都有其自身的好处,但每个选项也有一些含义,因此请先了解您需要采取的步骤,评估可用的选项,然后谨慎选择。学习您需要做的一切,尤其是在处理性能和安全性时,可能会非常困难,尤其是如果您在数据库领域没有太多背景的话:在这种情况下,首先要弄清楚正在做什么什么样的数据库管理系统使用,然后阅读性能或安全领域(或两者,视需要而定)领域的文档。一旦确定了性能和安全的组合,就可以考虑使用SQL客户端:查询的性能与其构造方式密切相关,SQL客户端不仅有助于构造更好的SQL查询,而且还优秀的SQL客户端,通过提供一系列附加选项(例如与您的团队共享查询结果的选项),使处理数据库实例中的数据变得轻而易举。SQL客户端安全性和性能如前所述,正确构建的SQL客户端具有非常广泛的职责,包括自动完成查询、根据查询输出生成图形等。SQL客户端不仅可以更轻松地调整数据库实例的性能(例如,密切关注表结构以确保数据库保持高性能),而且还允许执行其他操作,例如与同事共享书面查询或队友。是这样的:当使用正确的SQL客户端时,您可以访问一些非常有价值的信息,例如帮助您密切关注数据库模式(见上文),帮助您处理最宝贵的数据,或者自动完成查询,从而作为帮助您提高数据库性能。当然,数据库实例的安全仍然是你的责任:对于小型开发团队来说,通过数据库安全检查表就足够了。或者,查看您选择的数据库管理系统的安全部分,因为许多与安全相关的选项取决于您使用的数据库管理系统。安全性和性能的良好组合可以充分保护您免受威胁,同时避免数据库开发人员的投诉或客户的投诉。如果数据库和Web应用程序协调一致,则:初始(根)帐户使用强密码锁定,并且不会为用户提供比严格必要的更多权限(例如,只从数据库读取的用户应该只有SELECT特权等)通过使用防火墙或开发人员遵循适当的安全程序来防止基本的安全威胁,例如SQL注入可以快速完成Web应用程序所需的所有查询,而不会妨碍其他操作(SQL客户端非常适合这种情况:客户端通常提供完成查询所需的毫秒时间,因此如果速度慢,请从那里开始。)如果上面给出的一小部分建议可以用作您日常工作的一部分,则不会降低用户体验,两者都有帮助你会发现SQL很好地兼顾了性能和安全性。当然,这说起来容易做起来难,但是遵循本文和您选择的数据库管理系统的文档中给出的建议可以让事情变得轻而易举。不要忘记,在数据库领域,事物发展变化日新月异,今天有用的东西明天未必有用——要想做到卓越,就要扩展两个领域的知识,并根据具体情况采取适当的措施情况。总结希望本文能让您对数据库世界及其性能和安全相关的权衡有所了解。要提高数据库实例的性能和安全性,请务必阅读所选数据库管理系统的文档,并通过BreachDirectory等数据泄露搜索引擎运行一两次查询,以确保您的基础设施免受黑客攻击并防止身份盗用。原文链接:https://dzone.com/articles/security-vs-performance-in-the-sql-world译者介绍杨小娟,社区编辑,西安电子科技大学计算机专业硕士研究生,高级研发工程师,信息系统项目经理,拥有近20年的Java开发经验。在NEC、Oracle、英方从事过Oracle数据库的数据存储、数据迁移、同构/异构数据库复制工作,尤其对数据库和数据编码有深入的学习和理解。