Включает linked artifacts page записи хранения и записи о развертывании артефактов, которые вы создаёте в вашей организации. Метаданные для каждого артефакта предоставляются вашей организацией с помощью одного из следующих методов:
- Рабочий процесс, содержащий одно из GitHubдействий для аттестации артефактов
- Интеграция с Dynatrace, JFrog Artifactory или Microsoft Defender for Cloud
- Пользовательский скрипт с использованием REST API метаданных артефактов
Доступные методы зависят от того, загружаете ли вы запись хранения или запись развертывания. Для получения дополнительной информации о типах записей см. О связанных артефактах.
Загрузка записи хранения
Вы можете загрузить запись памяти, создав аттестацию артефакта или включив интеграцию с JFrog Artifactory. Если вы не хотите использовать эти опции, необходимо настроить кастомную интеграцию с REST API.
Свидетельство с GitHub Actions
Вы можете загрузить запись хранения артефакта, используя GitHubдействия первого лица для подтверждения артефактов. Вы можете сделать это в том же рабочем процессе, что и для создания артефакта. Эти действия создают подписанные гарантии происхождения и целостности программного обеспечения, которое вы создаёте, а также автоматически загружают запись хранения в linked artifacts page.
Действие attest автоматически создаёт записи хранения на linked artifacts page, если оба:
- Опция
push-to-registryустановлена наtrue - Рабочий процесс, включающий действие, имеет разрешение
artifact-metadata: write
Для получения дополнительной информации об использовании этих действий см. Использование аттестаций артефактов для установления происхождения сборок.
Если артефакт не требует подтверждения или вы хотите загрузить записи развертывания или дополнительные метаданные хранилища, смотрите следующие разделы.
Использование интеграции JFrog
Эта двусторонняя интеграция автоматически поддерживает ваши записи хранения актуальными GitHub с артефактом на JFrog. Например, аттестации, на GitHub которых вы создаёте, автоматически загружаются в JFrog, а продвижение артефакта в продакшн на JFrog автоматически добавляет контекст производства в запись на GitHub.
Для инструкций по установке см. Get Start with JFrog Artifactory and GitHub Integration в документации JFrog.
Использование REST API
Для артефактов, которые не требуют подтверждения и которые не хранятся в JFrog, можно создать пользовательскую интеграцию с помощью API хранения записей метаданных Create artifact. Вам следует настроить систему так, чтобы она вызывала эндпоинт всякий раз, когда артефакт публикуется в выбранном репозитории пакета.
Примечание.
Если артефакт не связан с подтверждением происхождения на GitHub, github_repository параметр является обязательным.
Загрузка записи развертывания
Если вы отслеживаете развернутые рабочие нагрузки с помощью Dynatrace или Microsoft Defender for Cloud (MDC), вы можете использовать интеграцию для автоматической синхронизации данных развертывания с linked artifacts page. В противном случае нужно настроить кастомную интеграцию с REST API.
Использование интеграции Dynatrace
Вы можете настроить Dynatrace для отправки записей развертывания для GitHub изображений контейнеров, работающих в ваших окружениях Kubernetes под мониторингом Dynatrace. Dynatrace отображает изображения в ваших репозиториях, затем сообщает о контексте во время выполнения.
Кроме того, записи развертывания от Dynatrace могут включать контекст рисков во время выполнения, например:
- Публичная интернет-активность
- Доступ к чувствительным данным
Вы можете использовать этот контекст в фильтрации оповещений на уровне организации и в кампаниях по безопасности, чтобы приоритизировать устранение оповещений, затрагивающих интернет-уязвимые или чувствительные данные.
Для инструкций по установке см. GitHub Advanced Security раздел Security integration - Get Start в документации Dynatrace.
Использование интеграции Microsoft Defender для облака
Вы можете связать свой MDC экземпляр с вашей GitHub организацией. MDC автоматически отправляет данные развертывания и выполнения в GitHub.
Инструкции по настройке смотрите в разделе «Быстрый старт: Подключите вашу GitHub среду к Microsoft Defender for Cloud в документации для .MDC
Примечание.
Интеграция с Microsoft Defender for Cloud неё public preview присутствует и может измениться.
Использование REST API
[Конечная точка API Create a artifact deployment record](/rest/orgs/artifact-metadata#create-an-artifact-deployment-record) позволяет системам отправлять данные о развертывании конкретного артефактаGitHub, такие как его имя, дайджест, среды, кластер и развертывание. Вы должны называть эту конечную точку всякий раз, когда артефакт развёртывается в новой стадинговой или производственной среде.
Примечание.
Если артефакт не связан с подтверждением происхождения на GitHub, github_repository параметр является обязательным.
Проверка загрузки
Чтобы проверить, что запись была успешно загружена, вы можете просмотреть обновлённый артефакт в настройках вашей организации. См . раздел AUTOTITLE.
Удаление нежелательных записей
Невозможно удалить артефакт из linked artifacts page. Однако вы можете обновить запись хранения или запись развертывания, чтобы отразить статус артефакта. См . раздел AUTOTITLE.
примеры GitHub Actions
Вы можете загружать данные в linked artifacts page тот же рабочий процесс, который используете для создания и публикации артефакта.
Генерация аттестации
В следующем примере мы создаём и публикуем образ Docker, а затем на следующем этапе используем ${{ steps.push.outputs.digest }} выход для генерации аттестации происхождения.
Действие attest автоматически загружает запись хранения в когда linked artifacts pagepush-to-registry: true установлена, и рабочий процесс включает это artifact-metadata: write разрешение.
env:
IMAGE_NAME: my-container-image
ACR_ENDPOINT: my-registry.azurecr.io
jobs:
generate-build:
name: Build and publish Docker image
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
attestations: write
packages: write
artifact-metadata: write
steps:
- name: Build and push Docker image
id: push
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83
with:
context: .
push: true
tags: |
${{ env.ACR_ENDPOINT }}/${{ env.IMAGE_NAME }}:latest
${{ env.ACR_ENDPOINT }}/${{ env.IMAGE_NAME }}:${{ github.sha }}
- name: Generate artifact attestation
uses: actions/attest@v4
with:
subject-name: ${{ env.ACR_ENDPOINT }}/${{ env.IMAGE_NAME }}
subject-digest: ${{ steps.push.outputs.digest }}
push-to-registry: true
Использование REST API
Или, если вы не генерируете аттестацию, можно напрямую вызвать API метаданных артефактов.
env:
IMAGE_NAME: my-container-image
IMAGE_VERSION: 1.1.2
ACR_ENDPOINT: my-registry.azurecr.io
jobs:
generate-build:
name: Build and publish Docker image
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
packages: write
artifact-metadata: write
steps:
- name: Build and push Docker image
id: push
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83
with:
context: .
push: true
tags: |
${{ env.ACR_ENDPOINT }}/${{ env.IMAGE_NAME }}:latest
${{ env.ACR_ENDPOINT }}/${{ env.IMAGE_NAME }}:${{ github.sha }}
- name: Create artifact metadata storage record
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
jq -n --arg artifactName "${{ env.IMAGE_NAME }}" --arg artifactVersion "${{ env.IMAGE_VERSION }}" --arg artifactDigest "${{ steps.push.outputs.digest }}" '{"name": $artifactName, "digest": $artifactDigest, "version": $artifactVersion, "registry_url": "https://azurecr.io", "repository": "my-repository"}' > create-record.json
gh api -X POST orgs/${{ github.repository_owner }}/artifacts/metadata/storage-record --input create-record.json
shell: bash
Дальнейшие шаги
После загрузки данных команды вашей организации могут использовать контекст данных хранения и развертывания для приоритизации оповещений о безопасности. См . раздел AUTOTITLE.