我对示例at this link感到困惑。类似的例子存在here,但我更喜欢第一个。这里简要概述了我的困惑:
我不确定为什么创建了examplecertuser或者它的用途是什么。更重要的是,由于login(testuser)和证书创建用户(examplecertuser)之间没有连接,这意味着任何LOGIN都能够运行存储过程。我通过创建另一个登录并让它运行存储过程来验证这一点。
我正在研究这个问题,以避免根据我阅读的所有建议进行数据库所有权链接。我的目标是授予用户运行存储过程的能力,该存储过程跨越多个数据库,但限制它们只运行该存储过程。使用我看到列出的示例,我想我将授予每个人运行存储过程的能力,而无法限制其他人。
要以更直接的格式重新提问,"如何使用链接中的示例仅允许选定的登录来运行存储过程?" 用户(examplecertuser)似乎是授权的关键,但我没有看到用户和登录之间的任何关联。
答案 0 :(得分:1)
代码签名使您能够在某些情况下(与任何时间相反)向基础对象授予权限。比如说,我有一张包含敏感信息的表格。我不希望任何人从中进行选择(即,编写“select * from myTable”),但我可以通过存储过程授予他们访问权限(因此我可以限制他们可以使用业务逻辑选择的内容)。所以我完成了对存储过程进行签名的练习。我仍然可以向单个用户授予(或拒绝)对该过程的执行权限。但是,当检查存储过程访问的基础对象的权限时,它将应用模块签名用户的权限(示例中为examplecertuser)。
关于您的具体问题