你还在使用存储过程吗?

文摘   2024-09-27 16:50   上海  

上周,reddit 网 r/dotnet 区的网友 technolang 发帖:「你还在使用存储过程吗?」‍‍‍‍

我很好奇为什么 2024 年了我们还在使用存储过程。难道网络应用中没有一个业务层来处理所有事情吗?依赖 DBA 并在数据库层创建依赖关系似乎没有必要。另外,存储过程调试起来很麻烦。所以它有什么好处呢?

网友 xabrol 给出了非常用心的回答。

他说:

我不是说教,只是讲点事实。

我从事咨询行业,曾在银行和抵押贷款公司工作。我与数以百计的客户合作过,见过你能想象到的所有环境。大多数年收入超过十亿美元的大公司都有数据仓库,而应用程序开发者并没有太多的数据库访问权限。很多时候这很糟糕,但这是很多开发者不得不面对的现实。

我目前的一个客户根本不给任何访问权限,我们只能通过 RDP 虚拟桌面来使用他们的代码或系统;他们甚至不给我们配备笔记本电脑。我们必须构建和编写所有代码,通过虚拟桌面处理所有事务,而且不能复制粘贴到虚拟桌面;还必须详细记录每个开发者需要访问的电子表格、合理解释为什么开发者需要访问数据库或表格。我们团队中只有一个人能访问整个数据库。

大多数公司都不信任他们的开发者编写的安全代码。这是有道理的,因为每 10 个能写出基本的 20 页垃圾应用程序的开发者中,只有一个能产出有点用的东西。

他们也不冤枉。

我曾与开发者和企业家一起参加过扩充代码库的电话会议。开发者在电话中大谈他们的应用程序很好,为什么它可以拥有现有的访问权限,以及它有多么现代化和安全。然后我看了代码 -- 我见过的最大的一堆烫手的垃圾。我发现了至少 6 个安全漏洞,它们公然允许我访问数据库或文件系统。

还有一次,有一个应用的应用池是以管理员身份运行的;他们有一个上传图片的文件上传功能,在那里我可以上传任何文件,甚至是可执行文件。这个网站是在 asp.net 网页表单上运行的,当时还是 2016 年。因此,你可以上传一个带有运行时脚本的 aspx 文件来运行 shell 命令,然后你可以通过上传路径浏览它,就像浏览普通的 aspx 页面一样,然后引擎就会渲染它并以管理员身份运行 shell 命令。

而且「超级安全」。他们的开发者也引以为豪。不过他们很快都被抓包,现在都不在那里工作了。

这就是为什么很多大公司都有超级严格的政策和环境,因为他们的开发者根本不知道自己在做什么。他们不知道如何正确设置安全的服务器环境、如何用正确的权限模式构建数据库,还把连接字符串的详细信息存储在应用程序设置文件中。而一群有权限获取的开发者可以看到这些连接字符串......

我可以说上一整天。

当你的公司每年赚 400 亿美元时,你必须保护自己免受最薄弱环节的影响。很多公司都喜欢外包,所以他们需要确保自己有一个安全的环境,在所有方面都是权限最低的。
---
db-master说:
有时候存储过程操作起来确实繁琐。怎样才能兼顾安全与操作的简明呢?

Bytebase 能为你解决 😼


Bytebase 2.23.0 - 支持 Entra (Azure AD) 用户/组同步

深度解读 2024 Gartner DevOps 魔力象限

Bytebase 产品介绍

Bytebase 签约澳洲 ROLLER,助力文娱场馆一体化 SaaS 统一数据库操作



Bytebase
百万下载量的开源 SQL 审核,数据库 DevSecOps 和 CI/CD 团队协同工具,专为开发者, DBA 和安全团队打造。同时被 CNCF Landscape 和 Platform Engineering 组织收录。
 最新文章