百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

使用ISTIO保护您的微服务(山东版权保护与服务平台)

bigegpt 2025-07-17 17:22 4 浏览

云和安全管理服务专家新钛云服 祝祥原创


介绍

Istio 是一个开源项目,旨在管理云上微服务之间的通信。它独立于平台,但通常且主要与 Kubernetes 一起使用。Istio 提供了多项关键功能,例如流量管理、安全性和可观察性。

在本文中,我们将重点介绍 Istio 的安全能力,包括增强认证、透明 TLS 加密、身份验证和授权。我们将 Istio 部署在 Kubernetes 集群上,并逐步介绍 Istio 安全功能,讨论这些功能如何保护您的服务。


示例

我们使用 Istio 提供的示例应用 Bookinfo[1] 来演示本文中 Istio 的功能。让我们来看看 Istio 安全和 Bookinfo 的架构。


ISTIO 安全架构

Istio 安全涉及多个组件;下图显示了该架构。在控制平面的 Istiod 组件中,我们有一个 CA(Certificate Authority)来管理证书,相关配置通过 API 服务器发送到数据平面(Envoy)。Envoy 作为策略执行点 (PEP) 来保护网格中客户端和服务器之间或网格外部和内部之间的通信安全。


Bookinfo应用架构


Bookinfo 应用程序分为四个独立的微服务:

· productpage:调用详细信息和评论微服务

· details:包含书籍详细信息

· reviews:调用 ratings 微服务生成书评

· ratings:包含伴随书评的排名信息

评论微服务共有三个版本;productpage 以循环方式访问这些版本:

· 版本 v1 不调用ratings服务。

· 版本 v2 调用ratings服务并将每个评级显示为 1 到 5 颗黑星。

· 版本 v3 调用ratings服务并将每个评级显示为 1 到 5 颗红星。


该应用程序的端到端架构如下所示。这些是没有 Istio sidecar 部署的原始纯服务。


ISTIO 认证

如果您已经安装了 Istio,则无需对应用程序进行任何更改即可运行示例。或者,您可以简单地在支持 Istio 的环境中配置和运行服务,并在每个服务旁边注入 Envoy sidecar。生成的部署如下所示:


这里我们特意部署了没有 sidecar 的 review-v2 和其他有 sidecar 的服务。这可以通过设置 Kubernetes 命名空间标签“istio-injection=enabled/disabled”轻松控制。一旦我们为 Pod 注入一个 sidecar 或者只是设置一个单一的边缘代理作为入口网关,Istio 身份就会生效。

Istio 身份模型使用一流的服务身份来确定请求来源的身份。在 Kubernetes 上,Istio 使用 Kubernetes 服务帐户作为身份。下图展示了 Istio 的身份配置工作流程。


  1. 启动一个注入了 Istio 的 Pod,它还会启动一个 Envoy 实例作为 Pod 的 sidecar。
  2. 当工作负载启动时,Envoy 通过 Envoy secret发现服务 (SDS) API 从 Istio 代理请求证书。
  3. Istio 代理将证书签名请求 (CSR) 及其凭据 (JWT) 发送到 istiod 进行签名。
  4. Istio 代理将从 istiod 收到的以 SPIFFE 格式签名的证书通过 Envoy SDS API 发送给 Envoy。


这里的证书是x.509,SPIFFE格式的URL作为x.509证书的扩展字段进行识别。SPIFFE 是开源的;k8s环境下Istio身份的格式类似于“spiffe://<domain>/ns/<namespace>/sa/<serviceaccount>”。我们可以通过使用 Istioctl 工具并手动解析证书中的 Spiffe URL 来获取证书。我们还可以转储并检查 sidecar 的配置以验证 URL 是否已注入其中。


双向 TLS

Istio 支持双向 TLS 来加密服务之间传输的数据。在 Bookinfo 应用程序中,所有服务最初都是基于纯 HTTP 协议相互通信的,其中数据没有加密。当一个工作负载使用双向 TLS 认证策略向另一个工作负载发送请求时,工作负载和 sidecar 之间的数据仍然是纯文本的,而客户端 Envoy 和服务器端 Envoy 建立双向 TLS 连接。


对等认证



应用对等身份验证策略(如上所示)后,Istio 会自动将两个 PEP 之间的所有流量升级为双向 TLS。由于默认情况下启用了 Istio 的自动 mTLS,因此仍然可以通过 HTTP 访问 Reviews-v2。Istio 中的 Auto-mTLS 有助于确定客户端 Sidecar 可以发送的流量类型:

