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