【问题标题】:How to detect and get information of table column encryption如何检测和获取表列加密信息
【发布时间】:2018-01-13 19:01:10
【问题描述】:

我想做一个查询来检查加密并输出随机给定的数据库表中的所有列(如果它们已加密)。 所以我希望输出看起来像这样

Column Name   |   Encryption Key Name  |  Encryption Type  |  Algorithm Used
Baby Power         Key name for bp           Randomized       AEAD_AES_256_CBC_HMAC_SHA_256
Diaper             Key name for Diaper       Deterministic    AEAD_AES_256_CBC_HMAC_SHA_256   

【问题讨论】:

    标签: sql-server encryption


    【解决方案1】:

    您可以使用以下查询:

    SELECT 
        t.name AS TableName,
        c.name AS ColumnName,
        k.name AS KeyName,
        c.encryption_type_desc,
        c.encryption_algorithm_name
    FROM sys.columns c
        INNER JOIN sys.column_encryption_keys k ON c.column_encryption_key_id = k.column_encryption_key_id
        INNER JOIN sys.tables t ON c.object_id = t.object_id
    WHERE encryption_type IS NOT NULL
    

    这将返回当前数据库中的所有加密列。如果您只想要特定表,请在 t.name 上添加带有过滤器的 where 条件。

    一般来说,如果您想查找有关不同数据库对象的信息,sys 架构下的系统视图是正确的位置。

    【讨论】:

      【解决方案2】:

      在表级别,这将列出列并指示哪些是加密的。

      SELECT 
          DB_NAME()                               AS [DB_NAME],
          T.[name]                                AS [TABLE_NAME],
          C.[name]                                AS [COLUMN_NAME],
          IIF(C.encryption_type IS NULL, 0, 1)    AS [ENCRYPTED]
      FROM 
          sys.tables AS T
          INNER JOIN sys.columns AS C ON T.[object_id] = C.[object_id]; 
      

      【讨论】:

        猜你喜欢
        • 2014-02-11
        • 2018-04-23
        • 1970-01-01
        • 2015-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多