gpt4 book ai didi

azure - 用于具有托管身份的事件网格 API 连接的 ARM 模板

转载 作者:行者123 更新时间:2023-12-02 06:26:02 25 4
gpt4 key购买 nike

从逻辑应用创建新的事件网格连接时,可以从以下 3 种连接身份验证方法中进行选择:

  1. 登录
  2. 服务主体
  3. 托管身份

#1 登录要求用户以交互方式登录/身份验证。

#2 服务主体需要提供租户客户端 ID客户端 key 值。

很明显需要如何修改此类 API 连接的 ARM 模板:parameterValues需要添加如下。

"parameterValues": {
"token:clientId": "[parameters('ConnectionClientId')]",
"token:clientSecret": "[parameters('ConnectionClientSecret')]",
"token:TenantId": "[parameters('ConnectionTenantId')]",
"token:resourceUri": "https://management.core.windows.net/",
"token:grantType": "client_credentials"
}

#3 托管身份 仅需要选择托管身份。虽然很清楚如何以交互方式创建此类 API 连接,但我找不到有关此类身份验证方法的 ARM 模板格式的任何信息。

所以问题是 - 具有(更新:用户分配)托管身份的事件网格连接的 ARM 模板究竟应该是什么样子?这样创建的 API 连接如下所示:

API Connection with managed identity

更新:我需要在逻辑应用中使用用户分配托管标识。下面提供的答案适用于系统分配托管身份,但不适用于用户分配身份。如果有人可以建议使用用户分配的托管身份的 API 连接的 ARM 模板,我们将不胜感激。

最佳答案

由于您可以拥有多个用户管理身份,因此仅选择 ManagedServiceIdentity 是不够的。相反,您必须包含您希望使用的身份的 ID。

扩展@jim-xu的答案:

连接示例:

{
"type": "Microsoft.Web/connections",
"apiVersion": "2016-06-01",
"name": "[variables('eventApiConnectionName')]",
"location": "[resourceGroup().location]",
"kind": "V1",
"tags": "[parameters('resourceTags')]",
"properties": {
"displayName": "[variables('eventApiConnectionName')]",
"customParameterValues": {},
"api": {
"id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', resourceGroup().location, 'azureeventgrid')]"
},
"parameterValueType": "Alternative"
}
}

这里的parameterValueType是一个重要的设置。如 MicroSoft documnetation 中所述:

If you automate deployment with an ARM template, and your logic app workflow includes a managed connector trigger or action that uses a managed identity, confirm that the underlying connection resource definition includes the parameterValueType property with Alternative as the property value. Otherwise, your ARM deployment won't set up the connection to use the managed identity for authentication...

然后,逻辑应用会引用该连接,并将标识包含为资源 ID:

"$connections": {
"value": {
"azureeventgrid": {
"connectionId": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Web/connections/', variables('eventApiConnectionName'))]",
"connectionName": "[variables('eventApiConnectionName')]",
"connectionProperties": {
"authentication": {
"type": "ManagedServiceIdentity",
"identity": "[parameters('userManagedIdentity')]"
}
},
"id": "[concat('/subscriptions/',subscription().subscriptionId, '/providers/Microsoft.Web/locations/', resourceGroup().location, '/managedApis/azureeventgrid')]"
}
}
}

请注意事件网格连接的 authentication 部分中添加的 identity 字段。

有关此问题的更多信息可在 Microsoft 文档中找到:https://learn.microsoft.com/en-us/azure/logic-apps/create-managed-service-identity?tabs=consumption#create-user-assigned-identity-in-an-arm-template-consumption-only

身份值应该是托管身份的 ID。您可以通过 Azure 门户查看托管标识的 JSON View 来获取该信息。

关于azure - 用于具有托管身份的事件网格 API 连接的 ARM 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65915994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com