Community연구 & 데이터 분석github.com

Nick2bad4u/GitHub-Security-CodeScanning-Alerts-Skill

GitHub 보안 알림을 관리하기 위한 Copilot/AI 스킬로, 코드 스캐닝, Dependabot, 비밀 스캐닝 등 다양한 알림을 지원합니다.

GitHub-Security-CodeScanning-Alerts-Skill란 무엇인가요?

이 스킬은 GitHub 리포지토리의 보안 알림을 검사하고 관리하기 위한 AI 어시스턴트 스킬입니다. 코드 스캐닝 알림, Dependabot 알림(악성코드 포함), 비밀 스캐닝 알림 및 위치, 스캔 기록, 리포지토리 보안 설정 개요 등 다양한 보안 표면을 지원합니다. GitHub.com과 GitHub Enterprise Server(GHES) 모두에서 작동하며, `GITHUB_TOKEN` 또는 `GH_TOKEN` 환경 변수를 통해 인증합니다. 주요 기능으로는 알림 목록 조회, 상세 보기, 상태 변경(해제/재개), 대량 내보내기, 대량 업데이트 등이 있으며, 모든 작업은 `--dry-run` 플래그로 사전 검증이 가능합니다. 악성코드 알림은 Dependabot 알림의 하위 집합으로 처리되며, GitHub Advisory Database를 참조하여 악성코드 유형을 분류합니다. 보안을 최우선으로 하여 토큰이 명령줄에 노출되지 않도록 하고, 비밀 값은 기본적으로 숨김 처리됩니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add Nick2bad4u/Github-Security-CodeScanning-Alerts-Skill

Installed? Explore more 연구 & 데이터 분석 skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

GitHub 보안 알림 관리 (GitHub Security Alerts Management)

개요

사용자가 GitHub 리포지토리의 보안 알림을 검사하거나 관리하고자 할 때 이 스킬을 사용하세요. 다음을 포함합니다:

  • 코드 스캐닝 알림
  • Dependabot 알림
  • Dependabot 악성코드 알림
  • 비밀 스캐닝 알림
  • 비밀 스캐닝 알림 위치
  • 비밀 스캐닝 스캔 기록
  • 리포지토리 보안 설정 개요
  • 리포지토리 전반의 원시 GitHub 보안 API 검사
  • 오프라인 분류 또는 보고 워크플로를 위한 대량 알림 내보내기
  • 대량 정리 워크플로를 위한 대량 알림 상태 변경

번들로 제공되는 도우미는 리포지토리에 독립적입니다:

  • --repo를 사용하여 로컬 체크아웃 경로를 지정
  • git 리모트에서 owner/repo와 GitHub 호스트를 자동 감지
  • 또는 --repository owner/repo를 명시적으로 전달
  • 명령줄에 토큰을 노출하지 않고 환경 변수를 통해 인증
  • 사용자 정의 환경에 맞게 API 또는 웹 기본 URL을 선택적으로 재정의

호환성

Python 3이 필요합니다. GitHub REST API를 직접 사용하며, GITHUB_TOKEN 또는 GH_TOKEN과 같은 환경 변수를 통해 토큰을 공급받습니다. GitHub.com 및 표준 GHES API 기본 URL(git 리모트에서 파생)을 지원하며, 아직 래핑되지 않은 기능을 위한 원시 API 대체도 제공합니다.

호출 힌트

repo는 대상이 로컬 체크아웃일 때 사용하며, 기본값은 .입니다. 자동 감지로 충분하지 않은 경우 선택적으로 repository, api_base_url, web_base_url, token_env 값을 사용하세요. 일반적인 명령어로는 summary, export-alerts, bulk-update-alerts, repo-security-overview, list-code-scanning, show-code-scanning, update-code-scanning, list-dependabot, show-dependabot, update-dependabot, list-malware, show-malware, update-malware, list-secret-scanning, show-secret-scanning, update-secret-scanning, list-secret-locations, secret-scan-history, api-call이 있습니다.

보안 모델

