零信任安全架构(Zero Trust Security Architect)最早由著名研究机构Forrester首席分析师约翰.金德维格2010年提出 , 其核心思想是,默认情况下不应该信任网络内部和外部的任何人/设备/系统,需要基于认证和授权实现访问控制的信任基础。诸如 IP 地址、主机、地理位置、所处网络等均不能作为可信的凭证。零信任安全针对传统边界安全架构思想进行了重新评估和审视,并对安全架构思路给出了新的建议。零信任是一个安全框架,要求所有用户,无论是在组织网络内部还是外部,都必须经过身份验证、授权和持续验证安全配置和状态,然后才能被授予或保持对应用程序和数据的访问权限。零信任假设没有传统的网络边缘;网络可以是本地的、云中的,也可以是与任何地方的资源以及任何位置的工作人员的组合或混合。
零信任是对遵循“信任但验证”方法的传统网络安全的重大背离。传统方法自动信任组织边界内的用户和端点,使组织面临内部恶意行为者和恶意行为者接管合法凭证的风险,允许未经授权和受损的帐户一旦进入内部就可以进行广泛访问。
该框架的执行结合了先进技术,例如基于风险的多因素身份验证、身份保护、下一代端点安全和强大的云工作负载技术,以验证用户或系统身份、考虑当时的访问以及维护的系统安全性。零信任还需要考虑数据加密、保护电子邮件以及在资产和端点连接到应用程序之前验证它们的健康状况。
Kubernetes API Server是每个集群的Kubernetes控制平面的核心,API调用用于查询和操作所有Kubernetes对象(命名空间、Pod、配置映射等)的状态。因此,控制对API使用的访问是控制Kubernetes访问和实现Kubernetes零信任的关键。保护访问的第一步是使用传输层安全性 (TLS) 保护进出API服务器的流量。

