Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Kontrola kódu v GitHubu Advanced Security pro Azure DevOps umožňuje analyzovat kód v úložišti Azure DevOps a najít chyby zabezpečení a chyby kódování. Budete potřebovat GitHub Advanced Security pro Azure DevOps, nebo pokud používáte samostatné prostředí, je povolené GitHub Code Security pro Azure DevOps. Veškeré problémy zjištěné analýzou se zobrazí jako upozornění. Kontrola kódu používá k identifikaci zranitelností jazyk CodeQL.
CodeQL je modul pro analýzu kódu vyvinutý GitHubem, který automatizuje kontroly zabezpečení. Kód můžete analyzovat pomocí CodeQL a zobrazit výsledky jako výstrahy kontroly kódu. Konkrétnější dokumentaci k CodeQL najdete v dokumentaci codeQL.
Pokročilé zabezpečení GitHubu pro Azure DevOps funguje s Azure Repos. Pokud chcete používat GitHub Advanced Security s úložišti GitHub, přečtěte si téma GitHub Advanced Security .
Požadavky
| Kategorie | Požadavky |
|---|---|
| Oprávnění | – Zobrazení souhrnu všech výstrah pro úložiště: Přispěvatel oprávnění k úložišti. – Chcete-li zavřít výstrahy v rozšířeném zabezpečení: oprávnění pro správce projektu. - Správa oprávnění v rozšířeném zabezpečení: Člen skupiny správců kolekce projektů nebo Rozšířené zabezpečení: správa nastavení oprávnění nastavena na Povolit. |
Další informace o pokročilých oprávněních zabezpečení naleznete v tématu Správa oprávnění Advanced Security.
Další konfigurace pro kontrolu kódu
Podpora jazyka a dotazů
Odborníci na GitHub, bezpečnostní pracovníci a přispěvatelé komunity zapisují a udržují výchozí dotazy CodeQL používané ke kontrole kódu. Dotazy se pravidelně aktualizují, aby se zlepšila analýza a snížila počet falešně pozitivních výsledků. Dotazy jsou opensourcové, takže můžete zobrazit a přispívat k dotazům v úložišti github/codeql .
CodeQL podporuje a používá následující identifikátory jazyka:
| Jazyk | Identifikátor |
|---|---|
| C/C++ | cpp |
| jazyk C# | csharp |
| Go | go |
| Java/Kotlin | java |
| JavaScript/TypeScript | javascript |
| Python | python |
| Ruby | ruby |
| Swift | swift |
Návod
- Slouží
cppk analýze kódu napsaného v jazyce C, C++ nebo obojím. - Slouží
javak analýze kódu napsaného v Javě, Kotlinu nebo obojím. - Slouží
javascriptk analýze kódu napsaného v JavaScriptu, TypeScriptu nebo obojím.
Další informace naleznete v tématu Podporované jazyky a architektury.
V protokolu sestavení můžete zobrazit konkrétní dotazy a podrobnosti úlohy prováděné codeQL.
Přizpůsobení konfigurace sestavení pro kontrolu kódu
Kontrola kódu podporuje dva režimy sestavení při nastavování kanálu pro kontrolu:
-
none- Databáze CodeQL je vytvořena přímo ze základu kódu bez sestavení základu kódu (podporována pro všechny interpretované jazyky a dále podporována procpp,javaacsharp). -
manual– definujete kroky sestavení, které se mají použít pro základ kódu v pracovním postupu (podporováno pro všechny kompilované jazyky).
Další informace o různých režimech sestavení, včetně porovnání výhod jednotlivých režimů sestavení, najdete v tématu Kontrola kódu CodeQL pro kompilované jazyky.
Návod
Režim sestavení none je možné použít s jinými interpretovanými jazyky, jako je JavaScript, Python, Ruby.
Pokud je pro C# nebo Javu zadaný režim sestavení none s jinými zkompilovanými jazyky, které nepodporují režim sestavení none, úloha potrubí selže.
Následující kód ukazuje příklad platné konfigurace s více jazyky a none režimu sestavení:
trigger: none
pool:
vmImage: windows-latest
steps:
- task: AdvancedSecurity-Codeql-Init@1
displayName: Initialize CodeQL
inputs:
# build mode `none` is supported for C# and Java, and JavaScript is an interpreted language
# and build mode `none` has no impact on JavaScript analysis
languages: 'csharp, java, javascript'
buildtype: 'none'
- task: AdvancedSecurity-Codeql-Analyze@1
displayName: Perform CodeQL Analysis
Následující kód ukazuje příklad neplatné konfigurace s více jazyky a none režim sestavení:
trigger: none
pool:
vmImage: windows-latest
steps:
- task: AdvancedSecurity-Codeql-Init@1
displayName: Initialize CodeQL
inputs:
# build mode `none` is supported for C# but build mode `none` is NOT supported for Swift
# so this pipeline definition will result in a failed run
languages: 'csharp, swift'
buildtype: 'none'
- task: AdvancedSecurity-Codeql-Analyze@1
displayName: Perform CodeQL Analysis
Upozornění skenování kódu
Upozornění kontroly kódu GitHub Advanced Security pro Azure DevOps zahrnují příznaky kontroly kódu podle úložiště, které upozorňují na ohrožení zabezpečení aplikací na úrovni kódu.
Pokud chcete použít kontrolu kódu, musíte nejprve nakonfigurovat GitHub Advanced Security pro Azure DevOps.
Karta Rozšířené zabezpečení v sekci Repos v Azure DevOps je centrem pro zobrazení upozornění na kontrolu kódu. Vyberte kartu Skenování kódu pro zobrazení výstrah skenování. Můžete filtrovat podle větve, stavu, kanálu, typu pravidla a závažnosti. Momentálně centrum upozornění nezobrazuje výstrahy pro dokončené skenování na větvích pull requestů.
Pokud se přejmenují kanály nebo větve, žádné výsledky se neprojeví – může to trvat až 24 hodin, než se zobrazí nový název.
Pokud se rozhodnete spouštět vlastní dotazy CodeQL, ve výchozím nastavení neexistuje samostatný filtr pro výstrahy vygenerované z různých balíčků dotazů. Můžete filtrovat podle pravidla, které je pro každý dotaz odlišné.
Pokud pro úložiště vypnete pokročilé zabezpečení, ztratíte přístup k výsledkům na kartě Pokročilé zabezpečení a v úloze sestavení. Úloha sestavení neselže, ale jakékoli výsledky ze sestavení provedených s úlohou, zatímco je rozšířené zabezpečení zakázáno, jsou skryté a nejsou uchovány.
Podrobnosti výstrahy
Výběrem výstrahy zobrazíte další podrobnosti, včetně pokynů k nápravě. Každá výstraha obsahuje umístění, popis, příklad a závažnost.
| Sekce | Vysvětlení |
|---|---|
| Umístění | Část Umístění podrobně popisuje konkrétní instanci, ve které CodeQL zjistil chybu zabezpečení. Pokud existuje více instancí vašeho kódu, které porušují stejné pravidlo, vygeneruje se nová výstraha pro každé jedinečné umístění. Karta Umístění obsahuje přímý odkaz na ovlivněný fragment kódu, abyste mohli vybrat fragment kódu, který se má nasměrovat do webového uživatelského rozhraní Azure DevOps pro úpravy. |
| Popis | Popis poskytuje nástroj CodeQL založený na problému. |
| Doporučení | Doporučením je navrhovaná oprava pro určité upozornění na kontrolu kódu. |
| Příklad | Část příkladu ukazuje zjednodušený příklad zjištěné slabosti v kódu. |
| Závažnost | Úrovně závažnosti můžou být nízké, střední, vysoké nebo kritické. Skóre závažnosti vychází z daného skóre CVSS (Common Vulnerability Scoring System) pro identifikovaný seznam obecných slabin (CWE). Další informace o skóre závažnosti najdete v tomto blogovém příspěvku na GitHubu. |
Zobrazení upozornění pro úložiště
Každý, kdo má oprávnění přispěvatele pro úložiště, může zobrazit souhrn všech výstrah pro úložiště na kartě Upřesnit zabezpečení v části Úložiště. Vyberte kartu Skenování kódu pro zobrazení všech upozornění tajného skenování.
Aby se zobrazily výsledky, musí se nejprve spustit úlohy kontroly kódu. Po dokončení první kontroly se všechna zjištěná ohrožení zabezpečení zobrazí na kartě Rozšířené zabezpečení.
Ve výchozím nastavení se na stránce upozornění zobrazují výsledky kontroly kódu pro výchozí větev úložiště.
Stav dané výstrahy odráží stav výchozí větve a nejnovějšího kanálu spuštění, i když výstraha existuje v jiných větvích a kanálech.
Zrušení upozornění skenování kódu
Pokud chcete výstrahy zavřít, potřebujete příslušná oprávnění. Ve výchozím nastavení můžou výstrahy Advanced Security zavřít jenom správci projektu.
Odstranění výstrahy:
- Přejděte na výstrahu, kterou chcete zavřít, a vyberte ji.
- Vyberte rozevírací seznam Zavřít upozornění.
- Pokud ještě nejsou vybrány, vyberte jako důvod uzavření buď Přijaté riziko nebo Falešně pozitivní.
- Do textového pole Komentář přidejte volitelný komentář.
- Výběrem možnosti Zavřít odešlete a zavřete výstrahu.
- Stav upozornění se změní z otevřít na Uzavřeno a zobrazí se důvod zamítnutí.
Tato akce odstraní výstrahu ve všech větvích. Ostatní větve, které obsahují stejnou chybu zabezpečení, budou také zamítnuty. Jakékoli upozornění, které jste dříve zavřeli, je možné znovu otevřít ručně.
Správa upozornění kontroly kódu na pull requesty
Pokud se v žádosti o přijetí změn vytvoří upozornění na nové změny kódu, zobrazí se upozornění jako poznámka v sekci komentářů na kartě Přehled žádosti o přijetí změn a jako výstraha na kartě Úložiště Advanced Security. Pro větev žádosti o přijetí změn existuje nová položka pro výběr větve.
Můžete zkontrolovat ovlivněné řádky kódu, zobrazit souhrn hledání a vyřešit poznámku v části Přehled.
Pokud chcete zavřít výstrahy pull requestů, musíte přejít do zobrazení detailů výstrahy, kde zavřete výstrahu a vyřešíte poznámku. V opačném případě jednoduše změna stavu komentáře (1) vyřeší poznámku, ale nezavře nebo neopraví podkladovou výstrahu.
Pokud chcete zobrazit celou sadu výsledků pro větev pull requestu, přejděte na Úložiště>Rozšířené zabezpečení a vyberte svoji větev pull requestu. Výběrem možnosti Zobrazit další podrobnosti (2) v poznámce se dostanete na zobrazení podrobností výstrahy na kartě Pokročilé zabezpečení.
Návod
Poznámky se vytvoří jen v případě, že ovlivněné řádky kódu jsou zcela jedinečné pro rozdíly v pull requestu ve srovnání s cílovou větví pull requestu.