当前位置: 首页 > 知识库问答 >
问题:

Azure数据工厂存储事件触发器-身份验证

关翰
2023-03-14

Azure Data Factory如何认证来自事件网格的传入消息?也就是在这幅图中,从事件网格到数据工厂的“推送消息”是如何得到认证的:https://docs . Microsoft . com/en-us/azure/Data-Factory/how-to-create-Event-trigger # storage-Event-trigger-Data-Factory-pipeline-run

将这些通知传递到数据工厂endpoint时使用的身份是什么?身份验证是如何进行的?

我试图通过检查ADF在存储帐户上创建的事件网格订阅来自己解决这个问题,使用了这个AZ CLI命令:https://docs . Microsoft . com/en-us/CLI/azure/Event Grid/Event-Subscription?view = azure-CLI-latest # az _ event grid _ event _ subscription _ show

az eventgrid event-subscription show --name “abc123-...” --source-resource-id /subscriptions/subId/resourceGroups/rgName/providers/Microsoft.Storage/storageAccounts/storageAcctName --include-full-endpoint-url true --include-attrib-secret true

完整的endpointUrl包括指向特定工厂、资源组、订阅、租户等的triggerName、querystring参数。,但我没有看到任何看起来像令牌/秘密的东西。

最后,如果我尝试直接在浏览器中点击完整的终结点 URL,数据工厂似乎请求客户端证书进行身份验证。

共有1个答案

祁正浩
2023-03-14

-更新更加清晰

它是作为查询参数的客户端机密。EventGridTrigger基本上发送带有预处理事件消息的HttpTrigger(推送)以进行验证。

  • 存储(事件发布者)
  • Webook(事件处理程序)
  • 事件网格

在 Webhook 上有一个验证,在侦听事件之前,每个新注册的 Webhook 都需要首先由事件网格进行验证。这是在事件资源(如存储帐户)中创建事件订阅时隐式发生的情况,对事件的订阅的排列是隐式的。如果要使用自定义代码或本地客户端,则需要响应事件网格将发送的验证令牌。

它使用验证握手机制,而不考虑所使用的方法(在本例中,客户机机密作为查询参数)。作为创建事件订阅的一部分,webhook服务可以使用客户端密钥(如访问令牌或共享密钥)进行验证。

事件网格支持两种验证订阅的方式。同步握手和异步握手

在这种情况下,使用同步握手,事件网格发送订阅验证事件,其数据部分包括validationCode属性。您的应用程序(ADF)验证验证请求是否针对预期的事件订阅,并同步返回响应中的验证代码。参考:验证详细信息

当新事件准备就绪时,事件网格服务会将 HTTP 请求 POST 发送到配置的终结点,并将事件放在请求正文中。

当您尝试测试endpoint验证并接收到HTTPendpoint的事件时,您看到对客户端证书进行身份验证的请求。

事件网格使用推送模型,当存储将消息放入系统时,它会尽快中继消息。Azure数据工厂上的事件触发器充当传入消息的活动侦听器,并正确触发相关管道。存储事件触发器本身不与存储帐户直接联系,数据工厂将使用存储在链接服务中的凭据与存储直接联系。确保正确设置了链接服务

有两种类型的托管标识根据用于创建ADF的方法,每当预配ADF v2时,都会自动创建托管标识。使用SDK/REST API创建ADF时,标识会话必须设置为true才能自动创建MI。如果您有较早的,托管标识没有客户端机密。它只有证书,您无法访问。

用户分配的托管身份使Azure资源能够向云服务(例如Azure Key Vault)进行身份验证,而无需在代码中存储凭据。

 类似资料:
  • 我在 Azure 数据工厂中具有事件触发器,它在 Azure Blob 存储中创建新 Blob 时触发。但我的触发器在创建 Blob 时没有触发。 已按照以下链接进行操作,但卡在下面提到的点:Azure 数据工厂:事件未启动管道。 环境详情: 事件网格已注册,ADF为v2并将参数传递给管道。我的问题是我是否需要激活Azure存储事件订阅?如果是这样,我的事件处理程序应该是什么(在我的情况下是ADF

  • 我们有一个将文件复制到Azure文件服务器的外部源。文件大小约为10GB。我想在Azure文件服务器上使用Azure Data Factory完成文件复制后,立即将此文件复制到Azure Blob存储。供应商无法将此文件复制到Blob容器。有人能帮我配置什么类型的触发器吗。我可以手动复制,但我正在寻找是否可以实现自动化。我甚至不能安排这个活动,因为来自外部源的文件副本是随机的。 谢谢

  • Azure函数存储帐户Blob容器触发器 在我们的一个用例中,我正在为具有以下条件的存储帐户容器中的任何活动寻找Azure函数触发器 < li >具有特定命名约定的容器(名称如xxxx-input) < li >它应该自动检测是否创建了新的容器(具有特定的命名约定) < li>

  • 我正在调查可用于 Azure 存储的 Webhook/事件触发器。不幸的是,文档似乎专注于演示如何让 Azure 门户为我构建函数,这不允许进行本地测试。 特别是,我正在研究捕获已删除 Blob 的时间。 我的使用示例(Azure函数): 当我从存储容器中删除一个blob时,问题出现了:函数没有被触发。 然而,我发现,如果我在控制台中点击<code>CTRL C</code>则该函数被触发。 有人

  • 我的Python Azure函数配置文件()定义了一个Blob存储触发器。 当Azure功能唤醒时(即,Live Metrics中显示的服务器在一段睡眠时间后变为在线),它将处理所有现有Blob,而不管哪些Blob已经生成触发事件。 我注意到< code > azure-web jobs-hosts/blob receipts 文件夹中填充了< code>sandboxhost637nnn文件夹。

  • 我已经实现了一个EventGrid触发器来响应Blob存储事件,其逻辑简化如下: 外部API的响应时间不长(1秒或更短),我对主机的配置设置为默认(因此允许无限数量的并发调用)。 当同时添加多个blob(从只有2个blob开始)时,我在日志中得到了很多重复的事件(脚本正在快速地一个接一个地上传blob,中间没有等待时间)。 我觉得这可能是由于我从不承认收到事件,我不知道我是否应该在我的代码中执行此