一旦传输安全,Kubernetes就会包含所有必要的钩子(Hooks)来实现 Kubernetes零信任安全架构,以控制每个Kubernetes集群的API服务器访问。这些钩子分为四个关键领域:
认证Authentication
授权Authorization
准入控制Admission Control
日志与审计Logging and Auditing
Oracle Cloud Infrastructure Container Engine for Kubernetes(OKE)是适用于Oracle云基础架构容器引擎, 是一项完全托管,可扩展且高度可用的服务,可用于将容器化的应用程序部署到云中, 安全一直是OKE考虑的重中之重,OKE提供以下措施帮助运行在Kubernetes集群的应用实现零信任安全架构。
用户需要身份验证和授权才能访问集群的Kubernetes API端点。为了实现这些目标,OKE将集群与OCI身份和访问管理(IAM)服务原生集成。OCI IAM提供强大的用户身份验证来访问OKE集群,并提供OKE API 的授权,允许定义集群管理员和集群用户。遵循最小权限原则,用户只能访问他们有权访问的 Kubernetes 资源。Kubernetes 基于角色的访问控制 (RBAC) 整合了OCI 用户身份信息,并且可以将 Kubernetes 角色绑定到OCI用户。为了简化 Kubernetes RBAC的配置,OKE添加了对将Kubernetes角色绑定到OCI IAM 组。
安全访问 Kubernetes 私有集群
为了轻松访问完全私有的集群,现在可以使用 Oracle Cloud Infrastructure (OCI) Bastion。OCI Bastion 服务是一项完全托管的服务,可提供对 OCI 中的私有资源的安全且短暂的 SSH 访问。Bastion该服务通过提供额外的一层防御外部威胁来改善安全态势。可以使用OCI Bastion获得对集群的 Kubernetes API 端点和工作程序节点的受限和限时安全访问,而无需任何公共端点。
Kubernetes 集群的网络安全组
只有获得授权的个人和系统才能访问集群。控制网络访问是抵御未经授权的行为者的一道防线。OKE 支持所有集群组件的网络安全组 (NSG, Network Security Group)。NSG 包含一组入口(Ingress)和出口(Egress)安全规则,适用于OCI的虚拟云网络 (VCN, Virtual Cloud Networks) 中的虚拟网卡 (VNIC)。可以为Kubernetes API端点和工作程序节点设置一个私有子网,为Kubernetes服务创建的负载均衡器设置一个公有子网。访问限制和隔离由适用于VNIC级别的每个集群组件的特定NSG实施,而与子网配置无关。
Kubernetes API 的多因素身份验证
通过kubectl CLI发出Kubernetes API请求的用户的身份验证依赖于PEM 格式的 RSA 公钥, 与此同时, OKE支持OCI IAM多因素身份验证 (MFA, Multi Factor Authentication)。在 IAM 服务中启用 MFA 后,当用户连接到集群 Kubernetes API 时,会检查 RSA 密钥,这是第一个因素。然后提示用户提供来自已注册 MFA 设备(例如电话)的第二个验证码,作为第二个因素。这两个因素共同作用,提供了额外的安全层来验证用户的身份并完成身份验证过程。
启用 Kubernetes Pod 安全上下文
可以使用定义权限和访问控制设置的安全上下文来配置Kubernetes Pod。如果应用程序受到威胁,安全上下文可防止权限升级。Kubernetes支持的一些安全上下文需要在工作节点上进行特定的操作系统 (OS) 配置,OKE现在允许自定义工作节点cloud-init脚本,工作节点可以根据脚本自动配置,包括启用SELinux,还可以自动配置其他操作系统设置,例如运行Internet安全中心 (CIS) 强化脚本。
Kubernetes 数据加密
OCI始终使用高级加密标准 (AES) 算法对静态块卷、引导卷和卷备份进行加密。在计算实例和存储之间移动的所有数据都通过内部高度安全的网络传输。
OKE可以以下三种资源进行加密:
加密工作节点上的启动卷和持久卷数据
加密OCI文件存储上的持久卷数据
加密Kubernetes secret 数据
锁定漏洞和受损的容器镜像
应用程序是最后的攻击媒介,OKE提供工具可以确保不良行为者远离容器映像,OKE支持容器镜像扫描、签名和验证,可以确保应用程序镜像没有严重的漏洞。此外,您可以通过强制执行映像签名来确保在部署应用程序映像时保留应用程序映像的完整性。通过只允许在集群中部署已签名的映像,可以保护整个应用程序群免受可能插入受损映像中的恶意代码的侵害,并确信所部署的与之前签名的受信任映像相同。
审计Kubernetes活动
监控 Kubernetes 集群上的用户和应用程序活动对于检测任何异常活动或安全漏洞非常重要。所有 Kubernetes 审计事件都在 OCI 审计服务(Audit service)中可用,该服务提供了跨 OCI 应用程序的所有用户活动的统一视图,以通过观察成功和不成功的登录尝试来快速识别安全事件,例如集群是否受到攻击。此外,还可以轻松地将 Kubernetes 审计事件与OCI租户中的其他审计事件相关联。
持续的安全评估和问题修复
OKE与Cloud Guard和Security Zones等OCI安全服务集成,可进一步帮助改善安全状况。Oracle Cloud Guard提供跨 OCI 租户的云安全状况的统一视图。Cloud Guard 检测配置错误的资源和不安全的活动 ,Cloud Guard 可以自动检查您VCN 的配置,并在允许流量流向某些受限端口时发出警报,然后可以对安全问题进行分类和解决。
体验更多 OKE安全功能,访问下面网页:
https://docs.oracle.com/en-us/iaas/Content/Security/Reference/oke_security.htm

作者简介
向志华,甲骨文云架构团队资深咨询顾问,专注 Application PaaS 产品及服务,同时关注Docker容器产品及Kubernetes容器调度产品方向。13年IT行业从业经验,擅长J2EE产品架构及开发,参与过Openstack相关产品研发工作。您可以通过george.xiang@oracle.com,与他联系。