GitHub 토큰을 명령 인수에 붙여넣지 마세요. 사용자가 명시적으로 비가림 비밀 값을 요청하고 노출 위험을 확인하지 않는 한 --show-secret-values를 사용하지 마세요. 가림 처리된 알림 메타데이터, 비밀 위치, 유효성 및 해결 상태를 선호하세요. 비가림 출력이 수정 작업에 필요한 경우, 비밀 자료를 채팅, 이슈 댓글, PR, 커밋, 로그 또는 저장된 보고서에 붙여넣지 마세요.

권장 패턴:

$env:GITHUB_TOKEN = Get-Secret GITHUB_TOKEN -AsPlainText

리포지토리가 다른 환경 변수 이름을 사용하는 경우, 해당 변수를 먼저 내보내거나 --token-env로 변수 이름을 전달하세요.

예시:

python "<path-to-skill>/scripts/manage_github_security_alerts.py" summary --repo "."
python "<path-to-skill>/scripts/manage_github_security_alerts.py" summary --repo "." --token-env GITHUB_TOKEN

공유 CLI 옵션

  • repo: 대상 리포지토리 체크아웃 내 경로 (기본값 .)
  • repository: 선택적 명시적 owner/repo 재정의
  • api_base_url: 선택적 명시적 API 기본 URL 재정의
  • web_base_url: 렌더링된 링크를 위한 선택적 명시적 웹 기본 URL 재정의
  • token_env: 토큰이 포함된 선택적 환경 변수 이름; 대체를 위해 반복 가능
  • json: 선택적 기계 판독 가능 출력 플래그

악성코드 알림에 관한 중요 참고 사항

GitHub는 악성코드 발견 결과를 Dependabot 악성코드 알림으로 표시합니다.

GitHub는 별도의 리포지토리 알림 제품군과 전용 REST 표면을 제공하지 않습니다. 따라서 번들 도우미는 악성코드를 Dependabot 알림의 필터링된 하위 집합으로 처리하고 각 알림의 권고 GHSA를 GitHub Advisory Database와 교차 참조하여 유형이 malware인 권고를 식별합니다.

즉:

  • list-malware, show-malware, update-malware는 Dependabot 알림 API를 기반으로 합니다.
  • 악성코드 분류는 Advisory Database 엔드포인트를 사용할 수 있는 GitHub.com에서 가장 강력합니다.
  • 대상 호스트에서 권고 유형 조회를 사용할 수 없는 경우, 도우미는 자동 추측 대신 해당 상태를 보고합니다.

빠른 시작

1. 현재 보안 상태 검사

python "<path-to-skill>/scripts/manage_github_security_alerts.py" summary --repo "."

2. 리포지토리 보안 설정 개요 보기

python "<path-to-skill>/scripts/manage_github_security_alerts.py" repo-security-overview --repo "."

2.5 대량 분류를 위한 전체 알림 세트 내보내기

python "<path-to-skill>/scripts/manage_github_security_alerts.py" export-alerts --repo "." --json

3. 코드 스캐닝 목록 예시

공유 입력 repo, repository, api_base_url, web_base_url, token_env, json과 state, severity, tool_name, tool_guid, ref, pr 같은 코드 스캐닝 필터를 사용합니다. 렌더링된 텍스트 또는 기계 판독 가능 JSON으로 code_scanning_alerts를 출력합니다.

python "<path-to-skill>/scripts/manage_github_security_alerts.py" list-code-scanning --repo "." --state open --severity high,error

3.5 알림 대량 해제 또는 대량 재개

python "<path-to-skill>/scripts/manage_github_security_alerts.py" bulk-update-alerts --repo "." --surface code-scanning --select-state open --target-state dismissed --dismissed-reason "false positive" --comment "Reviewed and intentionally dismissed." --limit 10 --dry-run --json

python "<path-to-skill>/scripts/manage_github_security_alerts.py" bulk-update-alerts --repo "." --surface dependabot --select-state open --target-state dismissed --dismissed-reason tolerable_risk --comment "Accepted until the next dependency refresh." --limit 25 --dry-run --json

python "<path-to-skill>/scripts/manage_github_security_alerts.py" bulk-update-alerts --repo "." --surface secret-scanning --select-state open --target-state resolved --resolution used_in_tests --limit 25 --dry-run --json

