Poznámka:
Od 31. prosince 2022 se rozšíření MICROSOFT Security Code Analysis (MSCA) vyřadí z provozu. MSCA se nahrazuje rozšířením Microsoft Security DevOps Azure DevOps. Postupujte podle pokynů v Konfigurace pro instalaci a konfiguraci rozšíření.
Obecné nejčastější dotazy
Můžu rozšíření nainstalovat na instanci Azure DevOps Serveru (dříve Visual Studio Team Foundation Server) místo na instanci Azure DevOps?
Ne. Rozšíření není k dispozici ke stažení a instalaci pro Azure DevOps Server (dříve Visual Studio Team Foundation Server).
Musím se svým buildem spustit analýzu kódu zabezpečení Microsoftu?
Podle potřeby. Závisí na typu analytického nástroje. Zdrojový kód může být jediná věc, která se vyžaduje, nebo se může vyžadovat výstup sestavení.
Například Credential Scanner (CredScan) analyzuje soubory ve struktuře složek úložiště kódu. Z důvodu této analýzy můžete spustit úlohy sestavení Protokolů analýzy zabezpečení credScan a publikovat v samostatném sestavení, abyste získali výsledky.
Pro další nástroje, jako je BinSkim, které analyzují artefakty po sestavení, se nejprve vyžaduje sestavení.
Můžu přerušit sestavení, když se najdou výsledky?
Ano. Přerušení sestavení můžete zavést, když jakýkoli nástroj hlásí problém nebo problém v souboru protokolu. Přidejte úlohu sestavení po analýze a zaškrtněte políčko u libovolného nástroje, pro který chcete sestavení přerušit.
V uživatelském rozhraní úlohy Post-Analysis se můžete rozhodnout, že sestavení přerušíte, když jakýkoli nástroj hlásí pouze chyby, nebo chyby i upozornění.
Jak se argumenty příkazového řádku v Azure DevOps liší od těchto argumentů v samostatných desktopových nástrojích?
Úlohy sestavení Azure DevOps jsou obvykle přímé obálky kolem argumentů příkazového řádku nástrojů zabezpečení. Do úlohy sestavení můžete předat jako argumenty cokoli, co normálně předáváte nástroji příkazového řádku.
Znatelné rozdíly:
- Nástroje se spouští ze zdrojové složky agenta $(Build.SourcesDirectory) nebo z %BUILD_SOURCESDIRECTORY%. Příkladem je C:\agent_work\1\s.
- Cesty v argumentech můžou být relativní vzhledem ke kořenovému adresáři dříve uvedeného zdrojového adresáře. Cesty můžou být také absolutní. Absolutní cesty získáte buď pomocí proměnných sestavení Azure DevOps, nebo spuštěním místního agenta se známými umístěními nasazení místních prostředků.
- Nástroje automaticky poskytují cestu nebo složku výstupního souboru. Pokud pro úlohu sestavení zadáte výstupní umístění, nahradí se toto umístění cestou k našemu dobře známému umístění protokolů v agentu sestavení.
- Některé další argumenty příkazového řádku se u některých nástrojů změní. Jedním z příkladů je přidání nebo odebrání možností, které zajišťují, že není spuštěné žádné grafické uživatelské rozhraní.
Můžu v buildu Azure DevOps spustit úlohu sestavení, jako je skener přihlašovacích údajů, napříč několika úložišti?
Ne. Spuštění zabezpečených vývojových nástrojů napříč několika úložišti v jednom kanálu se nepodporuje.
Zadaný výstupní soubor se nevytvořil nebo nemůžu najít zadaný výstupní soubor
Úkoly sestavení filtrují určitý uživatelský vstup. Pro tuto otázku konkrétně aktualizují umístění vygenerovaného výstupního souboru tak, aby byl běžným umístěním agenta sestavení. Další informace o tomto umístění najdete v následujících otázkách.
Kde jsou uložené výstupní soubory vygenerované nástroji?
Úlohy sestavení automaticky přidávají výstupní cesty k tomuto dobře známému umístění v agentu sestavení: $(Agent.BuildDirectory)_sdt\logs. Vzhledem k tomu, že na tomto místě standardizujeme, mají všechny týmy, které vytvářejí nebo využívají protokoly analýzy kódu, přístup k výstupu.
Můžu zařadím sestavení do fronty, aby se tyto úlohy spouštěly v hostovaném agentu sestavení?
Ano. Všechny úlohy a nástroje v rozšíření je možné spouštět v hostovaném agentu sestavení.
Poznámka:
Úloha sestavení antimalwarového skeneru vyžaduje agenta sestavení s povoleným programem Windows Defender. Hostované visual studio 2017 a novější poskytují takového agenta. Úloha sestavení se nespustí u agenta hostovaného v sadě Visual Studio 2015.
I když u těchto agentů nejde podpisy aktualizovat, podpisy by měly být vždy kratší než tři hodiny.
Můžu tyto úlohy sestavení spustit jako součást kanálu verze, a ne jako kanál buildu?
Ve většině případů ano.
Azure DevOps ale nepodporuje spouštění úloh v kanálech verze, když tyto úlohy publikují artefakty. Tato nedostatečná podpora brání úspěšnému spuštění úlohy Publikovat protokoly analýzy zabezpečení v kanálu verze. Místo toho úloha selže s popisnou chybovou zprávou.
Odkud stahují úlohy sestavení nástroje?
Úlohy sestavení můžou stáhnout balíčky NuGet nástrojů z kanálu správy balíčků Azure DevOps. Úlohy sestavení můžou také používat Node Package Manager, který musí být předinstalován v agentu sestavení. Příkladem takové instalace je příkaz npm install tslint.
Jaký vliv má instalace rozšíření v organizaci Azure DevOps?
Po instalaci budou úlohy sestavení zabezpečení poskytované rozšířením dostupné všem uživatelům ve vaší organizaci. Při vytváření nebo úpravě kanálu Azure jsou tyto úlohy k dispozici v seznamu kolekcí úloh sestavení. Jinak instalace rozšíření ve vaší organizaci Azure DevOps nemá žádný vliv. Instalace neupravuje žádné nastavení účtu, nastavení projektu ani kanály.
Upravuje instalace rozšíření stávající službu Azure Pipelines?
Ne. Instalace rozšíření zpřístupňuje úlohy sestavení zabezpečení pro přidání do kanálů. Stále je potřeba přidávat nebo aktualizovat definice sestavení, aby nástroje mohly pracovat s procesem sestavení.
Nejčastější dotazy ke konkrétním úkolům
Otázky týkající se úloh sestavení jsou uvedeny v této části.
Skener přihlašovacích údajů
Jaké jsou běžné scénáře potlačení a příklady?
Tady jsou podrobnosti o dvou nejběžnějších scénářích potlačení.
Potlačení všech výskytů daného tajného kódu v zadané cestě
Klíč hash tajného klíče z výstupního souboru CredScan je povinný, jak je znázorněno v následující ukázce.
{
"tool": "Credential Scanner",
"suppressions": [
{
"hash": "CLgYxl2FcQE8XZgha9/UbKLTkJkUh3Vakkxh2CAdhtY=",
"_justification": "Secret used by MSDN sample, it is fake."
}
]
}
Varování
Klíč hash je generován částí odpovídající hodnoty nebo obsahu souboru. Jakákoli revize zdrojového kódu může změnit klíč hash a zakázat pravidlo potlačení.
Potlačení všech tajných kódů v zadaném souboru nebo potlačení samotného souboru tajných kódů
Výrazem souboru může být název souboru. Může to být také základní název části úplné cesty k souboru nebo názvu souboru. Zástupné dokumentace nejsou podporovány.
Následující příklady ukazují, jak potlačit soubor <InputPath>\src\JS\lib\angular.js
Příklady platných pravidel potlačení:
- <inputPath>\src\JS\lib\angular.js – potlačí soubor v zadané cestě.
- \src\JS\lib\angular.js
- \JS\lib\angular.js
- \lib\angular.js
- angular.js – potlačí všechny soubory se stejným názvem.
{
"tool": "Credential Scanner",
"suppressions": [
{
"file": "\\files\\AdditonalSearcher.xml",
"_justification": "Additional CredScan searcher specific to my team"
},
{
"file": "\\files\\unittest.pfx",
"_justification": "Legitimate UT certificate file with private key"
}
]
}
Varování
Všechny budoucí tajné kódy přidané do souboru se také potlačí automaticky.
Jaké jsou doporučené pokyny pro správu tajných kódů?
Následující zdroje informací vám pomůžou bezpečně spravovat tajné kódy a přistupovat k citlivým informacím z vašich aplikací:
- Azure Key Vault
- azure Active Directory (Azure AD)
- Identita spravované služby Azure AD (MSI)
- Spravované identity pro prostředky Azure
- spravované identity ve službě Azure App Service a Azure Functions
- knihovny AppAuthentication
Další informace naleznete v blogovém příspěvku Správa tajných kódů bezpečně v cloudu.
Můžu napsat vlastní vyhledávací služby?
Skener přihlašovacích údajů spoléhá na sadu prohledávacích prvků obsahu, které jsou běžně definované v souboru buildsearchers.xml. Soubor obsahuje pole serializovaných objektů XML, které představují ContentSearcher objektu. Program se distribuuje se sadou dobře otestovaných vyhledávání. Můžete ale implementovat i vlastní vyhledávací služby.
Vyhledávací objekt obsahu je definován takto:
Název: Popisný název vyhledávacího modulu, který se má použít ve výstupních souborech skeneru přihlašovacích údajů. Pro názvy vyhledávačů doporučujeme použít konvenci pojmenování velbloudím písmenem.
RuleId: Stabilní neprůhlené ID vyhledávacího modulu:
- Výchozí vyhledávací program skeneru přihlašovacích údajů má přiřazenou hodnotu RuleId, jako je CSCAN0010, CSCAN0020 nebo CSCAN0030. Poslední číslice je vyhrazena pro potenciálně slučování nebo dělení skupin vyhledávacího modulu pomocí regulárních výrazů (regulárních výrazů).
- Hodnota RuleId vlastního vyhledávacího objektu by měla mít vlastní obor názvů. Mezi příklady patří CSCAN-<Namespace>0010, CSCAN-<Namespace>0020 a CSCAN-<Namespace>0030.
- Plně kvalifikovaný název vyhledávacího prvku je kombinace hodnoty RuleId a názvu vyhledávacího pracovníka. Mezi příklady patří CSCAN0010. KeyStoreFiles a CSCAN0020. Base64EncodedCertificate.
ResourceMatchPattern: Regex přípon souborů pro kontrolu proti searcheru.
ContentSearchPatterns: Pole řetězců obsahujících příkazy regex, které se mají shodovat. Pokud nejsou definovány žádné vzory hledání, vrátí se všechny soubory odpovídající hodnotě ResourceMatchPattern.
ContentSearchFilters: Pole řetězců obsahujících příkazy regulárních výrazů pro filtrování falešně pozitivních výsledků specifických pro vyhledávání.
MatchDetails: Popisná zpráva, pokyny ke zmírnění rizik nebo obojí, které se mají přidat pro každou shodu vyhledávání.
doporučení: Obsah pole návrhů pro shodu pomocí formátu sestavy PREfast.
závažnosti: Celé číslo, které odráží úroveň závažnosti problému. Nejvyšší úroveň závažnosti má hodnotu 1.
Analyzátory Roslyn
Jaké jsou běžné chyby při použití úlohy Analyzátory Roslyn?
Projekt byl obnoven pomocí nesprávné verze Microsoft.NETCore.App.
Úplná chybová zpráva:
"Chyba: Projekt byl obnoven pomocí Microsoft.NETCore.App verze x.x.x, ale s aktuálním nastavením by se místo toho použila verze y.y.y. Pokud chcete tento problém vyřešit, ujistěte se, že se pro obnovení a následné operace, jako je sestavení nebo publikování, používají stejná nastavení. K tomuto problému obvykle může dojít, pokud je vlastnost RuntimeIdentifier nastavena během sestavení nebo publikování, ale ne během obnovení."
Vzhledem k tomu, že úlohy Analyzátorů Roslyn běží jako součást kompilace, musí být zdrojový strom na počítači sestavení v buildovatelném stavu.
Krok mezi hlavním sestavením a kroky analyzátorů Roslyn může obsahovat zdrojový strom do stavu, který brání sestavení. Tento dodatečný krok je pravděpodobně dotnet.exe publikovat. Zkuste duplikovat krok, který provede obnovení NuGet těsně před krokem Analyzátory Roslyn. Tento duplicitní krok může zdrojový strom vrátit zpět do sestavitelného stavu.
csc.exe nemůže vytvořit instanci analyzátoru
Úplná chybová zpráva:
"'csc.exe' exited with error code 1 –- Instance analyzátoru AAAA nelze vytvořit z C:\BBBB.dll: Nelze načíst soubor nebo sestavení Microsoft.CodeAnalysis, Version=X.X.X.X, Culture=neutral, PublicKeyToken=31bf3856ad364e35 nebo jeden z jeho závislostí. Systém nemůže najít zadaný soubor."
Ujistěte se, že kompilátor podporuje analyzátory Roslyn. Spuštěním příkazu csc.exe /version by se měla hlásit hodnota verze 2.6 nebo novější.
Někdy může soubor .csproj přepsat instalaci sady Visual Studio sestavení počítače odkazováním na balíček z Microsoft.Net.Compilers. Pokud nemáte v úmyslu použít konkrétní verzi kompilátoru, odeberte odkazy na Microsoft.Net.Compilers. Jinak se ujistěte, že verze odkazovaného balíčku je také 2.6 nebo novější.
Pokuste se získat cestu protokolu chyb, která je zadaná v možnosti csc.exe /errorlog. Možnost a cesta se zobrazí v protokolu pro úlohu sestavení Roslyn Analyzers. Můžou vypadat nějak takto: /errorlog:F:\ts-services-123_work\456\s\Some\Project\Code\Code.csproj.sarif
Verze kompilátoru jazyka C# není dostatečná.
Pokud chcete získat nejnovější verze kompilátoru jazyka C#, přejděte na Microsoft.Net.Compilers. Pokud chcete získat nainstalovanou verzi, spusťte na příkazovém řádku csc.exe /version. Ujistěte se, že odkazujete na balíček NuGet Microsoft.Net.Compilers verze 2.6 nebo novější.
Protokoly MSBuild a VSBuild se nenašly.
Úloha sestavení Analyzátorů Roslyn musí dotazovat Azure DevOps pro protokol MSBuild z úlohy sestavení MSBuild. Pokud se úloha analyzátoru spustí okamžitě po úloze MSBuild, protokol ještě nebude k dispozici. Umístěte další úkoly mezi úlohou MSBuild a úlohou Roslyn Analyzers. Mezi příklady dalších úloh patří BinSkim a Antimalwarový skener.
Další kroky
Pokud potřebujete další pomoc, je od 9:00 do 18:00 tichomořský standardní čas k dispozici podpora analýzy bezpečnostních kódů od 9:00 do 20:00.
Podpora: Pošlete e-mail našemu týmu na podporu analýzy kódu zabezpečení Microsoftu