容器安全实践与授权管理的最佳实践|学习笔记

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 快速学习容器安全实践与授权管理的最佳实践

开发者学堂课程【云原生实践公开课监控和日志管理的最佳实践】学习笔记,与课程紧密联系,让用户快速学习知识

课程地址:https://developer.aliyun.com/learning/course/698/detail/12277


监控和日志管理的最佳实践


内容介绍:

一、 安全挑战

二、 应用安全

三、 主机安全

四、 供应链安全

五、 总结


一. 安全挑战

1. 云原生下的安全挑战

  • 新的攻击面
  • 新的攻击手段
  • 分钟级的生命周期
  • 更高的部署密度
  • 镜像中存在大量漏洞
  • CVE频出

image.png

应用架构演进带来了安全防护和合规审计的挑战升级

2. 云原生安全原则

  • 零信任安全模型下没有绝对的安全域
  • 在暴露的服务前设置尽可能多的防护层,实现纵深防御
  • 权限配置和凭证下发遵循权限
  • 最小化原则最小化攻击面

image.png


二、应用安全

1. 应用安全攻击路径

  • 攻击者恶意窃取kubeconfig或应用对应的serviceaccount,造成集群访问

凭证泄露

  • 攻击者利用窃取的集群访问凭证对集群发起攻击
  • 攻击者可能通过访问集群apiserver 获取secret 等敏感信息进一步越权攻击

image.png

2. 细粒度访问控制策略

  • 在云资源控制平面,遵循权限最小化原则合理分配云账号的资源访问权限
  • K8s集群数据平面,根据业务场景,通过Namespace 实现人员/应用/部门之

间的逻辑隔离

  • 使用RBAC进行资源模型维度的细粒度访问控制
  • 及时吊销或轮转可能泄露的访问凭证

image.png

3. 应用网络安全

  • 控制容器入网流量:
  •  限定容器允许监听的指定协议,端口和服务标签等
  • 限定除LB和Ingress关联的服务外不允许外网IP访问
  • 限定容器只允许其服务消费者访问
  • 控制容器出网流量:
  • 禁止不需要访问公网的Pods出网流量

image.png

代码示例:

kind: NetworkPolicy

apiversion : networking.k8s.io/v1

metadata :

namespace : my-app

name : deny-from-other-namespaces

spec:

podselector :

matchLabels:

ingress:

- from:

- podselector : { }

4. ServiceMesh

  • 通过sidecar 代理服务之间的请求
  • 服务之间保证mTLS传输加密
  • 应用证书托管下发和自动更新
  • 基于安全策略的服务间东西向网络访问控制

image.png

5. 应用隔离的纵深防御

(1) 3/4层网络隔离

(2)使用Namespace软隔离,基于RBAC实现细粒度访问控制

(3)优先使用内网集群并且设置节点和负载均衡的ACL

(4)基于服务网格实现7层网络的访问控制

image.png

6. 完备审计

  • 基础设施日志∶云平台资源操作审计,云服务账号操作审计等;
  • Kubernetes集群日志∶集群control-plane 组件日志,control-plane组件审计日

志 ( secrets审计,apiserver非法访问,exec进入容器等操作审计)

  • 系统运维日志:主机层应用操作和运维审计
  • 应用日志:容器内应用进程日志

image.png

7. 数据安全

  • 全链路传输加密∶
  • 系统组件,服务之间的全链路数据传输加密敏感数据落盘加密
  • 维护资产清单:
  • 应用资产在多云部署时建立不同的保护机制建立云上和on-perm资产中敏感信

息的防护机制

  • 熟悉责任共担模型:
  • 了解应用在云上的安全责任共担模型,选择适合应用场景的KMS或HSM服务
  • 理解国密标准/FIPS140-2等合规标准在数据安全上的定义
  • 密钥管理︰
  • 密钥的保护和轮转
  • DEK(数据加密密钥)和KEK(密钥加密密钥)隔离

image.png


三、主机安全

1.主机安全的攻击路径

  • 主机安全的攻击路径
  • 攻击者利用容器的内核特性进行逃逸攻击·对主机上其他容器应用发起攻击
  • 对主机上的kubelet或etcd中的数据发起攻击
  • 利用主机上的凭证发起集群维度的攻击

image.png

2. 应用镜像最小化

  • 使用轻量化的基础镜像e.g. distroless镜像
  • 不要构建过大或层数过多的镜像
  • 删除基础镜像中的包管理或网络工具
  • 删除文件属性修改工具( chmod , chown )
  • 不要轻易部署公共仓库的镜像
  • 不要使用root用户启动镜像
  • 可以使用 Ephemeral 临时容器debug ( Alpha as of1.16 )

