Kubernetes 安全概述
学习目标
- 理解 Kubernetes 安全的整体架构
- 掌握安全领域的核心组件
- 了解安全最佳实践的基本原则
核心概念
一句话解释
Kubernetes 安全是一个多层次、纵深防御的体系,涵盖认证、授权、网络、存储和运行时等多个维度。
安全架构全景
┌─────────────────────────────────────────────────────────────┐
│ Kubernetes 安全架构 │
├─────────────────────────────────────────────────────────────┤
│ 认证 (Authentication) │
│ ├── 证书认证 │
│ ├── Token 认证 │
│ └── OpenID Connect │
├─────────────────────────────────────────────────────────────┤
│ 授权 (Authorization) │
│ ├── RBAC (基于角色的访问控制) │
│ ├── ABAC (基于属性的访问控制) │
│ └── Node Authorization │
├─────────────────────────────────────────────────────────────┤
│ 准入控制 (Admission Control) │
│ ├── ValidatingWebhookConfiguration │
│ └── MutatingWebhookConfiguration │
├─────────────────────────────────────────────────────────────┤
│ 网络安全 (Network Security) │
│ ├── NetworkPolicy │
│ ├── Service Mesh (Istio) │
│ └── Ingress TLS │
├─────────────────────────────────────────────────────────────┤
│ Pod 安全 (Pod Security) │
│ ├── PodSecurityPolicy / Pod Security Standards │
│ ├── Security Context │
│ └── AppArmor / Seccomp │
├─────────────────────────────────────────────────────────────┤
│ 密钥管理 (Secrets Management) │
│ ├── Secrets │
│ ├── External Secrets Operator │
│ └── HashiCorp Vault │
└─────────────────────────────────────────────────────────────┘
安全层次模型
| 层次 | 组件 | 作用 |
|---|---|---|
| 集群层 | API Server 认证授权 | 控制谁能访问集群 |
| 命名空间层 | RBAC、ResourceQuota | 隔离团队和项目 |
| Pod 层 | SecurityContext、PSP | 限制容器权限 |
| 网络层 | NetworkPolicy | 控制 Pod 间通信 |
| 数据层 | Secrets、Encryption | 保护敏感数据 |
核心安全原则
1. 最小权限原则
- 每个组件只拥有完成任务所需的最小权限
- 避免使用 cluster-admin 角色
2. 纵深防御
- 多层安全控制,一层失效不影响整体
- 认证 + 授权 + 准入控制 + 运行时安全
3. 零信任网络
- 默认拒绝所有网络流量
- 显式允许必要的通信
4. 不可变基础设施
- 容器镜像不可变
- 配置通过声明式管理
安全组件关系图
用户请求
│
▼
┌─────────────┐
│ API Server │
│ 认证 → 授权 → 准入控制 │
└─────────────┘
│
├── RBAC (谁可以做什么)
├── NetworkPolicy (谁能和谁通信)
├── PodSecurity (容器能做什么)
└── Secrets (敏感数据如何存储)
实践练习
练习 1:安全架构理解
回答以下问题:
- Kubernetes 安全包含哪几个主要层次?
- 认证和授权的区别是什么?
- 为什么需要纵深防御?
练习 2:安全审计
检查你的集群,列出以下安全配置:
- 是否启用了 RBAC?
- 是否配置了 NetworkPolicy?
- Secrets 是否加密存储?
常见误解
1. Kubernetes 默认不安全
事实:Kubernetes 提供了安全机制,但需要正确配置
问题:很多集群使用默认配置,未启用安全控制
解决:遵循 CIS Kubernetes Benchmark 进行加固
2. 安全只是一次性工作
事实:安全是持续的过程
问题:配置完成后不再更新
解决:定期审计、更新、扫描漏洞
小结
| 要点 | 说明 |
|---|---|
| 安全架构 | 认证、授权、准入控制、网络安全、Pod 安全、密钥管理 |
| 核心原则 | 最小权限、纵深防御、零信任、不可变基础设施 |
| 关键组件 | RBAC、NetworkPolicy、SecurityContext、Secrets |
| 实践建议 | 启用 RBAC、配置网络策略、加密 Secrets、定期审计 |
练习编辑器
bash
Loading...