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

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 快速学习容器安全实践与授权管理的最佳实践

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

课程地址: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,对接监控系统,实现容器应用维度的监控
  • 构建安全的供应链流水线
  • 关注应用部署后的运行时刻安全,在监控和告警外有处理安全事件的应急响应

预案

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
15天前
|
存储 监控 安全
【专栏】探讨Docker Compose的核心概念、使用方法及最佳实践,助你轻松驾驭容器编排的世界
【4月更文挑战第27天】Docker Compose是款轻量级容器编排工具,通过YAML文件统一管理多容器应用。本文分三部分深入讨论其核心概念(服务、网络、卷和配置)、使用方法及最佳实践。从快速入门到高级特性,包括环境隔离、CI/CD集成、资源管理和安全措施。通过案例分析展示如何构建多服务应用,助力高效容器编排与管理。
|
23天前
|
运维 Kubernetes 监控
构建高效自动化运维系统:基于容器技术的策略与实践
【4月更文挑战第19天】随着云计算和微服务架构的兴起,传统的运维模式正逐渐向自动化、智能化转型。本文将探讨如何利用容器技术构建一个高效、可靠的自动化运维系统,涵盖系统设计原则、关键技术选型以及实践经验分享。通过引入容器技术,我们可以实现应用的快速部署、弹性伸缩和故障自愈,从而提高运维效率,降低系统维护成本。
|
3天前
|
Java 数据库连接 Docker
【Docker 专栏】Docker 容器内环境变量的管理与使用
【5月更文挑战第9天】本文介绍了Docker容器中环境变量的管理与使用,环境变量用于传递配置信息和设置应用运行环境。设置方法包括在Dockerfile中使用`ENV`指令或在启动容器时通过`-e`参数设定。应用可直接访问环境变量或在脚本中使用。环境变量作用包括传递配置、设置运行环境和动态调整应用行为。使用时注意变量名称和值的合法性、保密性和覆盖问题。理解并熟练运用环境变量能提升Docker技术的使用效率和软件部署质量。
【Docker 专栏】Docker 容器内环境变量的管理与使用
|
5天前
|
监控 安全 数据安全/隐私保护
【Docker专栏】Docker容器安全:防御与加固策略
【5月更文挑战第7天】本文探讨了Docker容器安全,指出容器化技术虽带来便利,但也存在安全隐患,如不安全的镜像、容器逃逸、网络配置不当等。建议采取使用官方镜像、镜像扫描、最小权限原则等防御措施,并通过安全的Dockerfile编写、运行时安全策略、定期更新和访问控制等加固容器安全。保持警惕并持续学习安全实践至关重要。
【Docker专栏】Docker容器安全:防御与加固策略
|
5天前
|
监控 安全 数据库
【Docker专栏】Docker容器化应用的最佳实践
【5月更文挑战第7天】本文介绍了 Docker 容器化应用的关键最佳实践,包括使用官方基础镜像、保持镜像精简、以非 root 用户运行容器、安全扫描、编写高效 Dockerfile、环境隔离、使用数据卷、选择合适网络模式、设置资源限制、使用版本标签、容器编排以及文档和自动化部署。遵循这些实践可提升效率和安全性,同时要注意随着技术发展不断更新知识。
【Docker专栏】Docker容器化应用的最佳实践
|
6天前
|
运维 Kubernetes Devops
构建高效自动化运维体系:DevOps与容器化技术融合实践
【5月更文挑战第6天】随着企业IT架构的复杂化以及快速迭代的市场需求,传统的运维模式已难以满足高效率和高质量的交付标准。本文将探讨如何通过结合DevOps理念和容器化技术来构建一个高效的自动化运维体系,旨在实现持续集成、持续部署和自动化管理,提升系统的可靠性、可维护性和敏捷性。
|
10天前
|
存储 缓存 安全
Golang深入浅出之-Go语言中的并发安全容器:sync.Map与sync.Pool
Go语言中的`sync.Map`和`sync.Pool`是并发安全的容器。`sync.Map`提供并发安全的键值对存储,适合快速读取和少写入的情况。注意不要直接遍历Map,应使用`Range`方法。`sync.Pool`是对象池,用于缓存可重用对象,减少内存分配。使用时需注意对象生命周期管理和容量控制。在多goroutine环境下,这两个容器能提高性能和稳定性,但需根据场景谨慎使用,避免不当操作导致的问题。
33 4
|
11天前
|
运维 Kubernetes Devops
构建高效稳定的云基础设施:DevOps与容器化技术融合实践
【5月更文挑战第1天】 随着云计算的普及和企业数字化转型的加速,传统的IT运维模式已无法满足快速迭代和高可用性的要求。本文探讨了如何通过DevOps文化和容器化技术的融合来构建一个高效、稳定且可扩展的云基础设施。文章首先回顾了DevOps的核心理念及其对运维工作的影响,随后详细介绍了容器化技术的基本概念、优势以及在现代云环境中的关键作用。接着,文中以一系列真实案例为基础,分析了将DevOps与容器化相结合时所面临的挑战和解决方案,并提出了一套实施框架。最后,文章总结了这种融合实践对提高运维效率、加快产品上市速度和保障系统稳定性的积极影响,同时对未来的技术趋势进行了展望。
|
12天前
|
敏捷开发 运维 测试技术
构建高效自动化运维体系:基于容器技术的持续集成与持续部署实践
【4月更文挑战第30天】在数字化转型的浪潮中,企业对软件交付速度和质量的要求日益提高。自动化运维作为提升效率、确保稳定性的关键手段,其重要性不言而喻。本文将探讨如何利用容器技术构建一个高效的自动化运维体系,实现从代码提交到产品上线的持续集成(CI)与持续部署(CD)。通过分析现代容器技术与传统虚拟化的差异,阐述容器化带来的轻量化、快速部署及易于管理的优势,并结合实例讲解如何在实际环境中搭建起一套完善的CI/CD流程。
|
12天前
|
Kubernetes Devops Docker
构建高效稳定的云基础设施:DevOps与容器化技术融合实践
【4月更文挑战第30天】 在当今快速迭代和持续交付的软件发展环境中,传统的IT运维模式已不足以满足企业对效率和稳定性的双重需求。本文将深入探讨如何通过整合DevOps理念和容器化技术来构建一个既高效又稳定的云基础设施。文中不仅阐述了DevOps的核心原则、流程自动化的重要性以及容器化技术的基础知识,还提供了一个详细的实施案例,帮助读者理解这两种技术如何协同工作,以支持复杂的应用程序部署和管理。