Konfigurace GitHub Advanced Security pro Azure DevOps.

GitHub Advanced Security pro Azure DevOps přidává sadu funkcí zabezpečení GitHub Advanced Security do Azure Repos.

GitHub Advanced Security pro Azure zahrnuje:

  • Ochrana nabízených oznámení pro kontrolu tajných kódů: Zkontrolujte, jestli nabízené kódy obsahují potvrzení, která zpřístupňují tajné kódy, jako jsou přihlašovací údaje.
  • Prohledávání úložiště pro kontrolu tajných kódů: zkontrolujte úložiště a vyhledejte tajné kódy, které byly potvrzeny omylem.
  • Kontrola závislostí – vyhledávání známých ohrožení zabezpečení v opensourcových závislostech (přímé a tranzitivní)
  • Kontrola kódu – použití statického analytického modulu CodeQL k identifikaci ohrožení zabezpečení aplikací na úrovni kódu, jako je injektáž SQL a obejití ověřování

V tuto chvíli je gitHub Advanced Security pro Azure DevOps dostupný jenom pro Azure DevOps Services a nemáme v úmyslu tento produkt přenést na Azure DevOps Server.

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.

Požadavky

Musíte mít přidělená oprávnění jako člen skupiny Kolekce projektů Správa istrators. Pokud chcete přidat členy do skupiny Správci kolekce projektů nebo změnit oprávnění na úrovni sbírky projektů, přečtěte si téma Změna oprávnění na úrovni kolekce projektů.

Další požadavky pro agenty v místním prostředí

Pokud vaše organizace používá agenty v místním prostředí, existují další požadavky:

  • Přidejte tyto adresy URL do seznamu povolených, aby úloha kontroly závislostí mohla načíst data rady k ohrožení zabezpečení. Přečtěte si další informace o povolených IP adresách a adresách URL domény.
Adresa URL domény Popis
https://governance.dev.azure.com/{organization_name} Pro organizace používající doménu dev.azure.com pro přístup k instanci DevOps
https://dev.azure.com/{organization_name} Pro organizace používající doménu dev.azure.com pro přístup k instanci DevOps
https://advsec.dev.azure.com/{organization_name} Pro organizace používající doménu dev.azure.com pro přístup k instanci DevOps
https://{organization_name}.governance.visualstudio.com/ Pro organizace používající doménu {organization_name}.visualstudio.com pro přístup k instanci DevOps
https://{organization_name}.visualstudio.com  Pro organizace používající doménu {organization_name}.visualstudio.com pro přístup k instanci DevOps
https://{organization_name}.advsec.visualstudio.com/ Pro organizace používající doménu {organization_name}.visualstudio.com pro přístup k instanci DevOps
  • Spusťte kompatibilní verzi modulu runtime .NET (aktuálně .NET 6.0.x). Pokud v agentovi není kompatibilní verze, úloha sestavení pro kontrolu závislostí stáhne .NET.

  • Nainstalujte sadu CodeQL do mezipaměti nástrojů agenta pomocí instalačního skriptu pro vaši architekturu dostupnou na GitHubu. Tyto skripty vyžadují $AGENT_TOOLSDIRECTORY , aby proměnná prostředí byla nastavena na umístění adresáře nástrojů agenta v agentu, např. C:/agent/_work/_tool. Případně můžete ručně implementovat následující kroky:

    1. Vyberte nejnovější sadu verzí CodeQL z GitHubu.
    2. Stáhněte a rozbalte sadu do následujícího adresáře v adresáři nástrojů agenta, který se obvykle nachází v části _work/_tool: ./CodeQL/0.0.0-[codeql-release-bundle-tag]/x64/. Při použití aktuální verze v2.16.0by název složky ../CodeQL/0.0.0-codeql-bundle-v2.16.0/x64/ Přečtěte si další informace o adresáři nástrojů agenta.
    3. Vytvořte prázdný soubor s x64.complete názvem ve ./CodeQL/0.0.0-[codeql-release-bundle-tag] složce. V předchozím příkladu by měla být ./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64.completecesta ke x64.complete koncovému souboru .

