Brett Cannon: GitHub Actions를 ... 노트

Brett Cannon: GitHub Actions를 사용하여 PyPI에 안전하게 게시하는 방법

GitHub Actions 워크플로우와 관련된 최근 보안 사고는 게시 프로세스에서 잠재적인 취약점이 될 수 있음을 강조합니다. 이 게시물은 GitHub Actions를 사용하여 안전한 PyPI 게시를 위한 세 가지 완화 전략을 제공합니다. 이 조언은 빌드가 아닌 게시만을 위한 것이며, 각각에 대해 별도의 워크플로우를 사용하는 것이 권장된다는 점을 강조합니다.첫 번째 단계는 zizmor 도구를 사용하여 GitHub Actions 워크플로우의 안전하지 않은 기본 설정을 식별하고 수정하는 것입니다. 여기에는 zizmor를 실행하여 문제를 자동으로 수정하고 나머지 문제는 수동으로 해결하는 것이 포함됩니다. zizmor가 플래그를 지정하는 세 가지 일반적인 문제는 지나치게 광범위한 기본 권한, checkout 후 자격 증명 유지, 액션을 특정 커밋 해시에 고정하지 않는 것입니다.광범위한 권한을 처리하려면 전역 권한을 비워두고 작업 수준 권한을 명시적으로 지정합니다. checkout 액션의 경우 persist-credentials를 false로 설정하여 자격 증명 유출을 방지합니다. 태그 대신 커밋 해시에 액션을 고정하면 해당 태그에 대한 악의적인 코드 업데이트를 통한 손상을 방지할 수 있습니다. gha-update, zizmor 또는 Pinact와 같은 도구를 사용하여 이 고정 프로세스를 자동화할 수 있습니다.두 번째 핵심 전략은 zizmor를 CI 파이프라인에 통합하는 것입니다. 이렇게 하면 보안 문제가 비공개 코드 스캔 결과로 보고되어 점진적인 복구를 위한 체크리스트를 제공합니다. 세 번째이자 마지막 권장 단계는 PyPI에 대한 Trusted Publishing을 구현하는 것입니다. 이렇게 하면 API 토큰을 관리할 필요가 없어지고 GitHub의 보안 인프라를 활용할 수 있습니다.Trusted Publishing을 설정할 때 GitHub 환경을 구성하는 것이 중요합니다. 이 환경 내에서 게시 워크플로우에 대한 검토자를 요구하면 중요한 승인 게이트가 추가됩니다. 이 승인 프로세스는 자신의 승인일지라도 실수로 또는 악의적으로 릴리스가 트리거되는 것을 방지합니다. 이 세 가지 단계는 GitHub Actions를 통해 PyPI에 게시하는 보안을 크게 향상시킵니다.
CdXz5zHNQW_Sp7hMh7V4c.png