Megosztás a következőn keresztül:


Gyakori kérdések | Azure

Megjegyzés

2022. december 31-től megszűnik a Microsoft Security Code Analysis (MSCA) bővítmény. Az MSCA-t a Microsoft Security DevOps Azure DevOps bővítmény váltja fel. A bővítmény telepítéséhez és konfigurálásához kövesse a Konfigurálás című témakör utasításait.

Gyakori kérdések – általános

Telepíthetem a bővítményt a Azure DevOps Server (korábbi nevén Visual Studio Team Foundation Server) példányomra egy Azure DevOps-példány helyett?

Nem. A bővítmény nem tölthető le és nem telepíthető Azure DevOps Server (korábbi nevén Visual Studio Team Foundation Server).

Futtatnom kell a Microsoft Biztonsági kódelemzést a buildemmel?

Esetleg. Ez az elemzőeszköz típusától függ. Lehet, hogy csak a forráskódra van szükség, vagy a build kimenetére is szükség lehet.

A Credential Scanner (CredScan) például a kódtár mappastruktúrájában lévő fájlokat elemzi. Ennek az elemzésnek köszönhetően futtathatja a CredScan és a Publish Security Analysis Logs összeállítási feladatait egy különálló buildben az eredmények lekéréséhez.

Az olyan egyéb eszközök esetében, mint a BinSkim, amely a build utáni összetevőket elemzi, először a buildre van szükség.

Megszakíthatom a buildet az eredmények megtalálásakor?

Igen. Buildtörést akkor vezethet be, ha bármely eszköz hibát vagy problémát jelez a naplófájlban. Adja hozzá az Elemzés utáni buildelési feladatot, és jelölje be annak az eszköznek a jelölőnégyzetét, amelyhez meg szeretné szakítani a buildet.

Az Elemzés utáni feladat felhasználói felületén dönthet úgy, hogy megszakítja a buildelést, ha bármely eszköz csak hibákat, vagy hibákat és figyelmeztetéseket jelent.

Miben különböznek az Azure DevOps parancssori argumentumai a különálló asztali eszközökben található argumentumoktól?

Az Azure DevOps buildfeladatai általában közvetlen burkolók a biztonsági eszközök parancssori argumentumai köré. A buildelési feladatnak argumentumként bármit átadhat, amit általában átad egy parancssori eszköznek.

Észrevehető különbségek:

  • Az eszközök a $(Build.SourcesDirectory) ügynök forrásmappájából vagy %BUILD_SOURCESDIRECTORY% mappából futnak. Ilyen például a C:\agent_work\1\s.
  • Az argumentumok elérési útjai a korábban felsorolt forráskönyvtár gyökeréhez viszonyíthatók. Az elérési utak abszolútak is lehetnek. Abszolút elérési utakat kaphat az Azure DevOps buildváltozóinak használatával, vagy egy helyi erőforrások ismert üzembehelyezési helyeivel rendelkező helyszíni ügynök futtatásával.
  • Az eszközök automatikusan biztosítják a kimeneti fájl elérési útját vagy mappáját. Ha kimeneti helyet ad meg egy buildelési feladathoz, a rendszer ezt a helyet a buildügynökön található naplók jól ismert helyének elérési útjára cseréli.
  • Egyes eszközökhöz más parancssori argumentumok is módosulnak. Ilyen például az olyan beállítások hozzáadása vagy eltávolítása, amelyek biztosítják, hogy a grafikus felhasználói felület ne indulhasson el.

Futtathatok olyan összeállítási feladatot, mint a Credential Scanner egy Azure DevOps-build több adattárában?

Nem. A biztonságos fejlesztői eszközök egyetlen folyamat több adattárában való futtatása nem támogatott.

A megadott kimeneti fájl nem jön létre, vagy nem találom a megadott kimeneti fájlt

