【问题标题】:How to get/set parameterized connection string from Key Vault in Azure Data Factory?如何从 Azure 数据工厂中的 Key Vault 获取/设置参数化连接字符串?
【发布时间】:2019-12-17 11:43:55
【问题描述】:

我在 Azure 数据工厂链接服务中有一个参数化的连接字符串,如下所示:

集成 安全=假;加密=真;连接超时=30;数据 来源=xyz;用户ID=admin;密码=密码;初始 目录=@{linkedService().LSDBName};

数据库的值在运行时从管道变量传递。

我想将此连接字符串保存到 Azure Key Vault,但问题是从 Key Vault 读取值后,链接服务参数“LSDBName”不会被实际值动态替换,它会尝试连接以“@{linkedService().LSDBName}”作为数据库名称。

有什么方法可以保护密钥库中的动态参数化连接字符串?还是实现此目的的解决方法?

谢谢!

【问题讨论】:

  • 您的管道软件使用什么? Azure Devops?
  • 您是如何将此连接字符串保存到 AKV 的?
  • 我遇到了完全相同的问题。你解决过这个问题吗?
  • @DavidC 我正在使用 Azure 数据工厂。
  • @LeeHarrison 这个解决方案对我们不起作用。我们只需要将密码移动到 AKV,并从 ARM 模板参数中注入连接字符串的其余部分。

标签: azure azure-data-factory azure-keyvault azure-data-factory-2


【解决方案1】:

如果要将整个连接字符串存储在密钥保管库中,则必须在“Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;”中传递连接字符串格式。为每个数据库创建单独的连接字符串,并将其存储在具有不同秘密的密钥库中,然后在 ADF 中创建参数化链接服务,将这些秘密作为参数。

【讨论】:

  • 微软提出了类似的解决方案。他们推荐使用 AKV 机密名称作为唯一参数的单个 SQL 链接服务。当您使用链接的服务时,您会传入秘密名称,以便它使用正确的连接字符串。
【解决方案2】:

我的想法是使用Set Variable Activity+Azure Function Activity。

第一步是使用 Set Variable Activity 获取 LinkedService 连接字符串。

第二步是将变量作为参数传递给 Azure 函数活动。然后使用AKV sdk将连接字符串值存储在azure函数里面。

顺便说一句,我认为您的连接字符串已经参数化,安全问题已经避免。您不必再次将其存储到 AKV 中,因为我们主要从 AKV 读取私人信息,而不是将存储信息写入 ADF 中的 AKV。只是我个人的看法。

【讨论】:

  • 连接字符串确实包含 sql 的用户名和密码。只有数据库名称是参数化的,因为它是从管道变量中设置的。所以,我确实需要将它存储在 AKV 中
  • @coder_andy 那么,您能试试我在回答中提到的解决方案吗?
猜你喜欢
  • 2019-08-11
  • 2018-07-19
  • 1970-01-01
  • 1970-01-01
  • 2021-07-10
  • 2023-01-21
  • 1970-01-01
  • 2019-09-17
  • 2019-08-12
相关资源
最近更新 更多