Sync: add kubernetes observability notes

This commit is contained in:
2026-04-24 11:35:04 +08:00
parent ca96e409be
commit 989ec86c77
23 changed files with 1350 additions and 9 deletions

View File

@@ -0,0 +1,74 @@
---
title: "SE Linux Enforcing Mode"
type: concept
tags:
- Security
- Linux
- MAC
- Access Control
sources:
- public-cloud-learning-sessions-eks-optimization-part-2-of-3-running-containers-w
last_updated: 2026-04-24
---
# SE Linux Enforcing Mode
SE LinuxSecurity-Enhanced Linux是美国国家安全局NSA开发的 Linux 内核安全模块通过强制访问控制MACMandatory Access Control机制在传统的自主访问控制DACDiscretionary Access Control之上增加了一层细粒度的安全策略。
## DAC vs MAC
| 维度 | DAC传统 Linux 权限) | MACSE Linux |
|------|----------------------|----------------|
| 控制方式 | 所有者自主决定 | 系统统一策略强制执行 |
| 粒度 | 用户/组/其他 + rwx | 主体标签 + 客体标签 + 策略规则 |
| 绕过风险 | root 可修改任何权限 | 即使 root 也受策略约束 |
| 配置难度 | 简单chmod/chown | 复杂(需要策略编写) |
## 关键概念
- **主体Subject**:进程,通常具有特定的安全上下文(如 `system_u:system_r:container_file_t`
- **客体Object**:文件、目录、端口、进程等系统资源
- **安全上下文Security Context**:格式为 `user:role:type[:level]` 的标签字符串
- **策略规则Policy Rules**:定义哪些主体可以对哪些客体执行哪些操作的规则集合
- **Enforcing 模式**:强制执行策略,违反策略的操作被拒绝并记录
- **Permissive 模式**:仅记录违反策略的操作,不实际阻止
## Bottlerocket 中的 SE Linux
Bottlerocket OS 默认启用 SE Linux enforcing 模式:
- **容器隔离**:每个容器运行在独立的安全上下文中,防止容器逃逸后影响宿主机或其他容器
- **最小权限原则**:即使容器内获得 root 权限,其操作仍受 SE Linux 策略限制
- **与容器运行时集成**containerd、docker 等容器运行时通过 SE Linux 标签隔离不同容器的工作负载
## 常见 SE Linux 标签
| 标签 | 用途 |
|------|------|
| `unconfined_t` | 不受限制的进程 |
| `container_file_t` | 容器管理的文件(如 volume 挂载点) |
| `svirt_sandbox_file_t` | SELinux 虚拟沙箱文件标签 |
| `admin_t` | 系统管理员类型 |
## 与其他安全机制的协同
- **与 AppArmor**AppArmor 是 SE Linux 的替代方案Ubuntu 默认使用 AppArmor
- **与 seccomp**seccomp 限制进程可调用的系统调用SE Linux 控制对系统对象的访问
- **与 capabilities**Linux capabilities 将 root 特权拆分为多个独立能力SE Linux 在此基础上进一步限制能力的使用场景
## 故障排查
SE Linux enforcing 模式下,常见故障表现为"Permission denied"即使文件权限看起来正确:
```bash
# 查看文件的安全上下文
ls -Z /path/to/file
# 查看进程的 SE Linux 上下文
ps -Z
# 临时切换为 Permissive 模式(调试用)
setenforce 0
# 查看 SE Linux 拒绝日志
ausearch -m avc -ts recent
```