Що таке сканування коду?

Завершено

Сканування коду використовує CodeQL для аналізу коду в сховищі GitHub, щоб знайти вразливості системи безпеки та помилки кодування. Сканування коду доступне для всіх загальнодоступних репозиторіїв, а також для приватних репозиторіїв, що належать організаціям, де ввімкнуто GitHub Advanced Security. Якщо сканування коду виявить потенційну вразливість або помилку в коді, GitHub відображає оповіщення на вкладці Безпека сховища. Коли ви виправите код, який ініціює оповіщення, GitHub закриє оповіщення.

Сканування коду дає змогу знаходити, виправляти й визначати пріоритети для наявних проблем у коді. Сканування коду також перешкоджає розробникам вводити нові проблеми. Ви можете запланувати сканування на певні дні та час або викликати сканування, коли в сховищі відбувається певна подія, наприклад поштовх.

У цій одиниці ви дізнаєтеся про CodeQL, три варіанти настроювання сканування коду та про те, як додати робочий цикл CodeQL до сховища.

Сканування коду за допомогою CodeQL

CodeQL – це обробник аналізу коду GitHub, розроблений для автоматизації перевірок безпеки. Ви можете проаналізувати код за допомогою CodeQL і відобразити результати як оповіщення про сканування коду. Існує три основні способи настроювання аналізу CodeQL для сканування коду:

  • Використовуйте стандартне настроювання, щоб швидко настроїти аналіз CodeQL для сканування коду у сховищі. Стандартні дескриптори настроювання вибирають мови для аналізу, запуск програмного комплексу запитів і події, які запускають сканування з можливістю вручну настроїти мови та програмні комплекси запитів. Цей параметр налаштування запускає сканування коду як дію GitHub.
  • Використовуйте розширене настроювання, щоб додати робочий цикл CodeQL безпосередньо до сховища. Якщо додати робочий цикл CodeQL безпосередньо до сховища, створюється настроюваний файл робочого циклу, який використовує github/codeql-дію для запуску CLI CodeQL як дії GitHub.
  • Запустіть CLI CodeQL безпосередньо в зовнішній системі CI і завантажте результати до GitHub.

CodeQL обробляє код як дані, що дає змогу виявити потенційні вразливості в коді з більшою довірою, ніж традиційні статичні аналізатори. Ви створюєте базу даних CodeQL для представлення кодової бази, а потім виконуєте запити CodeQL у цій базі даних, щоб визначити проблеми в кодній базі. Результати запиту відображаються як оповіщення про сканування коду в GitHub під час використання CodeQL з скануванням коду.

CodeQL підтримує як скомпільовані, так і інтерпретовані мови, і може виявити вразливості та помилки в коді, написаному такими підтримуваними мовами:

  • C або C++
  • C#
  • Іти
  • Java/Kotlin
  • JavaScript/TypeScript
  • Python
  • Ruby
  • Swift (Швидкий)

У наступному розділі пояснюється, як додати робочий цикл CodeQL до сховища. Ви дізнаєтеся, як налаштувати CodeQL за допомогою зовнішніх засобів у розділі Увімкнути сканування коду за допомогою сторонніх засобів .

Увімкнення CodeQL у сховищі за допомогою налаштування за замовчуванням

Якщо у вас є дозволи на записування до сховища, можна настроїти або настроїти сканування коду для цього сховища.

Щоб налаштувати сканування коду за допомогою робочого циклу Дії GitHub CodeQL, виконайте такі дії:

  1. На GitHub.com перейдіть на головну сторінку сховища.

  2. Під іменем сховища виберіть безпека.

    Знімок екрана: вкладка

  3. Виберіть настроїти сканування коду. Якщо цей параметр недоступний, попросіть власника організації або адміністратора сховища ввімкнути розширену безпеку GitHub.

    Знімок екрана: кнопка настроювання сканування коду.

  4. У розкривному списку Настроювання виберіть пункт За замовчуванням.

  5. Перегляньте стандартні параметри. За потреби натисніть кнопку Редагувати в нижньому лівому куті нового вікна, щоб налаштувати запуск CodeQL.

    Тригери on:pull_request та on:push використовуються для сканування коду за замовчуванням для різних цілей. Докладні відомості про ці тригери див. в розділі Настроювання сканування коду .

  6. Натисніть кнопку Увімкнути CodeQL , коли будете готові ввімкнути сканування коду.

    У стандартному робочому циклі аналізу CodeQL сканування коду налаштовано на аналіз коду щоразу, коли ви надсилаєте зміни до будь-яких захищених гілок або піднімаєте запит на витягування від стандартної гілки. Після натискання сканування коду запускається автоматично.

У попередньому розділі ми ввімкнули сканування коду за допомогою стандартного налаштування, яке запускає сканування коду як дію GitHub без необхідності підтримувати файл робочого циклу. Інший варіант – розширене настроювання, яке створює файл робочого циклу за замовчуванням, який можна редагувати для розширеної конфігурації та інших кроків. Ми розглянемо розширене настроювання для настроювання сканування коду в пізнішій одиниці.

Виконання сканування коду за допомогою дій GitHub впливає на ваші щомісячні хвилини виставлення рахунків. Якщо ви хочете використовувати дії GitHub за межами сховища або хвилин, включених до вашого облікового запису, вам буде виставлено рахунок за додаткове використання.

Відомості про виставлення рахунків за дії

Під час сканування коду використовуються дії GitHub, і кожен запуск робочого циклу сканування коду використовує хвилини для дій GitHub. Використання GitHub Actions безкоштовне як для загальнодоступних репозиторіїв, так і для самостійних бігунів. Для приватних репозиторіїв кожен обліковий запис GitHub отримує певну кількість безкоштовних хвилин і сховища залежно від продукту, який використовується з обліковим записом. Обмеження витрат контролює будь-яке використання за межами включених сум. Якщо ви клієнт, що виставляється щомісяця, ваш обліковий запис має стандартний ліміт витрат у розмірі 0 доларів США (USD), що запобігає додатковому використання хвилин або сховища для приватних репозиторіїв за межами сум, включених до вашого облікового запису. Якщо ви оплатите свій обліковий запис за рахунком-фактурою, у вашому обліковому записі буде необмежений ліміт витрат за замовчуванням. Хвилини скидати щомісяця, а використання сховища – ні.