3. Pod安全参数

  • Run as non-root
  • Use read-only root filesystem
  • Set no_new_privs

代码示例:

apiVersion: apps/v1kind:

Pod

metadata:

name: security-context-sample

spec:

securitycontext:

runAsuser: 1000

allowPrivilegeEscalation: false

readonlyRootFilesystem: true

capabilities:

drop:

- ALL

危险配置

风险原因

Pod挂载/etc , /root等敏感目录

攻击者可以修改host上的关键配置,安装恶意后门程序等

启动特权容器

特权容器具有host 上系统设备的交互权限,可以轻易获取对其他容器的访问权限

root 用户启动容器

Runc容器和host共享主机内核,root权限可以轻易修改主机文件权限或执行恶意程序

共享主机网络

让侵入容器的攻击者轻易拥有主机的网络能力

允许调用setuid 提权

允许通过调用setuid切换用户从而进行提权攻击

4. 使用PSP(Pod Security Policy)

企业安全运维人员通过PSP策略配置可以约束应用容器运行时刻的安全行为

5. 节点权限最小化

image.png

  • 清理节点上不必要的敏感信息·避免直接使用AK/SK
  • 在多租场景下,遵循权限最小化原则收敛集群节点绑定的云资源权限
  • 使用pod维度的细粒度云资源访问权限控制

image.png

6.安全容器

  • 同一节点上的不同pod通过沙箱彼此隔离
  • 沙箱容器在pod隔离的基础上实现了内核级别的隔离
  • 多种实现方式:
  • Kata containers , gVisor ,Firecracker

image.png

  • 病毒和恶意程序
  • 容器内部入侵行为
  • 容器逃逸
  • 高风险操作预警


四、供应链安全

  • 供应链安全
  • 建立供应链中云原生制品的安全扫描机制
  • 对接不同的漏洞库,保证漏洞库的实时更新建立漏洞风险评分和对应的处理机

  • 在应用构建和部署流程中识别并自动阻断风险漏洞
  • 禁止部署和运行包含高危风险的镜像或其他制品
  • 禁止上传包含指定漏洞的镜像或其他制品
  • 提供定制化可配置的安全管理手段
  • 提供前置安全策略定制和自动化的阻断能力
  • 提供制品安全分发和存储的管理机制
  • 提供链路的可追踪,可观测能力

1. 供应链流水线

首先,对于应用开发者而言,在完成应用的开发测试后,可以利用企业级镜像服务进行对应云原生制品智能化的构建,当完成镜像构建时,我们可以通过配置自动触发对镜像的安全扫描,在公链侧通过镜像安全扫描,提前暴露应用镜像中的安全风险。

同时,也可以对push到指定仓库的镜像进行自动化的签名,签名所用的密钥可以通过策略指定,使用云上存储的指定密钥。对于完成了安全扫描和加签的安全镜像,可以使用加速分发技术,推送到不同地域的镜像仓库中,并在最终在应用部署时刻,完成对镜像的验签。

image.png

2. 镜像签名

在整个方案和安全能力的实现上分为两阶段,分别为构建交付环节的安全流程以及

部署时刻的准入控制。

首先第一步,开发人在完成应用开发后,开发人要将指定的应用推送到指定的仓库实例中,对于配置好加签设置的仓库,会自动为系统配置好加签,而对于系统的安全管理员,首先需要在指定的应用部署的集群上安装验签组件,并进行验签策略的配置,配置会自动下发部署在指定的集群中。第二,当集群中的应用部署发起部署时,已经部署在集群中的验签组件,会基于Kubernetes提供的机制,根据绑定的验签策略,自动获取工样,并进行验签。对不符合策略签名条件的非法部署会进行自

动的阻断和审计。

image.png

3.巡检报告

巡检报告中主要展示最近执行的巡检扫描结果,主要包括以下几类信息:

  • 扫描结果概览.包括总的检查条目数、检查各个资源项数目及百分比、整体的

健康度

  • 各大类扫描结果统计.包括报告健康检查、镜像、网络、资源、安全等大类的

结果。

  • 各个workload配置的详细扫描结果,包括资源类别、资源名称、命名空间、检

查类型、检查项、检查结果等内容。

 

五、 总结

  • 尽早升级Kubernetes集群
  • RBAC和基于namespace 的软隔离是基本且必要的安全措施,保证精细化授权
  • 保证应用镜像最小化
  • 在应用运行时刻遵循权限的最小化原则,尽可能收敛pod 内容器的系统权限
  • 使用PSP(Pod Security Policies)对Pod的安全参数进行校验,同时加固Pod运行

时刻

  • 全链路数据加密,使用KMS或HSM服务,及时吊销或轮转可能泄露的访问凭证
  • 使用NetworkPolicy或 ServiceMesh 服务进行业务应用间东西向网络流量的访

