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-registryopción se establece entrue - El flujo de trabajo que incluye la acción tiene el
artifact-metadata: writepermiso.
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.