· 如果配置了 DestinationRule,则信任它

· 如果服务器有 sidecar 并允许 mTLS,发送 mTLS – review-v1 & v3

· 否则,发送纯文本 – review-v2


对等身份验证仅定义服务器sidecar可以接收哪种类型的流量。Reviews-v2 没有 sidecar,所以客户端向它发送纯文本。服务器端默认处于 PERMISSIVE 模式,这意味着服务器端可以接受纯文本和 mTLS。这在开始将集群与服务网格集成时非常有用,因为操作员通常无法同时为所有客户端安装 Istio sidecar,或者甚至没有权限在某些客户端上这样做。



目的规则


与对等身份验证相比,目标规则定义了客户端 Sidecar 可以发送的流量类型。应用目标规则策略(如上所示)后,review-v2 无法再访问,因为目标规则限制 productpage sidecar 发送 mTLS 流量,而 review-v2 只能接收纯文本。


保护入口流量


Istio 支持通过入口网关将安全的 HTTPS 服务暴露给外部流量,因此无需更改内部协议。它总共支持四种模式来在入口启用 TLS。SIMPLE/MUTUAL 和 ISTIO_MUTUAL 对传入的请求执行 TLS 终止;它们用于配置对 HTTP 服务的


HTTPS 入口访问。PASSTHROUGH 和 AUTO_PASSTHROUGH 仅按原样传递入口流量,而不是使用 TLS 终止。


授权入口流量


添加要求最终用户 JWT 用于入口网关的请求身份验证策略。如果您在授权标头中提供令牌(其隐式默认位置),则 Istio 将使用公钥集验证令牌,并在不记名令牌无效时拒绝请求。但是,接受没有令牌的请求。


要拒绝没有有效令牌的请求,请添加一个 AuthorizationPolicy 规则,为具有请求主体的请求指定 ALLOW 操作,在上面的示例中显示为 requestPrincipals。requestPrincipals 仅在提供有效的 JWT 令牌时可用。因此,该规则只允许具有有效令牌的请求。


应用RequestAuthentication,如上图:

· 使用有效的 JWT 令牌请求 √

· 请求没有 JWT 令牌 √

· 使用无效的 JWT 令牌请求 ×

应用AuthorizationPolicy,如上图

· 使用有效的 JWT 令牌请求 √

· 没有 JWT 令牌的请求 ×

· 使用无效的 JWT 令牌请求 ×


网格流量中的授权

AuthorizationPolicy 不仅可以应用于入口网关,还可以用于控制网格内部的访问。授权策略规范包括选择器、操作和规则列表:

· 选择器字段指定策略的目标

· action 字段指定是允许还是拒绝请求;默认值为“允许”

· 规则指定何时触发动作

o 规则中的 from 字段指定请求的来源

o 规则中的 to 字段指定请求的操作

o when 字段指定应用规则所需的条件


如果应用拒绝所有 AuthorizationPolicy,则默认命名空间下的服务之间的所有请求都将被拒绝。如果您随后应用 productpage-viewer 如下例所示,它允许对 productpage 服务进行“GET”操作。

与productpage-viewer AuthorizationPolicy相比,reviews-viewer在spec规则的source字段多了一项配置;它指定只允许具有“[“
cluster.local/ns/default/sa/bookinfo-productpage”]”服务帐户的服务发送“GET”请求。一一应用其他 AuthorizationPolicy 并测试产品页面。Bookinfo 服务提供的不同信息都会再次出现在您的网页上。


概括:Istio 自动提供强大的识别功能。它还具有双向 TLS,可对流量进行加密以抵御中间人攻击。Auto-mTLS 帮助您加入 Istio,PeerAuthentication 和 DestinationRule 简化了对配置进行细微调整的过程。此外,Istio 提供了灵活的服务访问控制,因此您可以使用 RequestAuthentication、AuthorizationPolicy 等来设置细粒度的访问策略。


参考

· Istio 官方文档:https ://istio.io/latest/docs/

· https://istio.io/latest/docs/examples/bookinfo/

原文

https://01.org/blogs/luyaozhong/2021/secure-your-microservices-istio

相关推荐

方差分析简介(方差分析通俗理解)

介绍方差分析(ANOVA,AnalysisofVariance)是一种广泛使用的统计方法,用于比较两个或多个组之间的均值。单因素方差分析是方差分析的一种变体,旨在检测三个或更多分类组的均值是否存在...