问控

  • Log everything,对接监控系统,实现容器应用维度的监控
  • 构建安全的供应链流水线
  • 关注应用部署后的运行时刻安全,在监控和告警外有处理安全事件的应急响应

预案

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
7天前
|
Kubernetes 监控 开发者
掌握容器化:Docker与Kubernetes的最佳实践
【10月更文挑战第26天】本文深入探讨了Docker和Kubernetes的最佳实践,涵盖Dockerfile优化、数据卷管理、网络配置、Pod设计、服务发现与负载均衡、声明式更新等内容。同时介绍了容器化现有应用、自动化部署、监控与日志等开发技巧,以及Docker Compose和Helm等实用工具。旨在帮助开发者提高开发效率和系统稳定性,构建现代、高效、可扩展的应用。
|
8天前
|
Kubernetes 负载均衡 Cloud Native
云原生应用:Kubernetes在容器编排中的实践与挑战
【10月更文挑战第27天】Kubernetes(简称K8s)是云原生应用的核心容器编排平台,提供自动化、扩展和管理容器化应用的能力。本文介绍Kubernetes的基本概念、安装配置、核心组件(如Pod和Deployment)、服务发现与负载均衡、网络配置及安全性挑战,帮助读者理解和实践Kubernetes在容器编排中的应用。
31 4
|
8天前
|
Kubernetes 监控 Cloud Native
云原生应用:Kubernetes在容器编排中的实践与挑战
【10月更文挑战第26天】随着云计算技术的发展,容器化成为现代应用部署的核心趋势。Kubernetes(K8s)作为容器编排领域的佼佼者,以其强大的可扩展性和自动化能力,为开发者提供了高效管理和部署容器化应用的平台。本文将详细介绍Kubernetes的基本概念、核心组件、实践过程及面临的挑战,帮助读者更好地理解和应用这一技术。
36 3
|
15天前
|
Kubernetes 监控 开发者
专家级实践:利用Cloud Toolkit进行微服务治理与容器化部署
【10月更文挑战第19天】在当今的软件开发领域,微服务架构因其高可伸缩性、易于维护和快速迭代的特点而备受青睐。然而,随着微服务数量的增加,管理和服务治理变得越来越复杂。作为阿里巴巴云推出的一款免费且开源的开发者工具,Cloud Toolkit 提供了一系列实用的功能,帮助开发者在微服务治理和容器化部署方面更加高效。本文将从个人的角度出发,探讨如何利用 Cloud Toolkit 来应对这些挑战。
32 2
|
24天前
|
存储 运维 云计算
探索Docker容器化:从入门到实践
在这个快速发展的云计算时代,Docker容器化技术正在改变应用的开发、部署和管理方式。本文旨在为初学者提供一个关于Docker的全面入门指南,并通过实践案例展示Docker在实际开发中的应用。我们将一起了解Docker的核心概念、基本操作、网络和存储,以及如何构建和部署一个简单的Web应用。无论你是开发者还是运维人员,本文都会帮助你快速掌握Docker的核心技能。
|
25天前
|
运维 JavaScript 虚拟化
探索容器化技术:Docker的实践与应用
【10月更文挑战第9天】探索容器化技术:Docker的实践与应用
47 3
|
26天前
|
缓存 监控 测试技术
掌握容器化持续集成/持续部署(CI/CD)的最佳实践
【10月更文挑战第8天】本文介绍了容器化持续集成/持续部署(CI/CD)的最佳实践,涵盖容器化CI/CD的概念、优势和实施步骤。通过使用容器技术,可以实现环境一致性、快速迭代和易于扩展,提高软件开发的效率和可靠性。文章还详细讨论了编写高效的Dockerfile、自动化测试、安全性、监控和日志管理等方面的最佳实践。
|
1月前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker与Kubernetes入门
【9月更文挑战第30天】在云计算的浪潮中,云原生技术正以前所未有的速度重塑着软件开发和运维领域。本文将通过深入浅出的方式,带你了解云原生的核心组件——Docker容器和Kubernetes集群,并探索它们如何助力现代应用的构建、部署和管理。从Docker的基本命令到Kubernetes的资源调度,我们将一起开启云原生技术的奇妙之旅。
|
20天前
|
运维 Kubernetes 监控
掌握Docker容器化技术:构建、部署与管理的高效实践
【10月更文挑战第14天】掌握Docker容器化技术:构建、部署与管理的高效实践
34 0
|
28天前
|
运维 监控 Cloud Native
深入了解容器化技术:Docker 的应用与实践
【10月更文挑战第6天】深入了解容器化技术:Docker 的应用与实践
36 0