你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用事件中心保护 Azure Functions

在 Azure 中配置对资源的访问权限时,应对资源的权限应用精细控制。 这些资源的访问权限应基于“知所必须”和“最低特权”安全原则,确保客户端只能执行为其分配的有限操作集。

授予事件中心访问权限

可以使用以下安全构造授予对 Azure 事件中心资源的访问权限:

  • Microsoft Entra ID:Microsoft Entra ID 提供基于角色的访问控制 (RBAC),用于精细地控制客户端对事件中心资源的访问权限。 根据授予的角色和权限,Microsoft Entra ID 将使用 OAuth 2.0 访问令牌对请求进行授权。

  • 共享访问签名:共享访问签名 (SAS) 可基于授权规则保护事件中心资源。 可以通过选择一个或多个策略规则(例如发送消息、侦听消息以及管理命名空间中的实体等功能)来定义授权策略。

共享访问签名注意事项

将共享访问签名与 Azure Functions 和事件中心配合使用时,应考虑到以下注意事项:

  • 避免使用“管理”权限:除了管理事件中心命名空间中的实体外,“管理”权限还包括“发送”和“侦听”权限。 理想情况下,应根据函数应用执行的操作仅向其授予“发送”和“侦听”权限。

  • 不要使用默认的“管理”规则:除非函数应用需要(此类情况很少发生),否则请避免使用名为“RootManageSharedAccessKey”的默认策略规则。 关于此默认规则的另一个注意事项在于其是在命名空间级别创建的,并能向所有可能存在的事件中心授予权限。

  • 查看共享访问策略范围:可以在命名空间级别和每个事件中心创建共享访问策略。 请考虑创建针对每个客户端定制的精细访问策略,以限制其范围和权限。

托管标识

可以将 Active Directory 标识分配给 Azure 中的受管理资源,例如函数应用或 Web 应用。 分配标识后,该托管资源即可与使用 Microsoft Entra ID 进行授权的其他资源配合工作,这与服务主体非常类似。

可以为函数应用分配托管标识,并利用基于标识的连接来实现包括事件中心在内的部分服务。 基于标识的连接同时支持触发器和输出绑定扩展,但必须使用事件中心扩展 5.x 及更高版本才能获得支持。

网络

默认情况下,只要请求附带有效的身份验证和授权,就可以从 Internet 访问事件中心命名空间。 有三个选项可用于限制对事件中心命名空间的网络访问:

无论哪种情况,请务必注意,至少为命名空间指定一个 IP 防火墙规则或虚拟网络规则。 否则,如果未指定 IP 地址或虚拟网络规则,则可通过公共 Internet(使用访问密钥)访问命名空间。

可对 Azure Functions 进行配置,使其可从事件中心使用事件或将事件发布到事件中心,这是通过服务终结点或专用终结点实现的。 函数应用需要集成区域虚拟网络才能使用服务终结点或专用终结点连接到事件中心。

要对 Functions 进行设置以与已启用专用终结点的资源配合使用,需要将 WEBSITE_VNET_ROUTE_ALL 应用程序设置设置为 1。 如果要完全锁定函数应用,则还需要限制存储帐户

若要在虚拟网络环境中触发(使用)事件,则函数应用需要托管在高级计划、专用(应用服务)计划或应用服务环境 (ASE) 中。

此外,若要在 Azure Functions 高级计划中运行并使用来自虚拟网络受限的事件中心的事件,则需要虚拟网络触发器支持(也称为运行时缩放监视)。 可以通过 Azure 门户、Azure CLI 或其他部署解决方案配置运行时缩放监视。 若函数在专用(应用服务)计划或 ASE 中运行,则运行时缩放监视不可用。

若要将运行时缩放监视与事件中心配合使用,则需要使用 4.1.0 或更高版本的 Microsoft.Azure.WebJobs.Extensions.EventHubs 扩展。

作者

本文由 Microsoft 维护, 它最初是由以下贡献者撰写的。

主要作者:

若要查看非公开的 LinkedIn 个人资料,请登录到 LinkedIn。

后续步骤

在继续操作之前,请考虑查看以下相关文章: