当您的某个微服务应用有安全要求时,您可以对该应用进行接口或方法粒度的访问控制,对调用方进行访问鉴权,仅允许匹配鉴权规则的调用方发起调用,以此提高应用的安全性。本文介绍如何使用服务鉴权实现Spring Cloud应用的访问控制。
使用场景
未配置服务鉴权
- 同一命名空间内的服务可以相互调用,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控制台。
- 在左侧导航栏,选择 。
- 在Spring Cloud左侧导航栏,单击服务鉴权。
- 在服务鉴权页面,选择所属微服务空间后,单击创建规则。
- 在创建规则面板设置服务鉴权参数,然后单击确定。
服务鉴权规则参数说明:
配置项 说明 微服务空间 服务所在的地域和微服务空间。 规则名称 鉴权规则名称。 被调用方类型 默认为应用。 被调用方(应用) 被调用的应用。 被调用方框架 被调用的应用所使用的框架,选择Spring Cloud。 防重放机制 开启防重放机制开关后,可在一定程度上防止重放攻击。EDAS对于调用请求会进行超时控制和签名验证,请求过期或签名验证错误的请求将拒绝调用。您可自定义请求过期时间,单位:秒。 添加所有接口规则 重要 所有接口的通用规则仅支持添加一次。被调用方Path 默认为所有Path,且该参数值不可修改。 鉴权方式 服务鉴权的方式。包含白名单(允许调用)和黑名单(拒绝调用),请根据实际鉴权需求选择。 调用方 需要鉴权的调用方。 调用方类型:应用、网关和任意来源。您可按需选择EDAS应用和MSE网关作为需要鉴权的调用方,也可选择任意来源将接口完全公开。
说明- 应用和网关可同时选择,您可添加多个应用和多个网关。
- 任意来源与应用、网关互斥。
添加指定接口规则 重要 指定接口添加的规则不是追加,而是覆盖针对所有接口的通用规则,请谨慎配置。被调用方Path 指定被调用应用的Path。 鉴权方式 服务鉴权的方式。支持白名单(允许调用)和黑名单(拒绝调用),请根据实际鉴权需求选择。 调用方 需要鉴权的调用方。 调用方类型:应用、网关和任意来源。您可按需选择EDAS应用和MSE网关作为需要鉴权的调用方,也可选择任意来源将接口完全公开。
说明- 应用和网关可同时选择,您可添加多个应用和多个网关。
- 任意来源与应用、网关互斥。
默认状态 规则的启用开关。 - 打开:创建后即启用,默认打开。
- 关闭:创建后不启用,需在服务鉴权页面规则的操作列,单击开启规则。
结果验证
服务鉴权规则配置完成且开启后,请根据实际业务验证服务鉴权规则是否生效。
相关操作
服务鉴权规则创建完成后,您还可以在服务鉴权页面,单击对应规则操作列的编辑、开启、关闭以及删除,对规则进行管理。