4. 코드 스캐닝 알림 해제 또는 재개

python "<path-to-skill>/scripts/manage_github_security_alerts.py" update-code-scanning --repo "." --alert 42 --state dismissed --dismissed-reason false_positive --comment "False positive after manual review." --dry-run
python "<path-to-skill>/scripts/manage_github_security_alerts.py" update-code-scanning --repo "." --alert 42 --state open

5. Dependabot 목록 예시

공유 입력 repo, repository, api_base_url, web_base_url, token_env, json과 state, severity, ecosystem, package, manifest, has, assignee, scope 같은 Dependabot 필터를 사용합니다. 렌더링된 텍스트 또는 기계 판독 가능 JSON으로 dependabot_alerts를 출력합니다.

python "<path-to-skill>/scripts/manage_github_security_alerts.py" list-dependabot --repo "." --state open --ecosystem npm --has patch

6. Dependabot 알림 해제 또는 재개

python "<path-to-skill>/scripts/manage_github_security_alerts.py" update-dependabot --repo "." --alert 7 --state dismissed --dismissed-reason tolerable_risk --comment "Accepted until next quarterly upgrade." --dry-run
python "<path-to-skill>/scripts/manage_github_security_alerts.py" update-dependabot --repo "." --alert 7 --state open

7. 악성코드 목록 예시

공유 입력 repo, repository, api_base_url, web_base_url, token_env, json과 state, severity, ecosystem, package, manifest, has 같은 Dependabot 기반 악성코드 필터를 사용합니다. 권고 유형 분류에서 malware_alerts와 lookup_failures를 출력합니다.

python "<path-to-skill>/scripts/manage_github_security_alerts.py" list-malware --repo "." --state open

8. 비밀 스캐닝 목록 예시

공유 입력 repo, repository, api_base_url, web_base_url, token_env, json과 state, secret_type, resolution, assignee, validity, 유출 또는 다중 리포지토리 플래그 같은 비밀 스캐닝 필터를 사용합니다. 비밀 값은 기본적으로 가림 처리된 secret_scanning_alerts를 출력합니다.

python "<path-to-skill>/scripts/manage_github_security_alerts.py" list-secret-scanning --repo "." --state open

비밀 값은 기본적으로 숨겨집니다. 사용자가 비가림 비밀 출력이 필요하다고 명시적으로 확인하지 않는 한 기본값을 유지하세요.

9. 비밀 스캐닝 알림 해결 또는 재개

python "<path-to-skill>/scripts/manage_github_security_alerts.py" update-secret-scanning --repo "." --alert 11 --state resolved --resolution revoked --comment "Token revoked and rotated." --dry-run
python "<path-to-skill>/scripts/manage_github_security_alerts.py" update-secret-scanning --repo "." --alert 11 --state open

10. 비밀 위치 및 스캔 기록 표시

python "<path-to-skill>/scripts/manage_github_security_alerts.py" list-secret-locations --repo "." --alert 11
python "<path-to-skill>/scripts/manage_github_security_alerts.py" secret-scan-history --repo "."

11. 아직 래핑되지 않은 기능을 위한 원시 API 대체 사용

python "<path-to-skill>/scripts/manage_github_security_alerts.py" api-call --repo "." --endpoint /repos/OWNER/REPO/code-scanning/default-setup

