Керування секретами в GitHub
Секрети – це змінні, які ви створюєте в організації, сховищі або середовищі сховища. Секрети доступні для використання в робочих циклах Дій GitHub. Дії GitHub можуть читати секрет, лише якщо ви явно включите секрет у робочий цикл.
Для секретів, які зберігаються на рівні організації, можна використовувати політики доступу, щоб керувати тим, які репозиторії можуть використовувати секрети організації. Секрети на рівні організації дають змогу ділитися секретами між кількома репозиторіями. Це зменшує потребу у створенні повторюваних секретів. Оновлення секрету організації в одному розташуванні також гарантує, що зміни набирають сили в усіх робочих циклах сховища, які використовують цей секрет.
Для секретів, які зберігаються на рівні середовища, ви можете дозволити обов'язковим рецензентам контролювати доступ до таємниць. Завдання робочого циклу не може отримати доступ до секретів середовища, якщо їх не схвалено необхідними затверджувачами.
Примітка
Ви можете налаштувати робочі цикли для автентифікації безпосередньо в Azure, щоб отримати доступ до ресурсів.
Іменування ваших секретів
До таємних імен застосовуються такі правила:
- Імена можуть містити лише буквено-цифрові символи (
[a-z],[A-Z],[0-9]) або символи підкреслення (_). Пробіли заборонені. - Імена не можуть починатися з префікса
GITHUB_. - Імена не можуть починатися з числа.
- Імена нечутливі до регістра.
- Імена мають бути унікальними на рівні, на якому їх створено.
Щоб переконатися, що GitHub відредагований ваш секрет у журналах, уникайте використання структурованих даних як значень таємниць. Наприклад, не створюйте секрети, які містять JSON або закодовані блоби Git.
Доступ до ваших секретів
Установіть секрет як змінну вводу або середовища у файлі робочого циклу, щоб зробити його доступним для дії. Якщо у вас є доступ до редагування файлу, можна використовувати та читати секрети у файлі робочого циклу. Докладні відомості див. в статті Дозволи Access на GitHub.
Секрети організації та сховища читаються, коли робочий цикл виконується в черзі, а секрети середовища читаються під час запуску завдання, що посилається на середовище. Крім того, за допомогою API REST можна керувати секретами.
Обмеження дозволів облікових даних
Рекомендовано надати мінімальні дозволи. Наприклад, замість особистих облікових даних використовуйте клавіші розгортання або обліковий запис служби. Радимо надати дозволи лише для читання, якщо це все необхідне, і максимально обмежити доступ.
Під час створення маркера особистого доступу (класичний) виберіть найменшу кількість необхідних областей. Під час створення детально зернистого маркера особистого доступу виберіть мінімальні дозволи та необхідний доступ до сховища.
Створення секретів
Щоб створити секрети або змінні на GitHub для сховища особистого облікового запису, ви повинні бути власником сховища. Щоб створити секрети або змінні на GitHub для сховища організації, потрібно мати admin доступ. Нарешті, щоб створити секрети або змінні для сховища особистого облікового запису або сховища організації через API REST, потрібно мати спільний доступ.
Секрети можуть бути створені:
- На верхній панелі переходів сховища натисніть кнопку Настройки .
- У розділі Безпека лівої панелі переходів виберіть розкривний список Секрети та змінні .
- Виберіть Елемент Дії , щоб отримати доступ до сторінки Секрети дій і змінні .
Використання секретів у робочому циклі
Щоб надати дію з секретом як змінну вводу або середовища, можна скористатися secrets контекстом для доступу до секретів, створених у сховищі. У наведеному нижче коді наведено приклад доступу до секретів у робочому циклі.
steps:
- name: Hello world action
with: # Set the secret as an input
super_secret: ${{ secrets.SuperSecret }}
env: # Or as an environment variable
super_secret: ${{ secrets.SuperSecret }}
На секрети не можна безпосередньо посилатися в if: умовних цілях. Радимо встановити секрети як змінні середовища рівня завдань, а потім посилатися на змінні середовища для умовного виконання кроків у роботі.
Якщо значення таємниці не встановлено, повернуте значення виразу, що посилається на таємницю (наприклад ${{ secrets.SuperSecret }} , у прикладі), є пустим рядком.