我们在SQL Server express版本中有一个数据库,第三方应用程序使用它来存储数据。 当用户通过这个第三方程序login他们的Windows身份validation是使用和(我假设)他们的Windows身份validation传递到SQL数据库以及。 我们给了用户公开的和dbwriter的angular色,让他们能够写入数据库。 如果我们从dbwriterangular色中删除它们,则第三方应用程序不能执行它所需的查询。
问题是通过向用户提供数据编写者angular色,我们赋予他们通过服务器pipe理工具login并手动更改数据的能力。 由于我们的审计准则,我们不能允许这样做。
理想情况下,我想这样做,当一个用户在某个angular色,他们不能login通过服务器pipe理实用程序进行更改,但是当他们通过第三方软件login,并作出第三方软件所需的更改。 到目前为止唯一的解决scheme是,当有人尝试通过服务器实用程序login并使用第三方应用程序的Windows身份validation时,将logintypes更改为在创build数据库期间分配的数据库login名。 这不是一个很好的解决scheme,因此我在这里。 任何想法都将被大大的削弱!
真诚的,阿南德
虽然可能是应用程序传递了最终用户的Windows凭据,但可能不是这样。 启动SQL事件探查器并查看正在执行数据更改的login名。 许多应用程序都让应用程序服务器代表用户执行数据操作,因此您可能会看到该帐户正在执行此操作。 如果不是,则可以使用应用程序angular色。 查看http://msdn.microsoft.com/en-us/library/ms190998.aspx 。
使用应用程序angular色是做到这一点的最好方法。 假设你正在使用C#,这是一些示例代码 。