管理对 Azure Redis 缓存实例的访问权限对于确保适当的用户有权访问正确的数据和命令集至关重要。 Redis 版本 6 引入了 访问控制列表 (ACL),其中列出了特定用户可以访问的密钥以及他们可以执行的命令。 例如,可以禁止特定用户使用 DEL 命令删除缓存中的密钥。
Azure Redis 缓存将此 ACL 功能与 Microsoft Entra 集成,以便为应用程序的用户、服务主体和托管标识配置和分配数据访问策略。 Azure Redis 缓存提供三个内置访问策略,可以通过基于角色的访问控制(RBAC): 数据所有者、 数据参与者和数据 读取者进行分配。
如果内置访问策略不满足数据保护和隔离要求,则可以创建和使用自己的自定义数据访问策略。 本文介绍如何为 Azure Redis 缓存配置自定义数据访问策略,并通过 Microsoft Entra 身份验证启用 RBAC。
可用范围
层 | 基本、标准、高级 | Enterprise、Enterprise Flash |
---|---|---|
可用性 | 是 | 否 |
局限性
- 企业层和企业闪存层不支持配置数据访问策略。
- 运行 Redis 版本 4 的 Azure Redis 实例不支持 Redis ACL 和数据访问策略。
- Microsoft Entra 仅支持用于安全套接字层(SSL)连接的身份验证和授权。
- Azure Redis 缓存中某些 Redis 命令被阻止了。 有关详细信息,请参阅 Azure Redis 缓存不支持的 Redis 命令。
Redis ACL 权限
Redis 版本 6.0 中的 Redis ACL 允许为三个方面配置访问权限:命令类别、命令和密钥。
命令类别
Redis 创建了 命令类别(如管理命令和危险命令),以便更轻松地设置对一组命令的权限。 在权限字符串中,使用 +@<category>
以允许命令类别,或使用 -@<category>
以禁止命令类别。
Redis 支持以下有用的命令类别。 有关详细信息和完整列表,请参阅 Redis ACL 文档中的命令类别标题。
类别 | DESCRIPTION |
---|---|
admin |
管理命令,例如 MONITOR 和 SHUTDOWN 。 普通应用程序从不需要使用这些命令。 |
dangerous |
潜在的危险命令,包括FLUSHALL 、RESTORE 、SORT 、KEYS 、CLIENT 、DEBUG 、INFO 和CONFIG 。 出于各种原因,请谨慎考虑每一个。 |
keyspace |
包括DEL 、RESTORE 、DUMP 、RENAME 、EXISTS 、、KEYS DBSIZE 、EXPIRE 、 TTL 和FLUSHALL 。 以与类型无关的方式从键、数据库或其元数据中写入或读取。 仅读取键空间、键或元数据的命令具有 read 类别。 可以修改键空间、键或元数据的命令也具有 write 类别。 |
pubsub |
与 PubSub 相关的命令。 |
read |
从键、值或元数据读取。 不与键交互的命令既没有read 也没有write 。 |
set |
数据类型:相关集。 |
sortedset |
数据类型:相关排序集。 |
stream |
数据类型:相关流。 |
string |
数据类型:相关字符串。 |
write |
将值或元数据写入到键。 |
命令
命令 允许您控制特定 Redis 用户可以运行的具体指令。 在权限字符串中,使用 +<command>
来允许命令,使用 -<command>
来禁止命令。
钥匙
使用密钥 可以控制对缓存中存储的特定密钥或密钥组的访问。 在权限字符串中使用 ~<pattern>
,为密钥提供模式。 使用~*
或allkeys
指示权限应用于缓存中的所有键。
为应用程序配置自定义数据访问策略
若要配置自定义数据访问策略,请创建一个权限字符串以用作自定义访问策略,并为缓存启用Microsoft Entra 身份验证。
指定权限
根据要求配置权限字符串。 以下示例显示了各种方案的权限字符串:
权限字符串 | DESCRIPTION |
---|---|
+@all allkeys |
允许应用程序在所有密钥上执行所有命令。 |
+@read ~* |
允许应用程序仅 read 执行命令类别。 |
+@read +set ~Az* |
允许应用程序执行 read 命令类别,并在具有前缀 Az 的键上设置命令。 |
创建自定义数据访问策略
在 Azure 门户中,选择要在其中创建数据访问策略的 Azure Redis 缓存。
在左侧导航菜单中的“设置”下选择“数据访问配置”。
在 “数据访问配置 ”页上,选择“ 添加新>访问策略”。
在 “添加/编辑自定义访问策略 ”屏幕上,提供访问策略的名称。
在 “权限”下,添加自定义权限字符串,然后选择“ 应用”。
自定义策略现在显示在“数据访问配置”页的“访问策略”选项卡上,以及三个内置的 Azure Redis 策略。
启用 Microsoft Entra 身份验证
在缓存上必须启用 Microsoft Entra 而非访问权限键身份验证,才能使用 Microsoft Entra 将用户分配到访问策略。 若要检查身份验证方法,请在缓存的左侧导航菜单中的“设置”下选择“身份验证”。
在 “身份验证 ”屏幕上,如果选择了 “禁用访问密钥身份验证 ”,并且屏幕上未显示任何访问密钥,则缓存已使用Microsoft Entra 身份验证。 否则,请选中 “禁用访问密钥身份验证 ”旁边的复选框,然后选择“ 保存”。
在弹出的对话框中,响应是,询问是否要禁用访问密钥身份验证。
重要
Microsoft Entra 启用作完成后,缓存实例中的节点将重新启动以加载新配置。 此操作最多可能需要 30 分钟。 最好在系统维护窗口或者业务高峰时段之外执行此操作。
将 Redis 客户端配置为使用 Microsoft Entra ID
大多数 Azure Redis 缓存客户端都假定密码和访问密钥用于身份验证。 可能需要更新客户端工作流,以支持使用特定Microsoft Entra 用户名和密码进行身份验证和授权。 若要了解如何将客户端应用程序配置为以特定的 Redis 用户身份连接到缓存实例,请参阅 配置 Redis 客户端以使用 Microsoft Entra ID。