Skip to content

whilte black server

chengyouling edited this page Dec 18, 2023 · 6 revisions

服务端黑白名单校验

服务端黑白名单校验主要在特定的情况下,服务端通过身份校验的方式限定特定服务名及版本号客户端进行调用。

客户端、服务端开启认证配置

  • 服务端开启校验配置开关
spring:
  cloud:
    servicecomb:
      webmvc:
        publicKey:
          providerEnabled: true

该配置开启后,会对上游客户端进行身份校验,需要在服务启动时加载。

  • 客户端、微服务网关构建身份信息配置开关
spring:
  cloud:
    servicecomb:
      webmvc:
        publicKey:
          consumerEnabled: true

该配置开启后,请求服务端时,会将本服务的服务id、实例id构建生成token,放入请求上下文中,标识当前客户端身份信息,需要在服务启动时加载。

注意:在serviceA-》serviceB-》serviceC调用链上,serviceB既作为serviceA的服务端,又作为serviceC的客户端,如果serviceB只开启校验配置,那么serviceC只能获取到serviceA的身份信息,所以当serviceC需要校验serviceB的身份信息时,serviceB还要同时开启构建身份信息配置,即serviceB需要配置如下配置信息:

spring:
  cloud:
    servicecomb:
      webmvc:
        publicKey:
          providerEnabled: true
          consumerEnabled: true

通过服务属性设置黑白名单规则

  • 服务端配置黑白名单校验规则
spring:
  cloud:
    servicecomb:
      webmvc:
        publicKey:
          accessControl:
            black:
              - category: property
                propertyName: serviceName
                rule: black1
              - category: property
                propertyName: serviceName
                rule: black2
            white:
              - category: property
                propertyName: serviceName
                rule: order*

该策略限制了服务名为black1、black2和非order开头的客户端调用服务端。 black为黑名单对应标签设置,满足一条规则即不允许调用,white为白名单对应标签设置,满足一条规则即许调用; propertyName是指客户端微服务属性,可以是服务名、版本号;rule针对propertyName需要设定的值, 支持前缀模糊匹配(hacker*)、后缀模糊匹配(*hacker)和精确匹配,注意所有的值为小写。

通过自定义服务属性和值设置黑名单校验

该方式主要是在客户端设置好自定义的服务属性key-value值,服务端黑白名单中配置与key-value对应的校验规则。

  • 服务端配置黑白名单校验规则
spring:
  cloud:
    servicecomb:
      webmvc:
        publicKey:
          accessControl:
            black:
              - category: property
                propertyName: x-test
                rule: x-value
            white:
              - category: property
                propertyName: x-test2
                rule: x-value2*
  • 客户端bootstrap.yaml中增加自定义属性:
spring:
  cloud:
    servicecomb:
      service:
        name: order
        version: 0.0.1
        properties:
          key1: value1
          key2: value2

以上服务端、客户端设置的自定义属性该策略限制满足以下其中之一条件的客户端调用服务端: 1、客户端设置的key1、key2其中之一为x-test,且对应value为x-value时,服务端不允许调用; 2、客户端设置的key1、key2其中之一为x-test2,且对应value为x-value2开头时,服务端允许调用,否则不允许调用;

客户端开启黑白名单校验是为了生成校验token,如果不开启,则对于开启黑白名单校验的服务端调用不通。

注意事项

  • 设置的黑名单、白名单规则是同时生效的。

  • 服务属性、自定义服务属性规则同时存在时,优先使用服务属性进行校验。

  • 集成Spring Cloud Huawei以后,默认集成了黑白名单校验模块 spring-cloud-starter-huawei-governance,只需要通过配置开启具体的黑白名单校验规则。

Clone this wiki locally