Využívání balíčků z ověřených informačních kanálů

Mnoho operací NuGet, jako je obnovení a instalace, vyžaduje komunikaci s jedním nebo více zdroji balíčků, které je možné nakonfigurovat v souborech nuget.config. V případě informačních kanálů HTTP provede NuGet neověřený požadavek a pokud server odpoví odpovědí HTTP 401, NuGet vyhledá přihlašovací údaje v následujícím pořadí:

  1. Proměnná NuGetPackageSourceCredentials_{name}prostředí .
  2. Přihlašovací údaje v souborech nuget.config.
  3. Pokud zdroj balíčku poskytuje jeden zprostředkovatele přihlašovacích údajů NuGet, použijte ho.

Přihlašovací údaje, které potřebujete použít, určují zdroj balíčku. Pokud tedy nepoužíváte zprostředkovatele přihlašovacích údajů, měli byste u zdroje balíčku zkontrolovat, jaké přihlašovací údaje použít. Je velmi běžné, že zdroje balíčků vám zakážet používat heslo (že se přihlašujete k webu pomocí NuGetu). Obvykle potřebujete vytvořit token pat pro použití jako heslo NuGetu, ale měli byste zkontrolovat dokumentaci k serveru NuGet, který používáte. Některé zdroje balíčků, jako jsou Azure DevOps a GitHub, mají přístupové tokeny s vymezeným oborem, takže možná budete muset zajistit, aby všechny vytvořené tokeny zahrnovaly požadovaný obor.

Osvědčené postupy zabezpečení pro správu přihlašovacích údajů

I když NuGet vyhledává přihlašovací údaje v pořadí uvedeném výše, doporučujeme při ověřování pomocí privátních informačních kanálů bezpečně spravovat následující posloupnost:

  1. Zprostředkovatel přihlašovacích údajů: Důrazně doporučujeme použít zprostředkovatele přihlašovacích údajů, kdykoli je to možné. Tento přístup zabraňuje ukládání tajných kódů ve formátu prostého textu a minimalizuje riziko náhodného zveřejnění tajných kódů prostřednictvím správy zdrojového kódu. Kromě toho obecně snižuje počet míst, která potřebujete aktualizovat, když vyprší platnost přihlašovacích údajů nebo se změní. Pokud poskytovatel přihlašovacích údajů podporuje jednotné přihlašování, může snížit frekvenci přihlášení nebo počet míst, kde je potřeba přihlašovací údaje uložit. Další informace najdete v části Poskytovatelé přihlašovacích údajů.

  2. Šifrované přihlašovací údaje v nuget.config: Pokud není k dispozici poskytovatel přihlašovacích údajů, měli byste zvážit použití šifrovaných přihlašovacích údajů. Tento přístup poskytuje další vrstvu zabezpečení uložením přihlašovacích údajů v šifrované podobě. Další informace najdete v části o přihlašovacích údajích v souborech nuget.config.

    Poznámka:

    Mějte na paměti, že šifrovaná hesla jsou podporována pouze ve Windows. Navíc je možné je dešifrovat pouze na stejném počítači a stejným uživatelem, který je původně zašifroval.

  3. Použití maker proměnných prostředí v nuget.config: Pokud použití šifrovaných přihlašovacích údajů není možné, zvažte uložení přihlašovacích údajů do souboru nuget.config s makry proměnných prostředí. Tento přístup umožňuje odkazovat na proměnné prostředí, které obsahují skutečné přihlašovací údaje. Zvyšuje transparentnost a pomáhá koncovým uživatelům pochopit, jak se konfigurují jejich přihlašovací údaje. Další informace najdete v části o přihlašovacích údajích v souborech nuget.config.

  4. Použití proměnných prostředí přímo: Jako záložní možnost můžete přihlašovací údaje uložit přímo do proměnných prostředí. Mějte však na paměti, že tento přístup může nabízet menší viditelnost a řízení v porovnání s použitím maker proměnných prostředí v souboru nuget.config . Další informace najdete v části o přihlašovacích údajích v proměnných prostředí.

  5. Vymazat textové přihlašovací údaje v NuGet.Config: Důrazně doporučujeme použít jednu z dříve uvedených možností. Pokud tyto možnosti nejsou možné, můžete přihlašovací údaje uložit do souboru nuget.config . Tato možnost by se ale měla používat jenom v prostředích, kde není k dispozici žádná jiná zabezpečená možnost. Další informace najdete v části o přihlašovacích údajích v souborech nuget.config.

    Upozorňující

    Ukládání přihlašovacích údajů ve formátu prostého textu v souboru nuget.config , zejména při ukládání souboru ve správě zdrojového kódu, je rizikové, protože zvyšuje riziko náhodného úniku přihlašovacích údajů. Pokud musíte přihlašovací údaje uložit do souboru nuget.config , zvažte použití jedné z bezpečnějších možností uvedených výše.

