Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Managed Service for Kubernetes
  • Сопоставление с другими сервисами Yandex Cloud
  • Начало работы
    • Взаимосвязь ресурсов сервиса
    • Релизные каналы и обновления
    • Шифрование
    • Сеть в Managed Service for Kubernetes
    • Сетевые настройки и политики кластера
    • Автоматическое масштабирование
    • Политика аудита
    • Внешние узлы кластера
    • Квоты и лимиты
    • Рекомендации по использованию Managed Service for Kubernetes
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • История изменений
  • Обучающие курсы

В этой статье:

  • Стадии
  • Уровни
  • Файл политики аудита в Managed Service for Kubernetes
  • Описания правил политики аудита
  1. Концепции
  2. Политика аудита

Политика аудита в Managed Service for Kubernetes

Статья создана
Yandex Cloud
Обновлена 5 апреля 2024 г.
  • Стадии
  • Уровни
  • Файл политики аудита в Managed Service for Kubernetes
    • Описания правил политики аудита

Политика аудита (audit policy) определяет правила о том, какие события должны записываться в журнал аудита и какие данные они должны содержать. События аудита генерируются запросами на сервер API Kubernetes на каждой стадии их выполнения. Правила политики аудита применяются по порядку. Первое правило, соответствующее событию, устанавливает уровень аудита события.

СтадииСтадии

Стадия Момент генерации события
RequestReceived Как только обработчик аудита получает запрос.
ResponseStarted После отправки заголовков ответа, но до отправки тела ответа.
ResponseComplete После отправки тела ответа.
Panic После появления критических ошибок.

УровниУровни

Уровень Описание
None Не записывать события.
Metadata Записывать метаданные событий, но не включать тело запроса или ответа.
Request Записывать метаданные событий и тело запроса, но не включать тело ответа.
RequestResponse Записывать метаданные событий, тело запроса и ответа.

Файл политики аудита в Managed Service for KubernetesФайл политики аудита в Managed Service for Kubernetes

Файл политики аудита в Managed Service for Kubernetes выглядит так:

apiVersion: audit.k8s.io/v1
kind: Policy
rules:
  - level: None
    users: ["system:kube-proxy"]
    verbs: ["watch"]
    resources:
      - group: "" # Core.
        resources: ["endpoints", "services", "services/status"]
  - level: None
    users: ["system:unsecured"]
    namespaces: ["kube-system"]
    verbs: ["get"]
    resources:
      - group: "" # Core.
        resources: ["configmaps"]
  - level: None
    users: ["kubelet"] # Legacy kubelet identity.
    verbs: ["get"]
    resources:
      - group: "" # Core.
        resources: ["nodes", "nodes/status"]
  - level: None
    userGroups: ["system:nodes"]
    verbs: ["get"]
    resources:
      - group: "" # Core.
        resources: ["nodes", "nodes/status"]
  - level: None
    users:
      - system:kube-controller-manager
      - system:kube-scheduler
      - system:serviceaccount:kube-system:endpoint-controller
    verbs: ["get", "update"]
    namespaces: ["kube-system"]
    resources:
      - group: "" # Core.
        resources: ["endpoints"]
  - level: None
    users: ["system:apiserver"]
    verbs: ["get"]
    resources:
      - group: "" # Core.
        resources: ["namespaces", "namespaces/status", "namespaces/finalize"]
  - level: None
    users: ["cluster-autoscaler"]
    verbs: ["get", "update"]
    namespaces: ["kube-system"]
    resources:
      - group: "" # Core.
        resources: ["configmaps", "endpoints"]
  - level: None
    users:
      - system:kube-controller-manager
    verbs: ["get", "list"]
    resources:
      - group: "metrics.k8s.io"
  - level: None
    nonResourceURLs:
      - /healthz*
      - /version
      - /swagger*
  - level: None
    resources:
      - group: "" # Core.
        resources: ["events"]
  - level: Request
    users: ["kubelet", "system:node-problem-detector", "system:serviceaccount:kube-system:node-problem-detector"]
    verbs: ["update","patch"]
    resources:
      - group: "" # Core.
        resources: ["nodes/status", "pods/status"]
    omitStages:
      - "RequestReceived"
  - level: Request
    userGroups: ["system:nodes"]
    verbs: ["update","patch"]
    resources:
      - group: "" # Core.
        resources: ["nodes/status", "pods/status"]
    omitStages:
      - "RequestReceived"
  - level: Request
    users: ["system:serviceaccount:kube-system:namespace-controller"]
    verbs: ["deletecollection"]
    omitStages:
      - "RequestReceived"
  - level: Metadata
    resources:
      - group: "" # Core.
        resources: ["secrets", "configmaps", "serviceaccounts/token"]
      - group: authentication.k8s.io
        resources: ["tokenreviews"]
    omitStages:
      - "RequestReceived"
  - level: Request
    verbs: ["get", "list", "watch"]
    resources: 
      - group: "" # Core.
      - group: "admissionregistration.k8s.io"
      - group: "apiextensions.k8s.io"
      - group: "apiregistration.k8s.io"
      - group: "apps"
      - group: "authentication.k8s.io"
      - group: "authorization.k8s.io"
      - group: "autoscaling"
      - group: "batch"
      - group: "certificates.k8s.io"
      - group: "extensions"
      - group: "metrics.k8s.io"
      - group: "networking.k8s.io"
      - group: "policy"
      - group: "rbac.authorization.k8s.io"
      - group: "scheduling.k8s.io"
      - group: "settings.k8s.io"
      - group: "storage.k8s.io"
    omitStages:
      - "RequestReceived"
  - level: RequestResponse
    resources: 
      - group: "" # Core.
      - group: "admissionregistration.k8s.io"
      - group: "apiextensions.k8s.io"
      - group: "apiregistration.k8s.io"
      - group: "apps"
      - group: "authentication.k8s.io"
      - group: "authorization.k8s.io"
      - group: "autoscaling"
      - group: "batch"
      - group: "certificates.k8s.io"
      - group: "extensions"
      - group: "metrics.k8s.io"
      - group: "networking.k8s.io"
      - group: "policy"
      - group: "rbac.authorization.k8s.io"
      - group: "scheduling.k8s.io"
      - group: "settings.k8s.io"
      - group: "storage.k8s.io"
    omitStages:
      - "RequestReceived"
  - level: Metadata
    omitStages:
      - "RequestReceived"

