Забезпечення безпеки під час використання GitHub Actions є критично важливим аспектом, оскільки Workflows можуть взаємодіяти з конфіденційними даними, запускати код та керувати різними ресурсами. У цій темі розглядаються основні методи захисту та управління правами доступу для забезпечення безпеки при роботі з GitHub Actions.
GitHub надає можливість детально керувати правами доступу для Workflows та їх окремих завдань (jobs). Це дозволяє контролювати, які дії Workflow може виконувати в репозиторії або з якими ресурсами він може взаємодіяти.
Permissions на рівні репозиторію: Ви можете налаштувати права доступу для всього репозиторію, що визначатиме, які дії можуть виконувати Workflows в межах цього репозиторію. За замовчуванням, Workflows мають досить широкі дозволи, але ви можете обмежити їх, щоб підвищити безпеку.
Permissions на рівні jobs: Кожен job у Workflow може мати власний набір прав доступу. Наприклад, ви можете надати одному job право тільки читати дані з репозиторію, тоді як інший job зможе змінювати дані або створювати issue.
Приклад налаштування прав доступу:
jobs:
deploy:
permissions:
contents: read
issues: write
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Deploy to production
run: npm run deploy
У цьому прикладі deploy
job має права тільки на читання вмісту репозиторію та запису в issues.
Ін’єкції коду є однією з найбільших загроз у світі автоматизації, де зловмисник може додати шкідливий код у процес, який автоматично виконується. У контексті GitHub Actions, такі ін’єкції можуть статися, якщо необережно використовуються дані, що надходять від користувачів або зовнішніх джерел.
environment variables
), які дозволяють ізолювати критичні дані від прямого введення користувача.GitHub Tokens - це тимчасові токени, які автоматично генеруються GitHub під час виконання Workflows і використовуються для аутентифікації запитів до API GitHub.
Що таке GitHub Token: Це автоматично створений токен, що надається Workflow під час його виконання. Цей токен надає доступ до репозиторію та інших ресурсів на GitHub, але його права можна налаштувати за допомогою налаштувань Permissions.
Переваги використання GitHub Tokens: Оскільки ці токени мають обмежений термін дії і створюються автоматично, вони забезпечують більш високий рівень безпеки, ніж статичні токени або ключі доступу, які можуть бути випадково скомпрометовані.
Приклад використання GitHub Token:
steps:
- name: Checkout code
uses: actions/checkout@v2
with:
token: ${{ secrets.GITHUB_TOKEN }}
У цьому прикладі GITHUB_TOKEN
використовується для аутентифікації дії checkout
, що дозволяє безпечно отримати код з репозиторію.