前言:
Istio的安全主要分为认证授权两大部分。 绝大部分的功能都是由Istiod这个控制平面来实现的
image.png

1. Istio的安全架构

CA负责证书的管理,认证和授权都会存储到对应的模块中,由api server将这些策略变成配置 下发到对应的数据平面中。当客户端调用网格内的服务时,他可以使用经典的JWT方式进行认证。而网格内服务与服务之间,可以使用双向的TLS进行认证

Istio的认证分为两种:对等认证请求认证

2. 认证

如下图,管理员配置了两种策略,这个种策略会被转变成具体的配置信息,然后有Istiod下发给具体的Sidecar代理。Istio在认证中提供加密或不加密两种模式来进行请求的传输,为安全设置的调试带来了很大的便利性。
image.png
Istio的认证分两种:

  • 对等认证(常说的传输身份认证,主要用于服务与服务之间的身份认证。目前Istio支持mTLS这样的方式进行认证)
  • 请求认证(常说的终端身份认证,主要用于用户访问服务端进行认证。目前Istio支持JWT)

3. 配置认证策略

对不同的认证方式建立不同的CRD,比如配置一个对等认证就需要配置PeerAuthentication这样一个CRD。

配置举例如下:
其中,配置生效的范围有3种(全网格内生效、命名空间生效、工作负载内)
image.png

一般来说推荐下面两个方式:

  • 如果是对等认证:需要设置mTLS,选用兼容模式,等调试完成之后,再选用严格模式
  • 如果是请求认证:可以把新旧两个JWT同时配置进你的策略当中,当请求全部迁移到新的JWT里,再把旧的删除就好了

    4. 授权

    授权和认证也类似,分为:网格、命名空间、服务本身

当管理员增加一个授权策略的时候,Api Server会把策略转换成对应的配置,下发给对应数据平面的Sidecar,每个Sidecar会运行一个授权引擎,该引擎在运行的时候进行授权请求。如果请求到达代理时,授权引擎根据当前的策略来评估请求的上下文,并返回授权的结果。授权在默认情况下无需你显示的启动,默认就是启动状态。
image.png

5. 配置授权策略

需要配置AuthorizationPolicy这样一个CRD来实现。需要配置 选择器(Selector)、行为(Action)、规则列表(Rules)。规则列表包括 来源(from)、操作(to)、匹配条件(when)
image.png

授权策略的设置
• 范围(目标)设置:metadata/namespace,selector
• 值匹配:精确、模糊、前缀、后缀
• 全部容许和拒绝
• 自定义条件

image.pngimage.pngimage.png