【问题标题】:Read SQL encrypted columns in Azure Data Flow读取 Azure 数据流中的 SQL 加密列
【发布时间】:2022-06-29 19:40:32
【问题描述】:

我在 Azure Synapse Analytics 数据库的表中有几个加密列,我想在 Azure 数据流中以解密模式读取这些列。这怎么可能?

我能够解密该列并在 SSMS 中读取它,使用以下示例:

SELECT
    CAST(decryptbykey([Encrypted Number]) as nvarchar(254))  'Decrypted Number'
FROM ITO.Table1

但我无法在 Azure 数据流中运行相同的查询。我还没有从 MS 那里找到任何指导。

如果我读取 Azure 数据流中的加密列,它看起来像:

注意:为了加密数据,我是关注this doc的MS

【问题讨论】:

  • 你平时是怎么解密的?就像用一些存储过程包装它?如果在 ADF 中调用存储过程,让存储过程自己做,对你有帮助吗?

标签: sql azure-data-factory encryption-symmetric


【解决方案1】:

为了读取您的加密列,您需要对其进行解密。 由于您遵循 MS 文档,这就是您需要做的:

-- 首先,打开用于解密数据的对称密钥。
打开对称密钥 SSN_Key_01
证书解密 HumanResources037;
去吧

然后你应该解密你的数据,如下所示: https://docs.microsoft.com/en-us/sql/relational-databases/security/encryption/encrypt-a-column-of-data?view=azure-sqldw-latest#encrypt-with-simple-symmetric-encryption

这是我针对您的用例的方法: 我使用 MS 文档中所写的对称密钥加密了一个列。 并使用 Sample 数据作为我在 SQL DB 中的数据。

  1. 像这样在 SSMS 中创建一个存储过程:

    设置 ANSI_NULLS ON 去 设置 QUOTED_IDENTIFIER ON 去 创建过程 [dbo].[open_symmetric_key_and_decrypt_data] 开始 OPEN SYMMETRIC KEY SSN_Key_10 DECRYPTION BY CERTIFICATE CustomerDetails; 选择 EncryptedID,CONVERT(varchar, DecryptByKey(EncryptedID)) 作为decryptedId
    来自 SalesLT.Customer 结尾 去吧

  2. 保存存储过程并在 SSMS 中运行以确保其正常运行

  3. 在 ADF 中,在 Source 中创建了一个新的数据流:

  4. 使用存储过程加载数据。

  5. 在数据预览选项卡中单击“地图漂移”(它应该像这样向您打开一个新选项卡),基本上在这里我们将漂移的列作为新列映射到我们的数据,以便您可以在其他活动中使用它。

现在您可以对已解密的列做任何您想做的事情。

【讨论】:

    猜你喜欢
    • 2018-12-05
    • 1970-01-01
    • 2021-09-26
    • 2020-05-18
    • 1970-01-01
    • 2013-08-14
    • 1970-01-01
    • 1970-01-01
    • 2015-07-06
    相关资源
    最近更新 更多