【发布时间】:2019-05-16 09:43:08
【问题描述】:
我有一个直接连接到 SQL 服务器的 Windows 客户端应用程序。 我现在正在使用 SQL Server 身份验证,但我想替换它以提高安全性。 (我不想将凭据与应用程序一起部署)
我想使用 Azure AD 提供对应用程序的访问(并将访问令牌转发到数据库)
我想要的设置如下所示: 我有一个 Azure AD 应用注册(服务主体)。 - 我分配了单独使用应用程序的权限 --> 企业应用程序 --> 需要用户分配 --> 是 - 我授予 SQL 数据库上的应用程序(服务主体)权限。 - 我现在可以做的是以登录用户的身份访问数据库(API 权限 Azure SQL Server --> user_impersonation),但这意味着我必须直接在数据库上授予对所有个人用户的访问权限。 我想以应用程序的形式访问数据库。
这可能吗?如果可以,怎么做?
现在,我可以使用 ADAL 作为服务主体连接到数据库,但是我必须为服务主体创建一个客户端密码并将其与应用程序一起部署 --> 不安全。或者我可以将 MSAL 与 user_delegation 一起使用,并以登录用户身份访问数据库,但这意味着我必须让他直接访问数据库,并且他可以通过其他方式访问它,就像使用应用程序一样(即在 MSSMS 中)。
【问题讨论】:
-
一种方法可能是加密文件并让您的应用程序解密它。这样一来,任何有权访问部署服务器的人都无法真正读取应用程序机密。