Skip to main content

Carga de datos de almacenamiento e implementación en linked artifacts page

Asocie paquetes y compilaciones en su organización con datos de almacenamiento e implementación.

¿Quién puede utilizar esta característica?

Anyone with write access to an organization-owned repository

Organization accounts on any plan

          linked artifacts page incluye registros de almacenamiento y registros de implementación para artefactos que se compilan en la organización. La organización proporciona metadatos para cada artefacto mediante uno de los métodos siguientes:
  • Un flujo de trabajo que contiene una de las acciones de GitHub para atestaciones de artefactos
  • Integración con Dynatrace, JFrog Artifactory o Microsoft Defender for Cloud
  • Un script personalizado mediante la API REST de metadatos de artefacto

Los métodos disponibles dependen de si está cargando un registro de almacenamiento o un registro de implementación. Para obtener más información sobre los tipos de registro, vea Acerca de los artefactos vinculados.

Carga de un registro de almacenamiento

Puede cargar un registro de almacenamiento mediante la creación de una atestación de artefactos o la habilitación de una integración con JFrog Artifactory. Si no desea usar estas opciones, debe configurar una integración personalizada con la API REST.

Certificación con GitHub Actions

Puede cargar un registro de almacenamiento para un artefacto mediante las acciones de primera parte de GitHub para las atestaciones de artefactos. Puede hacerlo en el mismo flujo de trabajo que se utiliza para construir el artefacto. Estas acciones crean garantías de integridad y procedencia firmadas para el software que desarrolla, así como cargan automáticamente un registro de almacenamiento en linked artifacts page.

La acción attest crea automáticamente registros de almacenamiento en el linked artifacts page si ambos:

  • La push-to-registry opción se establece en true
  • El flujo de trabajo que incluye la acción tiene el artifact-metadata: write permiso.

Para obtener más información sobre el uso de estas acciones, consulte Uso de atestaciones de artefactos para establecer la procedencia de las compilaciones.

Si el artefacto no requiere atestación o si desea cargar registros de implementación o metadatos de almacenamiento adicionales, consulte las secciones siguientes.

Uso de la integración de JFrog

Esta integración bidireccional mantiene automáticamente actualizados los registros de almacenamiento en GitHub con el artefacto en JFrog. Por ejemplo, las certificaciones que cree en GitHub se cargan automáticamente en JFrog, y al promover un artefacto a producción en JFrog, se agrega automáticamente el contexto de producción al registro en GitHub.

Para obtener instrucciones de configuración, consulte Get Started with JFrog Artifactory and GitHub Integration en la documentación de JFrog.

Uso de la API REST

En el caso de los artefactos que no necesitan atestación y que no se almacenan en JFrog, puede crear una integración personalizada utilizando el punto de conexión de API Creación de registro de almacenamiento de metadatos de artefactos. Debe configurar el sistema para que llame al punto de conexión cada vez que se publique un artefacto en el repositorio de paquetes elegido.

Nota:

Si el artefacto no está asociado a una atestación de procedencia en GitHub, el github_repository parámetro es obligatorio.

Carga de un registro de implementación

Si supervisa las cargas de trabajo implementadas con Dynatrace o Microsoft Defender for Cloud (MDC), puede usar una integración para sincronizar automáticamente los datos de implementación con .linked artifacts page De lo contrario, debe configurar una integración personalizada con la API REST.

Uso de la integración de Dynatrace

Puede configurar Dynatrace para enviar registros de implementación a GitHub para imágenes de contenedor que se ejecutan en los entornos de Kubernetes supervisados por Dynatrace. Dynatrace asocia las imágenes desplegadas a tus repositorios y posteriormente informa sobre el contexto de ejecución.

Además, los registros de implementación de Dynatrace pueden incluir contexto de riesgo en tiempo de ejecución, como:

  • Exposición a Internet pública
  • Acceso a datos confidenciales

Puede usar este contexto en el filtrado de alertas de nivel de organización y en campañas de seguridad para priorizar la corrección de las alertas que afectan a las cargas de trabajo de datos confidenciales o expuestas a Internet.

Para obtener instrucciones de configuración, consulte GitHub Advanced Security integración de seguridad: Introducción a la documentación de Dynatrace.

Uso de la integración de Microsoft Defender for Cloud

Puede conectar la MDC instancia a su GitHub organización. MDC enviará automáticamente los datos de implementación y tiempo de ejecución a GitHub.

Para obtener instrucciones de configuración, consulte Inicio rápido: Conecte su entorno GitHub a Microsoft Defender for Cloud en la documentación de MDC.

Nota:

La integración con Microsoft Defender for Cloud está en versión preliminar pública y está sujeta a cambios.

Uso de la API REST

El punto de conexión de API Crear un registro de implementación de artefactos permite a los sistemas enviar datos de implementación de un artefacto específico a GitHub, como su nombre, resumen, entornos, clúster e implementación. Debe llamar a este endpoint cada vez que se implemente un artefacto en un nuevo entorno de ensayo o producción.

Nota:

Si el artefacto no está asociado a una atestación de procedencia en GitHub, el github_repository parámetro es obligatorio.

Comprobación de una carga

Para comprobar que un registro se ha cargado correctamente, puede ver el artefacto actualizado en la configuración de su organización. Consulta Auditoría de las compilaciones de la organización en el linked artifacts page.

Eliminación de registros no deseados

No es posible eliminar un artefacto de linked artifacts page. Sin embargo, puede actualizar un registro de almacenamiento o un registro de implementación para reflejar el estado de un artefacto. Consulta Eliminación de artefactos del linked artifacts page.

ejemplos de GitHub Actions

Puede cargar datos en linked artifacts page en el flujo de trabajo que utilizas para crear y publicar un artefacto.

Generación de una atestación

En el ejemplo siguiente, compilamos y publicamos una imagen de Docker y, a continuación, usamos la ${{ steps.push.outputs.digest }} salida en el paso siguiente para generar una atestación de procedencia.

La acción attest carga automáticamente un registro de almacenamiento en linked artifacts page cuando se establece push-to-registry: true y el flujo de trabajo incluye el permiso 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

Uso de la API REST

Como alternativa, si no genera una atestación, puede llamar directamente a la API de metadatos del artefacto.


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

Pasos siguientes

Una vez cargados los datos, los equipos de su organización pueden usar el contexto de los datos de almacenamiento e implementación para priorizar las alertas de seguridad. Consulta Priorización de alertas de análisis de código y Dependabot mediante el contexto de producción.