Nejčastější dotazy | Azure

Poznámka

Od 31. prosince 2022 bude rozšíření Microsoft Security Code Analysis (MSCA) vyřazeno. Stávající zákazníci MSCA si zachovají přístup k MSCA do 31. prosince 2022. Alternativní možnosti v Azure DevOps najdete v nástrojích pro analýzu zdrojového kódu OWASP . Zákazníci, kteří plánují migraci na GitHub, si můžete prohlédnout GitHub Advanced Security.

Máte otázky? Další informace najdete v následujících nejčastějších dotazech.

Obecné nejčastější dotazy

Můžu rozšíření nainstalovat na instanci Azure DevOps Server (dříve Visual Studio Team Foundation Server) místo instance Azure DevOps?

No. Rozšíření není dostupné ke stažení a instalaci pro Azure DevOps Server (dříve Visual Studio Team Foundation Server).

Musím se svým sestavením 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í credScan a publikovat protokoly analýzy zabezpečení v samostatném sestavení, abyste získali výsledky.

Pro další nástroje, jako je BinSkim, které analyzují artefakty po sestavení, je nejprve nutné 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 nahlá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 po analýze můžete sestavení přerušit, když jakýkoli nástroj hlásí chyby pouze chyby nebo chyby a 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í. Jako argumenty můžete úkolu sestavení předat cokoli, co normálně předáváte nástroji příkazového řádku.

Znatelné rozdíly:

  • Nástroje se spouštějí 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 zdrojového adresáře, který jste dříve uvedli. 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í výstupní cestu k souboru nebo složku. Pokud pro úlohu sestavení zadáte výstupní umístění, nahradí se toto umístění cestou k našemu známému umístění protokolů v agentu sestavení.
  • U některých nástrojů se změní některé další argumenty příkazového řádku. Jedním zpříkladůch

Můžu spustit úlohu sestavení, jako je kontrola přihlašovacích údajů v několika úložištích v buildu Azure DevOps?

No. 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 výstupní soubor, který jsem zadal(a).

Úlohy sestavení filtrují vstupy uživatelů. 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 výstupní soubory generované nástroji uloženými?

Úlohy sestavení automaticky přidávají výstupní cesty k tomuto známému umístění agenta 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 ke spuštění těchto úloh na hostovaném agentu sestavení?

Ano. Všechny úlohy a nástroje v rozšíření je možné spustit na hostovaném agentu sestavení.

Poznámka

Úloha sestavení antimalwarového skeneru vyžaduje agenta sestavení s povoleným Windows Defender. Hostované sady Visual Studio 2017 a novější poskytují takového agenta. Úloha sestavení se nespustí v agentovi hostovaného sadou 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 na rozdíl od kanálu 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 chybějící podpora brání úspěšnému spuštění úlohy Publikovat protokoly analýzy zabezpečení v kanálu verze. Úloha místo toho 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 Správce balíčků node, 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í úkolů sestavení. Jinak instalace rozšíření ve vaší organizaci Azure DevOps nemá žádný vliv. Instalace nemění nastavení účtu, nastavení projektu ani kanály.

Upravuje instalace rozšíření stávající službu Azure Pipelines?

No. 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 týkající se úloh

Dotazy týkající se úloh sestavení jsou uvedené 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 kódu 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."
    }
  ]
}

Upozornění

Klíč hash se vygeneruje čá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é znaky se nepodporují.

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čí jakýkoli soubor 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"
    }
  ]
}

Upozorně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í:

Další informace najdete v blogovém příspěvku Správa tajných kódů bezpečně v cloudu.

Můžu napsat vlastní vyhledávací programy?

Skener přihlašovacích údajů spoléhá na sadu prohledávacích souborů obsahu, které jsou běžně definované v souboru buildsearchers.xml. Soubor obsahuje pole serializovaných objektů XML, které představují objekt ContentSearcher . Program se distribuuje se sadou dobře otestovaných vyhledávacích programů. Můžete ale implementovat i vlastní vyhledávací stroje.

Prohledávací prvek 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ů. Doporučujeme použít konvenci pojmenování camel-case pro názvy vyhledávacího programu.

  • RuleId: Stabilní neprůhledné 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ích rutin prostřednictvím regulárních výrazů (regex).
    • Hodnota RuleId pro přizpůsobený vyhledávací program 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 pracovníka je kombinace hodnoty RuleId a názvu vyhledávacího pracovníka. Mezi příklady patří CSCAN0010. KeyStoreFiles a CSCAN0020. Base64EncodedCertificate.
  • ResourceMatchPattern: Regex přípony souborů pro kontrolu proti vyhledávacímu nástroji.

  • ContentSearchPatterns: Pole řetězců obsahující 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 regex pro filtrování falešně pozitivních výsledků specifických pro vyhledávacího objektu.

  • MatchDetails: Popisná zpráva, pokyny pro zmírnění rizik nebo obojí, které se mají přidat pro každou shodu vyhledávacího poradce.

  • Doporučení: Obsah pole návrhů pro shodu pomocí formátu sestavy PREfast

  • Závažnost: Celé číslo, které odráží úroveň závažnosti problému. Nejvyšší úroveň závažnosti má hodnotu 1.

    XML zobrazující nastavení skeneru přihlašovacích údajů

Analyzátory Roslyn

Jaké jsou běžné chyby při použití úlohy Roslyn Analyzers?

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, zdrojový strom na počítači sestavení musí být ve stavu sestavení.

Krok mezi hlavním buildem a kroky Roslyn Analyzers může obsahovat zdrojový strom do stavu, který brání sestavení. Tento další krok je pravděpodobně dotnet.exe publikování. 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 nejde vytvořit instanci analyzátoru

Úplná chybová zpráva:

"'csc.exe' ukončen s kódem chyby 1 – Instanci 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 jednu z jejích závislostí. Systém nemůže najít zadaný soubor.

Ujistěte se, že kompilátor podporuje analyzátory Roslyn. Spuštění příkazu csc.exe /version by mělo hlásit hodnotu verze 2.6 nebo novější.

Někdy může soubor .csproj přepsat instalaci sady Visual Studio počítače sestavení odkazováním na balíček z Microsoft.Net.Compilers. Pokud nechcete používat konkrétní verzi kompilátoru, odeberte odkazy na Microsoft.Net.Compilers. V opačném případě se ujistěte, že verze odkazovaného balíčku je také 2.6 nebo novější.

Zkuste získat cestu protokolu chyb, která je zadaná v možnosti csc.exe /errorlog . Možnost a cesta se zobrazí v protokolu úlohy 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í hned po úloze MSBuild, protokol ještě nebude dostupný. Umístěte další úkoly mezi úkol MSBuild a úlohu 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 17:00 tichomořský standardní čas k dispozici podpora analýzy bezpečnostních kódů od 19:00 do pátku.