Skip to main content

Загрузка данных хранения и развертывания в linked artifacts page

Ассоциируйте пакеты и сборки в вашей организации с данными о хранении и развертывании.

Кто может использовать эту функцию?

Anyone with write access to an organization-owned repository

Organization accounts on any plan

Включает 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.