Dodržováním těchto osvědčených postupů můžete bezpečně ověřovat privátní informační kanály a zároveň minimalizovat riziko vystavení citlivých informací.

Přihlašovací údaje v proměnných prostředí

NuGet vyhledá proměnnou prostředí s názvem NuGetPackageSourceCredentials_{name}, kde {name} je hodnota key="name" ve zdroji balíčku souboru nuget.config . Hodnota proměnné prostředí musí být Username={username};Password={password}a může volitelně obsahovat ;ValidAuthenticationTypes={types}. Pokud proměnná prostředí neodpovídá konvenci NuGetu nebo hodnota nesplňuje očekávaný vzor NuGetu, NuGet bezobslužně ignoruje proměnnou prostředí a pokračuje v hledání přihlašovacích údajů pro zdroj balíčku jinde. Neexistují žádné protokoly, které by signalizovaly, že NuGet používá přihlašovací údaje z proměnné prostředí, což může způsobit potíže při ladění problémů s ověřováním, pokud proměnná prostředí obsahuje tajný kód s vypršenou platností, a nový tajný kód se přidá do souboru nuget.config , protože konfigurační soubor má nižší prioritu.

Tip

Použití proměnných prostředí v kanálech CI/CD je skvělou volbou pro minimalizaci rizika zachytávání tajných kódů v protokolech.

Představte si například následující soubor nuget.config :

<configuration>
  <packageSources>
    <clear />
    <add key="Contoso" value="https://nuget.contoso.com/v3/index.json" />
  </packageSources>
</configuration>

V tomto případě je Contoso název zdroje a NuGet vyhledá název NuGetPackageSourceCredentials_Contosoproměnné prostředí . U některých platforem se rozlišují malá a velká písmena, proto je potřeba použít správné velké a malé znaky pro název prostředí a název zdroje, jak je definováno v souboru nuget.config .

Pokud je nugetUser uživatelské jméno a heslo je secret123, hodnota proměnné prostředí by měla být nastavena na Username=nugetUser;Password=secret123hodnotu . Pokud nuGet by měl používat pouze tyto přihlašovací údaje pro základní ověřování HTTP, ale ne jiná schémata ověřování, můžete nastavit hodnotu proměnné prostředí na Username=nugetUser;Password=secret123;ValidAuthenticationTypes=Basichodnotu . Další informace o platných typech ověřování najdete v dokumentaci k přihlašovacím údajům balíčku v souborech nuget.config.

Poznámka:

Proměnné prostředí mají omezení pro povolené znaky a různé operační systémy mohou mít různá omezení. Například mezery nejsou povoleny. Tuto funkci proměnné prostředí proto použijete k zadání přihlašovacích údajů NuGet pro zdroje balíčků, které používají všechny znaky, které jsou pro proměnné prostředí vaší platformy neplatné. V takových případech byste měli zdroj balíčku přejmenovat v souboru nuget.config .

Přihlašovací údaje v souborech nuget.config

Soubory nuget.config mohou obsahovat přihlašovací údaje ke zdroji balíčku. Další informace, včetně syntaxe, najdete v části referenční dokumentace ke zdrojovému souboru nuget.config v přihlašovacích údajích ke zdroji balíčku. Na příkazovém řádku je ale jednodušší dotnet nuget update source nastavit přihlašovací údaje.

