Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
本快速入门展示如何使用默认的 Azure 存储提供程序配置 Durable Functions 应用,以便通过基于身份的连接访问存储帐户,从而无需管理机密。 Microsoft Entra ID 的托管标识由 Azure 平台管理,无需配置或更换任何机密。
本文内容:
- 本地开发设置 - 使用 Azurite 或开发人员凭据进行本地测试
- 为部署到 Azure 的应用提供的基于身份的连接 — 启用托管标识并配置函数应用
注意
Durable Functions 扩展版本2.7.0及更高版本支持托管标识。
如果你没有 Azure 帐户,请在开始之前创建一个试用帐户。
先决条件
若要完成本快速入门指南,你需要:
- 在 Azure 门户中创建了现有 Durable Functions 项目或 Azure 中部署了本地 Durable Functions 项目。
- 熟悉如何在 Azure 中运行 Durable Functions 应用。
如果没有已在 Azure 中部署的现有 Durable Functions 项目,建议从以下快速入门之一开始:
- 创建你的第一个持久函数 - C#
- 创建你的第一个持久函数 - JavaScript
- 创建你的第一个持久函数 - Python
- 创建你的第一个持久函数 - PowerShell
- 创建你的第一个持久函数 - Java
本地开发设置
有两个选项用于本地开发。 在没有Azure凭据的情况下,使用 Azurite 进行快速本地测试。 如果需要针对实际Azure 存储帐户测试基于标识的连接,请改用开发人员凭据。
选项 1:使用Azure 存储模拟器
在本地开发时,建议使用 Azurite,这是Azure 存储的本地模拟器。 通过在 local.settings.json 中指定 "AzureWebJobsStorage": "UseDevelopmentStorage=true" 将应用配置到模拟器。
选项 2:用于本地开发的基于标识的连接
严格说来,托管标识仅适用于在 Azure 上执行的应用。 但是,仍可以将本地运行的应用配置为使用基于标识的连接,方法是使用开发人员凭据针对Azure资源进行身份验证。 然后,在 Azure 上部署时,应用会改为使用您配置的托管标识。
使用开发人员凭据时,连接会按以下顺序尝试从以下位置获取令牌:
- Microsoft 应用程序之间共享的本地缓存
- Visual Studio中的当前用户上下文
- Visual Studio Code中的当前用户上下文
- Azure CLI 中的当前用户上下文
如果没有这些选项成功,则会收到一个错误,指示应用无法检索身份验证令牌。 验证是否已使用有权访问Azure 存储帐户的帐户登录到其中一个列出的工具。
将运行时配置为使用本地开发人员标识
在 local.settings.json 中指定 Azure 存储帐户的名称,例如:
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage__accountName": "<<your Azure Storage account name>>", "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated" } }在Azure门户中导航到Azure 存储帐户资源。
选择 访问控制 (IAM) 选项卡,然后选择添加角色分配。
将以下每个角色分配给自己。 对于每个角色,请选择“+ 选择成员”并搜索用于登录Visual Studio、Visual Studio Code或Azure CLI的电子邮件。
- 存储队列数据参与者
- Storage Blob 数据贡献者
- 存储表数据贡献者
注意
在部署到 Azure 时,托管标识需要同样的三个角色。 请参阅 向托管标识分配访问角色。
在 Azure 门户的访问控制页面中为用户分配存储数据参与者角色的截图。
基于标识的连接用于部署在 Azure 上的应用
启用托管的身份资源
首先,为应用程序启用托管标识。 函数应用必须具有系统分配的托管标识或用户分配的托管标识。 若要为函数应用启用托管标识,并详细了解两种类型的标识之间的差异,请参阅托管标识概述。
为托管标识分配访问角色
在 Azure 门户中导航到您应用的 Azure 存储资源,然后将三个基于角色的访问控制 (RBAC) 角色分配给托管标识资源:
- 存储队列数据参与者
- Storage Blob 数据贡献者
- 存储表数据贡献者
若要查找标识资源,请选择分配对“托管标识”的访问权限,然后选择“+ 选择成员”
将托管标识配置添加到应用
在使用应用的托管标识之前,请对应用设置进行一些更改:
在 Azure 门户中,在“设置”下的函数应用资源菜单上,选择“环境变量”。
添加一个设置,用于将 Azure 存储帐户链接到应用程序。
根据用于应用运行时采用的云,使用以下方法之一:
Azure云:如果您的应用在global Azure中运行,请添加标识Azure存储帐户名称的设置
AzureWebJobsStorage__accountName。 示例值:mystorageaccount123Non-Azure cloud:如果应用程序在 Azure 外部的云中运行,则必须添加以下三个设置来提供存储帐户的特定服务 URI(或 endpoints),而不是帐户名称。
设置名称:
AzureWebJobsStorage__blobServiceUri示例值:
https://mystorageaccount123.blob.core.chinacloudapi.cn/设置名称:
AzureWebJobsStorage__queueServiceUri示例值:
https://mystorageaccount123.queue.core.chinacloudapi.cn/设置名称:
AzureWebJobsStorage__tableServiceUri示例值:
https://mystorageaccount123.table.core.chinacloudapi.cn/
可以从“终结点”选项卡的存储帐户信息中获取这些 URI 变量的值。
完成托管标识配置(更改设置后记得单击“应用”):
如果使用系统分配的标识,不要进行其他更改。
如果使用“用户分配的标识”,请将以下设置添加到应用配置中:
在 AzureWebJobsStorage__credential 中,输入 managedidentity
AzureWebJobsStorage__clientId,请从托管标识资源中获取此 GUID 值。
注意
在使用用户分配的标识时,Durable Functions 不支持
managedIdentityResourceId。 请改用clientId。
验证配置
若要确认托管标识的配置工作正常,请执行以下操作:
- 在 Azure 门户中,导航到你的函数应用程序并触发 Durable Functions 编排(例如,使用 HTTP 触发器函数)。
- 通过查询状态终结点或检查Monitor选项卡,确认编排是否成功完成。
- 如果看到身份验证错误,请验证:
- 这三个存储数据参与者角色都分配给了正确的身份。
- 删除了
AzureWebJobsStorage连接字符串设置。 -
AzureWebJobsStorage__accountName设置正确(或服务 URI)。
后续步骤
应用服务和 Azure Functions 的托管身份概述 - Durable Functions 的 Azure 存储 提供程序
- Durable Functions存储提供程序概述