Общие сведения о безопасности пространств кода
GitHub Codespaces по умолчанию предназначено быть защищённым безопасностью. Следовательно, необходимо убедиться в том, что ваши методы разработки программного обеспечения не приводят к риску снижения уровня безопасности вашего пространства кода.
В этом руководстве описано, как GitHub Codespaces обеспечить безопасность вашей среды разработки, и приведены некоторые хорошие практики, которые помогут поддерживать вашу безопасность во время работы. Как и для любых других средств разработки, помните, что вы должны работать только с теми репозиториями, которые вы знаете и которым доверяете.
Изоляция среды
GitHub Codespaces разработана для того, чтобы ваши кодовые пространства были разделены друг от друга, при этом каждое использовало свою виртуальную машину и сеть.
Изолированные виртуальные машины
Каждое пространство кода размещается на собственной специально созданной виртуальной машине. Два пространства кода никогда не размещаются на одной виртуальной машине.
Каждый раз при перезапуске пространства кода оно развертывается на новой виртуальной машине с последними доступными обновлениями для системы безопасности.
Изолированная сеть
Каждое пространство кода имеет собственную изолированную виртуальную сеть. Используются брандмауэры для блокировки входящих подключений из Интернета и предотвращения обмена данными между пространствами кода во внутренних сетях. Пространства кода разрешены для исходящих подключений к Интернету.
Проверка подлинности
Вы можете подключиться к кодовому пространству через веб-браузер или из Visual Studio Code. Если вы подключитесь с VS Code, вам предлагается аутентифицироваться с GitHubпомощью .
Каждый раз, когда кодовое пространство создаётся или перезагружается, ему назначается новый GitHub токен с автоматическим сроком истечения. Срок действия позволяет работать в пространстве кода без повторной проверки подлинности в течение обычного рабочего дня, а также снижает вероятность того, что подключение останется открытым после того, как вы перестанете использовать пространство кода.
Область действия маркера зависит от имеющегося уровня доступа к репозиторию, в котором было создано пространство кода:
-
**Если у вас есть доступ к репозиторию на запись**: область действия маркера будет ограничена доступом к репозиторию на чтение и запись. -
**Если у вас есть только доступ на чтение к репозиторию**: маркер будет разрешать только клонирование кода из исходного репозитория. Если вы делаете коммит в кодовом пространстве или запускаете новую ветвь, GitHub Codespaces автоматически создаёте форк репозитория или связываете кодовое пространство с существующим форком, если он уже есть для верхнего репозитория. Маркер обновляется, чтобы иметь доступ на чтение и запись к вилке. Дополнительные сведения см. в разделе [AUTOTITLE](/codespaces/developing-in-a-codespace/using-source-control-in-your-codespace#about-automatic-forking). -
**Если вы авторизовать пространство кода для доступа к другим репозиториям:** маркер будет ограничен доступом на чтение или чтение или запись в исходный репозиторий, а также к любым другим репозиториям, к которым у вас есть авторизованный доступ. Дополнительные сведения см. в разделе [AUTOTITLE](/codespaces/managing-your-codespaces/managing-repository-access-for-your-codespaces#authorizing-requested-permissions).
Подключения к пространству кода
Вы можете подключиться к своему кодовому пространству через TLS-зашифрованный туннель, предоставляемый GitHub Codespaces сервисом. Подключаться к пространству кода может только создатель пространства кода. Соединения аутентифицируются с GitHubпомощью .
Если необходимо разрешить внешний доступ к службам, работающим в пространстве кода, можно включить перенаправление портов для частного или общего доступа.
перенаправление портов;
Если необходимо подключиться к службе (например, к веб-серверу разработки), работающей в пространстве кода, можно настроить перенаправление портов, чтобы сделать службу доступной через Интернет.
Владельцы организации могут сделать перенаправляемые порты общедоступными или доступными только внутри организации. Дополнительные сведения см. в разделе Ограничение видимости переадресованных портов.
**Порты, пересылаемые частно:** доступны в интернете, но только создатель кодового пространства может получить к ним доступ после аутентификации в GitHub.
**Публично перенаправляемые порты внутри вашей организации:** Доступны в интернете, но только для членов той же организации, что и кодовое пространство, после аутентификации в GitHub.
**Общедоступные перенаправляемые порты**: доступны через Интернет, и доступ к ним может получить любой пользователь в Интернете. Для доступа к общедоступным перенаправляемым портам проверка подлинности не требуется.
Все перенаправляемые порты по умолчанию являются частными, что означает, что перед доступом к ним необходимо пройти проверку подлинности. Доступ к частным перенаправляемым портам пространства кода контролируется файлами cookie проверки подлинности со сроком действия 3 часа. По истечении срока действия файла cookie необходимо повторно пройти проверку подлинности.
При удалении и повторном добавлении порта или при перезапуске пространства кода общедоступный перенаправляемый порт по умолчанию снова станет частным.
На панели "Порты" можно настроить общий или частный доступ к портам, а также отключить перенаправление портов, если оно больше не требуется. Дополнительные сведения см. в разделе Переадресация портов в вашем codespace.
Рекомендации по обеспечению безопасности для пространств кода
Пространства кода по умолчанию имеют улучшенную защиту. Для поддержания этого уровня безопасности соблюдайте рекомендации по безопасности в ходе разработки:
- Как и для любых других средств разработки, помните, что вы должны работать только с теми репозиториями, которые вы знаете и которым доверяете.
- Перед добавлением новых зависимостей в пространство кода проверьте, насколько хорошо они обслуживаются, и выпускаются ли для них обновления системы безопасности, устраняющие все уязвимости системы безопасности, обнаруженные в коде.
Использование секретов среды разработки для доступа к конфиденциальной информации
Всегда используйте секреты среды разработки, если вы хотите использовать конфиденциальную информацию (например, маркеры доступа) в пространстве кода. К секретам можно обращаться как к переменным среды в пространстве кода, в том числе из терминала. Например, можно запустить терминал в пространстве кода и использовать echo $SECRET_NAME для просмотра значения секрета среды разработки.
Значения секретов копируются в переменные среды всякий раз, когда пространство возобновляется или создается, а также синхронизируется при их изменении.
Секреты среды разработки не копируются в среду, если у вас нет доступа на запись к репозиторию пространства кода.
Дополнительные сведения о секретах см. в следующих разделах: * Управление секретами, специфичными для ваших аккаунтов, для GitHub Codespaces * Управление секретами среды разработки для репозитория или организации
Работа с вкладом и репозиториями других пользователей
При создании пространства кода из ветви запроса на вытягивание в вилке маркер в пространстве кода будет отличаться в зависимости от того, является ли репозиторий общедоступным или частным:
- Для частного репозитория пространство кода получает доступ как к вилке, так и к родительскому репозиторию.
- Для общедоступного репозитория пространство кода будет иметь доступ только к вилке и открытым запросам на вытягивание в родительском репозитории.
Кроме того, мы также защищаем вас в этих сценариях, поскольку не внедряем ни один из секретов codespace в среду. Дополнительные сведения см. в разделе Управление секретами, специфичными для ваших аккаунтов, для GitHub Codespaces.
Примечание.
Область маркера в пространстве кода может измениться, если создать пространство кода из вилки, на которое у вас есть только доступ на чтение, а затем зафиксировать или отправить новую ветвь в пространстве кода. В этой ситуации, как и в любом другом репозитории, GitHub Codespaces автоматически создаётся новый форк или связывает ваше кодовое пространство с существующим форком, принадлежащим вашей учетной записи, и обновляет токен так, чтобы он имел доступ к чтению и записи к новому связанному форку. Дополнительные сведения см. в разделе Использование системы управления версиями в codespace.
Когда GitHub Codespaces вы связываете ваше кодовое пространство с существующим форком, оно может быть либо форком того форка, из которого вы создали кодовое пространство, либо вашим собственным форком общего восходящего репозитория.
Дополнительные рекомендации
Существуют дополнительные хорошие практики и риски, о которых следует знать при использовании GitHub Codespaces.
Общие сведения о файле devcontainer.json репозитория
При создании codespace, если файл devcontainer.json найден для репозитория, он анализируется и используется для настройки codespace. Файл devcontainer.json может содержать мощные функции, такие как установка сторонних расширений и выполнение произвольного кода, предоставленного в postCreateCommand.
Дополнительные сведения см. в разделе Основные сведения о контейнерах разработки.
Предоставление доступа с помощью функций
Некоторые функции разработки могут привести к повышению риска в вашей среде. Например, к потенциальным проблемам при обеспечении безопасности могут привести подписывание фиксаций, секреты в переменных среды, доступ к репозиторию с проверкой подлинности и пакеты. Мы рекомендуем предоставлять доступ только тем пользователям, которым он необходим, и принять как можно более строгую политику доступа.
Применение расширений
Любые дополнительные VS Code удлинители, которые вы установили, могут создать ещё больший риск. Чтобы устранить этот риск, устанавливайте только те расширения, которым вы доверяете, и регулярно обновляйте их.
Использование синхронизации параметров
VS CodeСинхронизация настроек может позволить потенциально вредоносному контенту передаваться между устройствами. По умолчанию синхронизация параметров отключена для пространств кода, открытых в браузере. Если вы создаете пространство кода для репозитория, содержимое которого вы не доверяете, следует открыть пространство кода в браузере и оставить синхронизацию параметров отключенной.
Если вы включили синхронизацию настроек в настройках пользователя и хотите разрешить синхронизацию изменений в настройках из кодовых пространств с другими экземплярами VS Code, мы рекомендуем добавить выбранный список доверенных репозиториев, а не доверять всем репозиториям. При создании пространств кода из доверенных репозиториев изменения, внесенные в параметры в пространствах кода, синхронизируются с кэшируемыми параметрами в облаке, из которых они могут передаваться на устройства. Дополнительные сведения об управлении синхронизацией параметров см. в разделе Персонализация GitHub Codespaces для вашего аккаунта.