Общие сведения о безопасности пространств кода
В GitHub Codespaces по умолчанию используется улучшенная защита. Следовательно, необходимо убедиться в том, что ваши методы разработки программного обеспечения не приводят к риску снижения уровня безопасности вашего пространства кода.
В этом руководстве описывается, как GitHub Codespaces обеспечивает безопасность среды разработки, а также приведены некоторые рекомендации, которые помогут обеспечить безопасность во время работы. Как и для любых других средств разработки, помните, что вы должны работать только с теми репозиториями, которые вы знаете и которым доверяете.
Изоляция среды
GitHub Codespaces отделяет пространства кода друг от друга, и каждое пространство кода использует собственную виртуальную машину и сеть.
Изолированные виртуальные машины
Каждое пространство кода размещается на собственной специально созданной виртуальной машине. Два пространства кода никогда не размещаются на одной виртуальной машине.
Каждый раз при перезапуске пространства кода оно развертывается на новой виртуальной машине с последними доступными обновлениями для системы безопасности.
Изолированная сеть
Каждое пространство кода имеет собственную изолированную виртуальную сеть. Используются брандмауэры для блокировки входящих подключений из Интернета и предотвращения обмена данными между пространствами кода во внутренних сетях. По умолчанию пространства кода могут устанавливать исходящие подключения к Интернету.
Аутентификация
Можно подключиться к codespace с помощью веб-браузера или из Visual Studio Code. При подключении из VS Code вам будет предложено пройти проверку подлинности с помощью GitHub Enterprise Cloud.
Каждый раз при создании или перезапуске пространства кода ему назначается новый маркер GitHub с автоматическим сроком действия. Срок действия позволяет работать в пространстве кода без повторной проверки подлинности в течение обычного рабочего дня, а также снижает вероятность того, что подключение останется открытым после того, как вы перестанете использовать пространство кода.
Область действия маркера зависит от имеющегося уровня доступа к репозиторию, в котором было создано пространство кода:
- Если у вас есть доступ к репозиторию на запись: область действия маркера будет ограничена доступом к репозиторию на чтение и запись.
- Если у вас есть только доступ на чтение к репозиторию: маркер будет разрешать только клонирование кода из исходного репозитория. Если вы выполняете фиксацию в codespace, GitHub Codespaces автоматически создает вилку репозитория или связывает пространство кода с существующей вилкой, если у вас уже есть для вышестоящего репозитория, и маркер обновляется для получения доступа на чтение и запись к вилке. Дополнительные сведения см. в разделе Использование системы управления версиями в codespace.
- Если вы разрешили кодовому пространству доступ к другим репозиториям: маркер будет ограничен для доступа на чтение или чтение и запись к исходному репозиторию и к любым другим репозиториям, к которым вы разрешили доступ. Дополнительные сведения см. в разделе Управление доступом к другим репозиториям в кодовом пространстве.
Подключения к пространству кода
Вы можете подключиться к пространству кода с помощью зашифрованного туннеля TLS, предоставляемого службой GitHub Codespaces. Подключаться к пространству кода может только создатель пространства кода. Подключения проходят проверку подлинности в GitHub Enterprise Cloud.
Если необходимо разрешить внешний доступ к службам, работающим в пространстве кода, можно включить перенаправление портов для частного или общего доступа.
перенаправление портов;
Если необходимо подключиться к службе (например, к веб-серверу разработки), работающей в пространстве кода, можно настроить перенаправление портов, чтобы сделать службу доступной через Интернет.
Владельцы организации могут сделать перенаправляемые порты общедоступными или доступными только внутри организации. Дополнительные сведения см. в разделе Ограничение видимости переадресованных портов.
Частные перенаправляемые порты: доступны через Интернет, но доступ к ним может получить только создатель пространства кода после прохождения проверки подлинности в GitHub Enterprise Cloud.
Общедоступные перенаправляемые порты в вашей организации: доступны через Интернет, но доступ к ним могут получить только участники той же организации, в которой находится пространство кода, после прохождения проверки подлинности в GitHub Enterprise Cloud.
Общедоступные перенаправляемые порты: доступны через Интернет, и доступ к ним может получить любой пользователь в Интернете. Для доступа к общедоступным перенаправляемым портам проверка подлинности не требуется.
Все перенаправляемые порты по умолчанию являются частными, что означает, что перед доступом к ним необходимо пройти проверку подлинности. Доступ к частным перенаправляемым портам пространства кода контролируется файлами cookie проверки подлинности со сроком действия 3 часа. По истечении срока действия файла cookie необходимо повторно пройти проверку подлинности.
При удалении и повторном добавлении порта или при перезапуске пространства кода общедоступный перенаправляемый порт по умолчанию снова станет частным.
На панели "Порты" можно настроить общий или частный доступ к портам, а также отключить перенаправление портов, если оно больше не требуется. Дополнительные сведения см. в разделе Переадресация портов в кодовом пространстве.
Рекомендации по обеспечению безопасности для пространств кода
Пространства кода по умолчанию имеют улучшенную защиту. Для поддержания этого уровня безопасности соблюдайте рекомендации по безопасности в ходе разработки:
- Как и для любых других средств разработки, помните, что вы должны работать только с теми репозиториями, которые вы знаете и которым доверяете.
- Перед добавлением новых зависимостей в пространство кода проверьте, насколько хорошо они обслуживаются, и выпускаются ли для них обновления системы безопасности, устраняющие все уязвимости системы безопасности, обнаруженные в коде.
Использование секретов для доступа к конфиденциальной информации
Всегда используйте зашифрованные секреты при доступе к конфиденциальной информации (например, к маркерам доступа) в пространстве кода. К секретам можно обращаться как к переменным среды в пространстве кода, в том числе из терминала. Например, можно запустить терминал в пространстве кода и использовать команду echo $SECRET_NAME
для просмотра значения секрета.
Значения секретов копируются в переменные среды всякий раз, когда пространство возобновляется или создается, а также синхронизируется при их изменении.
Если у вас нет доступа на запись к репозиторию codespace, секреты не копируются в среду.
Дополнительные сведения о секретах см. в следующих разделах:
- "Управление зашифрованными секретами для codespace"
- "Управление зашифрованными секретами для репозитория и организации в GitHub Codespaces"
Работа с вкладом и репозиториями других пользователей
При создании пространства кода из ветви запроса на вытягивание в вилке маркер в пространстве кода будет отличаться в зависимости от того, является ли репозиторий общедоступным или частным:
- Для частного репозитория пространство кода получает доступ как к вилке, так и к родительскому репозиторию.
- Для общедоступного репозитория пространство кода будет иметь доступ только к вилке и открытым запросам на вытягивание в родительском репозитории.
Кроме того, мы также защищаем вас в этих сценариях, поскольку не внедряем ни один из секретов codespace в среду.
Примечание: Область маркера в codespace может измениться, если создать codespace из вилки, к которой у вас есть только доступ на чтение, а затем выполнить фиксацию в codespace. В этом случае, как и в любом другом репозитории, GitHub Codespaces автоматически создает новую вилку или связывает пространство кода с существующей вилкой, принадлежащей вашей учетной записи, и обновляет маркер для получения доступа на чтение и запись к новой связанной вилке. Дополнительные сведения см. в разделе Использование системы управления версиями в codespace.
Когда GitHub Codespaces связывает пространство кода с существующей вилкой, эта существующая вилка может быть либо вилкой вилки, из которой вы создали codespace, либо собственной вилкой общего вышестоящего репозитория.
Дополнительные рекомендации
Существуют некоторые дополнительные рекомендации и риски, которые следует учитывать при использовании GitHub Codespaces.
Общие сведения о файле devcontainer.json репозитория
При создании codespace, если файл devcontainer.json
найден для репозитория, он анализируется и используется для настройки codespace. Файл devcontainer.json
может содержать мощные функции, такие как установка сторонних расширений и выполнение произвольного кода, предоставленного в postCreateCommand
.
Дополнительные сведения см. в разделе Основные сведения о контейнерах разработки.
Предоставление доступа с помощью функций
Некоторые функции разработки могут привести к повышению риска в вашей среде. Например, к потенциальным проблемам при обеспечении безопасности могут привести подписывание фиксаций, секреты в переменных среды, доступ к репозиторию с проверкой подлинности и пакеты. Мы рекомендуем предоставлять доступ только тем пользователям, которым он необходим, и принять как можно более строгую политику доступа.
Применение расширений
Любые дополнительные установленные расширения VS Code также могут привести к увеличению риска. Чтобы устранить этот риск, устанавливайте только те расширения, которым вы доверяете, и регулярно обновляйте их.
Использование синхронизации параметров
Синхронизация параметров VS Code позволяет передавать потенциально вредоносное содержимое между устройствами. Если вы создаете codespace для репозитория, содержимому которого не доверяете, следует открыть codespace в браузере и оставить синхронизацию параметров отключенной.