Ochrana úložiště

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020

Zdrojový kód, soubor YAML kanálu a nezbytné skripty a nástroje jsou uložené v úložišti správy verzí. K zajištění bezpečnosti změn kódu a kanálu je potřeba použít zásady oprávnění a větví. Do úložišť můžete také přidat oprávnění kanálu a kontroly.

Měli byste také zkontrolovat výchozí řízení přístupu pro úložiště.

Kvůli návrhu Gitu vás ochrana na úrovni větve bude obsahovat jenom doposud. Uživatelé s nabízeným přístupem k úložišti můžou obvykle vytvářet nové větve. Pokud používáte opensourcové projekty GitHubu, může každý, kdo má účet GitHubu, vytvořit fork úložiště a navrhnout příspěvky zpět. Vzhledem k tomu, že kanály jsou přidružené k úložišti a ne ke konkrétním větvím, musíte předpokládat, že kód a soubory YAML jsou nedůvěryhodné.

Forky

Pokud vytváříte veřejná úložiště z GitHubu, musíte zvážit svůj postoj k sestavení forku. Forky jsou zvlášť nebezpečné, protože pocházejí mimo vaši organizaci. Pokud chcete chránit produkty před kódem, který přispěl, zvažte následující doporučení.

Poznámka:

Následující doporučení platí hlavně pro vytváření veřejných úložišť z GitHubu.

Nezadávejte tajné kódy pro sestavení forku

Ve výchozím nastavení jsou vaše kanály nakonfigurované tak, aby se vytvořily forky, ale tajné kódy a chráněné prostředky nejsou ve výchozím nastavení dostupné pro úlohy v těchto kanálech. Tuto druhou ochranu nevypínejte.

Screenshot of fork build protection UI.

Poznámka:

Když povolíte vytváření forků pro přístup k tajným kódům, Azure Pipelines ve výchozím nastavení omezí přístupový token používaný pro sestavení forku. Má omezenější přístup k otevřeným prostředkům než normální přístupový token. Pokud chcete vytvořit fork stejná oprávnění jako běžná sestavení, povolte sestavení forku Make mají stejná oprávnění jako běžná nastavení sestavení .

Screenshot of fork build protection UI in Azure DevOps Server 2020 and lower.

Poznámka:

I když povolíte vytváření forků pro přístup k tajným kódům, Azure Pipelines omezí přístupový token používaný pro sestavení forku. Má omezenější přístup k otevřeným prostředkům než normální přístupový token. Tuto ochranu nelze zakázat.

Zvažte ruční aktivaci sestavení forku.

Automatické sestavení forku můžete vypnout a místo toho použít komentáře k žádostem o přijetí změn jako způsob ručního vytváření těchto příspěvků. Toto nastavení vám umožní zkontrolovat kód před aktivací sestavení.

Použití agentů hostovaných Microsoftem pro sestavení forku

Nespouštět buildy z forků na agentech v místním prostředí. Díky tomu efektivně poskytujete cestu k externím organizacím pro spouštění vnějšího kódu na počítačích ve vaší podnikové síti. Kdykoli je to možné, používejte agenty hostované Microsoftem. Pro vašeho místního agenta použijte určitou formu izolace sítě a ujistěte se, že agenti neuchovávají svůj stav mezi úlohami.

Kontrola změn kódu

Před spuštěním kanálu na rozvětvované žádosti o přijetí změn pečlivě zkontrolujte navrhované změny a ujistěte se, že jste s ním spokojení.

Verze kanálu YAML, který spustíte, je verze z žádosti o přijetí změn. Věnujte tedy zvláštní pozornost změnám kódu YAML a kódu, který se spustí při spuštění kanálu, jako jsou skripty příkazového řádku nebo testy jednotek.

Omezení rozsahu tokenů GitHubu

Když vytvoříte forkovanou žádost o přijetí změn GitHubu, Azure Pipelines zajistí, že kanál nemůže změnit žádný obsah úložiště GitHub. Toto omezení platí jenom v případě, že k integraci s GitHubem s GitHubem používáte aplikaci Azure Pipelines. Pokud používáte jiné formy integrace GitHubu, například aplikaci OAuth, omezení se nevynutí.

Větve uživatelů

Uživatelé ve vaší organizaci se správnými oprávněními mohou vytvářet nové větve obsahující nový nebo aktualizovaný kód. Tento kód může běžet přes stejný kanál jako vaše chráněné větve. Pokud se soubor YAML v nové větvi změní, použije se aktualizovaný YAML ke spuštění kanálu. I když tento návrh umožňuje skvělou flexibilitu a samoobslužnou službu, ne všechny změny jsou bezpečné (bez ohledu na to, jestli se udělaly zlými úmysly nebo ne).

Pokud váš kanál využívá zdrojový kód nebo je definovaný v Azure Repos, musíte plně porozumět modelu oprávnění Azure Repos. Konkrétně uživatel s oprávněním Vytvořit větev na úrovni úložiště může do úložiště zavést kód, i když tento uživatel nemá oprávnění Přispívat .

Další kroky

V dalším kroku se dozvíte o další ochraně, kterou nabízí kontrola chráněných prostředků.