在无管理权限下运行 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
而不使用sudo -u
指定备用的非 root 用户可能会导致错误,因为该 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 权限的集成添加到已注册无特权模式的 Agent 的 Elastic Agent 策略中,则会在 Kibana 中显示警告。
以下是需要 Elastic Agent 具有管理权限的集成示例:
查看 Elastic Agent 特权模式
编辑Agent 详细信息页面会显示任何正在运行的 Elastic Agent 的特权模式。
要查看 Elastic Agent 的状态:
- 在 Fleet 中,打开Agents标签页。
- 选择一个 Agent,然后在操作菜单中单击 View agent。
-
Agent 详细信息选项卡会显示 Agent 是否在
privileged
或unprivileged
模式下运行。
此外,对于任何 Elastic Agent 策略,您都可以查看当前在特权或无特权模式下运行的 Agent 的数量
- 在 Fleet 中,打开Agent policies标签页。
- 单击 Agent 策略以查看策略详细信息。
将显示使用该策略注册的 Agent 数量。将鼠标悬停在该链接上可查看特权和无特权 Agent 的数量。
如果 Elastic Agent 策略安装了需要 root 权限的集成,但有 Agent 在没有 root 权限的情况下运行,则会在工具提示中显示此情况。
更改 Elastic Agent 的特权模式
编辑对于任何已安装的 Elastic Agent,您都可以通过运行 privileged
或 unprivileged
子命令来更改其运行模式。
将模式从特权更改为无特权
sudo elastic-agent unprivileged
请注意,如果 Agent 当前已注册包含需要管理访问权限(例如 Elastic Defend 集成)的集成的策略,则会阻止更改为 unprivileged
模式。
将模式从非特权更改为特权
sudo elastic-agent privileged
当代理以 非特权
模式运行时,如果它没有读取数据源的正确权限级别,您还可以通过将 elastic-agent-user
添加到具有读取数据源权限的用户组来调整代理的权限。
作为背景,当您以 非特权
模式运行 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
将导致权限错误,该错误表明与控制套接字通信时出现问题。