
보안 정책을 설정하고 시행하는 GitHub 앱
[!IMPORTANT] OpenSSF가 호스팅하는 Allstar GitHub App은 더 이상 제공되지 않습니다. OpenSSF Scorecard 하위 프로젝트인 Allstar 자체는 계속 유지 관리되며, 이제 직접 실행해야 합니다. GitHub Action으로 실행하거나 서비스 데몬으로 실행할 수 있습니다.
자세한 내용은 ossf/allstar#881을 참조하세요.
조직에서 호스팅 앱을 사용 중이었다면 호스팅 앱에서 마이그레이션을 참조하세요.
Allstar는 GitHub 조직 또는 저장소의 보안 모범 사례 준수 여부를 지속적으로 모니터링하는 GitHub App입니다. Allstar가 보안 정책 위반을 감지하면 저장소 또는 조직 소유자에게 알리기 위해 이슈를 생성합니다. 일부 보안 정책의 경우 Allstar는 위반을 유발한 프로젝트 설정을 자동으로 변경하여 예상 상태로 되돌릴 수도 있습니다.
Allstar의 목표는 프로젝트 보안에 영향을 미치는 파일과 설정을 세밀하게 제어할 수 있도록 하는 것입니다. 조직 및 저장소 수준에서 모니터링할 보안 정책을 선택하고 정책 위반을 처리하는 방법을 결정할 수 있습니다. 또한 새로운 정책을 개발하거나 기여할 수도 있습니다.
Allstar는 OpenSSF Scorecard 프로젝트의 일부로 개발되었습니다.
Allstar가 만든 원치 않는 이슈가 발생하는 경우 이 지침에 따라 옵트아웃하세요.
Allstar는 매우 유연하게 구성할 수 있습니다. 제어 수준은 크게 세 가지입니다:
이러한 구성은 조직의 .allstar 저장소에서 수행됩니다.
저장소 수준: Allstar를 사용하는 조직의 저장소 유지관리자는
저장소를 조직 수준의 적용 대상에 옵트인하거나 옵트아웃할 수 있습니다.
참고: 이러한 저장소 수준 제어는 조직 수준 설정에서 "저장소
재정의"가 허용된 경우에만 작동합니다. 이러한 구성은 저장소의
.allstar 디렉터리에서 수행됩니다.
정책 수준: 관리자 또는 유지관리자는 특정 저장소에서 활성화할
정책과 정책 위반 시 Allstar가 수행할 작업을 선택할 수 있습니다.
이러한 구성은 조직의 .allstar 저장소(관리자) 또는 저장소의
.allstar 디렉터리(유지관리자)에 있는 정책 yaml 파일에서 수행됩니다.
조직 수준에서 Allstar를 설치하기 전에 Allstar를 실행할 저장소 수를 대략적으로 결정해야 합니다. 이는 옵트인(Opt-In) 전략과 옵트아웃(Opt-Out) 전략 중에서 선택하는 데 도움이 됩니다.
옵트인 전략을 사용하면 Allstar를 실행할 저장소를 수동으로 추가할 수 있습니다. 저장소를 지정하지 않으면 설치되어 있어도 Allstar는 실행되지 않습니다. 전체 저장소 중 소수에만 정책을 적용하려는 경우 또는 더 많은 저장소에 활성화하기 전에 단일 저장소에서 Allstar를 시험해 보려는 경우 옵트인 전략을 선택하세요. v4.3 릴리스부터 유사한 이름의 여러 저장소를 쉽게 추가할 수 있도록 glob이 지원됩니다.
옵트아웃 전략(권장)은 모든 저장소에서 Allstar를 활성화하고 Allstar 적용에서 제외할 저장소를 수동으로 선택할 수 있게 합니다. 또한 모든 공개 저장소 또는 모든 비공개 저장소를 옵트아웃하도록 선택할 수도 있습니다. 조직의 모든 저장소에서 Allstar를 실행하려는 경우 또는 소수의 저장소나 특정 유형(예: 공개 vs 비공개)의 저장소만 옵트아웃하려는 경우 이 옵션을 선택하세요. v4.3 릴리스부터 유사한 이름의 여러 저장소를 쉽게 추가할 수 있도록 glob이 지원됩니다.
| 옵트아웃 (권장) optOutStrategy = true |
옵트인 optOutStrategy = false |
|
|---|---|---|
| 기본 동작 | 모든 저장소가 활성화됨 | 활성화된 저장소 없음 |
| 저장소 수동 추가 | 저장소를 수동으로 추가하면 해당 저장소에서 Allstar가 비활성화됨 | 저장소를 수동으로 추가하면 해당 저장소에서 Allstar가 활성화됨 |
| 추가 구성 | optOutRepos: 나열된 저장소에서 Allstar가 비활성화됨 optOutPrivateRepos: true이면 모든 비공개 저장소에서 Allstar가 비활성화됨 optOutPublicRepos: true이면 모든 공개 저장소에서 Allstar가 비활성화됨 (optInRepos: 이 설정은 무시됨) |
optInRepos: 나열된 저장소에서 Allstar가 활성화됨 (optOutRepos: 이 설정은 무시됨) |
| 저장소 재정의 | true인 경우: 저장소는 자체 저장소 파일의 설정을 사용하여 조직의 Allstar 적용에서 옵트아웃할 수 있습니다. 해당 저장소에 적용되는 조직 수준 옵트인 설정은 무시됩니다. false인 경우: 저장소는 조직 수준에서 구성된 Allstar 적용에서 옵트아웃할 수 없습니다. |
true인 경우: 저장소는 조직 수준에서 구성되지 않았더라도 조직의 Allstar 적용에 옵트인할 수 있습니다. 해당 저장소에 적용되는 조직 수준 옵트아웃 설정은 무시됩니다. false인 경우: 저장소는 조직 수준에서 구성되지 않은 경우 Allstar 적용에 옵트인할 수 없습니다. |
Allstar는 GitHub App으로 조직에서 작동합니다. 앱을 만들고 해당 앱으로 인증하는 프로세스를 직접 실행합니다. 따라서 모든 배포에 공통적인 두 단계 설정이 필요합니다 — 앱 만들기와 제어 저장소 만들기 — 그리고 실행 방법을 선택합니다:
| GitHub Action | 서비스 데몬 | |
|---|---|---|
| 실행 방식 | .allstar 저장소의 예약 작업 | 직접 호스팅하는 상주 프로세스 |
| 제공 항목 | GitHub 외에는 없음 | 서버 또는 컨테이너 오케스트레이터 |
| 주기 | cron으로 설정한 대로 | 연속 실행, 5-10분 내 결과 확인 |
| 설정 노력 | 보통 | 높음 |
| 적합한 경우 | 최소 인프라 옵션을 원할 때 | 최대 제어를 원하거나 이미 서비스를 운영 중일 때 |
Action은 두 옵션 중 오버헤드가 낮으며 대부분의 조직이 시작하기에 적합합니다. 나중에 정책 구성을 변경하지 않고 데몬으로 전환할 수 있습니다.
App은 조직에서 일련의 권한을 가진 사용자와 유사한 ID입니다. Allstar는
규정 준수를 감지하기 위해 대부분의 설정과 파일 내용에 대한 읽기 권한이
필요하며, 이슈를 제기하고 block 작업을 지원하기 위해 이슈 및 검사에
대한 쓰기 권한이 필요합니다.
운영자 지침 - GitHub App 만들기를 따르고 App ID와 개인 키를 기록해 두세요. 두 실행 모드 모두 필요합니다.
.allstar 제어 저장소 만들기Allstar는 조직의 .allstar라는 저장소에서 구성을 읽습니다.
가장 빠른 생성 방법은 샘플을 사용하는 것입니다:
.allstar 입력이렇게 하면 옵트아웃 전략과 issue 작업을 사용하여 모든 저장소에서 현재
모든 Allstar 정책이 활성화됩니다. 이후 언제든지 변경할 수
있습니다.
처음부터 세밀한 제어가 필요한 경우 — 옵트인 또는 옵트아웃 전략을 선택하고 정책 파일을 직접 작성 — 수동 설치 지침을 대신 따르세요.
이 옵션은 GitHub Actions를 사용하여 예약 작업으로 Allstar를 실행하므로 GitHub 자체 외에 운영할 인프라가 없습니다.
GitHub Actions 설치 지침에 따라 .allstar
저장소에서 반복 Action을 설정하고 강화한 다음 결과를 모니터링하세요.
이 옵션은 Allstar를 상주 프로세스로 실행하여 일정이 아닌 지속적으로 위반을 감지하고 해결합니다.
프로세스 실행, 비밀 관리, 크기 조정 및 사용 가능한 환경 변수에 대한 자세한 내용은 운영자 지침을 참조하세요.
조직에서 OpenSSF 호스팅 앱을 사용 중이었다면 구성이 그대로 유지됩니다.
.allstar 제어 저장소, allstar.yaml 및 모든 정책 파일은 변경 없이 계속
작동합니다. 교체되는 것은 이를 읽는 프로세스뿐입니다.
마이그레이션하려면:
.allstar 저장소를 그대로 유지합니다.allstar-app을 제거합니다(설정 -> GitHub Apps에 여전히
표시되는 경우).호스팅 앱이 이전에 제기한 이슈는 저장소에 남아 있습니다. 자체 인스턴스는
동일한 allstar 레이블(또는 구성된 issueLabel)로 이슈를 식별하므로
위반이 해결됨에 따라 중복을 제기하지 않고 해당 이슈를 인수하여 닫습니다.
각 정책은 Allstar가 저장소가 규정을 위반한 것으로 감지할 때 수행할 작업으로 구성할 수 있습니다.
log: 기본 작업이며 실제로 모든 작업에 대해 수행됩니다. 모든 정책 실행
결과와 세부 정보가 기록됩니다. 로그는 현재 앱 운영자에게만 표시되며,
이를 공개하는 계획은 논의 중입니다.issue: 이 작업은 GitHub 이슈를 생성합니다. 정책당 하나의 이슈만
생성되며 텍스트는 정책 위반의 세부 정보를 설명합니다. 이슈가 이미 열려
있으면 업데이트 없이 24시간마다 댓글로 알림이 전송됩니다(현재 사용자
구성 불가). 정책 결과가 변경되면 이슈에 새 댓글이 남고 이슈 본문에
연결됩니다. 위반이 해결되면 Allstar가 5-10분 내에 이슈를 자동으로
닫습니다.fix: 이 작업은 정책별로 다릅니다. 정책은 GitHub 설정을 변경하여 정책
위반을 수정합니다. 모든 정책이 이를 지원할 수 있는 것은 아닙니다(아래
참조).제안되었지만 아직 구현되지 않은 작업입니다. 정의는 향후 추가될 예정입니다.