正如404页面所预示,猴子正成为断网元凶--吧嗒吧嗒真好吃

吧嗒吧嗒,绘图:MakiNaro你可以通过加热、冰冻、水淹、模塑、甚至压溃压力来使网络光缆硬化。但用猴子显然是不行的。光缆那新挤压成型的塑料外皮太尼玛诱人了,无法阻挡一场试吃盛宴的举行。印度政府正...

Python数据可视化:箱线图多种库画法

概念箱线图通过数据的四分位数来展示数据的分布情况。例如:数据的中心位置,数据间的离散程度,是否有异常值等。把数据从小到大进行排列并等分成四份,第一分位数(Q1),第二分位数(Q2)和第三分位数(Q3)...

多组独立(完全随机设计)样本秩和检验的SPSS操作教程及结果解读

作者/风仕在上一期,我们已经讲完了两组独立样本秩和检验的SPSS操作教程及结果解读,这期开始讲多组独立样本秩和检验,我们主要从多组独立样本秩和检验介绍、两组独立样本秩和检验使用条件及案例的SPSS操作...

方差分析 in R语言 and Excel(方差分析r语言例题)

今天来写一篇实际中比较实用的分析方法,方差分析。通过方差分析,我们可以确定组别之间的差异是否超出了由于随机因素引起的差异范围。方差分析分为单因素方差分析和多因素方差分析,这一篇先介绍一下单因素方差分析...

可视化:前端数据可视化插件大盘点 图表/图谱/地图/关系图

前端数据可视化插件大盘点图表/图谱/地图/关系图全有在大数据时代,很多时候我们需要在网页中显示数据统计报表,从而能很直观地了解数据的走向,开发人员很多时候需要使用图表来表现一些数据。随着Web技术的...

matplotlib 必知的 15 个图(matplotlib各种图)

施工专题,我已完成20篇,施工系列几乎覆盖Python完整技术栈,目标只总结实践中最实用的东西,直击问题本质,快速帮助读者们入门和进阶:1我的施工计划2数字专题3字符串专题4列表专题5流程控制专题6编...

R ggplot2常用图表绘制指南(ggplot2绘制折线图)

ggplot2是R语言中强大的数据可视化包,基于“图形语法”(GrammarofGraphics),通过分层方式构建图表。以下是常用图表命令的详细指南,涵盖基本语法、常见图表类型及示例,适合...

Python数据可视化:从Pandas基础到Seaborn高级应用

数据可视化是数据分析中不可或缺的一环,它能帮助我们直观理解数据模式和趋势。本文将全面介绍Python中最常用的三种可视化方法。Pandas内置绘图功能Pandas基于Matplotlib提供了简洁的绘...

Python 数据可视化常用命令备忘录

本文提供了一个全面的Python数据可视化备忘单,适用于探索性数据分析(EDA)。该备忘单涵盖了单变量分析、双变量分析、多变量分析、时间序列分析、文本数据分析、可视化定制以及保存与显示等内容。所...

统计图的种类(统计图的种类及特点图片)

统计图是利用几何图形或具体事物的形象和地图等形式来表现社会经济现象数量特征和数量关系的图形。以下是几种常见的统计图类型及其适用场景:1.条形图(BarChart)条形图是用矩形条的高度或长度来表示...

实测,大模型谁更懂数据可视化?(数据可视化和可视化分析的主要模型)

大家好,我是Ai学习的老章看论文时,经常看到漂亮的图表,很多不知道是用什么工具绘制的,或者很想复刻类似图表。实测,大模型LaTeX公式识别,出乎预料前文,我用Kimi、Qwen-3-235B...

通过AI提示词让Deepseek快速生成各种类型的图表制作

在数据分析和可视化领域,图表是传达信息的重要工具。然而,传统图表制作往往需要专业的软件和一定的技术知识。本文将介绍如何通过AI提示词,利用Deepseek快速生成各种类型的图表,包括柱状图、折线图、饼...

数据可视化:解析箱线图(box plot)

箱线图/盒须图(boxplot)是数据分布的图形表示,由五个摘要组成:最小值、第一四分位数(25th百分位数)、中位数、第三四分位数(75th百分位数)和最大值。箱子代表四分位距(IQR)。IQR是...

[seaborn] seaborn学习笔记1-箱形图Boxplot

1箱形图Boxplot(代码下载)Boxplot可能是最常见的图形类型之一。它能够很好表示数据中的分布规律。箱型图方框的末尾显示了上下四分位数。极线显示最高和最低值,不包括异常值。seaborn中...