语言资源的托管标识

Azure 资源托管标识是一种服务主体,可为 Azure 托管资源创建 Microsoft Entra 标识和特定权限。 托管标识是授予存储数据访问权限的一种更安全的方式,取代了在源和目标容器 URL 中包含共享访问签名令牌 (SAS) 的要求。

托管标识流的屏幕截图 (RBAC)。

  • 可使用托管标识向支持 Microsoft Entra 身份验证的任何资源(包括你自己的应用程序)授予访问权限。

  • 若要授予对 Azure 资源的访问权限,请使用 Azure 基于角色的访问控制 (Azure RBAC) 为托管标识分配 Azure 角色。

  • 在 Azure 中使用托管标识不会增加成本。

重要

  • 使用托管标识时,请勿在 HTTP 请求中包含 SAS 令牌 URL - 请求将失败。 使用托管标识替换了将共享访问签名令牌 (SAS) 包含在源和目标容器 URL 中的要求。

  • 若要将托管标识用于语言操作,必须在特定的 Azure 地理区域(例如“中国北部 2”)创建语言资源

先决条件

若要开始,你需要以下资源:

  • 一个有效的 Azure 帐户。 如果没有,可以创建一个试用帐户

  • 在某个区域位置创建的单服务 Azure AI 语言资源。

  • 简要了解使用 Azure 门户的 Azure 基于角色的访问控制 (Azure RBAC)

  • 与语言资源位于同一区域的 Azure Blob 存储帐户。 你还需要创建一个容器,用于存储和整理存储帐户中的 blob 数据。

  • 如果存储帐户位于防火墙后面,则必须启用以下配置:

    1. 转到 Azure 门户并登录 Azure 帐户。

    2. 选择你的存储帐户。

    3. 在左窗格的“安全性 + 网络”组中,选择“网络”。

    4. 在“防火墙和虚拟网络”选项卡中,选择“从所选虚拟网络和 IP 地址启用”。

      显示“所选网络”单选按钮处于选中状态的屏幕截图。

    5. 取消选中所有复选框。

    6. 确保选中“Microsoft 网络路由”。

    7. 在“资源实例”部分下,选择 Microsoft.CognitiveServices/accounts 作为资源类型,并选择你的语言资源作为实例名称。

    8. 确保选中“允许受信任服务列表中的 Azure 服务访问此存储帐户”框。 有关管理例外情况的详细信息,请参阅配置 Azure 存储防火墙和虚拟网络

      Azure 门户中“允许受信任的服务”复选框的屏幕截图。

    9. 选择“保存”。

      注意

      网络更改最多可能需要 5 分钟才会传播。

    尽管现在允许网络访问,但你的语言资源仍无法访问存储帐户中的数据。 需要为你的语言资源创建托管标识分配特定的访问角色

托管标识分配

有两种类型的托管标识:系统分配的托管标识和用户分配的托管标识。 目前,文档翻译支持系统分配的托管标识:

  • 系统分配的托管标识直接在服务实例上启用。 此标识默认不会启用,因此你必须转到资源并更新标识设置。

  • 系统分配的托管标识在其整个生命周期内与资源绑定。 如果删除资源,则托管标识也将被删除。

在以下步骤中,我们将启用系统分配的托管标识,并授予你的语言资源对 Azure Blob 存储帐户的有限访问权限。

启用系统分配的托管标识

你必须先向语言资源授予对存储帐户的访问权限,然后才能创建、读取或删除 blob。 使用系统分配的托管标识启用了语言资源后,可使用 Azure 基于角色的访问控制 (Azure RBAC) 向语言功能提供对 Azure 存储容器的访问权限。

  1. 转到 Azure 门户并登录 Azure 帐户。

  2. 选择语言资源。

  3. 在左窗格的“资源管理”组中,选择“标识”。 如果你的资源是在全局区域中创建的,则“标识”选项卡不可见。 仍可以使用共享访问签名 (SAS) 令牌进行身份验证。

  4. 在“系统分配”选项卡中,打开“状态”切换开关。

    Azure 门户中“资源管理标识”选项卡的屏幕截图。

    重要

    用户分配的托管标识不满足批量处理存储帐户方案的要求。 请确保启用系统分配的托管标识。

  5. 选择“保存”。

为你的语言资源授予存储帐户访问权限

重要

若要分配系统分配的托管标识角色,需要 Microsoft.Authorization/roleAssignments/write 权限,例如存储资源的存储范围的所有者用户访问管理员

  1. 转到 Azure 门户并登录 Azure 帐户。

  2. 选择语言资源。

  3. 在左窗格的“资源管理”组中,选择“标识”。

  4. 在“权限”下,选择“Azure 角色分配” :

    在 Azure 门户中启用系统分配的托管标识的屏幕截图。

  5. 在打开的“Azure 角色分配”页面上,从下拉菜单中选择订阅,然后选择“+ 添加角色分配”。

    显示 Azure 门户中 Azure 角色分配页面的屏幕截图。

  6. 接下来,向你的语言服务资源分配“存储 Blob 数据参与者”角色。 “存储 Blob 数据参与者”角色向语言(由系统分配的托管标识表示)授予对 Blob 容器和数据的读取、写入和删除权限。 在“添加角色分配”弹出窗口中,按如下所示填写字段,然后选择“保存” :

    字段
    范围 存储。
    订阅 与存储资源关联的订阅。
    资源 存储资源的名称。
    角色 存储 Blob 数据参与者。

    显示 Azure 门户中角色分配页面的屏幕截图。

  7. 显示“已添加角色分配”确认消息后,请刷新页面以查看添加的角色分配。

    已添加角色分配确认弹出消息的屏幕截图。

  8. 如果没有立即看到新的角色分配,请稍候,然后尝试再次刷新页面。 分配角色或删除角色分配时,最长可能需要 30 分钟更改才能生效。

HTTP 请求

  • 原生文档语言服务操作请求通过 POST 请求提交到语言服务终结点。

  • 使用托管标识和 Azure RBAC,你不再需要包含 SAS URL。

  • 如果成功,则 POST 方法将返回 202 Accepted 响应代码,并且服务将创建一个请求。

  • 处理后的文档将会显示在目标容器中。

后续步骤