Skip to main content

GitHub Actions의 Dependabot

Dependabot와 GitHub Actions를 사용할 때의 자세한 정보입니다.

Dependabot이 이벤트를 트리거하는 때의 제한 사항

Dependabot은 끌어오기 요청 및 댓글에서 GitHub Actions 워크플로를 트리거할 수 있지만 다른 방식으로 처리되는 이벤트도 있습니다.

          `github.actor == 'dependabot[bot]'`, `pull_request`, `pull_request_review`, `pull_request_review_comment`, `push`, `create` 및 `deployment` 이벤트를 사용하여 Dependabot (`deployment_status`)에서 시작된 워크플로의 경우 다음 제한이 적용됩니다.

* GITHUB_TOKEN에는 기본 설정으로 읽기 전용 권한이 부여되어 있습니다.

  • 비밀은 Dependabot의 비밀로부터 채워집니다. GitHub Actions 비밀을 사용할 수 없습니다.

Dependabot(github.actor == 'dependabot[bot]')에서 pull_request_target 이벤트를 사용하여 시작한 워크플로의 경우 끌어오기 요청의 기본 ref가 Dependabot(github.event.pull_request.user.login == 'dependabot[bot]')에 의해 만들어졌다면 GITHUB_TOKEN은 읽기 전용이며 비밀을 사용할 수 없습니다.

이러한 제한 사항은 워크플로가 다른 행위자에 의해 다시 실행되는 경우에도 적용됩니다.

자세한 내용은 GitHub Actions 및 워크플로의 보안 유지: pwn 요청 방지하기에서 확인할 수 있습니다.

셀프 호스팅 러너에서 Dependabot를 사용하기 위한 요구 사항

셀프 호스팅 러너를 사용하여 Dependabot updates를 생성하려면 시스템, 네트워크, 인증서를 올바르게 구성해야 합니다.

시스템 요구 사항

Dependabot 실행기에서 사용하는 모든 가상 머신(VM)은 자체 호스트된 실행기 요구 사항을 충족해야 합니다. 또한 다음 요구 사항을 충족해야 합니다.

  • Linux 운영 체제

  • x64 아키텍처

  • 실행기 사용자에 대한 액세스 권한이 있는 설치된 Docker:

    • 루트리스 모드에서 Docker를 설치하고 root 권한 없이 Docker에 액세스하도록 실행기를 구성하는 것이 좋습니다.
    • 또는 Docker를 설치하고 실행기 사용자에게 Docker를 실행할 수 있는 권한을 부여합니다.

CPU 및 메모리 요구 사항은 지정된 VM에 배포하는 동시 실행기 수에 따라 달라집니다. 지침에 따라 2개 CPU 8GB 단일 컴퓨터에 20개의 실행기를 성공적으로 설정했지만 궁극적으로 CPU 및 메모리 요구 사항은 업데이트되는 리포지토리에 따라 크게 달라집니다. 일부 에코시스템에는 다른 에코시스템보다 더 많은 리소스가 필요합니다.

VM에서 14개 이상의 동시 실행기를 지정하는 경우 Docker /etc/docker/daemon.json 구성을 업데이트하여 Docker에서 만들 수 있는 기본 네트워크 수를 늘려야 합니다.

{
  "default-address-pools": [
    {"base":"10.10.0.0/16","size":24}
  ]
}

네트워크 요구 사항

Dependabot 실행기는 퍼블릭 인터넷, GitHub.com, 그리고 Dependabot updates 업데이트에 사용될 모든 내부 레지스트리에 액세스할 수 있어야 합니다. 내부 네트워크에 대한 위험을 최소화하려면 VM(가상 머신)에서 내부 네트워크로의 액세스를 제한해야 합니다. 이렇게 하면 실행기에서 하이재킹된 종속성을 다운로드하는 경우 내부 시스템이 손상될 가능성이 줄어듭니다.

또한 Dependabot security updates에 대한 작업이 실패하지 않도록 dependabot-actions.githubapp.com 아웃바운드 트래픽을 허용해야 합니다. 자세한 내용은 자체 호스팅 실행기 참조을(를) 참조하세요.

인증서 구성

Dependabot이 자체 서명된 인증서를 사용하는 레지스트리와 상호 작용해야 한다면 Dependabot 작업을 실행하는 자체 호스팅 실행기에도 해당 인증서를 설치해야 합니다. 이 보안 기능은 연결 상태를 더욱 강력하게 만들어 줍니다. 대부분의 작업은 JavaScript로 작성되고 운영 체제 인증서 저장소를 사용하지 않는 Node.js를 통해 실행되므로, Node.js가 인증서를 사용하도록 구성해야 합니다.