016 云原生之安全技术
零信任的核心思想是默认情况下不应该信任网络内部和外部的任何人、设备或系统,而是需要基于认证和授权重构访问控制的信任基础。诸如 IP 地址、主机、地理位置、所处网络等凭证均不能作为可信的凭证。零信任对访问控制进行理念上的颠覆,引导安全体系架构从“网络中心化”走向“身份中心化”,其本质诉求是以身份为中心进行访问控制。
Istio 安全架构的首要特点就是全链路都是通过双向 mTLS 进行加密,其次就是微服务和微服务之间的访问可以进行鉴权,通过权限访问之后还需要进行审计。
Istio 主要是针对 Pod 层 Workload 的访问控制,而 Calico 针对的则是 Node 层的访问控制。
Calico 构建了一个 3 层可路由网络:Felix、Dikastes 和 Envoy。Felix 是运行在 Node 上的守护程序,在每个 Node 资源上运行。Felix 负责编制路由、ACL 规则和该 Node 主机上所需的任何内容,以便为该主机上资源的正常运行提供所需的网络连接。
运行在 Node 上的 IPTables 负责进行细粒度的访问控制。通过 Calico 设置默认 Deny 的策略,凭借自适应的访问控制来执行最小化的访问控制策略,以构建容器下的零信任体系。Dikastes 和 Envoy 是可选的 Kubernetes Sidecar,通过双向 TLS 身份验证保护 Workload 到 Workload 的通信并增加相关的控制策略。
为了提升安全等级,微服务之间的通信支持 mTLS、mTLS-Lite、HPTA 等协议。在一些高安全等级的场景下,要求微服务的互访必须通过双向 TLS 来进行身份认证和链路的加密,即 mTLS。
SAST(Static Application Security Testing,静态应用程序安全测试)即白盒扫描,通过污点跟踪对源代码或二进制程序进行静态扫描。白盒扫描的优点在于可以无视环境随时进行,覆盖漏洞类型全面,且可以精确定位到代码段。但缺点也同样明显,由于路径爆炸问题,白盒在路径处理上并不一定与实际情况相符,且误报率较高。
DAST(Dynamic Application Security Testing,动态应用程序安全测试)即黑盒扫描,通过默认人的行为直接对系统发起请求,在请求过程中通过污染入参进行模糊测试,然后通过系统返回信息或者侧信道方式判断是否存在安全问题。相比 SAST,DAST 有着极低的误报率,且与代码语言无关,不需要针对代码做适配研发。但 DAST 也有缺点,主要体现在它难以覆盖复杂的交互场景,且扫描过程会对业务造成较大干扰,产生大量的报错和脏数据,使得研发测试难以进行。
可信计算的核心目标之一是保证系统和应用的完整性,从而确定系统或软件运行在设计目标期望时的可信状态。可信主要是通过度量和验证的技术手段来实现,度量就是采集所检测的软件或系统的状态,验证则是比对度量的结果和参考值是否一致,如果一致则表示验证通过,反之则表示验证失败。
从数据安全的角度看,数据的生命周期可以分为三种不同的状态:存储中、传输中、使用中。目前已经有很多种被证明行之有效的技术来保护第一种和第二种状态,例如加密存储、TLS 的安全传输等。但长期以来一直缺少安全可靠的技术来保护第三种场景,数据在运行时可能会受到威胁。
SGX(Software Guard Extensions,软件保护扩展)是 Intel 公司推出的一组安全指令级扩展,以处理器安全为基础保障,提供加密的执行环境。SGX 指令的访问控制机制可以实现不同程序间的隔离运行,从而保障代码和数据不受恶意软件破坏。
版权声明: 本文为 InfoQ 作者【穿过生命散发芬芳】的原创文章。
原文链接:【http://xie.infoq.cn/article/9ed7be30a934f4a7b6d6b19d4】。文章转载请联系作者。
评论