当您的某个微服务应用有安全要求时,您可以对该应用进行接口或方法粒度的访问控制,对调用方进行访问鉴权,仅允许匹配鉴权规则的调用方发起调用,以此提高应用的安全性。本文介绍如何使用服务鉴权实现Dubbo应用的访问控制。
使用场景
未配置服务鉴权
- 同一命名空间内的服务可以相互调用,Consumer 1、Consumer 2和Consumer 3默认可以调用Provider的所有Path(Path 1、Path 2和Path 3)。
- 使用MSE网关对Consumer服务进行路由转发,Gateway 1和Gateway 2可以调用Consumer 1、Consumer 2、Consumer 3三个应用实例。
配置服务鉴权
- 设置所有接口的鉴权:
- 对Provider的所有接口设置鉴权规则。例如,Provider设置所有接口鉴权规则为:将Consumer 1加入黑名单(拒绝访问),Consumer 2、Consumer 3加入白名单(允许调用)。
- 对Consumer的所有接口设置鉴权规则。例如,Consumer 1只允许Gateway 1的调用,Consumer 2、Consumer 3只允许Gateway 2的调用,需进行如下操作。
- Consumer 1设置所有接口鉴权规则,将Gateway 1加入白名单(允许调用)。
- Consumer 2、Consumer 3设置所有接口鉴权规则,将Gateway 2加入白名单(允许调用)。
- 设置指定接口的鉴权:
在设置所有Path的鉴权基础上,还可设置Consumer指定Path的鉴权规则。例如,在设置所有Path的鉴权方式下,Consumer 2、Consumer 3可以访问Provider的所有Path,但Provider的Path 2涉及一些核心业务或数据,不希望Consumer 2调用,可以将Path 2对Consumer 2的鉴权方式设置为黑名单(拒绝调用),则Consumer 2只能访问Provider的Path 1和Path 3。
设置鉴权规则的调用示意图如下所示。
- 对于作为Readiness或Liveness健康探针的接口,为避免因服务鉴权规则导致应用健康检查失败,请设置该接口的鉴权方式为白名单(允许调用),且调用方为任意来源。
- 对于在EDAS服务鉴权规则中引用的MSE网关实例,EDAS会默认开启网关插件edas-service-auth。请勿在MSE网关管理控制台随意更改该插件的开启状态和配置内容。
创建服务鉴权规则
- 登录EDAS控制台。
- 在左侧导航栏,选择 。
在Dubbo左侧导航栏,单击服务鉴权。
在服务鉴权页面,单击创建规则。
在创建规则面板设置服务鉴权参数,然后单击确定。
服务鉴权规则参数说明:
配置项
说明
微服务空间
服务所在的地域和微服务空间。
规则名称
鉴权规则名称,支持大小写字母、数字、下划线(_)和短划线(-),长度不超过64个字符。
被调用方类型
默认为应用。
被调用方(应用)
被调用的应用。
被调用方框架
被调用的应用所使用的框架,选择Dubbo。
添加所有接口规则
重要所有接口的通用规则仅支持添加一次。
被调用方接口
默认为所有服务 / 所有接口,且该参数值不可修改。
鉴权方式
服务鉴权的方式。包含白名单(允许调用)和黑名单(拒绝调用),请根据实际鉴权需求选择。
调用方
需要鉴权的调用方。
调用方类型:应用、网关和任意来源。您可按需选择EDAS应用和MSE网关作为需要鉴权的调用方,也可选择任意来源将接口完全公开。
说明应用和网关可同时选择,您可添加多个应用和多个网关。
任意来源与应用、网关互斥。
添加指定接口规则
重要指定接口添加的规则不是追加,而是覆盖针对所有接口的通用规则,请谨慎配置。
被调用方接口
指定被调用应用的服务和接口。
鉴权方式
服务鉴权的方式,包含白名单(允许调用)和黑名单(拒绝调用),请根据实际鉴权需求选择。
调用方
需要鉴权的调用方。
调用方类型:应用、网关和任意来源。您可按需选择EDAS应用和MSE网关作为需要鉴权的调用方,也可选择任意来源将接口完全公开。
说明应用和网关可同时选择,您可添加多个应用和多个网关。
任意来源与应用、网关互斥。
默认状态
规则的启用开关。
打开:创建后即启用,默认打开。
关闭:创建后不启用,需要在服务鉴权页面规则的操作列,单击开启规则。
结果验证
服务鉴权规则配置完成且开启后,请根据实际业务验证服务鉴权规则是否生效。
相关操作
服务鉴权规则创建完成后,您还可以在服务鉴权页面,单击对应规则操作列的编辑、开启、关闭以及删除,对规则进行管理。