Commit에서 Commit to Production에서 안전하고 추적 가능한 빌드를 위해 Github 및 JFrog 통합 사용 방법

Commit에서 Commit to Production에서 안전하고 추적 가능한 빌드를 위해 Github 및 JFrog 통합 사용 방법

오늘 우리는 소스 코드와 입증 된 바이너리를 하나의 안전하고 추적 가능한 워크 플로로 연결하는 Github과 JFrog 사이의 새로운 통합을 소개합니다.

종종 여러 도구 사이를 점프하여 어떤 유물이 생산 된 커밋을 파악하거나 코드 및 바이너리에 대한 별도의 보안 스캔 결과를 파악하는 데 도움이되는 개발자의 경우이 통합은 시간과 노력을 절약하여 한곳에서 필요한 모든 것을 중앙 집중화 할 수 있습니다.

아래에서 GitHub 및 JFrog 통합이 중요한 이유, 작동 방식 및 오늘날 사용 방법을 파헤칩니다.

https://www.youtube.com/watch?v=dh15vd6rpyq

Github 및 JFrog 통합을 구축 한 이유

현대 소프트웨어 제공은 공급망입니다. 소스 코드, 구축 파이프 라인 및 생산 아티팩트는 해당 체인의 링크이며 모든 링크는 안전하고 추적 가능하며 자동화되어야합니다. 마찬가지로, 약한 링크는 나쁜 행위자가 개인적이고 안전 해야하는 데이터에 액세스 할 수있는 지점입니다.

그러나이 완전한 공급망을 안전하게 유지하는 것은 수많은 (그리고 지속적으로 성장하는) 책임을 가진 개발자에게는 어려운 일입니다. 우리가 규모로 선적 팀과 이야기를 나눌 때, 우리는 동일한 고통을 계속 들었습니다.

  • “빌드가 Github를 떠나면 추적 성을 잃습니다.”
  • “보안 스캔은 여러 시스템으로 분리되며 결과를 수동으로 조정해야합니다.”
  • “우리의 CI/CD 파이프 라인은 매끄러운 대신 함께 꿰매는 느낌입니다.”

이러한 문제를 해결하기 위해 JFROG의 엔지니어와 긴밀히 협력하여 빌드를 트리거하는 커밋이 제작 된 아티팩트와 암호화 적으로 연결되어 있고 보안 스캔이 자동으로 그리고 맥락에서 발생하는 워크 플로우를 설계합니다. JFROG 증거에 위치한 취약성 스캔 증명을 제공하고, 공개적으로 인공물을 발표하고 발행하는 인공물을 발행하고, 단순히 협력하는 것입니다.

우리의 목표 : 마찰을 제거하고 위험을 줄이며 개발자에게 핸드 오프를 관리하는 대신 기능을 구축하는 데 더 많은 시간을 할애합니다.

우리가 오늘 발표 한 통합은 당신을 허용하는 완벽한 경험을 잠금 해제합니다.

  • 통합 보안 스캔을 실행하고 JFROG의 생산 컨텍스트를 기반으로 Dependabot 경보 우선 순위를 정합니다.
  • 유물을 게시하고 홍보합니다 인공 승진의 정책 기반 게이팅 사용.
  • 자동으로 Github (Provenance, SBOM, Custom Assistations)에서 JFROG 증거로 섭취하고 Build Artifact와 관련된 모든 증명서가 있습니다.

작동 방식은 다음과 같습니다

통합은 GitHub의 개발자 플랫폼을 안전한 인증 및 빌드 메타 데이터를 사용하여 JFROG의 소프트웨어 공급망 플랫폼과 연결합니다.

흐름은 다음과 같습니다.

  1. 코드를 Github로 푸시하십시오.
  2. GitHub 작업으로 구축 및 테스트.
  3. 전체 수명주기 가시성을위한 링크 커밋, 빌드 및 아티팩트.
  4. 아티팩트를 인공물에 자동으로 게시하십시오.
  5. GitHub 고급 보안 및 Jfrog Xray를 사용한 아티팩트로 코드를 스캔하십시오.
GitHub 및 JFrog 통합을 보여주는 다이어그램.

설정

  1. 관리 → 일반 관리 → 통합 관리 → GitHub를 탐색하여 JFROG 인공물에 GitHub 통합을 활성화합니다. “GitHub 작업 활성화”를 전환하고 GitHub 조직을 인증하십시오. 토큰 유형을 선택하십시오. 그런 다음 풀 요청을 만듭니다.
JFROG 인공물 통합 화면.
  1. GitHub Action 워크 플로의 빌드를 트리거하여 아티팩트를 구축하고 증명을 생성합니다. GitHub 작업 워크 플로가 ‘JFrog/JFrog-Setup-Cli’및 ‘Action/Assest-Build Provenance’동작을 사용하고 있는지 확인하십시오.
- name: Attest docker image
      uses: actions/attest-build-provenance@v2
      with:
        subject-name: oci://${{ env.JF_REGISTRY }}/${{ env.IMAGE_NAME }}
        subject-digest: ${{ steps.build-and-push.outputs.digest }}

다음은 증명을 생성하고 인공물로 푸시하는 데 사용할 수있는 워크 플로의 예입니다.

name: Build, Test & Attest

on:
  push:
    branches: 
      - main
 

