繁体   English   中英

读取 Azure 数据流中的 SQL 加密列

[英]Read SQL encrypted columns in Azure Data Flow

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

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

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

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

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

在此处输入图像描述

如果我尝试使用 SP 获取解密数据,则会在“数据预览”选项卡上失败。 在我的数据流设置下方: 在此处输入图像描述 错误: 在此处输入图像描述 注意:为了加密数据,我按照 MS 的这个文档

为了读取您的加密列,您需要对其进行解密。 由于您遵循 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 文档中所写的对称密钥加密了一个列。 并使用示例数据作为我在 SQL DB 中的数据。

  1. 在 SSMS 中创建一个存储过程,如下所示:

    SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[open_symmetric_key_and_decrypt_data] AS BEGIN OPEN SYMMETRIC KEY SSN_Key_10 DECRYPTION BY CERTIFICATE CustomerDetails; 选择 EncryptedID,CONVERT(varchar, DecryptByKey(EncryptedID)) 作为decryptedId
    来自 SalesLT.Customer END GO

  2. 保存存储过程并在 SSMS 中运行它只是为了确保它正常工作

  3. 在 ADF 中,在 Source 中创建了一个新的数据流: 在此处输入图像描述

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

  5. 项目清单

  6. 在数据预览选项卡中单击地图漂移(它应该像这样向您打开一个新选项卡),基本上在这里我们将漂移列作为新列映射到我们的数据,以便您可以在其他活动中使用它。 在写入接收器之前不要忘记删除它在此处输入图像描述

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

检查这些链接: https ://docs.microsoft.com/en-us/azure/data-factory/concepts-data-flow-schema-drift

https://docs.microsoft.com/en-us/sql/relational-databases/stored-procedures/create-a-stored-procedure?view=sql-server-ver16

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM