보안 기능은 Coroid의 GitHub 앱을 통해 작동합니다. 이 페이지에서는 보안 기능을 위해 해당 앱에 필요한 권한과Coroid Security검사 결과 보고서, GitHub에서 해당 검사를 필수로 요구하는 방법, 그리고 GitHub 자체의 보안 경고가 보안 기능에 표시되는 방식을 설명합니다.
권한
보안 기능은 저장소의 코드와 풀 리퀘스트를 읽고 검사 결과를 작성하기 위해 앱이 이미 보유한 권한을 사용합니다. 이러한 권한은 선택 사항이며 각각 다음과 같은 기능을 추가로 제공합니다:
| 권한 | 추가되는 기능 | 해당 권한이 없을 경우 |
|---|---|---|
| 병합 대기열: 읽기 전용 접근, 병합 그룹 이벤트 포함 | Coroid Security병합 대기열 커밋에 적용됨 | 병합 대기열에는 결과가 제공되지 않습니다.Coroid Security결과 |
| Dependabot 경고: 읽기 전용 접근, 해당 이벤트 포함 | Dependabot 경고를 가져옵니다. | 가져오지 않음 |
| 코드 스캐닝 경고: 읽기 전용 접근, 해당 이벤트 포함 | GitHub 코드 스캐닝 경고를 가져옵니다. | 가져오지 않음 |
| 비밀번호 스캔 경고: 읽기 전용 접근, 해당 이벤트 포함 | GitHub 비밀번호 스캔 경고를 가져오며, 비밀번호 값은 제외됩니다. | 가져오지 않음 |
앱이 새로운 권한을 요청하면, GitHub는 조직 소유자에게 해당 설치에 대한 권한 승인을 요청합니다. 승인이 완료되기 전까지는 보안 기능의 개요 페이지에 해당 권한이 없는 저장소가 표시되며, GitHub의 설치 페이지로 연결되는 링크도 함께 제공됩니다.
Coroid는 또한 각 저장소가 공개 저장소인지 비공개 저장소인지를 GitHub의 이벤트 정보와 GitHub에 직접 문의하여 확인하며, 이를 바탕으로 해당 저장소에 어떤 내용을 게시할 수 있는지 결정합니다. 자세한 내용은공개 정책.
Coroid 보안 검사
Coroid Security이 검사는 하나의 이름을 가진 단일 검사로, 단독으로 실행되든 품질 관리 과정의 배포 그래프 일부로 실행되든 상관없이 저장소에서 한 번만 필수로 요구할 수 있습니다. 이 검사는 각 변경 사항을 검증하는 보호 기능인 취약한 종속성과 유출된 비밀번호를 보고하며, 둘 중 더 심각한 결과가 최종 판정으로 적용됩니다. 코드 스캐닝 결과는 품질 관리의 검사 항목을 통해 보고되고, 보안 리뷰 결과는 Coroid 리뷰 검사를 통해 확인할 수 있습니다.
이 검사는 앱을 통해 연결된 GitHub 저장소에서 실행됩니다:
- pull request가 열리거나 다시 열리거나 업데이트되거나 리뷰 준비 완료로 표시될 때;
- 병합 대기열 커밋 시, 병합 대기열 권한이 필요합니다;
- GitHub에서 사용자가 직접 재실행을 요청할 때.
이벤트가 발생하는 즉시 진행 중 상태로 표시되며, 상세 정보 링크를 클릭하면 보안 기능 내의 프로젝트 페이지로 이동합니다.
보고 내용
| 상태 | 강제 적용 | 모니터링 전용 |
|---|---|---|
| 변경 사항에 대한 완전한 커버리지가 확보되고 임계값 이상의 문제가 없음 | 성공 | 성공 |
| 임계값 이상의 문제가 발견됨 | 실패 | 중립, 해당 사유 명시 |
| 스캔이 실패했거나 실행할 수 없었으며, 변경 사항이 적용된 파일의 커버리지가 부분적이거나 설정 값을 읽을 수 없었음 | 실패, 원인과 재실행 방법 안내 | 중립, 그 이유 설명 |
| 10분 내에 결과가 나오지 않음 | 실패, '시간 초과'로 처리 | 중립 |
| 프로젝트에 대한 모든 보호 기능이 비활성화됨 | 중립 | 중립 |
이 검사는 절대 '건너뛰기' 상태가 되지 않습니다: GitHub는 건너뛴 필수 검사를 통과로 간주하므로, 실행되지 않은 강제 적용 보호 기능도 통과로 인식됩니다. 필수 검사는 항상 위에 언급된 결과 중 하나를 반환하므로 병합 대기열이 무한히 대기하는 일은 발생하지 않습니다.
이 검사는 기존 브랜치에 이미 존재하는 문제가 아닌 변경 사항에서 새로 발생한 문제만을 집계합니다. 보고서에는 공개되지 않은 문제의 이름은 언급되지 않으며, 발견된 문제의 수와 임계값, 그리고 상세 정보는 Coroid에서 확인할 수 있다는 내용만 포함됩니다.
Coroid 보안 검사를 필수로 요구하기
보호 기능을 강제 적용하면 검사 결과가 실패로 표시됩니다. 저장소에서 해당 검사를 필수로 요구하는 경우에만 GitHub가 병합을 차단합니다:
- 브랜치 보호: 저장소의 설정 → 브랜치 메뉴에서 기본 브랜치에 대한 규칙을 편집하고병합 전에 상태 검사 통과 필수옵션을 활성화한 뒤
Coroid Security. - 규칙 집합: 설정 → 규칙 → 규칙 집합 메뉴에서상태 검사 통과 필수옵션을 기본 브랜치의 규칙 집합에 추가한 뒤
Coroid Security, Coroid의 GitHub 앱을 데이터 소스로 지정하세요. - 병합 대기열: 동일한 규칙에서 해당 검사를 필수로 요구하세요. 검사가 병합 대기열 커밋에서 실행되려면 앱에 병합 대기열 권한이 필요합니다.
원하는 보호 정책이 적용된 후에 이 기능을 활성화하세요. 단순히 관찰만 하는 필수 검사 항목은 여전히 통과됩니다.
GitHub 보안 알림
와 함께GitHub 보안 알림보안 → 설정에서 이 기능을 켜고 위의 권한을 부여하면, 보안 기능은 Dependabot, 코드 스캔 및 비밀번호 스캔 알림을 Coroid 자체 스캔에서 생성되는 동일한 결과물에 대한 관찰 항목으로 가져옵니다. 새로운 알림은 GitHub에서 전송될 때마다 도착하며, Coroid는 하루에 한 번씩 각 저장소의 알림을 다시 확인합니다.
- **가져온 항목, 아직 확인되지 않음.**Coroid 자체 스캔에서 아직 확인하지 못한 알림의 경우 "GitHub에서 가져왔으며 아직 확인되지 않음"으로 표시됩니다. 이 알림은 목록에 포함되고 개수에 반영되지만, Coroid의 스캔에서 확인되기 전까지는 알림을 발송하거나 작업을 차단하지 않습니다.
- **출처 간 의견 불일치.**GitHub와 Coroid가 동일한 결과물에 대해 서로 다른 보고를 할 경우, 해당 결과물에 이 사실이 명시되고 각 출처의 상태(존재함, 사라짐, 무시됨, 읽을 수 없음)가 함께 표시됩니다.
- 각 출처별로 닫히는 방식이 다릅니다.기본 브랜치에 취약한 버전이 더 이상 존재하지 않으면 Dependabot 알림은 GitHub에서 닫힙니다. 기본 브랜치에 대한 분석에서 해당 알림이 더 이상 보고되지 않으면 코드 스캔 알림이 닫힙니다. 비밀번호 스캔 알림은 GitHub에서 사용자가 직접 해결할 때까지 열린 상태로 유지되므로, 수정 사항을 병합해도 닫히지 않습니다.
- 권한 상실.앱이 권한을 잃거나 GitHub에서 해당 기능을 비활성화하면, 해당 출처에서만 보고된 결과물은 그 시점부터 "상태 미확인"으로 표시되며, 어떤 알림도 닫히지 않습니다.
개요 페이지에는 저장소 및 출처별로 알림이 읽혔는지, 권한이 누락되었는지, GitHub에서 기능이 비활성화되었는지, 또는 저장소에 접근할 수 없었는지가 표시됩니다.