10.Kong入门与实战 基于Nginx和OpenResty的云原生微服务网关 --- 内置插件

Posted enlyhua

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了10.Kong入门与实战 基于Nginx和OpenResty的云原生微服务网关 --- 内置插件相关的知识,希望对你有一定的参考价值。

第 10 章 内置插件
	插件是代理请求和响应的生命周期内执行的lua代码,既可以添加到服务和路由中,也可以关联到特定的消费者。

10.1 插件分类
	主要有7类:
		1.身份验证
		2.安全防护
		3.流量控制
		4.无服务器架构
		5.分析监控
		6.信息转换器
		7.日志记录
	 
10.2 环境准备 

10.3 身份验证 
	10.3.1 基本身份验证
		在服务或者路由中添加 基本身份验证(Basic Auth)插件后,如果客户端想访问,就需要提供用户名和密码。此插件会检查请求报文中的
	Proxy-Authorization和Authorization 是否存在有效的访问凭证,可以很方便的实现身份验证,且不需要重新开发。这个插件也可以结合
	ACL 插件,通过将消费者列入白名单或者黑名单来限制其对服务或路由的访问。 

	10.3.2 密钥身份验证 
		在服务或路由中添加密钥身份验证(API KEYS)插件后,当客户端发起访问请求后,需要在指定的请求头或查询字符串中提供提前分配好的密钥。

	10.3.3 HMAC 身份验证 
		在服务或者路由中添加HMAC(基于散列值的消息验证码)身份插件后,此插件不仅会验证客户端身份的有效性,还会对请求数据进行签名验证,以防止请求参数被
	篡改或者请求再次访问(重放攻击)。客户端发起访问请求时,需要在 Proxy-Authorization 或 Authorization 头中发送数字签名。

	10.3.4 OAuth 2.0 
		是一种网络开放协议,为用户资源的安全授权提供了标准。OAuth 2.0 身份验证插件支持 OAuth 2.0 定义的以下四种授权模式:
			1.隐式授权模式
			2.客户端凭据模式
			3.授权码模式
			4.资源拥有者密码凭据模式

10.4 安全防护 
	10.4.1 IP 限制 
		IP 限制 是通过将 ip 地址列入白名单或黑名单来限制其对服务的访问。可以设置单ip地址或者多ip地址,或者以CIDR(无分类域间路由选择)的方式设置ip范围。

	10.4.2 机器人检测
		机器人检测可以保护服务不受大多数常见机器人(如爬虫工具/web测试工具/漏洞扫描工具)的攻击,读者可以通过自定义客户端请求标识将这些机器人列入白名单和
	黑名单。 

	10.4.3 CORS 	
		插件 CORS(跨域资源共享)可以直接添加到服务或者路由中。

10.5 流量控制 
	使用流量插件可以很方便的管理入站和出站流量,从而达到限流和限频的目的。

	10.5.1 请求大小限制 
		此插件用于阻止请求大小大于指定配置的请求(以M为单位)。

	10.5.2 终止请求 
		此插件通过返回指定的http状态码和消息来终止传入的请求。并且允许你在升级,维护站点时或者在其他情况下,暂停客户端的访问。

10.6 无服务器架构 
	使用无服务器架构插件可以很方便的集成调用FaaS(Function as a service,函数即调用)。将介绍3种无服务器架构,分别为外置亚马逊 AWS Lambda,
微软云 Azure Functions,内置 Serverless Function。

	10.6.1 AWS Lambda 

	10.6.2 Azure Functions 

	10.6.3 Serverless Functions 
		此插件在kong的access阶段动态的运行Lua代码,从而在无服务器的环境下调用FaaS。它可以动态的改变请求头,动态的生成html页面或实现自定义的逻辑
	等。插件之所以可以动态的运行Lua代码是因为其内部用了 loadstring 函数,将会在首次调用该函数时加载 Lua 代码并进行内部编译。

		Serverless Functions 提供了 Pre Function 和 Post Function 两个独立的插件,它们在插件链中以不同的优先级运行。
		1.Pre Function : 在 kong 的 access 阶段,在其他插件之前运行,即最先运行。
		2.Post Function : 在 kong 的 access 阶段,在其他插件之后运行,即最后运行。

10.7 分析监控 
	使用分析监控插件可以很方便的可视化检查和监视微服务的流量和各种监控指标。

	10.7.1 Prometheus 
	10.7.2 Zipkin 

10.8 信息转换器 
	使用 信息转换插件,可以任意的添加,删除,修改 所有的请求和响应信息。

	10.8.1 请求转换器 
	10.8.2 响应转换器 
	10.8.3 Correlation ID 

10.9 日志记录 
	使用日志记录插件,可以很方便的记录在 传输,请求和响应过程中的所有上下文数据信息。

	10.9.1 UDP 日志 
	10.9.2 HTTP 日志 
	10.9.3 Kafka 日志 
	10.9.4 mysql 日志 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

以上是关于10.Kong入门与实战 基于Nginx和OpenResty的云原生微服务网关 --- 内置插件的主要内容,如果未能解决你的问题,请参考以下文章

12.Kong入门与实战 基于Nginx和OpenResty的云原生微服务网关 --- 高级案例实战

7.Kong入门与实战 基于Nginx和OpenResty的云原生微服务网关 --- 日志收集与分析

9.Kong入门与实战 基于Nginx和OpenResty的云原生微服务网关 --- 高级进阶

8.Kong入门与实战 基于Nginx和OpenResty的云原生微服务网关 --- 指标监控与报警

6.Kong入门与实战 基于Nginx和OpenResty的云原生微服务网关 --- Lua 语言

5.Kong入门与实战 基于Nginx和OpenResty的云原生微服务网关 --- Kong 的配置详解