本文介绍如何解决MSE Nacos获取或操作无权限资源的问题。
问题现象
在Nacos的开源控制台中创建了新用户,并为该用户设置了某个命名空间权限,但该用户仍然可以访问其他命名空间。
在RAM控制台中为某个RAM用户授予了某个命名空间的权限,但是该RAM用户还可在MSE控制台的命名空间列表中看到其他命名空间。
在RAM控制台中为某个RAM用户授予了某个命名空间的权限,但是该RAM用户在应用中还可以访问其他命名空间的资源。
可能原因
MSE Nacos未开启鉴权功能。关于鉴权功能,请参见Nacos Client访问鉴权。
可能出现了以下授权情况。
授予了该RAM用户MSE控制台粗粒度权限
AliyunMSEReadOnlyAccess
或AliyunMSEFullAccess
。关于MSE控制台粗粒度权限,请参见步骤二:为RAM用户添加权限。单独授予了
ListNacosNamespace
权限。
由于鉴权行为在实际获取数据前执行,因此用户只要有
ListNacosNamespace
的权限,就能获取到所有命名空间的列表。说明虽然可获取所有命名空间的列表,但是实际在获取或操作该命名空间下资源时,会进行鉴权拦截,无法进一步操作资源。其他的
ListNacos***
权限也具有相同的特点。
解决方案
关于开源控制台访问资源鉴权无效的问题,请参见如何解决MSE Nacos开源控制台鉴权不生效问题。
针对在MSE 控制台访问资源鉴权无效的问题,可按照下列步骤进行排查。
确认是否为RAM用户授予了MSE控制台粗粒度权限
AliyunMSEReadOnlyAccess
或AliyunMSEFullAccess
。若授予了粗粒度权限,可以为该RAM用户修改授权策略,授予其合适的MSE控制台细粒度权限。具体操作,请参见注册配置中心授权。若已经授予了
ListNacos***
的细粒度权限,则在MSE控制台上看到对应的资源列表属于正常现象,无需处理。
针对Nacos-Client访问资源鉴权无效的问题,可按照下列步骤进行排查。
确认是否开启了引擎的鉴权功能。若未开启,请进行开启。具体操作,请参见Nacos Client访问鉴权。
若已开启鉴权功能,确认是否为RAM用户授予了粗粒度权限
AliyunMSEReadOnlyAccess
或AliyunMSEFullAccess
。若授予粗粒度权限,可以为该RAM用户授予合适的配置中心细粒度鉴权或注册中心细粒度鉴权。更多信息,请参见配置中心细粒度鉴权和注册中心细粒度鉴权。