Непривилегированный режим работы OneAgent в Linux: различия между версиями

Материал из Dynatrace
(Новая страница: «По умолчанию ЕдиныйАгент устанавливается в непривилегированном режиме, в котором приви...»)
 
 
(не показаны 2 промежуточные версии этого же участника)
Строка 1: Строка 1:
По умолчанию ЕдиныйАгент устанавливается в непривилегированном режиме, в котором привилегии суперпользователя используются один раз для запуска процесса установки.
По умолчанию OneAgent устанавливается в непривилегированном режиме, в котором привилегии суперпользователя используются один раз для запуска процесса установки.


Затем ЕдиныйАгент запускается под непривилегированным пользователем, сохраняя при этом полный набор функций.
Затем OneAgent запускается под непривилегированным пользователем, сохраняя при этом полный набор функций.


===='''Системные Требования'''====
===='''Системные Требования'''====
Чтобы установить ЕдиныйАгент в непривилегированном режиме, ваша система должна соответствовать следующим требованиям:
Чтобы установить OneAgent в непривилегированном режиме, ваша система должна соответствовать следующим требованиям:


*Файловая система должна поддерживать расширенные атрибуты.
*Файловая система должна поддерживать расширенные атрибуты.
Строка 11: Строка 11:
*Linux Filesystem Capabilities должны быть включены. Например, в SUSE Linux Enterprise Server 11 Linux Filesystem Capabilities отключены по умолчанию. Дополнительные сведения см. в разделе «Непривилегированный режим и Linux Filesystem Capabilities» ниже.
*Linux Filesystem Capabilities должны быть включены. Например, в SUSE Linux Enterprise Server 11 Linux Filesystem Capabilities отключены по умолчанию. Дополнительные сведения см. в разделе «Непривилегированный режим и Linux Filesystem Capabilities» ниже.


См. [[ЕдиныйАгент безопасность в Linux|Безопасность ЕдиногоАгента в Linux]], чтобы узнать о действиях по отслеживанию, выполняемых ЕдинымАгентом, для которых требуется привилегированный доступ.
См. [[OneAgent безопасность в Linux|Безопасность OneAgent в Linux]], чтобы узнать о действиях по отслеживанию, выполняемых OneAgent, для которых требуется привилегированный доступ.


===='''Привилегии во время установки'''====
===='''Привилегии во время установки'''====


