如何从 Azure 数据工厂安全地调用 Azure 逻辑应用

Posted

技术标签:

【中文标题】如何从 Azure 数据工厂安全地调用 Azure 逻辑应用【英文标题】:How to securely invoke a Azure Logic App from Azure Data Factory 【发布时间】:2021-08-07 15:44:50 【问题描述】:

我有一个调用逻辑应用程序的数据工厂管道。逻辑应用设计器提供的 URL 在 URL 中包含一个签名。在数据工厂管道中,我有一个使用 POST 方法调用逻辑应用程序的 Web 活动。这行得通,应用程序被调用。

我希望将此签名与 URL 分开并将其存储在 Azure Key Vault 中,或者使用身份验证。数据工厂中的身份验证选项包括:基本、托管身份或客户端证书。我尝试follow this article to enable authentication via Azure Active Directory OAuth,但目前不知道这将如何与 Azure 数据工厂一起使用。

我知道可以启用 API 管理网关以对包括逻辑应用在内的 API 启用更复杂的身份验证,但我目前不认为我应该这样做。

我在 Logic App 界面中注意到的另一件事是您无法发出执行授权。这与其他 Azure 服务(例如 Data Lake)不同,例如,您可以发出“类似使用”的授权来读取容器。只有授权窗格可用于定义声明。我有一点尝试,但我缺少关键信息。

最终我不希望签名暴露给包括我自己在内的开发人员。

【问题讨论】:

【参考方案1】:

我个人喜欢将 PostURL 存储在 Azure KeyVault 中,然后在 ADF 中执行 Azure KeyVault GET API 调用,然后将 ADF 中的输出安全地传递给请求以触发逻辑应用程序。这是两项无异的活动,而且是一种安全方法,可以只使用 ADF 中原生的托管身份验证。

以下是如何从 AKV 获取值的示例:

从 AKV 中获得价值

这是 Azure KeyVault 示例机密的 URL:

https://kv-ccok-ops-@pipeline().globalParameters.Environment.vault.azure.net//secrets/FILESERVER-UserName?api-version=7.1

使用 AKV 的价值

这个例子应该非常容易理解。

【讨论】:

【参考方案2】:

我相信您可以将Managed Identity of the Web Activity 与Azure AD OAuth feature for Logic Apps 配对。

所需的声明需要在 Authorization 刀片上为 setup 以验证令牌。

【讨论】:

以上是关于如何从 Azure 数据工厂安全地调用 Azure 逻辑应用的主要内容,如果未能解决你的问题,请参考以下文章

将存储安全地连接到 Azure Data Lake Analytics 或数据工厂

将数据从 Azure Blob 存储复制到 Azure SQLDB 时,Azure 数据工厂错误地复制单元格值

Azure 数据工厂中的 Azure Synapse 存储过程:是同步调用吗?

如何在 Azure 数据工厂中正确展平分号数组?

将 Azure 数据工厂管道有条件地部署到另一个资源组

Azure数据工厂复制字符串失败