准入控制¶
动态配置
准入控制器支持通过Web API进行动态配置。
准入控制器¶
在每个服务上可以分别设置准入控制器来控制客户端接入。
通过admission
参数来指定客户端地址匹配规则列表,规则以逗号分割的IP,CIDR或域名,域名会被解析为IP。
黑名单与白名单¶
与分流器类似,准入控制器也可以设置黑名单或白名单模式,默认为黑名单模式。
控制器组¶
通过使用admissions
属性来指定准入控制器列表来使用多个控制器,当任何一个控制器拒绝则代表请求拒绝。
数据源¶
准入控制器可以配置多个数据源,目前支持的数据源有:内联,文件,redis,HTTP。
内联¶
内联数据源直接在配置文件中通过matchers
参数设置数据。
文件¶
指定外部文件作为数据源。通过file.path
参数指定文件路径。
文件格式为按行分割的地址列表,以#
开始的部分为注释信息。
Redis¶
指定redis服务作为数据源,redis数据类型必须为集合(Set)类型。
admissions:
- name: admission-0
redis:
addr: 127.0.0.1:6379
db: 1
username: user
password: 123456
key: gost:admissions:admission-0
addr
(string, required)- redis服务地址
db
(int, default=0)- 数据库名
username
(string)- 用户名
password
(string)- 密码
key
(string, default=gost)- redis key
数据的每一项与文件数据源的格式类似:
HTTP¶
指定HTTP服务作为数据源。对于所请求的URL,HTTP返回200状态码则认为有效,返回的数据格式与文件数据源相同。
url
(string, required)- 请求的URL
timeout
(duration, default=0)- 请求超时时长
热加载¶
文件,redis,HTTP数据源支持热加载。通过设置reload
参数开启热加载,reload
参数指定同步数据源数据的周期。
admissions:
- name: admission-0
reload: 10s
file:
path: /path/to/file
redis:
addr: 127.0.0.1:6379
db: 1
password: 123456
key: gost:admissions:admission-0
http:
url: http://127.0.0.1:8000
timeout: 10s
插件¶
准入控制器可以配置为使用外部插件服务,控制器会将请求转发给插件服务处理。当使用插件时其他参数无效。
admissions:
- name: admission-0
plugin:
type: grpc
addr: 127.0.0.1:8000
tls:
secure: false
serverName: example.com
type
(string, default=grpc)- 插件类型:
grpc
,http
。 addr
(string, required)- 插件服务地址。
tls
(object, default=null)- 设置后将使用TLS加密传输,默认不使用TLS加密。