env:
  OIDC_PROVIDER_NAME: [...]
  JF_URL: ${{ vars.JF_URL }}
  JF_REGISTRY: ${{ vars.JF_REGISTRY }}
  JF_DOCKER_REPO: [...]
  IMAGE_NAME: [...]
  BUILD_NAME: [...]

jobs:
  build-test-deploy:
    runs-on: ubuntu-latest
    permissions:
        contents: read
        packages: write
        attestations: write  # Required for attestation
        id-token: write      # Added for OIDC token access
    
    steps:
    - name: Checkout code
      uses: actions/checkout@v5

    - name: Install JFrog CLI
      id: setup-jfrog-cli
      uses: jfrog/[email protected]
      env:
        JF_URL: ${{ env.JF_URL }}
      with:
        version: 2.78.8
        oidc-provider-name: ${{ env.OIDC_PROVIDER_NAME }}
      
    - name: Docker login
      uses: docker/login-action@v3
      with:
        registry: ${{ env.JF_REGISTRY }}
        username: ${{ steps.setup-jfrog-cli.outputs.oidc-user }}
        password: ${{ steps.setup-jfrog-cli.outputs.oidc-token }}

    - name: Set up Docker Buildx
      uses: docker/setup-buildx-action@v3

    - name: Build and push Docker image
      id: build-and-push
      uses: docker/build-push-action@v6
      with:
        context: .
        push: true
        tags: ${{ env.JF_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.run_number }}
        build-args: ${{ env.BUILD_ARGS }}

    - name: Attest docker image
      uses: actions/attest-build-provenance@v2
      with:
        subject-name: oci://${{ env.JF_REGISTRY }}/${{ env.IMAGE_NAME }}
        subject-digest: ${{ steps.build-and-push.outputs.digest }}
  1. 빌드가 실행되고 증명이 생성되면 아티팩트를 JFROG Artifactory Staging Repo로 밀어냅니다. 아티팩트는 이제 검증 될 준비가되었습니다.
개발자 환경에서의 증명에 대한 인공적 견해.
  1. 아티팩트가 검증되면 유효한 GitHub-Signed Provenance가 신뢰할 수있는 조건 (예 : 발행자, 리포지트, 워크 플로, 브랜치)과 일치하는지 확인하면 정책 통과에서 JFROG는 개발 환경에서 생산 환경으로 자동으로 증명을 홍보 할 수 있습니다.
  2. 아티팩트가 생산으로 홍보되었으므로 Dependabot은 소스 저장소를 계속 스캔하여 종속성 및 취약점을 찾고 있습니다. 중요한 CVE가 발견되면 관리자는 보안 위협에 대한 경고를 받게됩니다.
비판적 의존 경보의 관점.
  1. 생산에 대한 아티팩트에 대한 경고 및 취약점을 찾으려면 다음 태그로 필터링 할 수 있습니다. artifact-registry:jfrog-artifactory.

    이 통합이 활성화되면 Artifact 라이프 사이클 데이터는 Github의 새로운 아티팩트 메타 데이터 API를 사용하여 JFROG에서 GitHub로 자동으로 푸시됩니다. JFROG Artifactory에서 인공물이 생산으로 홍보되면 JFROG는 GitHub에게 프로모션에 대해 자동으로 알리므로 아티팩트가 새로운 Dependabot 필터로 수거되도록합니다.

JFROG 용 종속 데이터 필터.
  1. 경고가 확인되면 제안 된 종속성 업데이트를 사용하여 개선 될 수 있으며,이를 통해 새로운 출처로 재건 및 재배치 할 수 있습니다.

GitHub 및 Jfrog 인공물을 최대한 활용하려면 몇 가지 모범 사례가 있습니다.

  • OIDC를 사용하십시오 워크 플로에서 오래 지속되는 자격 증명을 피하기 위해.
  • 프로모션을 자동화하십시오 인공물에서는 Dev → Staging → Production에서 아티팩트를 이동합니다.
  • 보안 게이트를 일찍 설정하십시오 따라서 무인이거나 취약한 빌드는 결코 생산에이를 만들지 않습니다.
  • 인증서에서 레버리지 즉각적인 추적성에 대한 JFROG 증거에서.

다음은 무엇입니까

오늘 Github 및 JFrog 통합을 통해보다 안전하고 자동화되고 추적 가능한 소프트웨어 공급망을 구축 할 수 있습니다.

자세한 내용은 JFrog Integration Guide 및 GitHub 문서를 확인하십시오.

작성자가 작성했습니다

4 월 요호

April은 Github의 선임 개발자 옹호자 및 DevOps Practice Lead로, 응용 프로그램 변환 및 DevOps 작업 방식을 전문으로합니다. 그녀의 초점은 레거시 기술에서 서버리스 및 컨테이너로의 여정을 고객에게 데려가 코드가 먼저 오는 동시에 DevOps 관행을 최대한 활용할 수 있도록하는 것입니다.

4 월 여가 시간에 그녀는 야외 하이킹, 스키 또는 스쿠버 다이빙 시간을 보냅니다. 그녀는 또한 Ironman과 Half Ironman Triathlons에서 경쟁하는 트라이 애슬론자입니다.

출처 참조

Post Comment

당신은 놓쳤을 수도 있습니다