Upozorňující

Při nastavování přihlašovacích údajů v souborech nuget.config je důležité, zejména při ukládání přihlašovacích údajů jako prostého textu. Pokud jsou přihlašovací údaje zapsány do souboru nuget.config , který je ve správě zdrojového kódu, existuje zvýšené riziko náhodného úniku tajného kódu.

Vzhledem k tomu, že NuGet shromažďuje nastavení z více souborů, doporučujeme uložit přihlašovací údaje do souboru nuget.config uživatele. Doporučujeme také uložit zdroje balíčků do souboru nuget.config řešení (úložiště zdrojového kódu), včetně elementu<clear />, kvůli spolehlivosti sestavení.

Uživatelské jméno a heslo ve formátu prostého textu v souboru nuget.config může použít proměnnou prostředí přidáním % na začátek a konec názvu proměnné prostředí, který chcete použít. Další informace najdete v referenční dokumentaci nuget.config k používání proměnných prostředí.

Zprostředkovatelé přihlašovacích údajů

NuGet má model rozšiřitelnosti, který umožňuje modulům plug-in poskytovat přihlašovací údaje NuGetu. Cesta , kterou musí být nainstalovaní zprostředkovatelé přihlašovacích údajů, aby bylo možné zjistit NuGet, se liší pro rozhraní .NET Framework (NuGet.exe, MSBuild a Visual Studio) a sadu .NET SDK (spuštěnou v modulu runtime .NET 5 nebo novější).

NuGet má koncept spouštění v interaktivním režimu nebo neinteraktivním režimu. V neinteraktivním režimu se zprostředkovatelé přihlašovacích údajů zobrazí výzva, aby neblokovali NuGet. V interaktivním režimu vás poskytovatel přihlašovacích údajů může vyzvat k přihlášení. Různé nástroje mají různé výchozí hodnoty, takže v závislosti na vašem scénáři může být potřeba, aby byl interaktivní režim výslovný nebo nesouhlas.

Nástroj Výchozí Přepínač
dotnet CLI neinteraktivní --interactive Argument. Například dotnet restore --interactive.
MSBuild neinteraktivní NuGetInteractive VLASTNOST MSBuild. Například msbuild -t:restore -p:NuGetInteractive=true.
NuGet.exe Interaktivní -NonInteractive Argument. Například nuget.exe restore -NonInteractive.
Visual Studio Interaktivní není možné spustit v neinteraktivním režimu.

NuGet.exe podporuje zprostředkovatele přihlašovacích údajů V1 i V2, zatímco MSBuild a sada .NET SDK podporují pouze moduly plug-in pro různé platformy (V2).

V sadě Visual Studio má NuGet rozhraní zprostředkovatele přihlašovacích údajů sady Visual Studio, které můžou poskytovatelé přihlašovacích údajů použít k zajištění grafického přihlašovacího prostředí nebo v případě potřeby volat rozhraní API sady Visual Studio. NuGet v sadě Visual Studio se vrátí k poskytovatelům přihlašovacích údajů příkazového řádku, pokud nemůže najít zprostředkovatele přihlašovacích údajů sady Visual Studio, který zpracovává zdroj.

Visual Studio 2017 verze 15.9 a vyšší obsahuje zprostředkovatele přihlašovacích údajů pro Azure Artifacts, který funguje v sadě Visual Studio, MSBuild a NuGet.exe. Zprostředkovatel přihlašovacích údajů pro sadu .NET SDK však není součástí sady Visual Studio, proto je nutné nainstalovat zvlášť , aby bylo možné pracovat s rozhraním příkazového dotnet řádku.

Seznam zprostředkovatelů přihlašovacích údajů

Existuje žádost o funkci, která zprostředkovatele přihlašovacích údajů nainstaluje prostřednictvím nástrojů .NET, což pravděpodobně usnadní zjišťování dalších zprostředkovatelů přihlašovacích údajů. Dokud se tento postup neimplementuje, tady je seznam poskytovatelů přihlašovacích údajů, o které víme: