1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/WeBank-Dockin-Ops

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.zh-CN.md 6.9 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 19:11 3aa9429

Dockin Ops — Dockin Operation service

Dockin — система управления безопасной эксплуатацией

Dockin — это система управления безопасной эксплуатацией, которая оптимизирует выполнение команд, поддерживает управление правами доступа к командам и позволяет организовать эксплуатацию в различных сценариях.

Дополнительные компоненты Dockin доступны по ссылке: https://github.com/WeBankFinTech/Dockin

Архитектура

Компоненты

Dockin-Opserver

Dockin-Opserver — это apiserver-интерфейс на основе Kubernetes client-go, который поддерживает следующие основные функции:

  • Управление несколькими кластерами одновременно.
  • Управление учётными записями пользователей. Поскольку у Pod нет собственного управления учётными данными, доступ к любому Pod можно получить, просто имея kubeconfig. Это может представлять угрозу безопасности для межгрупповых операций.
  • SSH-прокси. Пользователи могут войти в Pod с помощью команды kubectl exec /bin/bash -it и выполнять любые команды. Однако из-за особенностей Kubernetes существует строгий контроль над использованием памяти, поэтому некоторые операции, требующие больших объёмов памяти, такие как редактирование очень большого файла, могут привести к тому, что Pod будет уничтожен OOM. Через SSH-прокси можно перехватывать все команды, выполняемые пользователями, и проводить проверку безопасности (белый и чёрный списки).
  • Аудит. Можно выполнять любые команды через kubectl exec, но как узнать, какая команда вызвала проблемы с безопасностью? С помощью функции аудита мы сохраняем все команды, выполненные пользователями, будь то через exec или в оболочке, для последующего анализа.
  • Предоставление HTTP и WebSocket интерфейсов для выполнения обычных и интерактивных запросов exec.
  • Преобразование протоколов. Данные протоколов WebSocket и SPDY преобразуются друг в друга.
  • Использование функции informer в client-go для сохранения времени добавления, обновления и удаления Pod в Redis.
Dockin-Opsctl

Это клиент, похожий на kubectl, бинарный клиент, который устанавливает HTTP- или WebSocket-соединение с dockin-opserver и связывает текущий стандартный ввод и вывод. В интерактивном режиме он переходит в режим raw.

Dockin-Opagent

Агент Dockin, развёрнутый с помощью daemonset на каждом узле Kubernetes, выполняет следующие функции:

  • Монтирование docker.sock для подключения к dockerd.
  • Интеграция с Docker API для выполнения операций Docker exec.
  • Сопоставление containerId и podName на текущем узле.
  • Предоставляет интерфейс SPDY для ответа на запросы exec от dockin-opserver.
  • Связывает потоки ввода-вывода Docker API с потоками ввода-вывода SPDY.
dockctl

dockctl — это оболочка для dockin-opsctl, предоставляющая следующие возможности:

  • Пакетное управление несколькими Pod на уровне подсистем.
  • Улучшение вывода. dockin-opsctl возвращает данные в формате JSON, а dockctl форматирует их для удобства чтения.

Открытый исходный код

  • dockctl cmdb — управление информацией о Pod на основе ограничений подсистемы.
  • Прокси для выполнения команд.
  • Инструмент SSH:
    • Перехват команд SSH.
    • Перехват параметров команд.
    • Управление учётными записями.
  • Управление правами доступа Pod.

План развития

  • Оптимизация анализа содержимого оболочки (с учётом управляющих символов и символов выхода).
  • Загрузка и скачивание файлов (без использования apiserver kubectl cp).
  • Обработка событий OOM.
  • Отладка kubectl.

Демонстрация

SSH

2b95d08c-6154-42b8-b195-92ff0097c8d3.gif

CMDB

c84bcbdb-857e-4680-8174-5f18b160ac59.gif

Краткое руководство

1. Подготовка

  • Kubernetes-кластер. Для автономной установки можно использовать dockin-installer. dockin-installer: https://github.com/WeBankFinTech/Dockin-installer
  • Заранее развернуть dockin-rm. Opserver должен вызывать rm-интерфейс для получения информации. Dockin-rm: https://github.com/WeBankFinTech/Dockin-rm
  • Подготовить Redis. В Redis хранится информация о чёрном и белом списках команд оболочки. Apiserver использует informer для отправки уведомлений об изменениях Pod. Вы можете быстро запустить Redis с помощью следующей команды:
docker run -p 6379:6379 -d redis:latest redis-server
  • Планировать развёртывание сервера opserver и записывать IP-адрес.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/WeBank-Dockin-Ops.git
git@api.gitlife.ru:oschina-mirror/WeBank-Dockin-Ops.git
oschina-mirror
WeBank-Dockin-Ops
WeBank-Dockin-Ops
develop