A buildelési feladatok szűrnek néhány felhasználói bemenetet. Konkrétan ebben a kérdésben frissítik a létrehozott kimeneti fájl helyét, hogy az a buildügynök gyakori helye legyen. A hellyel kapcsolatos további információkért tekintse meg az alábbi kérdéseket.

Hol vannak mentve az eszközök által létrehozott kimeneti fájlok?

A buildelési feladatok automatikusan hozzáadnak kimeneti elérési utakat ehhez a jól ismert helyhez a buildügynökön: $(Agent.BuildDirectory)_sdt\logs. Mivel ezen a helyen szabványosítunk, a kódelemzési naplókat előállító vagy használó összes csapat hozzáfér a kimenethez.

Várólistára helyezhetek egy buildet, hogy futtathassa ezeket a feladatokat egy üzemeltetett fordítóügynökön?

Igen. A bővítményben található összes feladat és eszköz végrehajtható egy üzemeltetett buildügynökön.

Megjegyzés

A Kártevőirtó szkenner buildelési feladatához egy olyan fordítóügynökre van szükség, amely Windows Defender engedélyezve van. Az üzemeltetett Visual Studio 2017-et és újabb verziót egy ilyen ügynök biztosítja. A buildelési feladat nem fut a Visual Studio 2015 által üzemeltetett ügynökön.

Bár az aláírások nem frissíthetők ezeken az ügynökökön, az aláírásoknak mindig három óránál rövidebbnek kell lenniük.

Futtathatom ezeket a buildelési feladatokat egy kiadási folyamat részeként, nem pedig buildfolyamatként?

A legtöbb esetben igen.

Az Azure DevOps azonban nem támogatja a tevékenységek kiadási folyamatokon belüli futtatását, amikor ezek a tevékenységek összetevőket tesznek közzé. A támogatás hiánya megakadályozza, hogy a Biztonsági elemzési naplók közzététele feladat sikeresen fusson egy kiadási folyamatban. A feladat ehelyett egy leíró hibaüzenettel meghiúsul.

Honnan töltik le a buildelési feladatok az eszközöket?

A buildelési feladatok letölthetik az eszközök NuGet-csomagjait az Azure DevOps Package Management-hírcsatornából. A buildelési feladatok a Node Package Managert is használhatják, amelyet előre kell előtelepíteni a buildügynökön. Ilyen telepítés például az npm install tslint parancs.

Milyen hatással van a bővítmény telepítése az Azure DevOps-szervezetemre?

Telepítésükkor a bővítmény által biztosított biztonsági összeállítási feladatok a szervezet összes felhasználója számára elérhetővé válnak. Az Azure Pipeline létrehozásakor vagy szerkesztésekor ezek a feladatok a build-task gyűjtemény listájából érhetők el. Ellenkező esetben a bővítmény telepítése az Azure DevOps-szervezetben nincs hatással. A telepítés nem módosítja a fiókbeállításokat, a projektbeállításokat és a folyamatokat.

Módosítja a bővítmény telepítése a meglévő Azure Pipelinest?

Nem. A bővítmény telepítése elérhetővé teszi a biztonsági buildelési feladatokat a folyamatok mellett. Továbbra is hozzá kell adnia vagy frissítenie kell a builddefiníciókat, hogy az eszközök együttműködhessenek a buildelési folyamattal.

Feladatspecifikus gyakori kérdések

A buildelési feladatokkal kapcsolatos kérdéseket ebben a szakaszban találja.

Hitelesítőadat-ellenőrző

Mik a gyakori mellőzési forgatókönyvek és példák?

Az alábbiakban a két leggyakoribb mellőzési forgatókönyvet ismertetjük.

Adott titkos kód összes előfordulásának mellőzése a megadott elérési úton

A CredScan kimeneti fájl titkos kódjának kivonatkulcsára van szükség az alábbi példában látható módon.

