-
Notifications
You must be signed in to change notification settings - Fork 226
whilte black server
服务端黑白名单校验主要在特定的情况下,服务端通过身份校验的方式限定特定服务名及版本号客户端进行调用。
- 服务端开启校验配置开关
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
,只需要通过配置开启具体的黑白名单校验规则。
-
使用Spring Cloud Huawei功能
-
使用服务治理
-
生态集成
-
迁移改造问题
-
配置参考
-
优秀实践
-
常见问题