菜单
文档breadcrumb arrow Grafana Alloybreadcrumb arrow 配置breadcrumb arrow 非 root 用户
开源

在 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

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。