{
    "tool": "Credential Scanner",
    "suppressions": [
    {
        "hash": "CLgYxl2FcQE8XZgha9/UbKLTkJkUh3Vakkxh2CAdhtY=",
        "_justification": "Secret used by MSDN sample, it is fake."
    }
  ]
}

Figyelmeztetés

A kivonatkulcsot az egyező érték vagy fájltartalom egy része hozza létre. A forráskód bármely változata módosíthatja a kivonatkulcsot, és letilthatja a letiltási szabályt.

Egy adott fájlban lévő összes titkos kód mellőzése vagy a titkos fájlok mellőzése

A fájlkifejezés lehet fájlnév. Ez lehet egy teljes fájl elérési útjának alapneve vagy fájlnév is. Helyettesítő karakterek nem használhatók.

Az alábbi példák bemutatják, hogyan tilthatja le az <InputPath>\src\JS\lib\angular.js

Példák érvényes mellőzési szabályokra:

  • <InputPath>\src\JS\lib\angular.js – letiltja a fájlt a megadott elérési úton
  • \src\JS\lib\angular.js
  • \JS\lib\angular.js
  • \lib\angular.js
  • angular.js – letiltja az azonos nevű fájlokat
{
    "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"
    }
  ]
}

Figyelmeztetés

A fájlhoz hozzáadott összes jövőbeli titkos kód is automatikusan el lesz rejtve.

Mik a titkos kódok kezelésére vonatkozó ajánlott irányelvek?

Írhatok saját egyéni keresőket?

A Credential Scanner az buildsearchers.xml fájlban gyakran definiált tartalomkeresőkre támaszkodik. A fájl xml szerializált objektumokból álló tömböt tartalmaz, amely egy ContentSearcher objektumot jelöl. A program elosztott egy sor jól tesztelt keresők. De saját egyéni keresőket is implementálhat.

A tartalomkereső a következőképpen van definiálva:

  • Név: A Credential Scanner kimeneti fájljaiban használandó leíró keresőnév. Javasoljuk, hogy a camel-case elnevezési konvenciót használja a keresőnevekhez.

  • RuleId: A kereső stabil átlátszatlan azonosítója:

    • A Credential Scanner alapértelmezett keresője egy RuleId értéket kap, például CSCAN0010, CSCAN0020 vagy CSCAN0030. Az utolsó számjegy a keresőcsoportok reguláris kifejezésekkel (regex) való egyesítésére vagy osztására van fenntartva.
    • A testre szabott kereső RuleId értékének saját névtérrel kell rendelkeznie. Ilyen például a CSCAN-Namespace>< 0010, a CSCAN-Namespace>< 0020 és a CSCAN-Namespace<> 0030.
    • A teljes keresőnév egy RuleId érték és egy keresőnév kombinációja. Ilyen például a CSCAN0010. KeyStoreFiles és CSCAN0020. Base64EncodedCertificate.
  • ResourceMatchPattern: A keresőben ellenőrizendő fájlkiterjesztések regexe.

  • ContentSearchPatterns: Egyezésre szolgáló regex-utasításokat tartalmazó karakterláncok tömbje. Ha nincsenek definiálva keresési minták, a rendszer a ResourceMatchPattern értéknek megfelelő összes fájlt visszaadja.

  • ContentSearchFilters: Regex-utasításokat tartalmazó karakterláncok tömbje a keresőspecifikus hamis pozitív értékek szűréséhez.

  • MatchDetails: Leíró üzenet, kockázatcsökkentési utasítások vagy mindkettő hozzáadása a kereső minden egyezéséhez.

  • Javaslat: A prEfast jelentésformátumot használó találatok mezőtartalma.

  • Súlyosság: A probléma súlyossági szintjét tükröző egész szám. A legmagasabb súlyossági szint értéke 1.

    A Hitelesítőadat-ellenőrző beállítását megjelenítő XML

Roslyn-elemzők

Milyen gyakori hibák vannak a Roslyn Analyzers-feladat használatakor?

