为基于角色的访问控制配置数据访问策略

管理对 Azure Cache for Redis 实例的访问权限对于确保适当的用户有权访问正确的数据集和命令至关重要。 在 Redis 版本 6 中,引入了访问控制列表 (ACL)。 ACL 限制哪些用户可以执行某些命令,以及用户可以访问的键。 例如,可以使用 DEL 命令禁止特定用户删除缓存中的键。

Azure Cache for Redis 现在将此 ACL 功能与 Microsoft Entra ID 集成,使你能够为应用程序的服务主体和托管标识配置数据访问策略。

Azure Cache for Redis 提供三个内置访问策略:数据所有者、数据参与者和数据读取者。 如果内置访问策略无法满足你的数据保护和隔离要求,你可以创建和使用自己的自定义数据访问策略,如配置自定义数据访问策略中所述。

可用范围

基本、标准、高级
可用性

先决条件和限制

  • 运行 Redis 版本 4 的 Azure Cache for Redis 实例不支持 Redis ACL 和数据访问策略。
  • 仅 SSL 连接支持 Microsoft Entra 身份验证和授权。
  • 某些 Redis 命令被阻止

数据访问策略的权限

Redis 访问控制列表中所述,使用 Redis 版本 6.0 中的 ACL 可以为 3 个区域配置访问权限:

命令类别

Redis 创建了命令分组,如管理命令、危险命令等,以使对一组命令设置权限更容易。

  • 使用 +@commandcategory 允许命令类别
  • 使用 -@commandcategory 禁止命令类别

这些命令仍被阻止。 以下组是 Redis 支持的有用命令类别。 有关命令类别的详细信息,请参阅标题命令类别下的完整列表。

  • admin
    • 管理命令。 普通应用程序永远不需要使用这些命令,包括 MONITORSHUTDOWN 等。
  • dangerous
    • 潜在危险的命令。 出于各种原因应谨慎考虑每个命令,包括 FLUSHALLRESTORESORTKEYSCLIENTDEBUGINFOCONFIG 等。
  • keyspace
    • 以与类型无关的方式写入或读取键、数据库或其元数据,包括 DELRESTOREDUMPRENAMEEXISTSDBSIZEKEYSEXPIRETTLFLUSHALL 等。 可以修改键空间、键或元数据的命令也具有写入类别。 仅读取键空间、键或元数据的命令具有读取类别。
  • pubsub
    • 与 PubSub 相关的命令。
  • read
    • 从键、值或元数据读取。 不与键交互的命令不具有读取或写入功能。
  • set
    • 数据类型:相关集。
  • sortedset
    • 数据类型:相关排序集。
  • stream
    • 数据类型:相关流。
  • string
    • 数据类型:相关字符串。
  • write
    • 写入键(值或元数据)。

命令

使用命令可以控制特定 Redis 用户可以运行哪些特定命令。

  • 使用 +command 允许命令。
  • 使用 -command 禁止命令。

使用键可以控制对缓存中存储的特定键或键组的访问。

  • 使用 ~<pattern> 为键提供模式。

  • 使用 ~*allkeys 指示命令类别权限应用于缓存实例中的所有键。

如何指定权限

若要指定权限,需要创建一个字符串来保存为自定义访问策略,然后将该字符串分配给 Azure Cache for Redis 用户。

以下列表包含各种方案的权限字符串的一些示例。

  • 允许应用程序对所有键执行所有命令

    权限字符串:+@all allkeys

  • 允许应用程序仅执行读取命令

    权限字符串:+@read ~*

  • 允许应用程序执行读取命令类别,并在带有前缀 Az 的键上设置命令。

    权限字符串:+@read +set ~Az*

为应用程序配置自定义数据访问策略

  1. 在 Azure 门户中,选择要在其中配置基于 Microsoft Entra 令牌的身份验证的 Azure Cache for Redis 实例。

  2. 从“资源”菜单中,选择“数据访问配置”。

    屏幕截图显示“资源”菜单中突出显示的数据访问配置。

  3. 选择“添加”,然后选择“新建访问策略”。

    屏幕截图显示用于添加自定义访问策略的窗体。

  4. 提供访问策略的名称。

  5. 根据要求配置权限

  6. 若要使用 Microsoft Entra ID 将用户添加到访问策略,必须先从“资源”菜单中选择“身份验证”来启用 Microsoft Entra ID。

  7. 选择“启用 Microsoft Entra 身份验证”作为工作窗格中的选项卡。

  8. 请选中标记为“启用 Microsoft Entra 身份验证”的框(如果尚未选中),然后选择“确定”。 然后选择“保存”。

    Microsoft Entra ID 访问授权的屏幕截图。

  9. 这会显示一个弹出对话框,询问是否要更新配置,并通知你这需要几分钟时间。 选择

    重要

    启用操作完成后,缓存实例中的节点将重新启动以加载新配置。 建议在维护时段或高峰营业时间外执行此操作。 此操作最多可能需要 30 分钟。

将 Redis 客户端配置为使用 Microsoft Entra ID

配置 Redis 用户和数据访问策略以配置基于角色的访问控制后,需要更新客户端工作流以支持使用特定用户/密码进行身份验证。 若要了解如何配置客户端应用程序,从而以特定 Redis 用户身份连接到缓存实例,请参阅配置 Redis 客户端以使用 Microsoft Entra

后续步骤