워크플로

  1. 안전하게 인증을 처리합니다.
    • GITHUB_TOKEN과 같은 환경 변수를 선호합니다.
    • 필요한 경우, 시크릿 관리자에서 환경 변수로 로드합니다.
    • 토큰을 로그나 채팅 출력에 절대 출력하지 마세요.
  2. 대상 리포지토리를 확인합니다.
    • --repo와 git 리모트 자동 감지를 선호합니다.
    • 로컬 체크아웃을 사용할 수 없거나 비표준인 경우 --repository owner/repo로 대체합니다.
  3. 현재 발견 사항을 검사합니다.
    • 먼저 summary를 실행합니다.
    • 대량 분류나 외부 보고를 위해 더 완전한 다중 표면 JSON 스냅샷이 필요할 때 export-alerts를 사용합니다.
    • 관심 있는 알림 제품군에 대해 list/show 명령어를 사용합니다.
    • 질문이 활성화 또는 사용 가능한 보안 설정에 관한 것일 때 repo-security-overview를 사용합니다.
  4. 발견 사항을 분류합니다.
    • 적절한 경우 코드나 종속성 구성의 실제 결함을 수정합니다.
    • 명확한 정당성이 있을 때만 해제합니다.
    • 이전 해제 또는 해결이 더 이상 유효하지 않을 때 알림을 재개합니다.
    • 리포지토리에 수십 또는 수백 개의 이미 검토된, 잘못 분류된 알림이 동일한 작업을 필요로 할 때 bulk-update-alerts를 사용합니다.
  5. 변경 사항을 신중하게 적용합니다.
    • 위험한 변경에는 먼저 --dry-run을 선호합니다.
    • 짧고 실행 가능한 해제 또는 해결 코멘트를 추가합니다.
    • 쓰기 작업에는 해당 GitHub 권한이 필요함을 기억하세요.
  6. 변경 후 상태를 확인합니다.
    • 관련 list/show 명령어를 다시 실행합니다.
    • 코드 또는 종속성 수정의 경우, 알림이 자연스럽게 사라질 것으로 예상되면 다음 GitHub 분석 주기를 기다립니다.

번들 리소스

도우미 스크립트

scripts/manage_github_security_alerts.py는 GitHub 리포지토리 보안 알림을 위한 리포지토리 독립적 도우미입니다.

지원되는 명령어:

  • summary
  • export-alerts
  • bulk-update-alerts
  • repo-security-overview
  • list-code-scanning
  • show-code-scanning
  • update-code-scanning
  • list-dependabot
  • show-dependabot
  • update-dependabot
  • list-malware
  • show-malware
  • update-malware
  • list-secret-scanning
  • show-secret-scanning
  • update-secret-scanning
  • list-secret-locations
  • secret-scan-history
  • api-call

구현 모듈:

  • github_security_api.py
  • github_security_cli.py
  • github_security_common.py
  • github_security_operations.py
  • github_security_render.py

예시:

python "<path-to-skill>/scripts/manage_github_security_alerts.py" summary --repo "." --json
python "<path-to-skill>/scripts/manage_github_security_alerts.py" export-alerts --repo "." --json
python "<path-to-skill>/scripts/manage_github_security_alerts.py" bulk-update-alerts --repo "." --surface code-scanning --select-state open --target-state dismissed --dismissed-reason "false positive" --comment "Reviewed and intentionally dismissed." --limit 10 --dry-run --json
python "<path-to-skill>/scripts/manage_github_security_alerts.py" list-code-scanning --repo "." --state open --per-page 100 --json
python "<path-to-skill>/scripts/manage_github_security_alerts.py" update-code-scanning --repo "." --alert 42 --state dismissed --dismissed-reason false_positive --comment "False positive after review." --dry-run
python "<path-to-skill>/scripts/manage_github_security_alerts.py" list-dependabot --repo "." --state open --ecosystem npm --json
python "<path-to-skill>/scripts/manage_github_security_alerts.py" list-malware --repo "." --json
python "<path-to-skill>/scripts/manage_github_security_alerts.py" update-dependabot --repo "." --alert 7 --state dismissed --dismissed-reason tolerable_risk --comment "Accepted temporarily." --dry-run
python "<path-to-skill>/scripts/manage_github_security_alerts.py" list-secret-scanning --repo "." --state open --json
python "<path-to-skill>/scripts/manage_github_security_alerts.py" update-secret-scanning --repo "." --alert 11 --state resolved --resolution revoked --comment "Revoked and rotated." --dry-run
python "<path-to-skill>/scripts/manage_github_security_alerts.py" list-secret-locations --repo "." --alert 11 --json
python "<path-to-skill>/scripts/manage_github_security_alerts.py" secret-scan-history --repo "." --json
python "<path-to-skill>/scripts/manage_github_security_alerts.py" api-call --repo "." --endpoint /repos/OWNER/REPO/dependabot/alerts --query-param state=open --json

관련 스킬