在 Kubernetes 中以非 root 用户运行 Alloy
Alloy Docker 镜像包含两个用户
- 一个
root
用户。 - 一个名为
alloy
的非 root 用户,其 UID 为473
,GID 为473
。
默认情况下,alloy
二进制文件以 root
用户运行。这是因为某些 Alloy 组件(例如 beyla.ebpf)需要 root 权限。
在 Kubernetes 中部署 Alloy 时,您可以配置一个非 root 用户。
在 Kubernetes 中配置 Alloy 以非 root 用户运行
注意
如果您正在使用需要 root 权限的组件(例如 beyla.ebpf),则 Alloy 无法以非 root 用户身份运行。
要以非 root 用户运行 Alloy,请为 Alloy 容器配置一个安全上下文。如果您正在使用Grafana Helm chart,可以将以下代码片段添加到 values.yaml
中
alloy:
securityContext:
runAsUser: 473
runAsGroup: 473
此配置使 Alloy 二进制文件以 UID 473 和 GID 473 运行,而不是以 root 用户身份运行。
root 用户是否是安全风险?
不完全是。Linux 内核会阻止 Docker 容器访问主机资源。例如,Docker 容器看到的是虚拟文件系统而不是主机文件系统,虚拟网络而不是主机网络,虚拟进程命名空间而不是主机的进程。即使 Docker 容器内的用户是 root
,也无法突破这个虚拟环境。
然而,如果 Linux 内核中存在允许 Docker 容器突破虚拟环境的 bug,那么使用 root 用户可能比使用非 root 用户更容易利用这个 bug。值得注意的是,攻击者不仅需要找到这样的 Linux 内核 bug,还需要找到一种方法让 Alloy 利用该 bug。