Skip to main content

Безопасность в GitHub Codespaces

Обзор архитектуры безопасности GitHub Codespaces с рекомендациями по обеспечению безопасности и минимизации рисков атак.

Общие сведения о безопасности пространств кода

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

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

Изоляция среды

GitHub Codespaces отделяет пространства кода друг от друга, и каждое пространство кода использует собственную виртуальную машину и сеть.

Изолированные виртуальные машины

Каждое пространство кода размещается на собственной специально созданной виртуальной машине. Два пространства кода никогда не размещаются на одной виртуальной машине.

Каждый раз при перезапуске пространства кода оно развертывается на новой виртуальной машине с последними доступными обновлениями для системы безопасности.

Изолированная сеть

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

Проверка подлинности

Можно подключиться к codespace с помощью веб-браузера или из Visual Studio Code. При подключении из VS Code вам будет предложено пройти проверку подлинности с помощью GitHub Enterprise Cloud.

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

Область действия маркера зависит от имеющегося уровня доступа к репозиторию, в котором было создано пространство кода:

  • Если у вас есть доступ к репозиторию на запись: область действия маркера будет ограничена доступом к репозиторию на чтение и запись.
  • Если у вас есть только доступ на чтение к репозиторию: маркер будет разрешать только клонирование кода из исходного репозитория. Если сделать фиксацию в пространстве кода или отправить новую ветвь, GitHub Codespaces автоматически создает вилку репозитория или связывает пространство кода с существующим вилкой, если у вас уже есть один для репозитория вышестоящий. Маркер обновляется, чтобы иметь доступ на чтение и запись к вилке. Дополнительные сведения см. в разделе «AUTOTITLE».
  • Если вы авторизовать пространство кода для доступа к другим репозиториям: маркер будет область для доступа к исходному репозиторию или доступу на чтение или запись, а также к любым другим репозиториям, к которым у вас есть авторизованный доступ. Дополнительные сведения см. в разделе «AUTOTITLE».

Подключения к пространству кода

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

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

перенаправление портов;

Если необходимо подключиться к службе (например, к веб-серверу разработки), работающей в пространстве кода, можно настроить перенаправление портов, чтобы сделать службу доступной через Интернет.

Владельцы организации могут сделать перенаправляемые порты общедоступными или доступными только внутри организации. Дополнительные сведения см. в разделе «AUTOTITLE».

Частные перенаправляемые порты: доступны через Интернет, но доступ к ним может получить только создатель пространства кода после прохождения проверки подлинности в GitHub Enterprise Cloud.

Общедоступные перенаправляемые порты в вашей организации: доступны через Интернет, но доступ к ним могут получить только участники той же организации, в которой находится пространство кода, после прохождения проверки подлинности в GitHub Enterprise Cloud.

Общедоступные перенаправляемые порты: доступны через Интернет, и доступ к ним может получить любой пользователь в Интернете. Для доступа к общедоступным перенаправляемым портам проверка подлинности не требуется.

Все перенаправляемые порты по умолчанию являются частными, что означает, что перед доступом к ним необходимо пройти проверку подлинности. Доступ к частным перенаправляемым портам пространства кода контролируется файлами cookie проверки подлинности со сроком действия 3 часа. По истечении срока действия файла cookie необходимо повторно пройти проверку подлинности.

При удалении и повторном добавлении порта или при перезапуске пространства кода общедоступный перенаправляемый порт по умолчанию снова станет частным.

На панели "Порты" можно настроить общий или частный доступ к портам, а также отключить перенаправление портов, если оно больше не требуется. Дополнительные сведения см. в разделе «AUTOTITLE».

Рекомендации по обеспечению безопасности для пространств кода

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

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

Использование секретов среды разработки для доступа к конфиденциальной информации

Всегда используйте секреты среды разработки, если вы хотите использовать конфиденциальную информацию (например, маркеры доступа) в пространстве кода. К секретам можно обращаться как к переменным среды в пространстве кода, в том числе из терминала. Например, можно запустить терминал в пространстве кода и использовать echo $SECRET_NAME для просмотра значения секрета среды разработки.

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

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

Дополнительные сведения о секретах см. в следующих разделах:

Работа с вкладом и репозиториями других пользователей

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

  • Для частного репозитория пространство кода получает доступ как к вилке, так и к родительскому репозиторию.
  • Для общедоступного репозитория пространство кода будет иметь доступ только к вилке и открытым запросам на вытягивание в родительском репозитории.

Кроме того, мы также защищаем вас в этих сценариях, поскольку не внедряем ни один из секретов codespace в среду. Дополнительные сведения см. в разделе «AUTOTITLE».

Примечание. Область маркера в пространстве кода может измениться, если создать пространство кода из вилки, на которое у вас есть только доступ на чтение, а затем зафиксировать или отправить новую ветвь в пространстве кода. В этой ситуации, как и в любом другом репозитории, GitHub Codespaces автоматически создает новый вилку или связывает пространство кода с существующим вилком, принадлежащим вашей учетной записи, и обновляет маркер, чтобы иметь доступ на чтение и запись к вновь связанному вилку. Дополнительные сведения см. в разделе «AUTOTITLE».

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

Дополнительные рекомендации

Существуют некоторые дополнительные рекомендации и риски, которые следует учитывать при использовании GitHub Codespaces.

Общие сведения о файле devcontainer.json репозитория

При создании codespace, если файл devcontainer.json найден для репозитория, он анализируется и используется для настройки codespace. Файл devcontainer.json может содержать мощные функции, такие как установка сторонних расширений и выполнение произвольного кода, предоставленного в postCreateCommand.

Дополнительные сведения см. в разделе «AUTOTITLE».

Предоставление доступа с помощью функций

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

Применение расширений

Любые дополнительные установленные расширения VS Code также могут привести к увеличению риска. Чтобы устранить этот риск, устанавливайте только те расширения, которым вы доверяете, и регулярно обновляйте их.

Использование синхронизации Параметры

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

Если вы включили Параметры синхронизацию в пользовательских предпочтениях и хотите разрешить изменения параметров для синхронизации с пространствами кода с другими экземплярами VS Code, рекомендуется добавить выбранный список доверенных репозиториев, а не доверять всем репозиториям. При создании пространств кода из доверенных репозиториев изменения, внесенные в параметры в пространствах кода, синхронизируются с кэшируемыми параметрами в облаке, из которых они могут передаваться на устройства. Дополнительные сведения об управлении синхронизацией Параметры см. в разделе "Персонализация GitHub Codespaces для вашей учетной записи".