Настройка GitHub Advanced Security для Azure DevOps
GitHub Advanced Security для Azure DevOps добавляет набор функций безопасности Advanced Security GitHub в Azure Repos.
GitHub Advanced Security для Azure DevOps включает:
- Защита от принудительной проверки секретов: проверьте, включают ли push-уведомления кода, которые предоставляют секреты, такие как учетные данные
- Сканирование репозитория секретов: сканирование репозитория и поиск открытых секретов, которые были зафиксированы случайно
- Проверка зависимостей — поиск известных уязвимостей в открытый код зависимостей (прямых и транзитивных)
- Сканирование кода — используйте подсистему статического анализа CodeQL для выявления уязвимостей приложений на уровне кода, таких как внедрение и обход проверки подлинности SQL.
В настоящее время GitHub Advanced Security для Azure DevOps доступен только для Azure DevOps Services и нет планов перенести этот продукт на сервер Azure DevOps Server. Расширенная безопасность GitHub для Azure DevOps также доступна только для репозиториев Git кода.
GitHub Advanced Security для Azure DevOps работает с Azure Repos. Если вы хотите использовать GitHub Advanced Security с репозиториями GitHub, см. статью GitHub Advanced Security.
Необходимые компоненты
У вас должны быть разрешения, выделенные в качестве члена группы администраторов коллекции проектов. Чтобы добавить участников в группу "Администраторы коллекции проектов" или изменить разрешение на уровне коллекции проекта, см. статью Изменение разрешений на уровне коллекции проекта.
Дополнительные предварительные требования для локальных агентов
Если в вашей организации используются локальные агенты, существуют дополнительные требования.
- Добавьте эти URL-адреса в список разрешений, чтобы разрешить задачу проверки зависимостей для получения данных рекомендаций по уязвимостям. Дополнительные сведения о разрешенных IP-адресах и URL-адресах домена.
URL-адрес домена | Description |
---|---|
https://governance.dev.azure.com |
Для организаций, использующих домен dev.azure.com для доступа к экземпляру DevOps |
https://dev.azure.com |
Для организаций, использующих домен dev.azure.com для доступа к экземпляру DevOps |
https://advsec.dev.azure.com |
Для организаций, использующих домен dev.azure.com для доступа к экземпляру DevOps |
https://{organization_name}.governance.visualstudio.com |
Для организаций, использующих домен {organization_name}.visualstudio.com для доступа к экземпляру DevOps |
https://{organization_name}.visualstudio.com |
Для организаций, использующих домен {organization_name}.visualstudio.com для доступа к экземпляру DevOps |
https://{organization_name}.advsec.visualstudio.com |
Для организаций, использующих домен {organization_name}.visualstudio.com для доступа к экземпляру DevOps |
Запустите совместимую версию среды выполнения .NET (в настоящее время .NET 8.x). Если на агенте нет совместимой версии, задача сборки для сканирования зависимостей скачает .NET.
Убедитесь, что пакет CodeQL установлен в кэш средств агента в агенте. Можно использовать
enableAutomaticCodeQLInstall: true
переменную с задачейAdvanced-Security-CodeQL@1
конвейера для конвейеров YAML или установитьEnable automatic CodeQL detection and installation
флажок для классических конвейеров. Кроме того, инструкции по установке вручную см. в статье "Проверка кода для расширенной безопасности GitHub для Azure DevOps".
Включение GitHub Advanced Security
Вы можете включить расширенную безопасность на уровне организации, проекта или репозитория. Чтобы получить доступ к каждому из средств сканирования и результатов, сначала необходимо включить расширенную безопасность. После включения расширенной безопасности все будущие push-уведомления, содержащие секреты в репозиторий с включенной политикой, блокируются, а сканирование секретов репозитория происходит в фоновом режиме.
Подключение на уровне репозитория
- Перейдите к параметрам проекта Azure DevOps.
- Выберите репозитории Repos>.
- Выберите репозиторий, для которого необходимо включить расширенную безопасность.
- Нажмите кнопку "Включить и начать выставление счетов", чтобы активировать расширенную безопасность. Теперь в представлении репозитория отображается значок щита для любого репозитория с включенной расширенной безопасностью.
Подключение на уровне проекта
- Перейдите к параметрам проекта Azure DevOps.
- Выберите Repos.
- Выберите вкладку Параметры.
- Выберите " Включить все " и просмотрите оценку количества активных фиксаций для проекта.
- Выберите " Начать выставление счетов", чтобы активировать расширенную безопасность для каждого существующего репозитория в проекте.
- При необходимости выберите автоматическое включение расширенной безопасности для новых репозиториев, чтобы все созданные репозитории включили расширенную безопасность при создании.
Подключение на уровне организации
- Перейдите к параметрам организации Azure DevOps.
- Выберите Репозитории.
- Выберите " Включить все " и просмотрите оценку количества активных фиксаций для вашей организации.
- Выберите " Начать выставление счетов", чтобы активировать расширенную безопасность для каждого существующего репозитория в каждом проекте в организации.
- При необходимости выберите "Автоматически включить расширенную безопасность" для новых репозиториев, чтобы при создании всех созданных проектов была включена расширенная безопасность.
Настройка проверки секретов
При включении расширенной безопасности секретов защита от принудительной отправки и сканирование репозитория автоматически включено. Вы можете включить или отключить защиту от отправки секретов на странице параметров репозитория.
Как уже упоминалось, сканирование репозитория секретов автоматически запускается при включении расширенной безопасности для выбранного репозитория.
Настройка проверки зависимостей
Сканирование зависимостей — это средство сканирования на основе конвейера. Результаты агрегируются на один репозиторий. Рекомендуется добавить задачу проверки зависимостей во все конвейеры, которые вы хотите проверить.
Совет
Для наиболее точных результатов сканирования обязательно добавьте задачу проверки зависимостей, выполнив шаги сборки и (или) этап восстановления пакета конвейера, который создает код, который требуется проверить.
Добавьте задачу "Расширенная проверка зависимостей безопасности" (AdvancedSecurity-Dependency-Scanning@1) непосредственно в файл конвейера YAML или выберите задачу "Расширенная проверка зависимостей безопасности" в помощнике по задачам.
Настройка сканирования кодов
Сканирование кода также является средством сканирования на основе конвейера, где результаты агрегируются в каждом репозитории.
Совет
Рекомендуется добавить задачу сканирования кода в отдельный клонированный конвейер основного рабочего конвейера или создать новый конвейер. Это связано с тем, что сканирование кода может быть более интенсивной задачей сборки.
Добавьте задачи в следующем порядке:
- Advanced Security Initialize CodeQL (AdvancedSecurity-Codeql-Init@1)
- Пользовательские шаги сборки
- Расширенный анализ CodeQL (AdvancedSecurity-Codeql-Analyze@1)
Кроме того, необходимо указать, какие языки вы анализируете в задаче Initialize CodeQL. Разделенный запятыми список можно использовать для анализа нескольких языков одновременно. Поддерживаемые языки.csharp, cpp, go, java, javascript, python, ruby, swift
Если вы используете автономные агенты, вы также можете добавить enableAutomaticCodeQLInstall: true
переменную, чтобы автоматически установить последние биты CodeQL для агента.
Ниже приведен пример начального конвейера:
trigger:
- main
pool:
# Additional hosted image options are available: https://video2.skills-academy.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://video2.skills-academy.com/en-us/azure/devops/pipelines/tasks/reference/advanced-security-codeql-init-v1?view=azure-pipelines
# If you're using a self-hosted agent to run CodeQL, use `enableAutomaticCodeQLInstall` to automatically use the latest CodeQL bits on your agent:
enableAutomaticCodeQLInstall: true
# Add your custom build steps here
# - Ensure that all code to be scanned is compiled (often using a `clean` command to ensure you're 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://video2.skills-academy.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://video2.skills-academy.com/en-us/azure/devops/pipelines/tasks/reference/advanced-security-codeql-analyze-v1?view=azure-pipelines
Совет
Анализ CodeQL для Kotlin/Swift в настоящее время находится в бета-версии. Во время бета-версии анализ этих языков будет менее комплексным, чем анализ CodeQL других пользователей.
Используется java
для анализа кода, написанного на Java, Kotlin или обоих.
Используется javascript
для анализа кода, написанного в JavaScript, TypeScript или обоих.
Если указанный язык является cpp, java, csharp
или swift
требуются пользовательские шаги сборки.
Настройка заметок запроса на вытягивание
Для сканирования зависимостей и сканирования кода заметки автоматически настраиваются для запросов на вытягивание, в которых применяется политика проверки сборки с проверкой зависимостей и (или) задачами сканирования кода, включенными в конвейер. Дополнительные сведения о настройке политик проверки сборки см. в разделе "Проверка сборки".
Дополнительные сведения об устранении оповещений для ветвей запросов на вытягивание см. в разделе "Управление оповещениями проверки зависимостей" для запросов на вытягивание и управление оповещениями проверки кода на запросы на вытягивание.
Если по какой-либо причине необходимо отключить расширенную безопасность, все оповещения и состояние оповещений будут сохранены на вкладке "Расширенная безопасность" при следующем включении расширенной безопасности для репозитория.
Следующие шаги
- Оповещения проверки кода для расширенной безопасности GitHub для Azure DevOps
- Оповещения проверки зависимостей для расширенной безопасности GitHub для Azure DevOps
- Оповещения проверки секретов для расширенной безопасности GitHub для Azure DevOps
- Разрешения для GitHub Advanced Security для Azure DevOps
- Выставление счетов за GitHub Advanced Security для Azure DevOps