프로젝트 소개

Fence는 GitHub 호스팅 Linux 워크플로 작업에서 원치 않는 네트워크 접근을 줄이고 일반적인 탈출 경로를 약화하기 위한 GitHub Action입니다. 이 프로젝트는 초기 단계이며 활발히 개발 중이라고 설명됩니다. 지원 환경은 ubuntu-24.04 또는 ubuntu-latest를 사용하는 GitHub 호스팅 x64 러너입니다. 첫 번째 작업 단계로 배치하면 Fence는 GitHub Actions와 호스팅 러너에 필요한 연결 및 허용 목록에 명시적으로 구성된 대상은 허용하고, 그 외 아웃바운드 연결은 차단합니다. 또한 기본적으로 비밀번호 없는 sudo와 Docker 또는 컨테이너 접근을 끕니다. 보호는 작업이 끝날 때까지 활성 상태로 유지되며, Fence가 제어에 대한 예상치 못한 변경을 감지하면 작업이 실패할 수 있습니다. 허용 목록은 호스트 이름, IPv6 주소, 사용자 지정 TCP 및 UDP 포트, CIDR 범위, 1단계 또는 2단계 호스트 이름 와일드카드를 지원합니다. 호스트 이름만 지정하면 기본적으로 TCP 포트 443이 적용되며, 허용 목록에는 최대 64개의 고유 항목이 포함될 수 있습니다. 감사 모드는 네트워크, sudo 또는 Docker 제한을 적용하지 않고 Fence가 차단할 항목을 기록하므로, 차단 모드로 전환하기 전에 허용 목록을 도출하는 데 도움이 됩니다. 선택적 설정으로는 Actions 아티팩트, GitHub Pages 및 캐시에서 사용하는 스토리지 엔드포인트에 제한적으로 접근하기 위한 allow_github_artifacts와 Docker가 필요한 작업을 위한 container_policy: unsafe_preserve가 있습니다. 문서는 두 옵션 모두 데이터 유출 또는 격리 위험을 높일 수 있다고 경고합니다. Fence는 또한 네트워크 활동 표를 작업 요약과 작업 후 로그에 기록하며, GitHub 작업 로그 API를 통해 사용할 수 있는 기계 판독 가능한 FENCE_REPORT_JSON 줄도 포함합니다. Fence는 완전한 샌드박스로 제시되지 않습니다. 필요한 GitHub 및 Azure 연결은 계속 사용할 수 있고, Azure Instance Metadata Service는 계속 접근 가능하며, Azure WireServer 접근은 root 소유 호스트 프로세스로 제한됩니다. 보안 지침은 main을 사용하는 대신 게시된 릴리스의 전체 커밋 SHA에 Action을 고정할 것을 권장합니다. Fence는 MIT License로 배포됩니다.