A projekt helytelen Microsoft.NETCore.App verzióval lett visszaállítva

A teljes hibaüzenet:

"Hiba: A projekt Microsoft.NETCore.App x.x.x verzióval lett visszaállítva, de a jelenlegi beállításokkal az y.y.y verziót használná helyette. A probléma megoldásához győződjön meg arról, hogy ugyanazokat a beállításokat használja a visszaállításhoz és a későbbi műveletekhez, például a buildeléshez vagy a közzétételhez. Ez a probléma általában akkor fordulhat elő, ha a RuntimeIdentifier tulajdonság be van állítva a buildelés vagy közzététel során, de a visszaállítás során nem."

Mivel a Roslyn Analyzers-feladatok a fordítás részeként futnak, a buildelési gépen lévő forrásfának buildelhető állapotban kell lennie.

Előfordulhat, hogy a fő build és a Roslyn Analyzers lépések közötti lépés a forrásfát olyan állapotba helyezte, amely megakadályozza az építést. Ez a további lépés valószínűleg dotnet.exe közzététel. Próbálja meg duplikálni a NuGet-visszaállítást közvetlenül a Roslyn Analyzers lépés előtt. Ez a duplikált lépés buildelhető állapotba helyezheti a forrásfát.

csc.exe nem hozható létre elemzőpéldány

A teljes hibaüzenet:

Az "csc.exe" 1-es hibakóddal lépett ki – Az AAAA elemző példánya nem hozható létre a C:\BBBB.dll: Nem sikerült betölteni a "Microsoft.CodeAnalysis, Version=X.X.X.X, Culture=neutral, PublicKeyToken=31bf3856ad364e35" fájlt vagy szerelvényt. A rendszer nem találja a megadott fájlt."

Győződjön meg arról, hogy a fordító támogatja a Roslyn-elemzőket. A csc.exe /version parancs futtatásának 2.6-os vagy újabb verzióértéket kell jelentenie.

Előfordulhat, hogy egy .csproj-fájl felülírja a buildgép Visual Studio-telepítését a Microsoft.Net.Compilers egyik csomagjára hivatkozva. Ha nem a fordító egy adott verzióját szeretné használni, távolítsa el a Microsoft.Net.Compilersre mutató hivatkozásokat. Ellenkező esetben győződjön meg arról, hogy a hivatkozott csomag verziója is 2.6-os vagy újabb.

Próbálja meg lekérni a hibanapló elérési útját, amely a csc.exe /errorlog beállításban van megadva. A beállítás és az elérési út megjelenik a Roslyn Analyzers buildelési feladatának naplójában. A következőhöz hasonló lehet : /errorlog:F:\ts-services-123_work\456\s\Some\Project\Code\Code.csproj.sarif

A C#-fordító verziója nem elég friss

A C#-fordító legújabb verzióinak beszerzéséhez nyissa meg a Microsoft.Net.Compilers webhelyet. A telepített verzió beszerzéséhez futtassa csc.exe /version parancsot egy parancssorban. Győződjön meg arról, hogy egy 2.6-os vagy újabb verziójú Microsoft.Net.Compilers NuGet-csomagra hivatkozik.

Az MSBuild és a VSBuild naplók nem találhatók

A Roslyn Analyzers buildelési feladatának le kell kérdeznie az Azure DevOpst az MSBuild-naplóhoz az MSBuild buildelési feladatból. Ha az elemző tevékenység közvetlenül az MSBuild feladat után fut, a napló még nem lesz elérhető. Helyezzen el más feladatokat az MSBuild és a Roslyn Analyzers feladat között. További feladatok például a BinSkim és a Kártevőirtó szkenner.

Következő lépések

Ha további segítségre van szüksége, a Microsoft biztonsági kódelemzési támogatása hétfőtől péntekig 9:00 és 17:00 között érhető el a Csendes-óceáni téli idő szerint.