Границы доступа к выделенному узлу

Защитите облачный Mac: сначала чётко распределите ответственность

VMOrbit предоставляет выделенный физический узел Apple Silicon и отвечает за предоставление услуги и работу узла. Команда пользователя контролирует права доступа к аккаунтам, данные проектов, ключи, материалы для подписи и конфигурацию приложений. Чёткое распределение ответственности позволяет выстроить практичные процедуры безопасности для удалённой разработки, непрерывной интеграции и миграции данных.

ACCESS / NODE / DATA

Рабочая карта ответственности за выделенный узел

Не виртуальная машина
Распределение ресурсов 1 заказ соответствует 1 выделенному физическому серверу Узел не разделяет пространство системного доступа с другими заказами
Отвечает VMOrbit Предоставление услуги и работа узла Хранение необходимых записей об услуге, событиях и обращениях в поддержку
Отвечает клиент Права доступа, данные, ключи и приложения Настройка участников, репозиториев и удалённых входов по принципу минимальных привилегий
Обработка инцидентов Изоляция, сохранение свидетельств, ротация, создание тикета Совместное восстановление с учётом масштаба воздействия и проверка последующих действий
Границы ответственности

Платформа обслуживает узел, а команда контролирует, кто и какие данные получают к нему доступ

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

Основные обязанности VMOrbit и клиента при использовании узла
Область контроля Отвечает VMOrbit Отвечает клиент Что рекомендуется проверить
Предоставление услуги Предоставить согласованные по заказу модель, узел и срок аренды и поддерживать нормальную работу узла. Проверить данные заказа, уполномоченных пользователей и среду подключения. Соответствуют ли модель, регион, срок аренды и контактное лицо фактической задаче.
Права доступа Предоставить предусмотренные заказом процессы администрирования и поддержки. Создать отдельные аккаунты, выдать минимальные права и отозвать доступ участников, покинувших команду. Остались ли аккаунты, ключи или удалённые входы, которые больше не нужны для работы.
Данные проекта Поддерживать среду узла, необходимую для работы предоставляемой услуги. Управлять кодом, артефактами сборки, кэшем, материалами для подписи и необходимыми резервными копиями. Есть ли за пределами узла восстанавливаемая копия критически важных данных.
Конфигурация приложения Помогать находить проблемы узла и уровня подключения в рамках процесса поддержки. Поддерживать инструментальную цепочку, зависимости, настройки CI, права токенов и маскирование журналов. Фиксируются ли изменения конфигурации и исключаются ли секретные значения из журналов и репозиториев.
Границы доступа к выделенному узлу

Один заказ, один физический узел, одна система прав, определяемая клиентом

Облачный Mac VMOrbit — выделенный физический сервер, а не виртуальная машина. Команде следует разделить персонал, точки подключения и права проектов на три независимых уровня контроля, не используя один долгосрочный секрет для всех процессов.

Уполномоченные участники

Создавайте отдельную учётную запись для каждого участника, которому действительно нужен доступ к узлу; не делитесь долгосрочными паролями или закрытыми ключами. Распределяйте права по ролям — разработка, сборка, аудит — и регулярно проверяйте список участников.

  • Подтвердить рабочую необходимость до добавления участника
  • Своевременно сокращать права при изменении роли
  • Немедленно отзывать доступ при уходе участника из команды

Удалённые входы

SSH подходит для управления через командную строку и автоматизации, а VNC — для задач с графическим интерфейсом macOS. Открывайте только реально используемые входы и ограничивайте сети-источники и периоды доступности.

  • Отключать неиспользуемые способы подключения
  • Сохранять необходимые записи проверок входа
  • Сначала изолировать, затем расследовать подключения из подозрительных источников

Права проекта

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

  • Ограничивать область действия токенов репозиториями и задачами
  • Разделять права разработки, тестирования и выпуска
  • Передавать секретные материалы через контролируемый процесс управления ключами
Управление учётными данными

Каждый ключ должен отвечать на три вопроса

Кому он принадлежит, к чему даёт доступ и когда его следует отозвать. Учётные данные, для которых нельзя ответить хотя бы на один вопрос, не подходят для долгосрочного доступа.

CREDENTIAL REVIEW Проверка учётных данных
01

Отдельная идентичность

Каждый участник использует отдельный отслеживаемый аккаунт; избегайте общих долгосрочных учётных данных.

02

Усиленная аутентификация

Включайте усиленную аутентификацию, если её поддерживает соответствующая система идентификации, и назначайте ответственного за контролируемое восстановление доступа.

03

Регулярная ротация

Установите период ротации для SSH-ключей, CI-токенов и учётных данных процессов подписи; после изменений убедитесь, что старые значения недействительны.

04

Своевременный отзыв

При уходе участника, потере устройства, изменении обязанностей или подозрении на утечку сначала отзовите доступ, затем оцените последствия.

Где не следует хранить

Репозиторий, журналы сборки и чаты — не хранилище ключей

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

Проверка при уходе из команды

Отзыв доступа — это не только удаление аккаунта узла

Также проверьте разрешения SSH, доступ VNC, участников репозиториев, регистрацию runner, переменные окружения, процессы подписи и возможные локальные копии.

Защита удалённых подключений

SSH и VNC используют разные входы, но требуют одинакового порядка проверки

Сначала подтвердите личность и права, затем ограничьте источники и проверьте записи входа. При сбое подключения не расширяйте доступ наугад: последовательно проверьте учётные данные, порт, локальный брандмауэр, сетевой маршрут и состояние узла.

