linked artifacts page에는 조직에서 빌드한 아티팩트를 위한 스토리지 및 배포 기록이 포함됩니다. 각 아티팩트에 대한 메타데이터는 다음 방법 중 하나를 사용하여 조직에서 제공합니다.
- GitHub의 아티팩트 증명 작업 중 하나가 포함된 워크플로
-
**JFrog Artifactory** 또는 **Microsoft Defender for Cloud**와의 통합 -
**아티팩트 메타데이터 REST API**를 사용하는 사용자 지정 스크립트
사용 가능한 방법은 스토리지 레코드를 업로드하는지 또는 배포 레코드를 업로드하는지에 따라 달라집니다. 레코드 형식에 대한 자세한 내용은 연동된 아티팩트 개요을 참조하세요.
스토리지 레코드 업로드
**아티팩트 증명**을 만들거나 **JFrog Artifactory**와의 통합을 사용하도록 설정하여 스토리지 레코드를 업로드할 수 있습니다. 이러한 옵션을 사용하지 않으려면 **REST API**와 사용자 지정 통합을 설정해야 합니다.
GitHub Actions를 사용하여 증명하는 중
GitHub의 아티팩트 증명에 대한 자사 작업을 사용하여 아티팩트에 대한 스토리지 레코드를 업로드할 수 있습니다. 아티팩트 빌드에 사용하는 것과 동일한 워크플로에서 이 작업을 수행할 수 있습니다. 이러한 작업은 빌드하는 소프트웨어에 대한 서명된 출처 및 무결성 보장을 만들 뿐만 아니라 스토리지 레코드를 linked artifacts page에 자동으로 업로드합니다.
증명 및 증명-빌드-출처 작업은 둘 다 해당하는 경우 linked artifacts page에 스토리지 레코드를 자동으로 만듭니다.
- 옵션
push-to-registry이(가)true로 설정됩니다. - 작업을 포함하는 워크플로우에
artifact-metadata: write사용 권한이 있습니다.
이러한 작업 사용에 대한 자세한 내용은 아티팩트 증명을 사용하여 빌드의 출처 설정을 참조하세요.
아티팩트에 증명이 필요하지 않거나 배포 레코드 또는 추가 스토리지 메타데이터를 업로드하려는 경우 다음 섹션을 참조하세요.
JFrog 통합 사용
이 양방향 통합은 GitHub의 스토리지 레코드를 JFrog의 아티팩트로 최신 상태로 자동으로 유지합니다. 예를 들어 GitHub에서 만든 증명은 JFrog에 자동으로 업로드되고 JFrog에서 프로덕션으로 아티팩트를 승격하면 GitHub의 레코드에 프로덕션 컨텍스트가 자동으로 추가됩니다.
설치 지침은 JFrog 설명서에서 JFrog Artifactory 및 GitHub 통합 시작 을 참조하세요.
REST API 사용
증명할 필요가 없으며 JFrog에 저장되지 않은 아티팩트의 경우 아티팩트 메타데이터 스토리지 레코드 API 엔드포인트 만들기를 사용하여 사용자 지정 통합을 만들 수 있습니다. 선택한 패키지 리포지토리에 아티팩트가 게시될 때마다 엔드포인트를 호출하도록 시스템을 구성해야 합니다.
참고
GitHub github_repository 의 출처 증명과 아티팩트가 연결되지 않은 경우 매개 변수는 필수입니다.
배포 기록 업로드하기
**Microsoft Defender for Cloud (MDC)** 에 아티팩트를 저장하면 linked artifacts page와 자동으로 연동하여 데이터를 동기화할 수 있습니다. 그렇지 않으면 **REST API**와 사용자 지정 통합을 설정해야 합니다.
클라우드용 Microsoft Defender 통합 사용
MDC 인스턴스를 GitHub 조직에 연결할 수 있습니다. MDC은(는) 배포 및 런타임 데이터를 GitHub에 자동으로 보냅니다.
설치 지침에 대한 자세한 내용은 MDC 설명서의 빠른 시작: GitHub 환경을 Microsoft Defender for Cloud에 연결하기를 참조하세요.
참고
Microsoft Defender for Cloud과의 통합은 공개 미리 보기 단계에 있으며 변경될 수 있습니다.
REST API 사용
[아티팩트 배포 레코드 만들기](/rest/orgs/artifact-metadata#create-an-artifact-deployment-record) API 엔드포인트를 사용하면 시스템에서 특정 아티팩트용 배포 데이터를 GitHub(예: 이름, 다이제스트, 환경, 클러스터 및 배포)로 보낼 수 있습니다. 아티팩트가 새 스테이징 또는 프로덕션 환경에 배포될 때마다 이 엔드포인트를 호출해야 합니다.
참고
GitHub github_repository 의 출처 증명과 아티팩트가 연결되지 않은 경우 매개 변수는 필수입니다.
업로드 확인
레코드가 성공적으로 업로드되었는지 확인하려면 조직 설정에서 업데이트된 아티팩트를 볼 수 있습니다. linked artifacts page에서 조직의 빌드를 감사하기을(를) 참조하세요.
원치 않는 레코드 제거
linked artifacts page에서 아티팩트를 삭제할 수 없습니다. 그러나 아티팩트의 상태를 반영하도록 스토리지 레코드 또는 배포 레코드를 업데이트할 수 있습니다. linked artifacts page에서 아티팩트를 제거하기을(를) 참조하세요.
GitHub Actions 예제
아티팩트를 빌드하고 게시하는 데 사용하는 것과 동일한 워크플로에서 linked artifacts page에 데이터를 업로드할 수 있습니다.
증명 생성
다음 예제에서는 Docker 이미지를 빌드하고 게시한 다음, 다음 단계의 ${{ steps.push.outputs.digest }} 출력을 사용하여 출처 증명을 생성합니다.
작업이 attest-build-provenance 설정되면 linked artifacts page push-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-build-provenance@v3
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
다음 단계
데이터를 업로드한 후에는 조직의 팀이 스토리지 및 배포 데이터의 컨텍스트를 사용하여 보안 경고의 우선 순위를 지정할 수 있습니다. 프로덕션 컨텍스트를 사용하여 Dependabot 및 코드 검사 경고 우선 순위 지정을(를) 참조하세요.