快速开始
本节主要演示如何使用 Istio 下发安全治理配置到 Spring Cloud Alibaba (下文简称:SCA)并对应用做安全治理。SCA 安全治理模块同时支持对 Spring MVC 以及 Spring WebFlux 两种常用框架做安全治理。
准备
安装 K8s 环境
请参考 K8s 的安装工具小节。
在 K8s 上安装并启用 Istio
请参考 Istio 官方文档的安装小节。
示例
如何接入
在启动示例进行演示之前,先了解一下应用如何接入 Istio 并提供安全治理功能。 注意 本章节只是为了便于理解接入方式,本示例代码中已经完成接入工作,您无需再进行修改。
- 修改 pom.xml 文件,引入 Istio 规则 Adapter 以及 SCA 安全治理模块:
- 在应用的
src/main/resources/application.yml
配置文件中配置 Istio 相关元数据:
注:您部署的应用所在的 pod 不需要被 Istio 执行自动注入,因为 SCA 的各个治理模块将会被用来替代 Envoy Proxy 的各种功能。
效果演示
下面给出几个简单的安全治理规则配置的示例:
IP 黑白名单
使用如下命令通过 Istio 下发一条安全治理规则至 demo 应用,这条规则限制了访问该应用的来源 IP:
可以通过请求本 demo 的 auth 接口来验证规则是否生效:
在本例中,若请求的来源 IP 为 127.0.0.1
,则本应用返回:
说明此请求被拒绝。
若请求的来源 IP 不为 127.0.0.1
,则本应用返回:
说明通过了 SCA 的鉴权,将会返回此请求的一些元信息。
在此之后,删除这条 IP 黑白名单的安全治理规则:
之后再次请求本 demo 的 auth 接口,可以发现,因为安全治理规则已被删除,所以本应用将会返回:
请求头认证
使用如下命令通过 Istio 下发一条安全治理规则至 demo 应用,这条规则的限制了访问该应用的请求 header:
之后发送一个带 User-Agent 头部的 HTTP 请求来验证规则是否生效:
由于此请求携带了正确的 HTTP Header 信息,将会返回:
之后发送一个不带 User-Agent 头部的 HTTP 请求来验证规则是否生效:
由于此请求没有携带正确的 HTTP Header 信息,将会返回:
在此之后,删除这条请求头认证的规则:
之后再次请求本 demo 的 auth 接口,可以发现,因为安全治理规则已被删除,所以本应用将会返回:
JWT 认证
使用如下命令通过 Istio 下发一条安全治理规则至 demo 应用,这条规则限制了访问该应用需要携带的 JWT token value:
之后发送一个带正确 JWT token 的 HTTP 请求来验证规则是否生效:
由于此请求由于携带了正确的 JWT token 信息,将会返回:
之后再发送一个带错误 JWT token 的 HTTP 请求:
由于此请求没有携带正确的 JWT token 信息,将会返回:
在此之后,删除这条 JWT 认证的规则:
之后再次请求本 demo 的 auth 接口,可以发现,因为安全治理规则已被删除,所以本应用将会返回: