IBCOURSES / СПРАВОЧНИК ИБ

Kubernetes: кто отправил запрос на создание Pod

К ответу ↓

API audit помогает установить инициатора запроса. Для вывода о создании нужны объект, стадия и результат.

Например
Материалов с пояснениями: 94 · Записей реестров: 11 678

Уточнить поиск

События и журналы

Найдено: 84
Инструкция по проверке

Kubernetes: кто отправил запрос на создание Pod

API audit помогает установить инициатора запроса. Для вывода о создании нужны объект, стадия и результат.

Куда смотреть

Ищите API Audit kube-apiserver: политика аудита определяет записываемые данные, а механизм сохранения — куда они поступают. Kubernetes Event API и Audit Event — разные сущности. Устройство аудита.

Как проверить действие

  1. Выбрать нужный кластер и период, проверить правила отбора и сохранение нужных событий.
  2. Найти verb=create и объект ресурса pods.
  3. Сопоставить стадии по auditID; изучить ResponseComplete и результат запроса.
  4. Проверить user.username, impersonation и объект. Контроллер мог создать Pod от имени ServiceAccount; для поиска первоначального инициатора может потребоваться действие над Deployment или другим владельцем.

Пример

Пример, не полный экспорт кластера:

{"auditID":"demo-request-01","verb":"create","stage":"ResponseComplete","user":{"username":"system:serviceaccount:demo:controller"},"objectRef":{"resource":"pods","namespace":"demo","name":"demo-pod"},"responseStatus":{"code":201}}

Имена полей сверяются с Audit API v1. Значения примера придуманы для объяснения.

Поиск в копии журнала

Вкладка «Примеры» содержит jq-отбор из локального JSON Lines. Он не запускает kubectl и не меняет кластер. Файл и схема должны соответствовать экспорту; синтаксис jq.

Границы вывода

Запрос API не доказывает запуск приложения внутри контейнера. Нужна проверка результата и последующего состояния; журналы среды выполнения контейнеров и EDR — отдельные источники. Отсутствие записи аудита может объясняться правилами отбора, сроком хранения и доставкой.

Паспорт среды перед выборкой

Зафиксируйте кластер, фактическую версию kube-apiserver, namespace, период и UTC-смещение, место получения журнала, политику аудита, механизм сохранения и формат экспорта. audit.k8s.io/v1 обозначает схему записи, а не версию установленного Kubernetes. Убедитесь, что политика аудита сохраняет нужный ресурс, действие и стадию. JSON Lines в jq-выборке — локальная копия данных, не доступ к работающему API.

Как читать результат выборки

В примере выше verb=create, ресурс pods, стадия ResponseComplete, результат 201. Это положительный результат запроса API в показанном примере. Запрос и стадии связываются по auditID; одинаковые стадии не считать новыми созданиями. user.username — ServiceAccount контроллера, поэтому найден технический инициатор этого API-запроса, а не обязательно человек, изменивший Deployment.

Сверьте namespace, имя, доступный UID объекта и временной интервал. При наличии impersonatedUser сохраните и исходную, и подставленную идентичность. Ответ с 403 означал бы отказ; один RequestReceived без конечной стадии не устанавливает успех. Выборка не должна превращать любой найденный запрос в вывод «контейнер запущен».

Следующий этап расследования

Если инициатор — контроллер, проследите владельца Pod и административный запрос к Deployment/Job или другому управляющему объекту, когда такие данные доступны. Состояние Pod и сведения среды выполнения контейнеров проверяйте отдельно. Для вопроса о команде внутри контейнера нужен следующий запрос exec и другие источники; это другой этап.

Если выборка пуста

Проверьте ресурс, verb, namespace, регистр полей, интервал и стадию. Уточните, был ли аудит настроен во время действия, не отбросили ли запись правила аудита, сохранены ли нужные события за выбранный период. Сравните исходную копию с доставленным файлом и не считайте пустой jq-результат доказательством отсутствия API-запроса. Не меняйте действующую политику аудита только ради этой проверки без отдельного согласования эксплуатации.

Поля и область применения

ПолеЗначение
auditIDИдентификатор запроса для связи стадий
user.usernameИдентичность, выполняющая запрос
impersonatedUserКонтекст impersonation, если он есть
verb / objectRefДействие и объект API
stage / responseStatus.codeСтадия и результат запроса

Примеры записей

Данные в примерах условные. Состав полей зависит от версии и настроек источника.

Пример запроса на создание Pod

Поясняющая схема. Сокращённый условный пример Audit Event; часть полей опущена.

{"auditID":"demo-request-01","verb":"create","stage":"ResponseComplete","user":{"username":"system:serviceaccount:demo:controller"},"objectRef":{"resource":"pods","namespace":"demo","name":"demo-pod"},"responseStatus":{"code":201}}

Команды и способы проверки

Укажите свой узел, путь к журналу и временной интервал. Требуемая среда указана рядом с командой.

Экспорт Audit JSON Lines + jq

jq 'select(.verb == "create" and .objectRef.resource == "pods" and .stage == "ResponseComplete") | {auditID, actor: .user.username, objectRef, code: .responseStatus.code}' audit.log

Первоисточники

Инициатором может быть controller; это не телеметрия процесса контейнера.

Связанные материалы

Как пользоваться техническим справочником

Найдите порт, код ошибки, событие или источник журнала. Уточните протокол и систему, затем сверяйте значение, поля, примеры и первоисточники. Назначение порта не определяет фактическую службу, а одна запись не доказывает инцидент.

Материалы по разделам

События и журналы

Два ответа рядом

Сравнение источников

Сравнение показывает различия. События и поля разных систем не считаются эквивалентными.

Выберите службу

В списке — службы, доступные с текущими условиями. Число рядом — количество записей портов, а не программ на вашем узле.

Как искать в справочнике

Введите число, код, фрагмент сообщения или вопрос. Известный идентификатор поможет найти карточку; это не анализ самого инцидента.

  1. Введите номер, код, имя или фрагмент записи. Для портов можно использовать список: 80, 443, 8000–8010.
  2. Уточните поиск фильтрами. Все условия действуют одновременно. Числа в списках показывают, сколько материалов останется при выборе варианта.
  3. Службу выбирайте из каталога: поиск внутри списка помогает найти название, а кнопка «Выбрать» применяет его.
  4. Убирайте отдельные условия кнопкой × рядом с фильтром. «Сбросить фильтры» сохраняет текст поиска и текущий раздел.
  5. В карточке сверьте источник, версию и условия регистрации, затем откройте поля, примеры и первоисточник.

/ — перейти к поиску. Прямые ссылки открывают выбранную карточку в этом же справочнике.

Назначения портов и коды приведены по официальным реестрам. Версии, условия регистрации и ссылки на документацию указаны в карточках.

Избранное и недавние материалы хранятся в этом браузере. Запрос и фильтры сохраняются при возврате к выдаче и обновлении вкладки. Поиск работает локально.

Что есть в справочнике

От вопроса к свидетельствам: кто вошёл, что запустил, к каким данным обратился, что изменил и где искать следы.

Выберите область, чтобы посмотреть доступные источники и перейти к материалам.

Уточнить или исправить ответ

Скопируйте сообщение и отправьте его на mail@ibcourses.ru.