CISO 需考虑的五项 Kubernetes 安全措施
随着企业对软件开发的安全意识提高,开发和运维环节中各个团队也开始将安全嵌入他们正在使用或处理的平台或应用程序架构中。不同于各团队把对安全的关注放在自己所处理的环节,首席信息安全官(CISO)需要把握和负责从基础架构团队到应用程序团队等企业内部的所有安全问题。
阅读本文,将带您了解 CISO 需要考虑实施的五项 Kubernetes 安全措施。
可靠的身份验证解决方案
在创建一个 Kubernetes 集群或创建 500 个 Kubernetes 集群的时候,每个 CISO 想到的第一个问题是“工程师和用户将如何对这个 Kubernetes 集群进行身份验证?”。现成可用的解决方案有 RBAC 角色和权限,对用户和系统组件(如服务帐户)进行身份验证,以允许访问特定的 Kubernetes 资源。当然这样做可能还不够,企业需要考虑一些其他因素,比如 Kubernetes 的 oAuth 和 SSO。
根据企业部署 Kubernetes 的位置,有部分解决方案可以在本地运行,而其他解决方案则需要单另实施。举例来说,Azure Kubernetes Service (AKS) 等基于云的 Kubernetes 服务中,工程师能够获得开箱即用的 Azure Active Directory,从而在整个组织的所有 AKS 集群中启用和实施。Active Directory 是一种久经考验的用户身份验证方法,它可以在 AKS 上运行的所有 Kubernetes 集群中良好应用。
如果使用的 Kubernetes 环境没有像 Active Directory 这样的本机解决方案,可以考虑支持 OpenID Connect (OIDC) 的选项。例如,Okta 和 AuthO 已经集成了可用的 Kubernetes 身份验证解决方案。
实施 Kubernetes 时的安全习惯
在首次实施 Kubernetes 时,有很多安全习惯可以帮助缓解大量安全风险。
第一个是单租户和多租户集群。从 Kubernetes 的角度考虑单租户或多租户时,通常会考虑有多少用户可以访问集群以及集群上运行的应用程序的内容。而从用户的角度来看,则更多关注 Kubernetes 集群是不是被设置为只有一个用户能够访问,也就是说每个用户都可以拥有自己的 Kubernetes 集群,从而降低多租户风险。如果需要多租户(很多情况都是如此),那么为用户设置适当的 RBAC 权限至关重要。这样以来,用户就只能访问他们基于自身角色所需要的内容。
对于 Kubernetes,与之交互的所有资源都是 Kubernetes API 的一部分。有 API 的地方就有日志、指标和跟踪。如 Prometheus 和 Grafana,可以从 Kubernetes 集群中检索安全日志,这能够帮助团队有效缓解安全风险。不仅如此,工程团队还可以为这些日志设置警报,以便及时了解和处理。
从隔离的角度来说,从一开始就建立合适的命名空间(Namespace)的习惯非常重要。根据访问级别,用户可能可以跨命名空间部署应用程序和资源,包括 Default 甚至 kube-system,其中包含运行集群所需的核心 Kubernetes Pod。为了避免这个问题,用户和服务帐户应当只有权将应用程序部署到特定的命名空间。
K8s 左移
Kubernetes 左移,以及时发现和缓解相应安全风险,这能为 CISO 及软件工程团队省去不少麻烦。
例如,企业的开发团队正在使用 CI/CD 平台从应用程序构建容器镜像。通过左移场景,可以确保团队正确扫描进入容器镜像的应用程序二进制文件,并且当构建容器镜像完成时,使用 KSOC 等安全平台来扫描部署到 Kubernetes 集群。一旦容器镜像被扫描和验证,它们就可以被部署到 Kubernetes。
Kubernetes 左移能够确保:
应用程序二进制文件被扫描
容器镜像被扫描
所有容器镜像都经过验证
这样可以节省团队的时间、精力并省去后续的手动修复,确保应用程序可以在适当的时间范围内部署到 Kubernetes,并满足上市和发布策略周期。
提高合规性审计
随着 Kubernetes、云原生平台、资源平台等技术的飞速发展,捕捉随时可能出现的每一个可能造成安全隐患的问题几乎是不可能完成的任务。因此企业使用外部审计顾问来帮助满足 HIPPA、PCI、PHI 和 SOC2 合规性需求,还是与内部团队成员一起执行审计,或者内外部审计同时进行,都可以为企业的 Kubernetes 环境提供更好的安全保障。
审核可以采用以下形式:
全环境扫描
完整的应用程序扫描
单个 Kubernetes 集群扫描
完整的 Kubernetes 环境扫描
Kubernetes 生成的日志
实时 Kubernetes 漏洞分析
上述所有形式
审计并发现漏洞,能够在风险变成更大问题甚至影响整个组织的问题之前,及时并有效降低风险。
多环境的灵活性
最后是关于多环境(multi-environment)的灵活性。随着云原生的不断发展,目前存在三种云环境形式:
多云
混合云
单一云
从单一云的角度来看,CISO 只需要关注和保护一个云中的组件和资源。但是涉及到多云或者混合云环境时,企业资源将位于多个位置,且需要跨网络进行通信。而混合云就是部分基础架构在本地,另一部分则在云上。因此企业需要同时保护基础架构、本地内部网络、云基础架构、云服务以及本地与云之间的通信。对于多云环境,企业不仅要保护每个云中运行的云服务,还要保护云之间的通信。
由于混合云和多云的应用越来越广泛,未来会有越来越少的企业考虑单一环境。因此,如同考虑跨多个数据中心的环境一样,CISO 同样也需要思考存在多个跨云和混合环境时的情况。
CISO 需考虑的五项 Kubernetes 安全措施的更多相关文章
- VS2017十五项新功能体验
Visual Studio 2017十五项新功能体验 Visual Studio 2017正式已经于2017.3.7号正式发布,选在这一天发布也是为了纪念Visual Studio 二十周年.MVP ...
- 第十五章 Kubernetes调度器
一.简介 Scheduler 是 kubernetes 的调度器,主要的任务是把定义的 pod 分配到集群的节点上.听起来非常简单,但有很多要考虑的问题: ① 公平:如何保证每个节点都能被分配资源 ② ...
- 【Vuejs】397- Vue 3最值得期待的五项重大更新
作者|Filip Rakowski 译者|王强 编辑|王文婧 最近关于即将发布的 Vue.js 的第 3 个大版本的消息越来越密集.虽然本文所讨论的内容还没有完全确定下来,但作者已经可以肯定它将是对当 ...
- SOLID:面向对象设计的前五项原则
S.O.L.I.D是Robert C. Martin提出的前五个面向对象设计(OOD)原则的首字母缩写,他更为人所熟知的名字是Uncle Bob. 将这些原理结合在一起,可使程序员轻松开发易于维护 ...
- Docker与k8s的恩怨情仇(五)——Kubernetes的创新
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 上节中我们提到了社区生态的发展使得Kubernetes得到了良性的发展和传播.比起相对封闭的Docker社区 ...
- Visual Studio 2017十五项新功能体验
Visual Studio 2017正式已经于2017.3.7号正式发布,选在这一天发布也是为了纪念Visual Studio 二十周年.MVP 2017技术峰会将于这个周末(3.17)在北京举办,由 ...
- 十五项指标衡量DevOps是否成功
DevOps在你的组织内部运行的如何?如果你需要一些帮助来度量它的运行情况,我们已经准备了一个用于跟踪的关键DevOps指标的列表,这些度量可以帮助了解你的团队是如何随着时间的推移而运行的. 在团队内 ...
- 国外牛人的五个Kubernetes学习建议
现在云中存在的许多系统都是建立在基于虚拟机,虚拟磁盘等物理概念的抽象基础之上的,”Heptio的联合创始人兼首席技术官兼Kubernetes在Google的原始开发人员之一的Joe Beda说. “K ...
- 三十五、kubernetes NameSpace介绍
Kubernetes NameSpace 介绍 Kubernetes使用命名空间的概念帮助解决集群中在管理对象时的复杂性问题.命名空间允许将对象分组到一起,便于将它们作为一个单元进行筛选和控制.无论是 ...
- 五、kubernetes节点与令牌管理
Kubernetes节点与令牌管理 一.令牌管理 查看令牌 [root@master ~]# kubeadm token list 删除令牌 [root@master ~]# kubeadm toke ...
随机推荐
- k8s zookeeper安装(集群版与非集群版)
集群版zookeeper安装 第一步:添加helm镜像源 helm repo add incubator http://storage.googleapis.com/kubernetes-charts ...
- 1.参考例5.2.1,设计一个序列检测器。功能是检测出串行输入数据Sin中的4位二进制序列0101(自左至右输入),当检测到该序列时,输入Out=1;没有检测到该序列时,输入Out=0。要求不考虑序列重叠,如010101的序列中只包含一个0101序列。
设计块: module Detector2 ( input CP,Sin,nCR, output reg Out ); reg [1:0] Current_state,Next_state; para ...
- sed 原地替换文件时遇到的趣事
哈喽大家好,我是咸鱼 在文章<三剑客之 sed>中咸鱼向大家介绍了文本三剑客中的 sed sed 全名叫 stream editor,流编辑器,用程序的方式来编辑文本 那么今天咸鱼打算讲一 ...
- AtCoder Beginner Contest 326 (ABC326)
A. 2UP3DOWN 直接模拟即可. Code B. 326-like Numbers 枚举,每次拆除百.十.个位,再判断. Code C. Peak Description 数字线上放置了 \(N ...
- AcWing 190. 字串变换
原题连接:AcWing 190. 字串变换 题意: 已知有两个字串 \(A, B\) 及一组字串变换的规则(至多 \(6\) 个规则): \(A_1→B_1\) \(A_2→B_2\) \(-\) 规 ...
- Windows10下的hexo搭建
用hexo搭建个人博客 查看效果:慢蜗牛博客 目录 用hexo搭建个人博客 准备环境 Github Node.js和Git 连接Github 安装hexo 安装插件 部署 Hexo 到 GitHub ...
- 华为云WebAssembly代码静态符号执行技术实现新突破
本文分享自华为云社区<华为云WebAssembly代码静态符号执行技术实现新突破,相关论文被软件工程顶会ISSTA2023接收并荣获杰出论文奖>,作者:华为云软件分析Lab . WebAs ...
- Java 21 官方速览:全面拥抱虚拟线程
前言 首先,感谢一下不少xdm私信关心我的身体状况,我也不是什么厉害的大佬,点开通知看到一堆私信还是蛮感动的. 近来有意大幅缩短了更新频率,增加了日常调养身体的时间,淋巴结确实变小了,睡眠也逐渐正常, ...
- New Type Functions/Utilities for Dealing with Ranges in C++20
Generic Types of Ranges 类型萃取从字面意思上来说其实就是帮助我们挑选某个对象的类型,筛选特定的对象来做特定的事.可以先来回顾一下以前的写法. #include <ve ...
- Go语言函数详解
函数 (1)函数的定义 函数使用func进行定义 函数是基本的代码块,用于执行一个任务 Go语言至少有一个main函数 函数声明告诉了编译器函数的名称,返回类型和参数 //1.无参数无返回值函数的定义 ...