在无管理员权限的情况下运行 Elastic Agent
编辑在无管理员权限的情况下运行 Elastic Agent
编辑从 Elastic Stack 8.15 版本开始,Elastic Agent 不再需要由具有超级用户权限的用户运行。您现在可以在无权限
模式下运行 Agent,该模式在 Linux 或 macOS 上不需要root
访问权限,在 Windows 上也不需要admin
访问权限。能够在没有完全管理员权限的情况下运行 Agent 通常是组织的要求,因为这类访问权限通常非常有限。
通常,在没有完全管理员权限的情况下运行的 Agent 的性能和行为与超级用户运行的 Agent 完全相同。但是,某些集成和数据流是不可用的。如果某个集成需要 root 访问权限,则会在集成主页上进行说明。
您也可以更改Elastic Agent 安装后的权限模式。
请参阅无权限模式下的 Agent 和仪表板行为和在无权限
模式下运行 Elastic Agent,了解与在没有完全root
或admin
超级用户权限的情况下运行 Agent 相关的要求和步骤。
在无权限
模式下运行 Elastic Agent
编辑要在没有管理员权限的情况下运行 Elastic Agent,您使用与 Elastic Agent 其他情况完全相同的命令,只有一个例外。运行elastic-agent install
命令时,添加--unprivileged
标志。例如
elastic-agent install \ --url=https://cedd4e0e21e240b4s2bbbebdf1d6d52f.fleet.eu-west-1.aws.cld.elstc.co:443 \ --enrollment-token=NEFmVllaa0JLRXhKebVKVTR5TTI6N2JaVlJpSGpScmV0ZUVnZVlRUExFQQ== \ --unprivileged
请注意在无权限
模式下运行 Elastic Agent 的当前限制
-
在 Linux 系统上,使用
--unprivileged
标志安装 Elastic Agent 后,所有 Elastic Agent 命令都可以在没有 root 用户的情况下运行。sudo
选项仍然需要用于elastic-agent install
命令。只有root
用户才能安装新服务。已安装的服务不会以 root 用户身份运行。
- 在命令中不使用
sudo -u
指定备用非 root 用户,而只使用sudo
可能会导致错误,因为 Agent 没有所需的权限。 - 使用
sudo -u elastic-agent-user
将以运行 Elastic Agent 服务的用户身份运行命令,并且始终有效。 -
对于允许
elastic-agent
组中的用户访问的文件,使用已添加到该组的备用用户也将有效。仍然有一些命令只能由运行服务的elastic-agent-user
用户访问。-
例如,
elastic-agent inspect
需要您在命令前添加sudo -u elastic-agent-user
。sudo -u elastic-agent-user elastic-agent inspect
-
无权限模式下的 Agent 和仪表板行为
编辑除了在无权限模式下运行 Elastic Agent 时不可用的集成之外,某些数据流也不可用。下表显示了在 Agent 没有完全管理员权限的情况下,不同操作系统的影响。在大多数情况下,可以通过授予用户或组对指示文件的权限来弥补这些限制。
表 1. macOS
操作 | 无权限模式下的行为 | 解决方案 |
---|---|---|
使用系统集成运行 Elastic Agent |
日志文件错误: |
授予 |
使用系统集成运行 Elastic Agent |
在 |
授予 |
使用系统集成运行 Elastic Agent |
在 |
要修复可视化列表中缺少的进程,您可以将 |
运行 Elastic Agent 并访问 Elastic Agent 仪表板 |
在 |
要修复可视化数据中缺少的数据,您可以将 |
运行 Elastic Agent 并访问 Elastic Agent 仪表板 |
在 |
要修复可视化数据中缺少的数据,您可以将 |
表 2. Linux
操作 | 无权限模式下的行为 | 解决方案 |
---|---|---|
使用系统集成运行 Elastic Agent |
日志文件错误: |
要避免此错误,您可以将 |
使用系统集成运行 Elastic Agent |
日志文件错误: |
要避免此错误,您可以将 |
使用系统集成运行 Elastic Agent |
在 |
要修复可视化数据中缺少的数据,您可以将 |
运行 Elastic Agent 并访问 Elastic Agent 仪表板 |
在 |
授予 |
运行 Elastic Agent 并访问 Elastic Agent 仪表板 |
在 |
授予 |
表 3. Windows
操作 | 无权限模式下的行为 | 解决方案 |
---|---|---|
使用系统集成运行 Elastic Agent |
日志文件错误: |
将 |
使用系统集成运行 Elastic Agent |
日志文件错误: |
更新 |
使用系统集成运行 Elastic Agent |
大多数系统和 Elastic Agent 仪表板可视化都缺少所有数据。 |
将 请注意, |
使用系统集成运行 Elastic Agent |
在 |
出现这种情况是因为对磁盘或卷的直接访问受到限制,并且对于没有管理员权限的用户不可用。有关详细信息,请参阅 Microsoft 文档中的以特殊权限运行。 |
使用 Elastic 集成
编辑大多数 Elastic 集成都支持在无权限模式下运行 Elastic Agent。对于例外情况,任何需要 Elastic Agent 具有 root 权限的集成都在 Kibana 中集成页面顶部指明了此要求。
此外,如果您尝试将需要 root 权限的集成添加到其代理在无权限模式下注册的 Elastic Agent 策略中,Kibana 中将显示警告。
需要 Elastic Agent 具有管理员权限的集成示例包括:
查看 Elastic Agent 权限模式
编辑Agent 详情页面显示任何正在运行的 Elastic Agent 的权限模式。
要查看 Elastic Agent 的状态:
- 在 Fleet 中,打开Agents选项卡。
- 选择一个 Agent,然后单击操作菜单中的查看 Agent。
-
Agent 详情选项卡显示 Agent 是在
privileged
模式还是unprivileged
模式下运行。
同样,对于任何 Elastic Agent 策略,您都可以查看当前在特权模式或无特权模式下运行的 Agent 数量。
- 在 Fleet 中,打开Agent 策略选项卡。
- 单击 Agent 策略以查看策略详细信息。
将显示已注册到该策略的 Agent 数量。将鼠标悬停在链接上以查看特权 Agent 和无特权 Agent 的数量。
如果已安装的 Elastic Agent 策略包含需要 root 权限的集成,但有些 Agent 却以非 root 权限运行,工具提示中会显示此信息。
更改 Elastic Agent 的权限模式
编辑对于任何已安装的 Elastic Agent,您可以通过运行 privileged
或 unprivileged
子命令来更改其运行模式。
将模式从 privileged 更改为 unprivileged
sudo elastic-agent unprivileged
请注意,如果 Agent 当前注册在包含需要管理员访问权限的集成的策略中(例如 Elastic Defend 集成),则无法更改为 unprivileged
模式。
将模式从 unprivileged 更改为 privileged
sudo elastic-agent privileged
当 Agent 以 unprivileged
模式运行时,如果它没有足够的权限读取数据源,您也可以通过将 elastic-agent-user
添加到具有读取数据源权限的用户组来调整 Agent 的权限。
背景信息:当您以 unprivileged
模式运行 Elastic Agent 时,会在主机上创建一个用户和一个组。所有操作系统都使用相同的名称。
-
elastic-agent-user
:创建的用户,Elastic Agent 服务以此用户身份运行。 -
elastic-agent
:创建的组。该组中的任何用户都可以访问控制协议来控制和与 Elastic Agent 守护进程通信。
例如
- 当您使用
--unprivileged
设置安装 Elastic Agent 时,elastic-agent-user
用户和elastic-agent
组将自动创建。 - 如果您希望您的用户
myuser
能够运行 Elastic Agent 命令(例如elastic-agent status
),请将myuser
用户添加到elastic-agent
组。 - 添加到组后,
elastic-agent status
命令即可正常工作。在此之前,用户myuser
运行该命令将导致权限错误,表明与控制套接字通信存在问题。