Описания правил политики аудитаОписания правил политики аудита

Ниже приведены примеры правил политики аудита.

Правило для уровняПравило для уровня None

- level: None
  users: ["kubelet"] # Legacy kubelet identity.
  verbs: ["get"]
  resources:
    - group: "" # Core.
      resources: ["nodes", "nodes/status"]

Означает, что сведения о событиях не должны записываться, если верны условия:

  • Запрос отправляется компонентом kubelet с узла кластера Managed Service for Kubernetes.
  • Тип запроса — get.
  • Запрос относится к ресурсам nodes или nodes/status.

Правило для уровняПравило для уровня Metadata

- level: Metadata
  resources:
    - group: "" # Core.
      resources: ["secrets", "configmaps", "serviceaccounts/token"]
    - group: authentication.k8s.io
      resources: ["tokenreviews"]
  omitStages:
    - "RequestReceived"

Означает, что необходимо записывать метаданные событий, если верны условия:

  • Событие не соответствует ни одному предыдущему правилу в политике аудита.
  • Запрос относится к ресурсам secrets, configmaps, serviceaccounts/token или tokenreviews.
  • Событие не относится к стадии RequestReceived.

Правило для уровняПравило для уровня Request

- level: Request
  userGroups: ["system:nodes"]
  verbs: ["update","patch"]
  resources:
    - group: "" # Core.
      resources: ["nodes/status", "pods/status"]
  omitStages:
    - "RequestReceived"

Означает, что необходимо записывать метаданные событий и тело запроса, если верны условия:

  • Событие не соответствует ни одному предыдущему правилу в политике аудита.
  • Запрос отправляется компонентом, который состоит в группе system:nodes.
  • Тип запроса — update или patch.
  • Запрос относится к ресурсам nodes/status или pods/status.
  • Событие не относится к стадии RequestReceived.

Правило для уровняПравило для уровня Request

- level: Request
  verbs: ["get", "list", "watch"]
  resources: 
    - group: "" # Core.
    - group: "admissionregistration.k8s.io"
    - group: "apiextensions.k8s.io"
    - group: "apiregistration.k8s.io"
    - group: "apps"
    - group: "authentication.k8s.io"
    - group: "authorization.k8s.io"
    - group: "autoscaling"
    - group: "batch"
    - group: "certificates.k8s.io"
    - group: "extensions"
    - group: "metrics.k8s.io"
    - group: "networking.k8s.io"
    - group: "policy"
    - group: "rbac.authorization.k8s.io"
    - group: "scheduling.k8s.io"
    - group: "settings.k8s.io"
    - group: "storage.k8s.io"
  omitStages:
    - "RequestReceived"

Означает, что необходимо записывать метаданные событий и тело запроса, если верны условия:

  • Событие не соответствует ни одному предыдущему правилу в политике аудита.
  • Тип запроса — get, list или watch.
  • Запрос относится к группе ресурсов из списка.
  • Событие не относится к стадии RequestReceived.

Правило для уровняПравило для уровня RequestResponse

- level: RequestResponse
  resources: 
    - group: "" # Core.
    - group: "admissionregistration.k8s.io"
    - group: "apiextensions.k8s.io"
    - group: "apiregistration.k8s.io"
    - group: "apps"
    - group: "authentication.k8s.io"
    - group: "authorization.k8s.io"
    - group: "autoscaling"
    - group: "batch"
    - group: "certificates.k8s.io"
    - group: "extensions"
    - group: "metrics.k8s.io"
    - group: "networking.k8s.io"
    - group: "policy"
    - group: "rbac.authorization.k8s.io"
    - group: "scheduling.k8s.io"
    - group: "settings.k8s.io"
    - group: "storage.k8s.io"
  omitStages:
    - "RequestReceived"

Означает, что необходимо записывать метаданные событий, тело запроса и ответа, если верны условия:

  • Событие не соответствует ни одному предыдущему правилу в политике аудита.
  • Тип запроса — create, update или delete. Это не указано явно, но следует из того, что правило не применяется к указанным ранее типам запросов: get, list или watch.
  • Запрос относится к группе ресурсов из списка.
  • Событие не относится к стадии RequestReceived.

Подробнее о политике аудита см. в документации Kubernetes.

Была ли статья полезна?

Предыдущая
Автоматическое масштабирование
Следующая
Внешние узлы кластера
Проект Яндекса
© 2025 ООО «Яндекс.Облако»