【问题标题】:Grant appropriate permission to use Symmetric Key in stored proc授予在存储过程中使用对称密钥的适当权限
【发布时间】:2014-03-07 15:56:02
【问题描述】:

我使用以下代码在 SQL2012 中创建了一个对称密钥(以 Windows Admin 用户身份登录):

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '34trg45trgf546t';
CREATE CERTIFICATE SSCert01 WITH SUBJECT = 'SS Certificate 01';
CREATE SYMMETRIC KEY SSN_Key_01 WITH ALGORITHM = TRIPLE_DES ENCRYPTION BY CERTIFICATE SSCert01;

完成后,我将加密应用于某些数据库列。仍然以管理员身份登录,我可以使用密钥成功解密列:

OPEN SYMMETRIC KEY SSN_Key_01 DECRYPTION BY CERTIFICATE SSCert01;
SELECT
    name,
    surname,
    CONVERT(nvarchar(50),DECRYPTBYKEY(PasswordEnc)) as DecryptedPassword
FROM
    [tbl_Users];
CLOSE SYMMETRIC KEY SSN_Key_01;

然后我将上述代码放入存储过程中。问题是我的应用程序使用两个角色访问 SQL,这两个角色访问适当的过程。当这两个角色中的任何一个尝试执行包含上述代码的过程时,我看到了这个错误:

找不到证书“SSCert01”,因为它 不存在或您没有权限。密钥“SSN_Key_01”是 没开。使用前请打开钥匙。

当我以任一角色登录时,他们看不到密钥或证书。因此,任何人都可以建议授予角色哪些权限,以便他们可以(仅)在存储过程中使用密钥/证书来加密/解密数据。除了加密/解密之外,不应允许角色使用密钥/证书执行任何功能。我看过 MSDN/Google 并没有更聪明。

更新 以下代码允许角色使用 proc,但我担心CONTROL 访问权限过多。谁能提供一些说明?

GRANT CONTROL ON CERTIFICATE :: SSCert01 TO Role001;
GRANT CONTROL ON SYMMETRIC KEY :: SSN_Key_01 TO Role001;

【问题讨论】:

    标签: sql-server tsql sql-server-2012


    【解决方案1】:

    我通常解决这个问题的方法是将过程设置为所有者执行,然后确保过程的所有者具有执行解密的正确权限,很多时候过程的所有者无论如何都是 DBO所以除了像这样改变程序之外不需要做额外的配置:

    ALTER PROCEDURE proc_name
    WITH EXECUTE AS OWNER
    AS
    OPEN SYMMETRIC KEY SSN_Key_01 DECRYPTION BY CERTIFICATE SSCert01;
    SELECT
        name,
        surname,
        CONVERT(nvarchar(50),DECRYPTBYKEY(PasswordEnc)) as DecryptedPassword
    FROM
        [tbl_Users];
    CLOSE SYMMETRIC KEY SSN_Key_01;
    

    这意味着您根本不需要向您的应用程序角色或用户授予任何额外的权限。

    【讨论】:

    • 谢谢,我不知道EXECUTE AS。不确定这是否是一种解决方法......?
    • @EvilDr,好吧,这就是你的做法。似乎没有更好的方法。您需要对证书具有 CONTROL 权限才能解密密钥。如果您不想将其授予角色,请使用此答案中指示的存储过程
    • 好的,很好。 GRANT CONTROL 是否允许角色/用户使用 DROPALTER 证书/密钥?
    • 是的,CONTROL 允许用户放下密钥。
    • 这很棒,而且似乎比授予权限 +1 更安全
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-30
    • 1970-01-01
    • 1970-01-01
    • 2020-06-17
    • 2018-11-20
    • 2015-05-17
    相关资源
    最近更新 更多