加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

从ASP.NET Core连接到SQL Server的最佳实践?

发布时间:2020-12-15 19:52:57 所属栏目:asp.Net 来源:网络整理
导读:我最近遇到了一些SQL Server并不喜欢默认的AppIdentityUser登录的问题,所以我继续创建了一个具有写访问权限的自定义数据库用户. 但它让我想知道 – 这是最好的方法吗? 我想知道Asp.Net Core最好的SQL Server登录方法是什么.我知道有一个类似于普通.NET的问
我最近遇到了一些SQL Server并不喜欢默认的AppIdentityUser登录的问题,所以我继续创建了一个具有写访问权限的自定义数据库用户.

但它让我想知道 – 这是最好的方法吗?

我想知道Asp.Net Core最好的SQL Server登录方法是什么.我知道有一个类似于普通.NET的问题,但是你无法加密Core web.config / appsettings.json(嗯,以一种快速而直接的方式).

以下是我看到的选项:

通过存储在appsettings.json中的SQL Server ID进行连接.

> Pro:已经配置好了.
>缺点:web.config / appsettings.json中的密码;必须专门配置SQL Server ID.不集中可撤销.

通过ASP.NET“AppIdentityUser”通过用户NT ID连接.

> Pro:appsettings.json中没有密码.
>缺点:不可集中撤销.似乎仅限于用户的服务器名称.

通过Active Directory用户连接.

>专业:轻松可以撤销.
>缺点:appsettings.json中的Active Directory用户密码.如果有人不小心在公司的另一个应用程序中重用该用户,并且该用户被破坏,那可能会很糟糕.

我还缺少其他选择吗?在哪些情况下使用以下哪些选项?哪个更标准?有没有我不考虑的利弊?

解决方法

您应该绝对使用自定义SQL登录来连接到数据库.在底层,SQL登录可以绑定到本地帐户,服务帐户,网络帐户等.实际上并不重要.

您似乎在这里遇到的真正问题是不希望(正确地)以纯文本形式公开登录凭据.我不知道为什么你在这里继续引用Web.config,因为ASP.NET Core没有使用它.相反,可以选择使用各种配置提供程序.默认情况下,ASP.NET Core(至少从2.0开始)添加了一个JSON配置提供程序,用于在项目中查找appsettings.json和appsettings.{environment} .json,命令行配置提供程序,用户机密配置提供程序,以及最后是环境变量配置提供程序.

最后两个对你的情况最有意思.在开发中,您应该使用用户机密.在生产中,您应该使用环境变量.但是,两者都不以加密的方式存储秘密.这两种方法的好处是秘密不在您的项目中,因此也不在您的源代码管理中.尽管两者都没有加密,但它并不像你想象的那么大.在任何一个中获取秘密都需要直接访问服务器/开发机器.此外,用户机密默认绑定到特定用户帐户,只能由该用户访问,并且环境变量可以以相同的方式设置.因此,有人需要获得对计算机的访问权并获得对特定帐户的访问权限.这实际上是一个相当高的标准,如果它发生,那么暴露数据库密码实际上是你最不关心的问题.

但是,如果您需要真正的加密,则可以选择使用Azure KeyVault.无论您的应用程序是否实际托管在Azure中,都可以使用KeyVault,虽然它不是免费的,但它非常便宜.

最后,您始终可以创建自己的配置提供程序或源第三方配置提供程序.例如,虽然默认的JSON提供程序不支持加密,但您可能会写一个.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读