Ce este scanarea codului?
Scanarea codului utilizează CodeQL pentru a analiza codul dintr-un depozit GitHub pentru a găsi vulnerabilități de securitate și erori de codare. Scanarea codului este disponibilă pentru toate depozitele publice și pentru depozitele private deținute de organizațiile în care este activată Securitatea avansată GitHub. Dacă scanarea codului găsește o vulnerabilitate sau o eroare potențială în cod, GitHub afișează o avertizare în fila Securitate a depozitului. După ce remediați codul care a declanșat avertizarea, GitHub închide avertizarea.
Puteți utiliza scanarea codului pentru a găsi, a tria și a stabili priorități pentru problemele existente din cod. Scanarea codului împiedică, de asemenea, dezvoltatorii să introducă noi probleme. Puteți să planificați scanări pentru anumite zile și ore sau să declanșați scanări atunci când are loc un anumit eveniment în depozit, cum ar fi o împingere.
În această unitate, veți afla despre CodeQL, cele trei opțiuni pentru configurarea scanării codului și cum să adăugați fluxul de lucru CodeQL la depozit.
Despre scanarea codului cu CodeQL
CodeQL este motorul de analiză a codului dezvoltat pentru automatizarea verificărilor de securitate. Puteți să analizați codul utilizând CodeQL și să afișați rezultatele ca avertizări de scanare a codului. Există trei modalități principale de a configura analiza CodeQL pentru scanarea codului:
- Utilizați configurarea implicită pentru a configura rapid analiza CodeQL pentru scanarea codului în depozit. Ghidajele de configurare implicite alegând limbile de analizat, suita de interogări de rulat și evenimentele care declanșează scanează cu opțiunea de a configura manual limbile și suitele de interogare. Această opțiune de configurare rulează scanarea codului ca acțiune GitHub.
- Utilizați configurarea complexă pentru a adăuga fluxul de lucru CodeQL direct în depozit. Adăugarea fluxului de lucru CodeQL direct în depozit generează un fișier de flux de lucru particularizabil, care utilizează acțiunea github/codeql-action pentru a rula CodeQL CLI ca acțiune GitHub.
- Rulați CodeQL CLI direct într-un sistem CI extern și încărcați rezultatele în GitHub.
CodeQL tratează codul ca date, permițându-vă să găsiți vulnerabilități potențiale în cod cu mai multă încredere decât analizorii statici tradiționali. Generați o bază de date CodeQL pentru a reprezenta baza de cod, apoi rulați interogări CodeQL în acea bază de date pentru a identifica problemele din baza de date. Rezultatele interogării sunt afișate ca avertizări de scanare a codului în GitHub atunci când utilizați CodeQL cu scanarea codului.
CodeQL acceptă atât limbi compilate, cât și interpretate și poate găsi vulnerabilități și erori în cod scris în următoarele limbi acceptate:
- C sau C++
- C#
- Merge
- Java/Kotlin
- JavaScript/TypeScript
- Piton
- Rubin
- Repede
Secțiunea următoare vă arată cum să adăugați fluxul de lucru CodeQL la depozit. Veți afla cum să configurați CodeQL utilizând instrumente externe în unitatea Activați scanarea codului cu ajutorul instrumentelor de la terți .
Activați CodeQL în depozit cu configurarea implicită
Dacă aveți permisiuni de scriere la un depozit, puteți să configurați sau să configurați scanarea codului pentru depozitul respectiv.
Urmați acești pași pentru a configura scanarea codului utilizând fluxul de lucru Acțiuni CodeQL GitHub:
Pe GitHub.com, navigați la pagina principală a depozitului.
Sub numele depozitului, selectați Securitate.
Selectați Configurați scanarea codului. Dacă această opțiune nu este disponibilă, solicitați unui proprietar sau administrator al depozitului organizației să activeze Securitate avansată GitHub.
În lista verticală Configurare , selectați Implicit.
Revizuiți opțiunile implicite. Dacă este necesar, selectați butonul editare din colțul din stânga jos al ferestrei noi pentru a particulariza modul în care rulează CodeQL.
Declanșatoarele de
on:pull_requestșion:pushsunt implicite pentru scanarea codului sunt utile pentru scopuri diferite. Veți afla mai multe despre aceste triggere în unitatea Configurare scanare cod .Selectați Activare CodeQL după ce sunteți gata să activați scanarea codului.
În fluxul de lucru de analiză CodeQL implicit, scanarea codului este configurată pentru a analiza codul de fiecare dată când împingeți o modificare la orice ramuri protejate sau ridicați o solicitare de tragere pentru ramura implicită. După ce se efectuează pushul, scanarea codului rulează automat.
În secțiunea anterioară, am activat scanarea codului utilizând configurarea implicită, care rulează scanările de cod ca acțiune GitHub fără a fi necesar să mențineți un fișier de flux de lucru. Cealaltă opțiune este Configurare complexă , care generează fișierul de flux de lucru implicit pe care îl puteți edita pentru configurarea complexă și mai mulți pași. Vom acoperi utilizarea configurării complexe pentru configurarea scanării codului într-o unitate ulterioară.
Rularea scanării codului cu Acțiuni GitHub afectează minutele lunare de facturare. Dacă doriți să utilizați acțiuni GitHub dincolo de spațiul de stocare sau minutele incluse în contul dvs., veți fi facturat pentru utilizare mai mare.
Despre facturarea pentru acțiuni
Scanarea codului utilizează acțiuni GitHub și fiecare rulare a unui flux de lucru de scanare a codului consumă minute pentru acțiunile GitHub. Utilizarea acțiunilor GitHub este gratuită atât pentru depozitele publice, cât și pentru alergătorii auto-găzduiti. Pentru depozitele private, fiecare cont GitHub primește un anumit număr de minute gratuite și spațiu de stocare, în funcție de produsul utilizat cu contul. Limitele de cheltuieli controlează orice utilizare dincolo de sumele incluse. Dacă sunteți client facturat lunar, contul dvs. are o limită implicită de cheltuieli de zero dolari SUA (USD), ceea ce împiedică utilizarea suplimentară a minutelor sau a spațiului de stocare pentru depozitele private, dincolo de sumele incluse în contul dvs. Dacă vă plătiți contul prin factură, contul dvs. va avea o limită nelimitată de cheltuieli implicite. Minutele se resetează în fiecare lună, în timp ce utilizarea spațiului de stocare nu este activată.