译者 | 李睿
祁县网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设公司等网站项目制作,到程序开发,运营维护。创新互联公司2013年成立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。
审校 | 重楼
本文是关于mTLS以及如何使用Istio服务网格实现它的详细指南。以下将讨论以下主题:
相互传输层安全(mTLS)是一种加密协议,旨在验证双方的身份并保护他们在网络中的通信。mTLS协议是TLS协议的扩展,其中双方(Web客户端和Web服务器)都经过身份验证。mTLS的主要目标是实现以下目标:
mTLS协议位于应用程序层和传输层之间,仅对消息(或数据包)进行加密。它可以看作是对TCP协议的增强。下图从概念上提供了mTLS在TCP/IP协议套件中的位置。
安全工程师、架构师和开发人员可以互换使用SSL、TLS和mTLS,这通常是因为它们的相似性。简单地说,mTLS是对TLS的增强,而TLS是对SSL的增强。
安全套接字层(SSL)的第一个版本是由网景(Netscape)公司在1994年开发的;最流行的版本是版本2和创建于1995年的版本3。它非常受欢迎,甚至被拍进了007系列电影中(下图是1997年上映的《明日帝国》)。
SSL的整体工作由三个子协议承载:
随着互联网应用的增多,对网络中数据的细粒度安全性要求也越来越高。因此,传输层安全性(TLS)是由IETF开发的。网景公司将SSL项目移交给IETF,传输层安全性(TLS)是SSL的高级版本;协议的代码思想和实现是相同的。
SSL和TLS协议之间的主要区别在于用于在TLS中加密数据的密码套件(或算法)是高级的。其次,对握手、记录和警报协议进行了修改和优化,以适应互联网的使用。
注:在SSL握手协议中,服务器通过发送证书对客户端进行身份验证是强制性的,但客户端身份验证是可选的,以确保线路的安全。但是在TLS中,只有对服务器和客户端进行身份验证的规定,而不是相反。几乎所有使用HTTPS作为协议访问的网站都将使用TLS证书将自己建立为真正的网站。如果用户访问Google.com并单击挂锁符号,它将显示TLS证书。
TLS主要用于以客户端为用户的Web应用程序。此外,确保数十亿客户端或用户的身份验证仅适用于某些Web应用程序。
但是,随着大型单片应用程序分解成许多通过互联网通信的微服务,对mTLS的需求突然增长。mTLS协议确保Web客户端和Web服务器在握手前都进行身份验证。(将在本文后面看到mTLS协议的工作模型)。
现代业务是使用Web应用程序完成的,其底层架构遵循混合云模型。微服务将分布在公共云/私有云、Kubernetes和on-prem VM上。各种微服务和组件之间的通信是在网络上进行的,这带来了黑客攻击或恶意攻击的重大风险。以下是一些可以通过使用mTLS协议完全避免的网络攻击场景。
随着通过Web应用程序的业务使用的增加以及网络攻击威胁的同时增加,mTLS的用例每天都在增长。以下是基于与不同行业或领域(银行、金融科技和在线零售公司)的许多领导者讨论的经验的一些重要用例。
在理解mTLS的工作机制之前,需要了解以下几个概念。
数字证书是由证书颁发机构(CA)颁发的小型计算机文件,用于对用户、应用程序或组织进行身份验证。数字证书包含证书持有者的姓名、证书序列号、有效期、公钥和证书颁发机构的签名等信息。
证书颁发机构(CA)是一个受信任的第三方,它验证用户身份并颁发包含申请者公钥和其他信息的加密数字证书。值得关注的证书颁发机构(CA)包括VeriSign、Entrust、LetsEncrypt、Safescript Limited等。
创建证书颁发机构层次结构是为了分配颁发证书的工作负载。可以存在从不同级别的不同证书颁发机构(CA)颁发证书的实体。在证书颁发机构(CA)的多级层次结构(如父级和子级)中,顶端有一个证书颁发机构(CA),称为Root CA参阅下图)。每个证书颁发机构(CA)还将拥有由父同证书颁发机构(CA)颁发的证书,Root CA将拥有自签名证书。
为了确保证书颁发机构(CA)向客户端/服务器颁发证书是可信的,安全协议建议实体将它们的数字证书和整个链发送到Root CA。
在为实体创建证书时,证书颁发机构(CA)将生成一个公钥和一个私钥——通常称为公钥对。公钥和私钥用于验证其身份并加密数据。公钥是公开的,但私钥是保密的。如果有兴趣了解生成公钥的算法,可以了解有关RSA、DSA、ECDSA和ed25519的更多信息。
它是证书的一个特殊类别,由国际电信联盟定义,它使用数字签名将应用程序的身份(主机名、组织名称等)绑定到公钥。它是所有安全协议SSL/TLS/mTLS中最常用的证书,用于保护Web应用程序。
如上所述,mTLS具有与SSL类似的子协议实现。两个应用程序使用mTLS协议相互通信有8个阶段(如下所述)。
1.使用hello建立安全功能:客户机尝试与服务器通信(也称为客户机hello)。客户端hello消息将包含特定参数的值,例如mTLS版本、会话id、密码套件、压缩算法等。服务器还将发送一个名为server hello的类似响应,其中包含客户端发送的相同参数的值。
2.服务器身份验证和密钥交换:在这一阶段,服务器将向客户端共享其数字证书(主要是微服务的X.509证书)和通向Root CA的整个链。它还需要客户端的数字证书。
3.客户端验证服务器的证书:客户端将使用数字证书中的公钥来验证服务器的真实性。
4.客户端身份验证和密钥交换:在验证完成之后,客户端向服务器发送数字证书进行验证。
5.服务器验证客户端证书:服务器验证客户端的真实性。
6.主密钥生成和握手完成:一旦双方的真实性建立,客户端和服务器将建立握手,并生成两个新密钥;共享的秘密信息仅为各方所知,并在会话中处于活动状态。
(1)主密钥:用于加密
(2)消息认证码(MAC):用于保证消息的完整性
7.开始加密通信和传输:信息交换将从使用主秘钥加密的所有消息或数据包开始。在这层面纱的背后,mTLS协议会将消息划分为称为片段的较小块,压缩每个片段,为每个块添加消息认证码(MAC),最后使用主密钥对其进行加密。
8.数据传输开始:最后,mTLS协议将消息块附加报头,并将其发送给TCP协议,将其发送到目的地或接收方。
9.会话结束:一旦通信完成,会话将关闭。如果在传输过程中检测到异常,mTLS协议将销毁所有密钥和秘密,并立即终止会话。
注:在上述阶段中,假设证书颁发机构(CA)已经向仍然有效的实体颁发了证书。实际上,关键任务应用程序的证书很快就会过期,并且需要经常进行证书轮换(将直接跳到Istio如何启用mTLS和证书轮换)。
Istio服务网格是一个基础设施层,它将网络和安全性抽象出应用层。它通过向每个应用程序注入Envoy代理(L4和L7 sidecar代理)并监听所有网络通信来实现这一点。
尽管Istio支持多种身份验证类型,但它最出名的是对托管在云平台、内部部署或Kubernetes基础设施上的应用程序实现mTLS。Envoy代理充当策略实施点(PEP);用户可以使用Istio提供的点对点(p2p)身份验证策略实现mTLS,并通过代理在工作负载级别强制执行它。
Istio中的p2p身份验证策略示例,用于将mTLS应用于Istio-nm命名空间中的demobank应用程序:
YAML
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
name: "mTLS-peer-policy"
namespace: "istio-nm"
spec:
selector:
matchLabels:
app: demobank
mtls:
mode: STRICT
Istio中mTLS认证的工作机制如下:
1.首先,到网格中任何应用程序的所有出站和入站流量都通过Envoy代理重新路由。
2.mTLS发生在客户端Envoy代理和服务器端Envoy代理之间。
3.客户端Envoy代理将尝试通过交换证书和证明其身份来连接服务器端Envoy代理。
4.一旦身份验证阶段成功完成,就会在客户端和服务端Envoy代理之间建立TCP连接,以执行加密通信。
需要注意的是,使用Istio的mTLS可以在所有级别上实现:应用程序、名称空间或网格范围。
Istio通过向附加到应用程序的Envoy代理颁发X.509证书来提供更强的身份。证书管理和轮换由与Envoy代理在同一容器中运行的Istio代理完成。Istio代理与Istio的控制平台Istiod对话,以有效地分发带有公钥的数字证书。以下是Istio中证书管理的详细阶段:
1.Istio代理生成公钥对(公钥和私钥),然后将公钥发送到Istio控制平台进行签名。这称为证书签名请求(CSR)。
2.Istiod有一个组件(早期的Galley)作为证书颁发机构(CA)。Istiod验证请求中的公钥、签名并向Istio代理颁发数字证书。
3.当需要mTLS连接时,Envoy代理使用Envoy秘密发现服务(SDS) API从Istio代理获取证书。
4.Istio代理观察特使使用的证书的过期。当证书到期时,代理向Istiod发起证书签名请求(CSR)。
微服务架构是当今的标准。应用程序的分布式特性为网络攻击者提供了更大的攻击面,因为这些应用程序通过网络相互通信。在这种情况下,安全性不能是事后才考虑的事项,因为它可能导致灾难性的数据泄露。使用Istio实现mTLS是确保云原生应用程序之间通信安全的有效方法。Splunk、Airbnb和Salesforce等许多行业领先的公司都使用开源的Istio来启用mTLS并增强其应用程序的安全性。
原文标题:What Is mTLS? How To Implement It With Istio,作者:Debasree Panda
当前标题:什么是mTLS?如何使用Istio实现它
文章网址:http://www.shufengxianlan.com/qtweb/news1/284501.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联