Основные параметры безопасности SSH и VNC
Параметр проверки SSH VNC Признак проблемы
Подходящие задачи Управление через командную строку, автоматизация, сборка и проверка журналов. Разработка, отладка и работа с инструментами, которым нужен графический интерфейс macOS. Способ подключения не соответствует задаче, поэтому лишний вход остаётся открытым.
Контроль идентичности Используйте отдельные SSH-ключи и регулярно очищайте список разрешений. Используйте отдельные аккаунты узла, не делитесь долгосрочными данными для входа. Неизвестный ключ, аккаунт или участник, покинувший команду, всё ещё имеет доступ.
Ограничение источников Ограничьте административный вход сетевыми маршрутами, которыми реально пользуется команда. Открывайте доступ только участникам, которым нужны графические операции, и проверяйте источник. За короткое время появляются несколько незнакомых источников или необычных попыток подключения.
Проверка записей Проверяйте время входа, источник, аккаунт и ключевые выполненные действия. Проверяйте время сеанса, уполномоченного участника и необычные разрывы соединения. Сеансы без ответственного, входы в необычное время или внезапное изменение прав.
Защита CI-учётных данных

self-hosted runner получает только права, необходимые текущему конвейеру

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

01

Ограничить область репозитория

Регистрируйте runner только в репозитории или группе проектов, где выполняются задачи. Для задач из недоверенных веток и внешних вкладов задавайте отдельные границы выполнения.

Результат: таблица соответствия runner и репозиториев
02

Хранить секретные материалы

Материалы для подписи, токены доступа и данные для развёртывания передавайте через контролируемый процесс управления ключами; внедряйте их временно по задаче, не записывайте в репозиторий и постоянные скрипты.

Результат: список назначения ключей и ответственных
03

Контролировать вывод журналов

Не выводите секретные значения в эхо команд, дампы переменных окружения, стеки ошибок и вложения сборки. Перед отправкой журналов в поддержку ещё раз проверьте и замаскируйте их.

Результат: правила маскирования журналов
04

Очищать рабочий каталог

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

Результат: скрипт очистки после задачи
Жизненный цикл данных

С первой загрузки кода готовьте его к последующему экспорту

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

UPLOAD

Загрузка

Проверьте источник передачи и каталог назначения, чтобы не перенести на узел лишние учётные данные, личные файлы или старые архивы.

USE

Повседневное использование

Разделяйте исходный код, кэш зависимостей, тестовые данные и материалы выпуска; назначайте ответственных за чувствительные каталоги и фиксируйте важные изменения конфигурации.

BACKUP

Резервное копирование

Храните необходимые копии за пределами узла и регулярно проверяйте их чтение и восстановление. Успешная синхронизация сама по себе не подтверждает возможность восстановления.

EXPORT

Экспорт

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

CLEAN

Очистка

Отзовите удалённый доступ, удалите ненужные ключи, токены, рабочие каталоги и временные файлы и завершите внутреннее подтверждение экспорта командой.

Операционные записи

Записи должны позволять восстановить хронологию, но не копировать секретные данные

Запросы в поддержку, события узла и необходимые действия фиксируются с возможностью отслеживания; конкретный объём определяется политиками и процессами обслуживания. Клиенту следует передавать минимум необходимой информации — только контекст, действительно нужный для диагностики.

Запрос в поддержку

Кто, когда и о каком явлении сообщил

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

Событие узла

Порядок событий и действия по восстановлению

Структурируйте записи по временной шкале, наблюдаемым явлениям, выполненной изоляции и результату восстановления; не оставляйте только непроверяемые выводы.

Необходимое действие

Цель, область и результат действия

При совместной обработке указывайте объект действия, объём разрешений и статус выполнения. В выдержках журналов оставляйте только необходимое для диагностики и предварительно удаляйте секретные значения.

Реагирование на инциденты

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

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

  1. 01

    Изолировать доступ

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

  2. 02

    Сохранить временную шкалу

    Зафиксируйте время обнаружения, признаки проблемы, источник, связанные аккаунты, недавние изменения и уже выполненные действия. Сохраняйте минимально необходимые журналы, не перезаписывая исходные временные данные.

  3. 03

    Ротировать учётные данные

    Замените потенциально затронутые SSH-ключи, данные аккаунтов узла, токены репозиториев и CI-ключи и убедитесь, что старые значения недействительны, а не просто создайте новые.

  4. 04

    Создать тикет

    Свяжите с заказом соответствующий узел в консоли и укажите регион, время, признаки проблемы, выполненные действия и журналы без секретных данных. Затем совместно проверьте ситуацию и восстановите работу с учётом масштаба воздействия.

Связь по вопросам безопасности

Отправьте отчёт, с которого можно сразу начать расследование

По существующим заказам и текущим проблемам узла сначала войдите в консоль и создайте тикет, связанный с заказом. Если войти в консоль невозможно, отправьте письмо на support@vmorbit.com. Отчёты о безопасности, деловые запросы и обращения по материалам соответствия также отправляйте на этот адрес.

Регион узла Укажите регион, связанный с заказом, но не отправляйте данные для подключения.
Время события Укажите часовой пояс, время первого обнаружения и последнего воспроизведения.
Признаки проблемы Опишите наблюдаемое и ожидаемое поведение и масштаб воздействия.
Минимальные журналы Приложите только фрагменты, необходимые для диагностики, удалив токены, ключи и персональные данные.

Не отправляйте следующее

  • Пароли или закрытые ключи
  • Коды восстановления или долгосрочные токены доступа
  • Полные платёжные данные
  • Полные данные проекта, не связанные с проблемой

Два доступных канала

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

Сначала определите границы, затем подключите выделенный узел к процессам команды

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