Как GitHub хранить секреты
GitHub использует [запечатанные коробки с либнатрием](https://libsodium.gitbook.io/doc/public-key_cryptography/sealed_boxes) для шифрования секретов. Секрет шифруется до достижения GitHub и остаётся зашифрованным до тех пор, пока не будет использован , DependabotGitHub Actions, или Codespaces.
Dependabot Секреты
Dependabot Секреты используются для хранения учетных данных и конфиденциальной информации для использования внутри Dependabot.
Dependabot Секреты упоминаются в файле `dependabot.yml` репозитория.
Usage
Dependabot Секреты обычно используются Dependabot для аутентификации в частных реестрах посылок. Это позволяет Dependabot открывать pull requests для обновления уязвимых или устаревших зависимостей в приватных репозиториях. Используемые для аутентификации, эти Dependabot секреты ссылаются в файл репозитория `dependabot.yml` .
Dependabot Секреты также могут включать секреты, необходимые для рабочих процессов, инициированных Dependabot. Например, Dependabot может запускать GitHub Actions рабочие процессы при создании pull request-запросов для обновления зависимостей или комментариев к pull-запросам. В этом случае Dependabot секреты можно ссылаться из файлов рабочего процесса (`.github/workflows/*.yml`), если процесс запускается событием Dependabot .
Scope
Вы можете определить Dependabot секреты по адресу:
-
Уровень репозитория
-
Уровень организации
Dependabot Секреты могут распространяться между репозиториями, если они установлены на уровне организации. Необходимо указать, какие репозитории в организации могут получить доступ к секрету.
Права доступа
Dependabot Секреты получаются Dependabot при аутентификации в частные реестры для обновления зависимостей.
Dependabot Секреты получают доступ GitHub Actions к рабочим процессам, когда событие-триггер для этого процесса инициируется Dependabot. Это связано с тем, что при запуске Dependabotрабочего процесса доступны только Dependabot секреты — секреты действий недоступны. Поэтому любые секреты, необходимые для этих рабочих процессов, должны храниться как Dependabot секреты, а не как секреты действий. Для события существуют дополнительные ограничения `pull_request_target` безопасности. См [. ограничения и ограничения](#limitations-and-restrictions).
Разрешения доступа пользователей
Секреты уровня репозитория:
- Пользователи с администраторским доступом к репозиторию могут создавать и управлять Dependabot секретами.
- Пользователи с коллаборационным доступом к репозиторию могут использовать секрет для Dependabot.
Секреты уровня организации:
- Владельцы организаций могут создавать и управлять Dependabot секретами.
- Пользователи с коллаборационным доступом к репозиториям с доступом к каждому секрету могут использовать секрет для Dependabot.
Ограничения и запреты
Для рабочих процессов, инициированных Dependabot, pull_request_target событие рассматривается иначе, чем другие события. Для этого события, если базовая ссылка на pull request была создана (Dependabotgithub.event.pull_request.user.login == 'dependabot[bot]'):
- Рабочий процесс получает доступ только для
GITHUB_TOKENчтения. - Секреты недоступны для рабочего процесса.
Это дополнительное ограничение помогает предотвратить потенциальные риски безопасности, которые могут возникнуть из-за pull request, созданных Dependabot.
Dependabot Секреты не передаются Форкам.
Действия с секретами
Секреты действий используются для хранения конфиденциальных данных, таких как ключи API, маркеры проверки подлинности и другие учетные данные в рабочих процессах.
Usage
Секреты действий ссылаются на файлы рабочих процессов (.github/workflows/*.yml).
Scope
Вы можете определить секреты действий по адресу:
- Уровень репозитория
- Уровень среды
- Уровень организации
Секреты уровня среды зависят от конкретной среды, например рабочей или промежуточной среды. Секреты действий можно совместно использовать в репозиториях, если задано на уровне организации. Политики доступа можно использовать для управления доступом к секрету репозиториям.
Права доступа
Секреты действий доступны только в GitHub Actions рабочих процессах. Несмотря на то, что работает на Действиях, Dependabot не имеет доступа к секретам Действий.
Для рабочих процессов, инициированных Dependabot, секреты действий недоступны. Эти секреты рабочих процессов должны храниться как Dependabot секреты, чтобы быть доступными для рабочего процесса.
Расположение, в котором хранится секрет Actions, определяет его специальные возможности:
- Секрет репозитория: все рабочие процессы в репозитории могут получить доступ к секрету.
- Секрет среды: секрет ограничен заданиями, ссылающимися на определенную среду.
- Секрет организации: все рабочие процессы в репозиториях, которым предоставлен доступ организации, могут получить доступ к секретам организации.
Разрешения доступа пользователей
Секреты уровня репозитория и среды:
- Пользователи с доступом администратора к репозиторию могут создавать секреты действий и управлять ими.
- Пользователи с доступом** к репозиторию могут **использовать секрет.
Секреты уровня организации:
- Владельцы организации могут создавать секреты действий и управлять ими.
- Пользователи с доступом к репозиториям с доступом к каждому секрету могут использовать секрет.
Ограничения и запреты
- Секреты действий недоступны для рабочих процессов, инициированных .Dependabot
- Секреты действий не передаются рабочим процессам, которые активируются запросом на вытягивание из вилки.
- GitHub Actions Автоматически редактирует содержимое всех GitHub секретов, которые печатаются в журналы рабочих процессов.
- Можно хранить до 1000 секретов организации, 100 секретов репозитория и 100 секретов среды. Секреты ограничены размером 48 КБ. Дополнительные сведения см. в разделе "Ограничения для секретов".
Codespaces Секреты
Codespaces секреты хранят учетные данные и конфиденциальную информацию, такую как API токены и SSH-ключи, для использования внутри GitHub Codespaces, что позволяет настраивать безопасные среды разработки.
Usage
Codespaces Секреты ссылаются в Codespaces конфигурации контейнера разработки (`devcontainer.json`).
Scope
Вы можете определить Codespaces секреты по адресу:
- Уровень учетной записи пользователя
- Уровень репозитория
- Уровень организации
Для секретов уровня учетной записи пользователя можно выбрать, какие репозитории имеют доступ к секрету.
Codespaces Секреты могут распространяться между репозиториями, если они установлены на уровне организации. Политики доступа можно использовать для управления доступом к секрету репозиториям.
Права доступа
Codespaces Секреты доступны только в Codespaces.
GitHub Actions не могу получить доступ Codespaces к секретам.
Разрешения доступа пользователей
Секреты уровня учетной записи пользователя:
- Codespaces Секреты доступны для любого кодового пространства, которое вы создаёте с помощью репозиториев, имеющих доступ к этому секрету.
Секреты уровня репозитория:
- Пользователи с администраторским доступом к репозиторию могут создавать и управлять Codespaces секретами.
- Пользователи с доступом** к репозиторию могут **использовать секрет.
Секреты уровня организации:
- Владельцы организаций могут создавать и управлять Codespaces секретами.
- Пользователи с доступом к репозиториям с доступом к каждому секрету могут использовать секрет.
Ограничения и запреты
- Вы можете хранить до 100 секретов для GitHub Codespaces.
- Секреты ограничены размером 48 КБ.
- Codespaces Секреты не передаются Форкам.