Povolení rozšířeného zabezpečení GitHubu

Rozšířené zabezpečení můžete povolit na úrovni organizace, projektu nebo úložiště. Pokud chcete získat přístup ke každému nástroji a výsledkům kontroly, musíte nejprve povolit rozšířené zabezpečení. Po povolení rozšířeného zabezpečení se zablokují všechny budoucí vložení obsahující tajné kódy do úložiště s povolenou zásadou a kontrola tajných kódů úložiště probíhá na pozadí.

Onboarding na úrovni úložiště

  1. Přejděte do nastavení projektu Azure DevOps.
  2. Vyberte úložiště úložišť Repos>.
  3. Vyberte úložiště, pro které chcete povolit rozšířené zabezpečení.
  4. Pokud chcete aktivovat Rozšířené zabezpečení, vyberte Povolit a zahájit fakturaci. Ikona štítu se teď zobrazí v zobrazení úložiště pro všechna úložiště s povoleným pokročilým zabezpečením.

Snímek obrazovky s povolením služby GitHub Advanced Security

Onboarding na úrovni projektu

  1. Přejděte do nastavení projektu Azure DevOps.
  2. Vyberte Úložiště.
  3. Vyberte kartu Nastavení.
  4. Vyberte Povolit vše a zobrazí se odhad počtu aktivních potvrzení pro váš projekt.
  5. Výběrem možnosti Zahájit fakturaci aktivujte Rozšířené zabezpečení pro každé existující úložiště ve vašem projektu.
  6. Volitelně můžete vybrat možnost Automatické povolení rozšířeného zabezpečení pro nová úložiště , aby při vytváření bylo povoleno rozšířené zabezpečení všech nově vytvořených úložišť.

Snímek obrazovky s povolením na úrovni projektu pro pokročilé zabezpečení

Onboarding na úrovni organizace

  1. Přejděte do nastavení organizace pro vaši organizaci Azure DevOps.
  2. Vyberte Úložiště.
  3. Vyberte Povolit vše a zobrazí se odhad počtu aktivních potvrzení pro vaši organizaci.
  4. Výběrem možnosti Zahájit fakturaci aktivujte Rozšířené zabezpečení pro každé existující úložiště v každém projektu ve vaší organizaci.
  5. Volitelně můžete vybrat možnost Automatické povolení rozšířeného zabezpečení pro nová úložiště , aby při vytváření byly povolené všechny nově vytvořené projekty s pokročilým zabezpečením.

Snímek obrazovky s povolením na úrovni organizace pro pokročilé zabezpečení

Nastavení kontroly tajných kódů

Při zapnutí rozšířeného zabezpečení se automaticky povolí kontrola nabízených oznámení a prohledávání úložiště pro kontrolu tajných kódů. Ochranu před tajnými oznámeními můžete povolit nebo zakázat na stránce nastavení úložiště.

Snímek obrazovky s povolením ochrany nabízených oznámení

Jak už bylo zmíněno, kontrola úložiště pro kontrolu tajných kódů se automaticky spustí při povolení rozšířeného zabezpečení pro vybrané úložiště.

Nastavení kontroly závislostí

Kontrola závislostí je nástroj pro kontrolu na základě kanálu. Výsledky se agregují na každé úložiště. Doporučujeme přidat úlohu kontroly závislostí do všech kanálů, které chcete zkontrolovat.

Tip

Pro nejpřesnější výsledky kontroly nezapomeňte přidat úlohu kontroly závislostí podle kroků sestavení nebo obnovení balíčku kanálu, který sestaví kód, který chcete zkontrolovat.

Přidejte úlohu Advanced Security Dependency Scan (AdvancedSecurity-Dependency-Scanning@1) přímo do souboru kanálu YAML nebo vyberte úlohu Rozšířené vyhledávání závislostí zabezpečení z pomocníka úloh.

