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 통합 사용

이 양방향 통합은 JFrog의 GitHub 아티팩트에서 스토리지 레코드를 최신 상태로 자동으로 유지합니다. 예를 들어, GitHub에서 만든 증명서는 자동으로 JFrog에 업로드되며, JFrog에서 아티팩트를 프로덕션에 배포하면, 프로덕션 컨텍스트가 GitHub 기록에 자동으로 추가됩니다.

설치 지침은 JFrog 설명서에서 Get Started with JFrog Artifactory and GitHub Integration을 참조하세요.

REST API 사용

증명할 필요가 없으며 JFrog에 저장되지 않은 아티팩트의 경우 아티팩트 메타데이터 스토리지 레코드 API 엔드포인트 만들기를 사용하여 사용자 지정 통합을 만들 수 있습니다. 선택한 패키지 리포지토리에 아티팩트가 게시될 때마다 엔드포인트를 호출하도록 시스템을 구성해야 합니다.

참고

아티팩트가 출처 증명 GitHubgithub_repository 과 연결되지 않은 경우 매개 변수는 필수입니다.

배포 기록 업로드하기

Dynatrace 또는 Microsoft Defender for Cloud (MDC)를 사용하여 배포된 워크로드를 모니터링할 수 있으며, 통합을 통해 배포 데이터를 linked artifacts page에 자동으로 동기화할 수 있습니다. 그렇지 않으면 REST API와 사용자 지정 통합을 설정해야 합니다.

Dynatrace 통합 사용

Dynatrace에서 모니터링하는 Kubernetes 환경에서 실행되는 컨테이너 이미지에 대한 배포 레코드를 GitHub로 전송하도록 Dynatrace를 구성할 수 있습니다. Dynatrace는 배포된 이미지를 리포지토리에 매핑한 다음 런타임 컨텍스트를 보고합니다.

또한 Dynatrace의 배포 레코드에는 다음과 같은 런타임 위험 컨텍스트가 포함될 수 있습니다.

  • 공용 인터넷 노출
  • 중요한 데이터 액세스

조직 수준 경고 필터링 및 보안 캠페인에서 이 컨텍스트를 사용하여 인터넷에 노출되거나 중요한 데이터 워크로드에 영향을 주는 경고에 대한 수정의 우선 순위를 지정할 수 있습니다.

설치 지침은 Dynatrace 설명서에서 보안 통합 - 시작하기를 참조GitHub Advanced Security하세요.

클라우드용 Microsoft Defender 통합 사용

          MDC 인스턴스를 GitHub 조직에 연결할 수 있습니다. 
          MDC 는 배포 및 런타임 데이터를 자동으로 전송합니다 GitHub.

설치 방법에 대해서는 빠른 시작하기: GitHub 환경을 Microsoft Defender for Cloud에 연결하는 방법을 설명한 MDC 문서를 참조하십시오.

참고

          Microsoft Defender for Cloud와의 통합이 공개 미리 보기에서 진행 중이며 변경될 수 있음.

REST API 사용

          [아티팩트 배포 레코드 만들기](/rest/orgs/artifact-metadata#create-an-artifact-deployment-record) API 엔드포인트를 사용하면 시스템에서 이름, 다이제스트, 환경, 클러스터 및 배포와 같은 특정 아티팩GitHub트용 배포 데이터를 보낼 수 있습니다. 아티팩트가 새 스테이징 또는 프로덕션 환경에 배포될 때마다 이 엔드포인트를 호출해야 합니다.

참고

아티팩트가 출처 증명 GitHubgithub_repository 과 연결되지 않은 경우 매개 변수는 필수입니다.

업로드 확인

레코드가 성공적으로 업로드되었는지 확인하려면 조직 설정에서 업데이트된 아티팩트를 볼 수 있습니다. linked artifacts page에서 조직의 빌드를 감사하기을(를) 참조하세요.

원치 않는 레코드 제거

          linked artifacts page에서 아티팩트를 삭제할 수 없습니다. 그러나 아티팩트의 상태를 반영하도록 스토리지 레코드 또는 배포 레코드를 업데이트할 수 있습니다. 
          [AUTOTITLE](/code-security/how-tos/secure-your-supply-chain/establish-provenance-and-integrity/remove-linked-artifacts)을(를) 참조하세요.

          GitHub Actions 예제

아티팩트를 linked artifacts page 빌드하고 게시하는 데 사용하는 것과 동일한 워크플로에서 데이터를 업로드할 수 있습니다.

증명 생성

다음 예제에서는 Docker 이미지를 빌드하고 게시한 다음, 다음 단계의 ${{ steps.push.outputs.digest }} 출력을 사용하여 출처 증명을 생성합니다.

          `attest` 작업을 설정하고 `push-to-registry: true`가 설정되며 워크플로에 `artifact-metadata: write` 사용 권한이 포함되어 있을 때, 스토리지 레코드가 linked artifacts page에 자동으로 업로드됩니다.

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

다음 단계

데이터를 업로드한 후에는 조직의 팀이 스토리지 및 배포 데이터의 컨텍스트를 사용하여 보안 경고의 우선 순위를 지정할 수 있습니다. 프로덕션 컨텍스트를 사용하여 Dependabot 및 코드 검사 경고 우선 순위 지정을(를) 참조하세요.