Автоматизована безпека
Тут ми обговорюємо кілька способів автоматизувати перевірки безпеки в сховищі, доступному адміністраторам сховища GitHub.
Виявлення та виправлення застарілих залежностей із вразливостями системи безпеки
Практично кожен проект у ці дні має залежності від зовнішніх пакетів. Хоча ці компоненти можуть запропонувати значні переваги в продуктивності, вони можуть ввести інші ризики для безпеки. Залишатися на вершині цих пакетів і їх стан вразливості може зайняти багато часу, особливо з огляду на те, як кожна залежність може мати свої залежності, які можуть стати важко відстежувати і підтримувати. На щастя, GitHub надає функції, які зменшують навантаження.
Графіки залежностей сховища
Одна стандартна функція, до якої входить кожне сховище, – це графіки залежностей. GitHub сканує спільні маніфести пакета, наприклад package.json, requirements.txtта інші. Ці графіки дають змогу власникам проектів рекурсивно відстежувати всі залежності, на які залежить проект.
Список маніфестів залежностей, що підтримуються, див. в статті Відомості про графік залежностей.
Оповіщення Dependabot
Навіть за допомогою графіка візуальної залежності все ще може бути переважною, щоб залишатися на вершині останніх міркувань безпеки для кожної залежності проекту. Щоб зменшити ці витрати, GitHub надає оповіщення Dependabot, які стежать за вашими графіками залежностей. Потім він перехресно посилається на цільові версії з версіями відомих списків вразливостей. Коли виявлено ризик, проект буде оповіщено. Дані для аналізу надходять із GitHub Security Advisories .
Оновлення автоматизованої залежності за допомогою Dependabot
Оповіщення про залежність може призвести до того, що співавтор проекту натикається на образливе посилання на рекомендовану версію та створює запит на перевірку. Чи не було б чудово, якби був спосіб автоматизувати ці зусилля? Що ж, гарна новина! Dependabot робить саме це. Він перевіряє на наявність оповіщень про залежність і створює запити на витягування, щоб співавтор міг перевірити оновлення та об'єднати запит.
Докладні відомості про гнучкість Dependabot див. в статті Настроювання оновлень безпеки Dependabot.
Автоматичне сканування коду
Подібно до того, як Dependabot сканує сховище на наявність оповіщень про залежність, ви можете використовувати сканування коду для аналізу та виявлення вразливостей і помилок безпеки в коді в сховищі GitHub. Сканування коду має кілька переваг. За його допомогою можна шукати, пристосовувати та визначати пріоритети для виправлення наявних проблем або потенційних вразливостей системи безпеки. Це також корисно, щоб заборонити розробникам вводити в код нові проблеми з безпекою.
Ще однією перевагою сканування коду є його здатність використовувати CodeQL. CodeQL дає змогу запитувати код як дані, що дає змогу створювати настроювані запити або використовувати запити, які підтримує спільнота з відкритим кодом. Сканування коду дає змогу настроювати та зберігати код у вашому сховищі.
Ви можете активувати оповіщення та робочі цикли сканування коду на вкладці безпеки сховища GitHub:
Дізнайтеся більше про сканування коду таCodeQL.
Таємне сканування
Ще однією функцією автоматизованого сканування в сховищі GitHub є таємне сканування. Подібно до попередніх функцій сканування системи безпеки, таємне сканування шукає відомі секрети або облікові дані, скоєні в сховищі. Це сканування виконується, щоб запобігти використанню шахрайської поведінки та забезпечити цілісність будь-яких конфіденційних даних. За замовчуванням таємне сканування відбувається в загальнодоступних репозиторіях, і ви можете активувати таємне сканування на приватних репозиторіях адміністраторами сховищ або власниками організацій.
Коли таємне сканування виявляє набір облікових даних, GitHub сповіщає постачальника послуг, який видав таємницю. Постачальник послуг перевіряє облікові дані. Потім він вирішує, чи повинні вони відкликати таємницю, видати нову таємницю або звернутися безпосередньо до вас. Дія залежить від пов'язаних ризиків для вас або постачальника послуг.
Дізнайтеся більше про Таємне сканування для загальнодоступних і приватних репозиторіїв.