Snímek obrazovky s nastavením kanálu kontroly závislostí pro YAML

Nastavení kontroly kódu

Skenování kódu je také nástroj pro kontrolu na základě kanálu, kde se výsledky agregují na úložiště.

Tip

Doporučujeme přidat úlohu kontroly kódu do samostatného naklonovaného kanálu hlavního produkčního kanálu nebo vytvořit nový kanál. Je to proto, že prohledávání kódu může být časově náročnější úlohou sestavení.

Přidejte úkoly v následujícím pořadí:

  1. Advanced Security Initialize CodeQL (AdvancedSecurity-Codeql-Init@1)
  2. Vlastní kroky sestavení
  3. Advanced Security Perform CodeQL Analysis (AdvancedSecurity-Codeql-Analyze@1)

Snímek obrazovky s nastavením kanálu kontroly kódu pro YAML

Kromě toho budete muset určit, které jazyky analyzujete v úloze Initialize CodeQL. Seznam oddělený čárkami lze použít k analýze více jazyků najednou. Podporované jazyky jsou csharp, cpp, go, java, javascript, python, ruby, swift.

Tady je příklad úvodního kanálu:

trigger:
  - main

pool:
  # Additional hosted image options are available: https://learn.microsoft.com/en-us/azure/devops/pipelines/agents/hosted#software
  vmImage: ubuntu-latest

steps:

  - task: AdvancedSecurity-Codeql-Init@1
    inputs:
      languages: "java"
      # Supported languages: csharp, cpp, go, java, javascript, python, ruby, swift
      # You can customize the initialize task: https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/advanced-security-codeql-init-v1?view=azure-pipelines

#   Add your custom build steps here
# - Ensure that all code to be scanned is compiled (often using a `clean` command to ensure you are building from a clean state).
# - Disable the use of any build caching mechanisms as this can interfere with CodeQL's ability to capture all the necessary data during the build.
# - Disable the use of any distributed/multithreaded/incremental builds as CodeQL needs to monitor executions of the compiler to construct an accurate representation of the application.
# - For dependency scanning, ensure you have a package restore step for more accurate results.

# If you had a Maven app:
#   - task: Maven@4
#     inputs:
#       mavenPomFile: 'pom.xml'
#       goals: 'clean package'
#       publishJUnitResults: true
#       testResultsFiles: '**/TEST-*.xml'
#       javaHomeOption: 'JDKVersion'
#       jdkVersionOption: '1.17'
#       mavenVersionOption: 'Default'

# Or a general script:
#   - script: |
#       echo "Run, Build Application using script"
#       ./location_of_script_within_repo/buildscript.sh

  - task: AdvancedSecurity-Dependency-Scanning@1 # More details on this task: https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/advanced-security-dependency-scanning-v1?view=azure-pipelines

  - task: AdvancedSecurity-Codeql-Analyze@1 # More details on this task: https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/advanced-security-codeql-analyze-v1?view=azure-pipelines

Tip

Analýza CodeQL pro Kotlin/Swift je v současné době v beta verzi. Během beta verze bude analýza těchto jazyků méně komplexní než analýza CodeQL ostatních. Slouží java k analýze kódu napsaného v Javě, Kotlinu nebo obojím. Slouží javascript k analýze kódu napsaného v JavaScriptu, TypeScriptu nebo obojím.

Pokud je cpp, java, csharp zadaný jazyk nebo swift je vyžadován vlastní nebo AutoBuild buildový postup. Pokud je v jiných jazycích zahrnutý automatický nástroj AutoBuild, dokončí se krok úspěšně bez provedení jakékoli akce.

Pokud z jakéhokoli důvodu potřebujete zakázat rozšířené zabezpečení, budou se všechna upozornění a stav upozornění uchovávat při příštím opětovném povolení rozšířeného zabezpečení pro vaše úložiště.

Další kroky