*При запуске в непривилегированном режиме программе установки ЕдиногоАгента требуются права суперпользователя, чтобы:
*При запуске в непривилегированном режиме программе установки OneAgent требуются права суперпользователя, чтобы:
*Установите возможности файлов для двоичных файлов ЕдиногоАгента, расположенных в /opt/dynatrace/oneagent/agent/lib[64]/*.
*Установите возможности файлов для двоичных файлов OneAgent, расположенных в /opt/{server-name}/oneagent/agent/lib[64]/*.
*Вызовите сценарий службы oneagent, чтобы запустить oneagentwatchdog.
*Вызовите сценарий службы oneagent, чтобы запустить oneagentwatchdog.
*В системах с systemd свяжитесь с демоном systemd через d-bus, чтобы выполнить следующие команды:
*В системах с systemd свяжитесь с демоном systemd через d-bus, чтобы выполнить следующие команды:
Строка 24: Строка 24:
*Напишите в /proc/sys/kernel/core_pattern.
*Напишите в /proc/sys/kernel/core_pattern.


Привилегии суперпользователя сбрасываются при выполнении скрипта службы Ключ-Астром ЕдиныйАгент:
Привилегии суперпользователя сбрасываются при выполнении скрипта службы Dynatrace OneAgent:


*В системах с systemd непривилегированный пользователь включается в определение службы (файл модуля). Таким образом, демон systemd запускает сценарий службы ЕдиныйАгент в непривилегированном режиме.
*В системах с systemd непривилегированный пользователь включается в определение службы (файл модуля). Таким образом, демон systemd запускает сценарий службы OneAgent в непривилегированном режиме.
*В системах с SysV привилегии сбрасываются в сценарии при запуске процесса ЕдиныйАгент Watchdog.
*В системах с SysV привилегии сбрасываются в сценарии при запуске процесса OneAgent Watchdog.


===='''Linux Filesystem Capabilities'''====
===='''Linux Filesystem Capabilities'''====
Ключ-Астром ЕдиныйАгент Watchdog создаёт и запускает все остальные процессы под непривилегированным пользователем без прав суперпользователя. Двоичные файлы ЕдиногоАгента используют следующие системные возможности Linux.
Dynatrace OneAgent Watchdog создаёт и запускает все остальные процессы под непривилегированным пользователем без прав суперпользователя. Двоичные файлы OneAgent используют следующие системные возможности Linux.


Возможности двоичной системы Linux
Возможности двоичной системы Linux
Строка 144: Строка 144:


====='''Включение Linux Filesystem Capabilities'''=====
====='''Включение Linux Filesystem Capabilities'''=====
Linux Filesystem Capabilities необходимы для установки ЕдиногоАгента в непривилегированном режиме. В SUSE Linux Enterprise Server 11 Linux Filesystem Capabilities отключены по умолчанию. Эти возможности также могут быть отключены в других поддерживаемых дистрибутивах Linux или в результате пользовательской конфигурации. Программа установки ЕдиногоАгента выводит следующее сообщение, если возможности файловой системы Linux отключены:
Linux Filesystem Capabilities необходимы для установки OneAgent в непривилегированном режиме. В SUSE Linux Enterprise Server 11 Linux Filesystem Capabilities отключены по умолчанию. Эти возможности также могут быть отключены в других поддерживаемых дистрибутивах Linux или в результате пользовательской конфигурации. Программа установки OneAgent выводит следующее сообщение, если возможности файловой системы Linux отключены:


<code>Warning: Failed to enable non-privileged mode, kernel does not support file capabilities.</code>
<code>Warning: Failed to enable non-privileged mode, kernel does not support file capabilities.</code>
Строка 157: Строка 157:


===='''Привилегии при автоматических обновлениях и работе'''====
===='''Привилегии при автоматических обновлениях и работе'''====
Объем привилегий, требуемых ЕдиномуАгенту, зависит от того, поддерживает ли ядро Linux ambient capabilities. Как правило, ядро версии 4.3+ поддерживает Linux ambient capabilities. Однако в случае с Red Hat Enterprise Linux они могут поддерживаться в более старых версиях ядра из-за политики Red Hat по резервному переносу исправлений. Это означает, что Linux ambient capabilities поддерживается версиями ядра, начиная с 3.10.x.
Объем привилегий, требуемых OneAgent, зависит от того, поддерживает ли ядро Linux ambient capabilities. Как правило, ядро версии 4.3+ поддерживает Linux ambient capabilities. Однако в случае с Red Hat Enterprise Linux они могут поддерживаться в более старых версиях ядра из-за политики Red Hat по резервному переносу исправлений. Это означает, что Linux ambient capabilities поддерживается версиями ядра, начиная с 3.10.x.


====='''Ядра с поддержкой Linux ambient capabilities (версия 4.3+)'''=====
====='''Ядра с поддержкой Linux ambient capabilities (версия 4.3+)'''=====
Во время автоматического обновления установщик запускается под непривилегированным пользователем dtuser с установленными надлежащими возможностями окружения. ЕдиныйАгент не требует корневого доступа для выполнения автоматического обновления.
Во время автоматического обновления установщик запускается под непривилегированным пользователем dtuser с установленными надлежащими возможностями окружения. OneAgent не требует корневого доступа для выполнения автоматического обновления.


Red Hat Enterprise Linux 7 имеет слишком низкий <code>systemd</code> (v219 вместо необходимого v221), и чтобы иметь возможность запускать автоматические обновления в непривилегированном режиме, мы временно повышаем привилегии для запуска <code>systemctl <start|stop|enable|disable> oneagent.service</code>.
Red Hat Enterprise Linux 7 имеет слишком низкий <code>systemd</code> (v219 вместо необходимого v221), и чтобы иметь возможность запускать автоматические обновления в непривилегированном режиме, мы временно повышаем привилегии для запуска <code>systemctl <start|stop|enable|disable> oneagent.service</code>.


====='''Ядра без внешних возможностей (версии с 2.6.26 по 4.3)'''=====
====='''Ядра без внешних возможностей (версии с 2.6.26 по 4.3)'''=====
В большинстве случаев ЕдиныйАгент будет работать под непривилегированным <code>dtuser</code>. Когда ядро не предоставляет ambient capabilities, оно автоматически повышает свои привилегии до уровня суперпользователя, используя <code>setuid(0)</code> в следующих случаях:
В большинстве случаев OneAgent будет работать под непривилегированным <code>dtuser</code>. Когда ядро не предоставляет ambient capabilities, оно автоматически повышает свои привилегии до уровня суперпользователя, используя <code>setuid(0)</code> в следующих случаях:


*Автоматические обновления ЕдиногоАгента
*Автоматические обновления OneAgent
*Генерация идентификатора OSI узла на узлах Azure
*Генерация идентификатора OSI узла на узлах Azure
*Определение свойств контейнеров Docker
*Определение свойств контейнеров Docker
*Самодиагностика
*Самодиагностика


Если вы не хотите предоставлять ЕдиномуАгенту уровень разрешений суперпользователя, вы можете отключить его, добавив параметр <code>DISABLE_ROOT_FALLBACK=1</code> в команду установки ЕдиногоАгента. Например:
Если вы не хотите предоставлять OneAgent уровень разрешений суперпользователя, вы можете отключить его, добавив параметр <code>DISABLE_ROOT_FALLBACK=1</code> в команду установки OneAgent. Например:


<code>sudo /bin/sh Dynatrace-OneAgent-Linux-1.0.0.sh NON_ROOT_MODE=1 DISABLE_ROOT_FALLBACK=1</code>
<code>sudo /bin/sh OneAgent-Linux-1.0.0.sh NON_ROOT_MODE=1 DISABLE_ROOT_FALLBACK=1</code>


В таких случаях вы должны выполнять обновления вручную на отдельных хостах. Мы не рекомендуем использовать параметр <code>DISABLE_ROOT_FALLBACK=1</code> для ЕдиногоАгента в контейнерах Azure или Docker.
В таких случаях вы должны выполнять обновления вручную на отдельных хостах. Мы не рекомендуем использовать параметр <code>DISABLE_ROOT_FALLBACK=1</code> для OneAgent в контейнерах Azure или Docker.


===='''Как узнать, работает ли ЕдиныйАгент в непривилегированном режиме?'''====
===='''Как узнать, работает ли OneAgent в непривилегированном режиме?'''====
Программа установки распечатывает сообщение в конце установки OneAgent. В зависимости от версии ядра и его поддержки внешних возможностей вы увидите одно из следующих сообщений:
Программа установки распечатывает сообщение в конце установки OneAgent. В зависимости от версии ядра и его поддержки внешних возможностей вы увидите одно из следующих сообщений:


Строка 187: Строка 187:
<code>Enabled non-privileged mode, but ambient capabilities are not supported by kernel</code>
<code>Enabled non-privileged mode, but ambient capabilities are not supported by kernel</code>


Ядро находится в пределах минимальной поддерживаемой версии, но из-за неподдерживаемых ambient capabilities, ЕдиномуАгенту необходимо повышать привилегии в некоторых случаях, см. выше.
Ядро находится в пределах минимальной поддерживаемой версии, но из-за неподдерживаемых ambient capabilities, OneAgent необходимо повышать привилегии в некоторых случаях, см. выше.


<code>Failed to enable non-privileged mode</code>
<code>Failed to enable non-privileged mode</code>


Ядро не соответствует минимальным требованиям к версии для включения непривилегированного режима.
Ядро не соответствует минимальным требованиям к версии для включения непривилегированного режима.

Текущая версия на 10:53, 22 января 2023

По умолчанию OneAgent устанавливается в непривилегированном режиме, в котором привилегии суперпользователя используются один раз для запуска процесса установки.

Затем OneAgent запускается под непривилегированным пользователем, сохраняя при этом полный набор функций.

Системные Требования

Чтобы установить OneAgent в непривилегированном режиме, ваша система должна соответствовать следующим требованиям:

  • Файловая система должна поддерживать расширенные атрибуты.
  • В системе должен быть установлен libcap2. Например, установка Red Hat Enterprise Linux 5 по умолчанию не содержит libcap2.
  • Файловая система не должна быть смонтирована как noexec или nosuid.
  • Linux Filesystem Capabilities должны быть включены. Например, в SUSE Linux Enterprise Server 11 Linux Filesystem Capabilities отключены по умолчанию. Дополнительные сведения см. в разделе «Непривилегированный режим и Linux Filesystem Capabilities» ниже.

См. Безопасность OneAgent в Linux, чтобы узнать о действиях по отслеживанию, выполняемых OneAgent, для которых требуется привилегированный доступ.

Привилегии во время установки

  • При запуске в непривилегированном режиме программе установки OneAgent требуются права суперпользователя, чтобы:
  • Установите возможности файлов для двоичных файлов OneAgent, расположенных в /opt/{server-name}/oneagent/agent/lib[64]/*.
  • Вызовите сценарий службы oneagent, чтобы запустить oneagentwatchdog.
  • В системах с systemd свяжитесь с демоном systemd через d-bus, чтобы выполнить следующие команды:
    • systemctl <start|stop|enable|disable> oneagent.service
    • systemctl демон-перезагрузка
  • В системах с SysV выполните /sbin/chkconfig, чтобы добавить сценарий службы oneagent в автозапуск или удалить его.
  • Напишите в /proc/sys/kernel/core_pattern.

Привилегии суперпользователя сбрасываются при выполнении скрипта службы Dynatrace OneAgent:

  • В системах с systemd непривилегированный пользователь включается в определение службы (файл модуля). Таким образом, демон systemd запускает сценарий службы OneAgent в непривилегированном режиме.
  • В системах с SysV привилегии сбрасываются в сценарии при запуске процесса OneAgent Watchdog.

Linux Filesystem Capabilities

Dynatrace OneAgent Watchdog создаёт и запускает все остальные процессы под непривилегированным пользователем без прав суперпользователя. Двоичные файлы OneAgent используют следующие системные возможности Linux.

Возможности двоичной системы Linux

Binary Linux System Capabilities
oneagentwatchdog cap_sys_resource1- for setting system resource limits when starting OneAgent processes
oneagentos cap_dac_override2 - for filesystem access

cap_chown2 3 - for setting ownership of files replaced in the filesystem (e.g., runc binary)

cap_fowner2 - for setting ownership of files replaced in the filesystem

cap_sys_ptrace - for reading data from /proc pseudo-filesystem and tracing processes

cap_sys_resource3 - for reading processes resource limits

cap_setuid4 - for temporary elevation of privileges to execute certain operations; for details, see Automatic updates and operation

cap_kill3 5 6

cap_setfcap3 5 6

cap_fsetid3 5 6

oneagentnettracer cap_bpf (kernel >=5.8)7

cap_perfmon (kernel >=5.8)7

cap_sys_admin (kernel <5.8)7

cap_dac_override

cap_sys_ptrace

cap_sys_resource

oneagentnetwork cap_net_raw - for opening raw sockets

cap_net_admin8- for reading network interface information

oneagentloganalytics cap_dac_read_search - for access to all logs stored on host

cap_sys_ptrace - for reading data from /proc pseudo-filesystem

oneagentplugin cap_set_gid1- for adding docker to the process supplementary groups list, which allows for the container data to be retrieved
oneagenthelper9 cap_sys_admin - for mount() syscall

cap_dac_override - for inspection and modification of filesystems of the running containers

cap_sys_ptrace - for tracing the Docker daemon

cap_sys_chroot - for chroot() syscall

cap_fowner - for changing ownership and permissions of files within container filesystem

cap_fsetid - for changing ownership and permissions of files within container filesystem

OneAgent Installer executed during auto-update cap_dac_override - for filesystem access

cap_chown - for filesystem access

cap_fowner - for filesystem access

cap_fsetid - for filesystem access

cap_kill - to be able to signal all the running processes, e.g. stopped orphaned OneAgent processes

cap_setfcap - for setting Linux Filesystem capabilities file capabilities on agent binaries during the installation

oneagentosconfig cap_setuid 6- for execution of privileged operations during the installation process
oneagenteventstracer cap_sys_admin - for perf_event_open() syscall

cap_dac_override - for access to /sys/kernel/debug/tracing

oneagentdmidecode cap_dac_override - for filesystem access
oneagentmntconstat cap_dac_read_search - for retrieving disk occupation stats with statvfs64()

cap_sys_chroot - for setns() syscall

cap_sys_admin - for setns() syscall

cap_sys_ptrace - for accessing /proc/1/ns

1 Required only during initialization phase and is unconditionally dropped afterwards.

2 Not used if auto-updates and automatic injection are disabled.

3 Kept in permitted set only and raised to the effective set when needed.

4 Only if ambient capabilities aren't supported.

5 Not used if auto-updates are disabled.

6 Only if ambient capabilities are supported.

7 Only for kernels 5.8 and newer. For older kernel versions, cap_sys_admin is enabled instead.

8 Only on kernels older than 2.6.33.

9 Not started if automatic injection is disabled.

Включение Linux Filesystem Capabilities

Linux Filesystem Capabilities необходимы для установки OneAgent в непривилегированном режиме. В SUSE Linux Enterprise Server 11 Linux Filesystem Capabilities отключены по умолчанию. Эти возможности также могут быть отключены в других поддерживаемых дистрибутивах Linux или в результате пользовательской конфигурации. Программа установки OneAgent выводит следующее сообщение, если возможности файловой системы Linux отключены:

Warning: Failed to enable non-privileged mode, kernel does not support file capabilities.

Вы также можете проверить параметры загрузки ядра, чтобы увидеть, включены ли Linux Filesystem Capabilities. Выполните следующую команду, чтобы проверить параметры загрузки ядра.

cat /proc/cmdline

Если вы обнаружите, что file_caps=1 в выводе, ваша установка в порядке.

Чтобы включить возможности файловой системы Linux, добавьте file_caps=1 в параметры загрузки ядра. Например, в SUSE Linux Enterprise Server 11 используйте YaST, отредактируйте параметры загрузки ядра, добавьте file_caps=1 и перезагрузите машину.

Привилегии при автоматических обновлениях и работе

Объем привилегий, требуемых OneAgent, зависит от того, поддерживает ли ядро Linux ambient capabilities. Как правило, ядро версии 4.3+ поддерживает Linux ambient capabilities. Однако в случае с Red Hat Enterprise Linux они могут поддерживаться в более старых версиях ядра из-за политики Red Hat по резервному переносу исправлений. Это означает, что Linux ambient capabilities поддерживается версиями ядра, начиная с 3.10.x.

Ядра с поддержкой Linux ambient capabilities (версия 4.3+)

Во время автоматического обновления установщик запускается под непривилегированным пользователем dtuser с установленными надлежащими возможностями окружения. OneAgent не требует корневого доступа для выполнения автоматического обновления.

Red Hat Enterprise Linux 7 имеет слишком низкий systemd (v219 вместо необходимого v221), и чтобы иметь возможность запускать автоматические обновления в непривилегированном режиме, мы временно повышаем привилегии для запуска systemctl <start|stop|enable|disable> oneagent.service.

Ядра без внешних возможностей (версии с 2.6.26 по 4.3)

В большинстве случаев OneAgent будет работать под непривилегированным dtuser. Когда ядро не предоставляет ambient capabilities, оно автоматически повышает свои привилегии до уровня суперпользователя, используя setuid(0) в следующих случаях:

  • Автоматические обновления OneAgent
  • Генерация идентификатора OSI узла на узлах Azure
  • Определение свойств контейнеров Docker
  • Самодиагностика

Если вы не хотите предоставлять OneAgent уровень разрешений суперпользователя, вы можете отключить его, добавив параметр DISABLE_ROOT_FALLBACK=1 в команду установки OneAgent. Например:

sudo /bin/sh OneAgent-Linux-1.0.0.sh NON_ROOT_MODE=1 DISABLE_ROOT_FALLBACK=1

В таких случаях вы должны выполнять обновления вручную на отдельных хостах. Мы не рекомендуем использовать параметр DISABLE_ROOT_FALLBACK=1 для OneAgent в контейнерах Azure или Docker.

Как узнать, работает ли OneAgent в непривилегированном режиме?

Программа установки распечатывает сообщение в конце установки OneAgent. В зависимости от версии ядра и его поддержки внешних возможностей вы увидите одно из следующих сообщений:

Non-privileged mode is enabled

Ядро поддерживает ambient capabilities, нет необходимости использовать доступ суперпользователя для обновлений или операций.

Enabled non-privileged mode, but ambient capabilities are not supported by kernel

Ядро находится в пределах минимальной поддерживаемой версии, но из-за неподдерживаемых ambient capabilities, OneAgent необходимо повышать привилегии в некоторых случаях, см. выше.

Failed to enable non-privileged mode

Ядро не соответствует минимальным требованиям к версии для включения непривилегированного режима.