问题一:Redis服务,如何可以做到仅允许特定的子网内的服务器进行访问?
问题二:Redis服务,timeout和keepalive的设置是怎样的?是否可以配置成timeout 0?
问题三:需要在Redis中做一些配置的调试,但是Config命令禁用了,应该如何调试?
标准版Redis开启Private Endpoint之后,默认是只能在虚拟网络内部才可以访问的,且Redis防火墙则无法使用。同时,Private Endpoint不支持NSG。
在Redis开启Private Endpoint如果选择使用Azure Private DNS Zone的话,那么只有在该VNET中才可以解析到Private Endpoint内网IP。所以对于限制某些子网(subnet)可以访问Azure Redis的要求可以使用:
1: 使用高级版Redis并且配置虚拟网络,即可通过虚拟网络来实现该需求。
2: 使用标准版Redis开启private endpoint后,使用Redis Host Name来访问,则只有在该VNET中才可以访问Azure Redis,由于即时与其他VNET有打通,但是在其他VNET中也无法解析到内网IP。
3: 使用标准版Redis开启private endpoint后,为源端subnet设置NSG Outbound规则允许或者禁止访问private endpoint的内网IP。
防火墙规则可以与 VNet 注入的缓存一起使用,但目前不能与专用终结点一起使用
Azure 防火墙规则
Azure 防火墙是托管的、基于云的网络安全服务,可保护 Azure VNet 资源。 它是一个服务形式的完全有状态防火墙,具有内置的高可用性和不受限制的云可伸缩性。 可以跨订阅和虚拟网络聚焦创建、实施和记录应用程序与网络连接策略。
优点
配置防火墙规则时,仅指定 IP 地址范围内的客户端连接可以连接到缓存。 即使配置了防火墙规则,仍始终允许来自 Azure Redis 缓存监视系统的连接。 还允许你定义的 NSG 规则。
限制
防火墙规则可以与 VNet 注入的缓存一起使用,但目前不能与专用终结点一起使用。
**Redis专用终结点不支持NSG **
是否对专用终结点启用了网络安全组 (NSG)?
否,已对专用终结点禁用了 NSG。 尽管包含专用终结点的子网可以有关联的 NSG,但这些规则不会针对专用终结点处理的流量生效。 必须禁用网络策略的强制实施,才能在子网中部署专用终结点。 NSG 仍会在同一子网中托管的其他工作负荷上强制实施。 任何客户端子网上的路由将使用 /32 前缀,更改默认路由行为需要类似的 UDR。
对源客户端上的出站流量使用 NSG 规则来控制流量。 部署具有 /32 前缀的单个路由,以替代专用终结点路由。 仍支持出站连接的 NSG 流日志和监视信息,并且可以使用这些信息
专用终结点限制 :网络安全组 (NSG) 规则和用户定义的路由不适用于专用终结点
说明:专用终结点不支持 NSG。 尽管包含专用终结点的子网可以有关联的 NSG,但这些规则不会针对专用终结点处理的流量生效。 必须禁用网络策略的强制实施,才能在子网中部署专用终结点。 NSG 仍会在同一子网中托管的其他工作负荷上强制实施。 任何客户端子网上的路由将使用 /32 前缀,更改默认路由行为需要类似的 UDR
缓解措施:对源客户端上的出站流量使用 NSG 规则来控制流量。 部署具有 /32 前缀的单个路由,以替代专用终结点路由。 仍支持出站连接的 NSG 流日志和监视信息,并且可以使用这些信息
Azure Redis是无法执行Config命令的,所以timeout是没有办法配置的,默认值为: tcp-keepalive = 25 & timeout = 600
由于 Azure Redis 缓存实例的配置和管理由 Microsoft 进行管理,所以禁用了以下命令。 如果尝试调用它们,将收到一条类似于 "(error) ERR unknown command" 的错误消息。
BGREWRITEAOF
BGSAVE
CONFIG
DEBUG
MIGRATE
SAVE
SHUTDOWN
SLAVEOF
CLUSTER - 群集写命令已禁用,但允许使用只读群集命令。
有一些config参数是可以修改的,不过需要使用Powershell修改:https://docs.microsoft.com/zh-cn/powershell/module/az.rediscache/set-azrediscache?view=azps-6.0.0
举例:
# Create redis configuration JSON $RedisConfiguration = @{"rdb-backup-enabled"="true"; "rdb-backup-frequency"="60"; "rdb-storage-connection-string"="$StorageConnectionString"; "rdb-backup-max-days"="7"} # Update an existing cache Set-AzRedisCache -ResourceGroupName $ResourceGroupName -Name $CacheName -RedisConfiguration $RedisConfiguration
【完】