Поиск по сайту:

Что такое секреты GitHub и как их использовать?


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

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

Каковы секреты GitHub?

GitHub Secrets — это, по сути, хранилище, в котором вы можете хранить закрытые ключи, к которым можно получить доступ с помощью сценариев GitHub Actions по имени, так же, как и к переменным среды. Это решает проблему хранения его в виде открытого текста в базе кода, что является серьезной проблемой безопасности даже для частных репозиториев и невозможной для публичных без немедленного взлома.

Это полезно во многих случаях, когда код может быть общедоступным, но сценарий действий должен пройти аутентификацию с помощью какой-либо сторонней службы. Например, если вы размещаете двоичные файлы в корзинах Amazon S3, вам потребуется предоставить сценарию токен доступа для записи в хранилище AWS. Конечно, вы не хотите давать никому, просматривающему репозиторий, разрешение перезаписывать содержимое корзины. Использование секрета ограничивает доступ, а также защищает ключ от случайной утечки.

  • Секреты репозитория применяются к одному репозиторию. Вам нужно будет установить их на панели настроек репозитория, к которым затем можно будет обращаться как к переменным среды в сборках GitHub Actions.
  • Секреты организации GitHub будут применяться ко всем репозиториям внутри этой организации, обеспечивая простой способ централизованного управления ключами. Они задаются в настройках организации.
  • Секреты среды применяются к конкретным средам GitHub в репозитории, например

    develop
    production

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

Вы можете хранить до 1000 секретов организации, 100 секретов репозитория и 100 секретов среды. Размер секретов также ограничен 64 КБ, хотя есть обходные пути для этого ограничения. Вы также можете хранить двоичные данные в виде строк в кодировке Base64.

Их по-прежнему можно слить из скрипта Действия, если вы, например, вывели их в консоль командой типа

echo

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

echo

Использование секретов GitHub

Чтобы установить секрет всего репозитория, вам нужно перейти на панель настроек репозитория и нажать «Секреты» > «Действия». Вы также можете установить секреты для кодовых пространств GitHub и Dependabot, если вы их используете.

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

Соглашение об именовании секретных имен записывается в верхнем регистре с подчеркиванием, иначе известном как «регистр кричащей змеи», но это ничем не соблюдается.

Затем в сценарии «Действия» вы можете ссылаться на него, экранируя его как переменную YAML, например:

${{ secrets.SECRET_NAME }}

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

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

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

Секреты организации

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

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

Чтобы создать или изменить секрет организации, у вас должен быть доступ «администратора» к самой организации. Это можно предоставить всем участникам, отредактировав базовые разрешения, но обычно это не рекомендуется для крупных организаций.

Статьи по данной тематике: