【问题标题】:How to check who has access to symmetric keys in SQL Server如何检查谁有权访问 SQL Server 中的对称密钥
【发布时间】:2014-08-04 09:24:57
【问题描述】:

我想知道所有有权访问对称密钥的用户以及他们拥有的访问权限类型。你能告诉我我该怎么做吗?

【问题讨论】:

    标签: sql-server user-permissions symmetric-key


    【解决方案1】:

    也许这个查询可以提供帮助:

    select u.name, p.permission_name, p.class_desc, 
        object_name(p.major_id) ObjectName, state_desc 
    from sys.database_permissions  p join sys.database_principals u
    on p.grantee_principal_id = u.principal_id
    where class_desc = 'SYMMETRIC_KEYS'
    

    【讨论】:

    【解决方案2】:

    这个改进的查询提供了当前数据库的名称,以避免错误。此外,如果您使用的是 SYMMETRIC KEYS,通常您也在使用 CERTIFICATES,这就是为什么查看 CERTIFICATE 权限也是一个不错的选择:

    select db_name(), u.name, p.permission_name, p.class_desc, 
        object_name(p.major_id) ObjectName, state_desc 
    from sys.database_permissions  p join sys.database_principals u
        on p.grantee_principal_id = u.principal_id
        where class_desc in('SYMMETRIC_KEYS', 'CERTIFICATE')
    order by u.name
    

    【讨论】:

      【解决方案3】:

      上面的答案实际上并不反映对象名称,请考虑这个:

      select
            [database] = db_name()
          , u.name
          , p.permission_name
          , p.class
          , p.class_desc
          , ObjectNameForObjectORColumn
              = object_name(p.major_id) 
          , objectNameActual
              = case class_desc
                  when 'SYMMETRIC_KEYS' then sm.name              
                  when 'CERTIFICATE' then [cert].name             
            end
          , state_desc 
      from sys.database_permissions  p 
      inner join sys.database_principals u
          on p.grantee_principal_id = u.principal_id
      left outer join sys.symmetric_keys sm
          on p.major_id = sm.symmetric_key_id
          and p.class_desc = 'SYMMETRIC_KEYS'
      left outer join sys.certificates [cert]
          on p.major_id = [cert].[certificate_id]
          and p.class_desc = 'CERTIFICATE'
      where class_desc in('SYMMETRIC_KEYS', 'CERTIFICATE')
      order by u.name
      

      更多https://danieladeniji.wordpress.com/2015/10/09/sql-server-list-permissions-for-user/

      【讨论】:

      • ObjectNameForObjectORColumn vs objectNameActual 太棒了
      猜你喜欢
      • 2011-12-13
      • 2017-04-23
      • 1970-01-01
      • 1970-01-01
      • 2011-02-24
      • 2021-03-25
      • 2011-10-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多