Kontrola závislostí
Kontrola závislostí v GitHub Advanced Security pro Azure DevOps detekuje opensourcové komponenty používané ve zdrojovém kódu a zjistí, jestli existují nějaká související ohrožení zabezpečení. Všechna zjištěná ohrožení zabezpečení z opensourcových komponent se označí příznakem jako výstraha.
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.
O kontrole závislostí
Kontrola závislostí vygeneruje výstrahu pro libovolnou opensourcovou komponentu, přímou nebo přenosnou, která je ohrožená tím, že váš kód závisí. Přímá ohrožení zabezpečení jsou knihovny, které váš kód přímo používá. Přechodné závislosti jsou knihovny nebo jiný software, který přímé závislosti používá.
Informace o detekci vyhledávání závislostí
Nový snímek komponent se uloží při každé změně grafu závislostí úložiště a po spuštění kanálu, který obsahuje úlohu kontroly závislostí.
Pro každou zranitelnou komponentu zjištěnou při použití se tato komponenta a ohrožení zabezpečení zobrazí v protokolu sestavení a zobrazí se jako výstraha na kartě Upřesnit zabezpečení. Výstrahy kontroly závislostí vytvářejí pouze poradce, které gitHub zkontroloval a přidaly se do databáze poradce GitHubu. Protokol sestavení obsahuje odkaz na jednotlivá upozornění pro další šetření. Další informace o podrobnostech výstrah najdete v tématu Oprava výstrah kontroly závislostí.
Protokol sestavení obsahuje také základní informace o každé zjištěné chybě zabezpečení. Mezi tyto podrobnosti patří závažnost, ovlivněná komponenta, název chyby zabezpečení a související CVE.
Seznam podporovaných ekosystémů komponent a verzí najdete v tématu Podporované ekosystémy balíčků.
Informace o výstrahách kontroly závislostí
Karta Rozšířené zabezpečení v Azure DevOps je centrum pro zobrazení výstrah zabezpečení, které ve výchozím nastavení zobrazuje výstrahy kontroly závislostí. Můžete filtrovat podle větve, kanálu, balíčku a závažnosti. Můžete si vybrat upozornění, kde najdete další podrobnosti, včetně pokynů k nápravě. V tuto chvíli centrum upozornění nezobrazuje výstrahy pro kontrolu dokončených ve větvích žádosti o přijetí změn.
Když ve vašem úložišti zjistíte ohrožený balíček, oprava výstrah kontroly závislostí obvykle zahrnuje upgrade na vyšší verzi balíčku nebo odebrání balíčku, který se odsudí. Toto doporučení platí pro přímé i přechodné (nebo nepřímé) závislosti. Výchozí zobrazení na kartě Rozšířené zabezpečení je aktivní upozornění pro výchozí větev úložiště.
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.
Stav výstrahy se automaticky aktualizuje, když Closed
se ohrožená komponenta už nezjistí v nejnovějším buildu pro všechny kanály, ve kterých je nainstalována úloha kontroly závislostí. Pokud chcete zobrazit vyřešená upozornění, použijte State
filtr na hlavním panelu nástrojů a vyberte Closed
.
Pokud pro úložiště vypnete Rozšířené zabezpečení, ztratíte přístup k výsledkům na kartě Rozšířené zabezpečení a úloze sestavení. Úloha sestavení se nezdaří, ale žádné výsledky sestavení se s úlohou spustí, zatímco rozšířené zabezpečení je zakázané, a nezachovají se.
Podrobnosti výstrahy
Můžete také přejít k podrobnostem o upozornění kliknutím na konkrétní výstrahu a pokyny k nápravě.
Sekce | Vysvětlení |
---|---|
Doporučení | Text doporučení pochází přímo od našeho poskytovatele dat ohrožení zabezpečení, databáze Poradce GitHubu. Pokyny obvykle navrhují upgrade identifikované komponenty na neschválitelnou verzi. |
Umístění | Část Umístění podrobně popisuje cesty, ve kterých úloha kontroly závislostí zjistila, že se používá zranitelná komponenta. Pokud lze soubor přeložit z podkladové kontroly sestavení na potvrzený soubor ve zdroji, zobrazí se karta Umístění jako odkaz umožňující kliknutí. Pokud byl soubor vytvořen jako součást sestavení (například artefakt sestavení), odkaz se nedá kliknout. Projděte si protokoly sestavení, abyste lépe pochopili, jak byla komponenta přenesena do sestavení. |
Popis | Popis je poskytován popisem poradce GitHubu. |
Detekcí
Kanály uvedené na kartě Detekce jsou kanály , ve kterých byla nalezena ohrožená komponenta. Každý řádek podrobně popisuje nejnovější build ovlivněného kanálu a datum prvního zavedení balíčku. Pokud byl ohrožený balíček opravený v některých kanálech, ale ne všechny, zobrazí se částečně pevné řádky.
Po vyřešení výstrahy se výstraha automaticky přesune do Closed
stavu a na kartě Detekce se na kartě Detekce zobrazí zelený symbol zaškrtnutí, což znamená, že kód obsahující aktualizovanou komponentu se spustil v daném kanálu:
Závažnost
Poradní databáze GitHubu poskytuje skóre CVSS, které se pak přeloží na nízkou, střední, vysokou nebo kritickou závažnost výstrahy pomocí následujících pokynů:
CVSS Score | Závažnost |
---|---|
1,0 < Podle < 4,0 | Nízká |
4,0 < Podle < 7,0 | Střední |
7,0 < Podle < 9,0 | Vysoká |
Skóre >= 9,0 | Kritické |
Vyhledání podrobností
V části Hledání podrobností se běžně nacházejí dvě části: ohrožený balíček a kořenová závislost. Ohrožený balíček je potenciálně zranitelná komponenta. Oddíl kořenové závislosti obsahuje komponenty nejvyšší úrovně, které zodpovídají za řetěz závislostí, který vede k ohrožení zabezpečení.
Pokud se na ohrožený balíček odkazuje jenom jako na přímou závislost, zobrazí se jenom část "ohrožený balíček".
Pokud se na ohrožený balíček odkazuje jako na přímou i tranzitivní závislost, balíček se zobrazí v části "ohrožený balíček" i "kořenová závislost".
Pokud se na ohrožený balíček odkazuje pouze jako tranzitivní závislost, balíček se zobrazí v části "ohrožený balíček" a kořenové závislosti odkazující na ohrožený balíček se zobrazí v části "Kořenová závislost".
Správa výstrah kontroly závislostí
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ě v rozšířeném zabezpečení repos>.
Ve výchozím nastavení se na stránce upozornění zobrazují výsledky kontroly závislostí pro výchozí větev úložiště.
Stav výstrahy odráží stav výchozí větve a nejnovějšího kanálu spuštění, a to i v případě, že výstraha existuje v jiných větvích a kanálech.
Oprava výstrah kontroly závislostí
Přímá závislost je komponenta, kterou máte ve svém úložišti. Tranzitivní nebo nepřímá závislost je komponenta, která se používá přímou závislostí. Váš projekt je stále zranitelný bez ohledu na to, jestli se ohrožení zabezpečení nachází v přímé nebo přechodné závislosti.
Oprava zranitelné přechodné závislosti má obvykle formu explicitního přepsání verze zranitelné komponenty používané pro každou identifikovanou přímou závislost. Jakmile kořenové závislosti upgradují jejich použití zranitelné komponenty na bezpečnou verzi, můžete upgradovat každou kořenovou závislost místo více jednotlivých přepsání.
Aktualizace závislostí pro Yarn/Npm
Hypoteticky řekněme, že tento balíček má dvě ohrožení zabezpečení. Jedním z nich je axios
, přímá závislost a jedna je pro acorn
, tranzitivní závislost (označovaná také jako nepřímá závislost nebo závislost závislost).
{
"name": "my-package",
"version": "1.0.0",
"dependencies": {
"axios": "0.18.0",
"eslint": "5.16.0",
}
}
Aktuální verze axios
má ohrožení zabezpečení typu DoS (DoS) s doporučením k aktualizaci na verzi v0.18.1 nebo vyšší. Vzhledem k tomu, že se jedná o přímou závislost, máte kontrolu nad verzí axios
, kterou používáte. Stačí jen aktualizovat verzi axios
, kterou načítáte. package.json
Aktualizace vypadá nějak takto:
{
"name": "my-package",
"version": "1.0.0",
"dependencies": {
"axios": "0.19.2",
"eslint": "5.16.0",
}
}
Teď verze zobrazené package.json
verze eslint
závisí na verziacorn
, která je ohrožením zabezpečení reDoS (Regular Expression Denial of Service) regulárního výrazu s doporučením k aktualizaci na verzi 5.7.4, 6.4.1, 7.1.1
nebo vyšší. Pokud z nástroje pro kontrolu závislostí obdržíte upozornění, měli byste zjistit kořenovou závislost, která vyžaduje zranitelnou závislost.
Příze
Pokud používáte Yarn, můžete použít yarn, proč najít kompletní řetěz závislostí.
> $ yarn why acorn
yarn why v1.22.4
[1/4] Why do we have the module "acorn"...?
[2/4] Initialising dependency graph...
[3/4] Finding dependency...
[4/4] Calculating file sizes...
=> Found "acorn@6.4.0"
info Reasons this module exists
- "eslint#espree" depends on it
- Hoisted from "eslint#espree#acorn"
info Disk size without dependencies: "1.09MB"
info Disk size with unique dependencies: "1.09MB"
info Disk size with transitive dependencies: "1.09MB"
info Number of shared dependencies: 0
Done in 0.30s.
Úplný řetěz závislostí je eslint
>>espree
acorn
. Jakmile znáte řetězec závislostí, můžete k přepsání používané verzecornu použít jinou funkci Yarn, selektivní rozlišení závislostí.
K definování přepsání verze použijte pole package.json
rozlišení. Zobrazí se tři různé metody přepsání balíčku v pořadí od nejhoršího k nejlepšímu:
{
"name": "yarn-resolutions",
"version": "1.0.0",
"license": "MIT",
"dependencies": {
"axios": "0.19.2",
"eslint": "5.16.0"
},
"resolutions": {
// DO NOT USE!
"**/acorn": "6.4.1",
// BETTER
"eslint/**/acorn": "6.4.1",
// BEST
"eslint/espree/acorn": "6.4.1"
}
}
**/acorn
Použití vzoru přepíše všechna použití balíčku acorn napříč všemi závislostmi. Je to nebezpečné a za běhu to přerušíte. V důsledku toho se odebral v Yarn v2.
eslint/**/acorn
Použití vzoru přepíše všechna použití balíčku acorn pod balíčkem eslint a v jakýchkoli balíčcích, na jakých balíčcích závisí. Je bezpečnější než přepsání balíčku pro všechny závislosti, ale přesto má určitá rizika, pokud je graf závislostí pro balíček velký. Tento model se doporučuje, pokud existuje mnoho dílčích balíčků, které používají ohrožený balíček a definují přepsání jednotlivých dílčích balíčků, by bylo nepraktické.
Použití vzoru eslint/espree/acorn
přepíše pouze použití acorn
balíčku v espree
eslint
balíčku. Zaměřuje se konkrétně na ohrožený řetěz závislostí a doporučuje se přepsat verze balíčků.
npm
Pokud používáte npm 8.3 nebo vyšší, můžete v package.json použít pole přepsání .
Pokud potřebujete provést konkrétní změny přechodných závislostí, přidejte přepsání. Můžete například potřebovat přidat přepsání, které nahradí verzi závislosti známým problémem se zabezpečením, nahradí existující závislost forkem nebo zajistí, aby se stejná verze balíčku používala všude.
{
"name": "npm-overrides",
"version": "1.0.0",
"license": "MIT",
"dependencies": {
"axios": "0.19.2",
"eslint": "5.16.0"
},
"overrides":{
"eslint": {
"espree": {
"acorn": "6.4.1"
}
}
}
}
Zobrazený příklad přepsání ukazuje způsob, jak npm říct "přepsat pouze použití acorn
v espree
balíčku v eslint
balíčku". Zaměřuje se konkrétně na ohrožený řetěz závislostí a doporučuje se přepsat verze balíčků. Přepsání jsou nativní funkcí npm. Poskytuje způsob, jak nahradit balíček ve stromu závislostí jinou verzí nebo zcela jiným balíčkem.
Po nastavení přepsání musíte odstranit package-lock.json
a node_modules
spustit npm install
znovu.
Pro balíček, na který přímo závisíte, není možné nastavit přepsání, pokud závislost i samotné přepsání nesdílejí přesně stejnou specifikaci. Řekněme axios: "0.18.0"
například, že je zranitelná a hledáme upgrade na axios: "0.19.2"
. Přímo změňte verzi závislosti místo použití přepsání.
{
"name": "npm-overrides",
"version": "1.0.0",
"license": "MIT",
"dependencies": {
"axios": "0.18.0"
},
"overrides": {
// BAD, will throw an EOVERRIDE error
// "axios": "0.19.2",
}
}
Aktualizujte verzi závislosti bez nastavení přepsání:
{
"name": "npm-overrides",
"version": "1.0.0",
"license": "MIT",
"dependencies": {
"axios": "0.19.2"
}
}
Aktualizace závislostí pro Maven
Mechanismus řešení závislostí není tak sofistikovaný jako ten, který se používá v Yarnu. V důsledku toho můžete mít v projektu jenom jednu verzi závislosti. K vyřešení tohoto problému používá Maven algoritmus "nejbližší wins". To znamená, že používá verzi nejbližší závislosti k vašemu projektu ve stromu závislostí.
Máte například následující graf závislostí:
your-project --- A:1.0.0 --- B:2.0.0
\
\__ B:1.0.0
your-project
závisí na A:1.0.0
tom , na kterém zase závisí B:2.0.0
, ale váš projekt má také přímou závislost na B:1.0.0
. Proto máte v grafu závislostí B dvě různé verze závislostí B, ale verze 1.0.0 závislosti B vyhraje, protože je "nejbližší" k vašemu projektu.
V některých případech může tento scénář fungovat, pokud jsou verze kompatibilní. Pokud A:1.0.0
ale závisí na některé funkci B, která je k dispozici pouze ve verzi 2.0.0
, toto chování nefunguje. V nejhorším případě se tento projekt může stále kompilovat, ale za běhu selže.
Podívejme se na skutečný příklad.
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.microsoft.customer360</groupId>
<artifactId>maven-dependencies</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>maven-dependencies</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>2.10.3</version>
</dependency>
</project>
Řekněme, že verze com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider
, na které závisí, závisí na verzi com.fasterxml.jackson.core:jackson-databind
, která má deserializaci nedůvěryhodné chyby zabezpečení dat.
Tuto závislost můžete ověřit pomocí modulu plug-in závislostí Maven. V takovém případě byste spustili mvn dependency:tree -Dincludes=com.fasterxml.jackson.core:jackson-databind
a získali následující výstup:
> $ mvn dependency:tree -Dincludes=com.fasterxml.jackson.core:jackson-databind
[INFO] Scanning for projects...
[INFO]
[INFO] ------------< com.microsoft.customer360:maven-dependencies >------------
[INFO] Building maven-dependencies 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ maven-dependencies ---
[INFO] com.microsoft.customer360:maven-dependencies:jar:1.0-SNAPSHOT
[INFO] \- com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:jar:2.10.3:compile
[INFO] \- com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:jar:2.10.3:compile
[INFO] \- com.fasterxml.jackson.core:jackson-databind:jar:2.10.3:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.928 s
[INFO] Finished at: 2020-04-27T14:30:55+02:00
[INFO] ------------------------------------------------------------------------
Nejprve zkontrolujte, jestli existuje nová verze com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider
, která nezávisí na ohrožené verzi com.fasterxml.jackson.core:jackson-databind
. Pokud ano, můžete upgradovat com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider
a zastavit. Pokud ne, přepište verzi souboru com.fasterxml.jackson.core:jackson-databind
.
Jak je znázorněno v fragmentu kódu, při použití Mavenu "nejbližší wins", takže řešením je přidat přímou závislost, com.fasterxml.jackson.core:jackson-databind
která opraví ohrožení zabezpečení.
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.microsoft.customer360</groupId>
<artifactId>maven-dependencies</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>maven-dependencies</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>2.10.3</version>
</dependency>
<!-- Dependency resolutions -->
<!-- jackson-jaxrs-json-provider -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.10.4</version>
</dependency>
</dependencies>
</project>
Opětovným spuštěním mvn dependency:tree -Dincludes=com.fasterxml.jackson.core:jackson-databind
příkazu můžete ověřit, že řešení funguje.
$ mvn dependency:tree -Dincludes=com.fasterxml.jackson.core:jackson-databind
[INFO] Scanning for projects...
[INFO]
[INFO] ------------< com.microsoft.customer360:maven-dependencies >------------
[INFO] Building maven-dependencies 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ maven-dependencies ---
[INFO] com.microsoft.customer360:maven-dependencies:jar:1.0-SNAPSHOT
[INFO] \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.10.4:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.827 s
[INFO] Finished at: 2020-04-27T14:32:42+02:00
[INFO] ------------------------------------------------------------------------
Doporučuje se přidat komentář blízko řešení závislostí, aby každý, kdo přijde později, věděl, proč závislost existuje. Je možné ji odebrat, jakmile kořenová závislost použije novou verzi; jinak se hromadí závislosti.
V reálném projektu přidejte závislost co nejvíce nahoru řetězu. Můžete například přidat rozlišení do nadřazeného souboru POM místo jednotlivě v každém souboru POM projektu.
Aktualizace závislostí pro NuGet
Algoritmus řešení závislostí použitý v NuGetu je podobný Mavenu, protože lze použít pouze jednu verzi závislosti. NuGet ale nepřipne verze závislostí.
Pokud máte například závislost <PackageReference Include="A" Version="1.2.3" />
, můžete očekávat, že tento balíček bude ekvivalentní = 1.2.3
, ale ve skutečnosti to znamená >= 1.2.3
. Pokud chcete připnout přesnou verzi, měli byste použít Version="[1.2.3]"
. Další informace najdete v dokumentaci k rozsahu verzí NuGet.
Kromě výchozího chování rozsahu NuGet obnoví nejnižší platnou verzi, aby vyhovovala rozsahu. Toto chování znamená, že v mnoha případech musíte definovat rozsah.
Pojďme se podívat na tento ukázkový projekt, který má závislost na Microsoft.AspNetCore.App
:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<RootNamespace>NuGet.Dependencies</RootNamespace>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.14" />
</ItemGroup>
</Project>
Závisí na verziMicrosoft.AspNetCore.Http.Connections
, která je zranitelná vůči ohrožení zabezpečení vzdáleného spuštění kódu (RCE).
Nejprve byste měli zkontrolovat, jestli existuje aktualizovaná verze Microsoft.AspNetCore.App
, která závisí na novější verzi Microsoft.AspNetCore.Http.Connections
. Pokud ano, můžete upgradovat Microsoft.AspNetCore.App
a zastavit tady. Pokud ne, musíte přepsat verzi Microsoft.AspNetCore.Http.Connections
, na které závisí.
NuGet nemá ekvivalent yarn proč nebo mvn dependency:tree integrovaný, takže nejjednodušší způsob, jak zobrazit strom závislostí, je často navštívit nuget.org. Pokud navštívíte stránku NuGet ,Microsoft.AspNetCore.App
uvidíte, že závisí na Microsoft.AspNetCore.Http.Connections
version >= 1.0.4 && < 1.1.0
. Nebo v rozsahu verzí NuGet je reprezentativní syntaxe [1.0.4,1.1.0)
.
Ohrožení zabezpečení RCE bylo Microsoft.AspNetCore.Http.Connections
opraveno ve verzi 1.0.15
, takže je potřeba přepsat rozsah verzí, který má být[1.0.15, 1.1.0)
.
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<RootNamespace>NuGet.Dependencies</RootNamespace>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.2.8" />
</ItemGroup>
<ItemGroup Label="Dependency Resolutions">
<!-- Microsoft.AspNetCore.App -->
<PackageReference Include="Microsoft.AspNetCore.Http.Connections" Version="[1.0.15,1.1.0)" />
</ItemGroup>
</Project>
Doporučuje se přidat komentář blízko řešení závislostí, aby každý, kdo přijde později, věděl, proč závislost existuje. Jakmile kořenová závislost použije novou verzi, je možné ji odebrat. Jinak se hromadí závislosti.
Co když není k dispozici žádná oprava?
Pokud není k dispozici žádná známá oprava, jsou k dispozici následující možnosti jako jiné metody nápravy, dokud nebude k dispozici upgradovaná komponenta:
- Přestaňte komponentu používat a odeberte ji z kódu – toto odebrání se zjistí při příštím sestavení s nainstalovanou úlohou kontroly závislostí.
- Přispějte opravu samotné součásti. Pokud má vaše organizace specifické pokyny týkající se opensourcových příspěvků, postupujte podle těchto pokynů.
- Zavření výstrahy Výstrahy bez známé opravy ale stále můžou představovat bezpečnostní hrozbu pro vaši organizaci. Doporučujeme, abyste upozornění nezavřeli, protože neexistuje žádná známá oprava.
Zavření výstrah kontroly závislostí
Pokud chcete zavřít výstrahy v rozšířeném zabezpečení, potřebujete příslušná oprávnění. Ve výchozím nastavení jsou k dispozici pouze správci projektu s možností zavřít výstrahy rozšířeného zabezpečení.
Zavření výstrahy:
- Přejděte na výstrahu, kterou chcete zavřít, a vyberte ji.
- Výběr rozevíracího seznamu Zavřít upozornění
- Pokud ještě není vybraná, vyberte jako důvod uzavření možnost Riziko přijato nebo Falešně pozitivní .
- Přidání volitelného komentáře do textového pole Komentář
- Výběrem možnosti Zavřít odešlete a zavřete výstrahu.
- Stav upozornění se změní z otevření na uzavřeno a zobrazí váš důvod pro zavření.
Tato akce zavře pouze výstrahu pro vybranou větev. Ostatní větve, které můžou obsahovat stejnou chybu zabezpečení, zůstanou aktivní, dokud se neaktivuje jinak. Všechna upozornění, která byla dříve zamítnuta, lze ručně znovu otevřít.
Správa upozornění kontroly závislostí na žádostech o přijetí změn
Pokud se v žádosti o přijetí změn vytvoří upozornění pro nové změny kódu, zobrazí se upozornění jako poznámka v části komentáře karty 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ětví.
Můžete zobrazit manifest ovlivněného balíčku, zobrazit souhrn hledání a vyřešit poznámku v části Přehled.
Pokud chcete zavřít výstrahy žádostí o přijetí změn, musíte přejít do zobrazení podrobností výstrahy a zavřít výstrahu a vyřešit 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 žádosti o přijetí změn, přejděte na Rozšířené zabezpečení úložišť>a vyberte větev žádosti o přijetí změn. Výběrem možnosti Zobrazit další podrobnosti (2) v poznámce vás přesměruje na zobrazení podrobností výstrahy na kartě Upřesnit zabezpečení.
Tip
Poznámky budou vytvořeny pouze v případě, že ovlivněné řádky kódu jsou zcela jedinečné pro rozdíl žádosti o přijetí změn v porovnání s cílovou větví žádosti o přijetí změn.