Skip to content

本文为 SPIRE 官方文档 plugin_agent_workloadattestor_unix 的中文译本,以英文原文为准。 🔗 穿越源码分析:Agent 详解 · WorkloadAttestor

Agent 插件:WorkloadAttestor "unix"

unix 插件为调用 agent 的工作负载(workload)生成基于 unix 的选择器(selector)。

配置项说明默认值
discover_workload_path若为 true,插件将发现工作负载路径,并据此提供额外的选择器false
workload_size_limit计算某些选择器(如 sha256)时,工作负载二进制文件大小的上限。若为零,则不施加限制;若为负数,则永不计算哈希。0

若配置了 discover_workload_path = true,插件会发现工作负载路径以提供额外的选择器。如果插件无法发现工作负载路径、或无法基于该路径收集选择器,它将使本次认证尝试失败。发现工作负载路径要求 agent 具有 足够的 平台相关权限。例如在 Linux 上,agent 需要能够读取 /proc/<WORKLOAD PID>/exe,这通常要求 agent 以 root 身份运行,或与工作负载以同一用户身份运行。务必仅在 agent 将以足够权限运行时才启用此选项。

通用选择器:

选择器取值
unix:uid工作负载的用户 ID(如 unix:uid:1000)
unix:user工作负载的用户名(如 unix:user:nginx)
unix:gid工作负载的组 ID(如 unix:gid:1000)
unix:group工作负载的组名(如 unix:group:www-data)
unix:supplementary_gid目前仅在 linux 上支持: 工作负载的附加组 ID(如 unix:supplementary_gid:2000)
unix:supplementary_group目前仅在 linux 上支持: 工作负载的附加组名(如 unix:supplementary_group:www-data)

启用工作负载路径后可用的选择器(当配置 discover_workload_path = true 时可用):

选择器取值
unix:path工作负载二进制文件的路径(如 unix:path:/usr/bin/nginx)
unix:sha256工作负载二进制文件的 SHA256 摘要(如 unix:sha256:3a6eb0790f39ac87c94f3856b2dd2c5d110e6811602261a9a923d3bb23adc8b7)

安全考量:

恶意工作负载可能诱使 SPIRE agent 为体积很大的工作负载二进制文件计算 sha256,从而消耗大量资源,造成拒绝服务(denial-of-service)。相应的防御措施有:

  • 通过将 workload_size_limit 设为负值,完全禁用该计算
  • 使用 workload_size_limit 对插件愿意计算哈希的二进制文件大小施加上限。不过,攻击者仍可通过启动大量低于该上限的进程发起同类攻击。Workload API 目前尚不支持限流(rate limiting),但一旦支持,即可将限流与非负的 workload_size_limit 结合使用来缓解此类攻击。

配置示例:

hcl
    WorkloadAttestor "unix" {
    }

平台支持

本插件仅在 Unix 系统上受支持。