本文为 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 系统上受支持。