当您的某个微服务应用有安全要求时,您可以对该应用进行接口或方法粒度的访问控制,对调用方进行访问鉴权,仅允许匹配鉴权规则的调用方发起调用,以此提高应用的安全性。本文介绍如何使用服务鉴权实现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网关管理控制台随意更改该插件的开启状态和配置内容。

创建服务鉴权规则

  1. 登录EDAS控制台
  2. 在左侧导航栏,选择流量管理 > 微服务治理 > Spring Cloud
  3. Spring Cloud左侧导航栏,单击服务鉴权
  4. 服务鉴权页面,选择所属微服务空间后,单击创建规则
  5. 创建规则面板设置服务鉴权参数,然后单击确定
    服务鉴权-创建规则

    服务鉴权规则参数说明:

    配置项说明
    微服务空间服务所在的地域和微服务空间。
    规则名称鉴权规则名称。
    被调用方类型默认为应用
    被调用方(应用)被调用的应用。
    被调用方框架被调用的应用所使用的框架,选择Spring Cloud
    防重放机制开启防重放机制开关后,可在一定程度上防止重放攻击。EDAS对于调用请求会进行超时控制和签名验证,请求过期或签名验证错误的请求将拒绝调用。您可自定义请求过期时间,单位:秒。
    添加所有接口规则
    重要 所有接口的通用规则仅支持添加一次。
    被调用方Path默认为所有Path,且该参数值不可修改。
    鉴权方式服务鉴权的方式。包含白名单(允许调用)黑名单(拒绝调用),请根据实际鉴权需求选择。
    调用方需要鉴权的调用方。

    调用方类型:应用网关任意来源。您可按需选择EDAS应用和MSE网关作为需要鉴权的调用方,也可选择任意来源将接口完全公开。

    说明
    • 应用网关可同时选择,您可添加多个应用和多个网关。
    • 任意来源应用网关互斥。
    添加指定接口规则
    重要 指定接口添加的规则不是追加,而是覆盖针对所有接口的通用规则,请谨慎配置。
    被调用方Path指定被调用应用的Path。
    鉴权方式服务鉴权的方式。支持白名单(允许调用)黑名单(拒绝调用),请根据实际鉴权需求选择。
    调用方需要鉴权的调用方。

    调用方类型:应用网关任意来源。您可按需选择EDAS应用和MSE网关作为需要鉴权的调用方,也可选择任意来源将接口完全公开。

    说明
    • 应用网关可同时选择,您可添加多个应用和多个网关。
    • 任意来源应用网关互斥。
    默认状态规则的启用开关。
    • 打开:创建后即启用,默认打开。
    • 关闭:创建后不启用,需在服务鉴权页面规则的操作列,单击开启规则

结果验证

服务鉴权规则配置完成且开启后,请根据实际业务验证服务鉴权规则是否生效。

相关操作

服务鉴权规则创建完成后,您还可以在服务鉴权页面,单击对应规则操作列的编辑开启关闭以及删除,对规则进行管理。