Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
gh-safe-repo — 안전한 기본 설정 — 브랜치 보호, Dependabot, 비밀 스캐닝, 사전 보안 스캐닝 — 이 자동으로 적용된 GitHub 저장소를 생성하는 Python CLI입니다. | Kitploit
도구/GitHubGitHub/ariesq/gh-safe-repo
General Purpose UtilitiesVulnerability ScannersScripting & AutomationConfiguration AuditingCloud SecurityDevSecOpsSecret Detection
GitHubariesq/gh-safe-repo

gh-safe-repo

안전한 기본 설정 — 브랜치 보호, Dependabot, 비밀 스캐닝, 사전 보안 스캐닝 — 이 자동으로 적용된 GitHub 저장소를 생성하는 Python CLI입니다.

저장소 보기
383246일 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

gh-safe-repo

CI

단 하나의 명령으로 안전한 기본 설정이 적용된 GitHub 저장소를 생성하세요.

gh-safe-repo create <owner/repo>

브랜치 보호, 변경 불가능한 태그, 잠금 설정된 Actions, Dependabot, 푸시 보호 기능이 포함된 시크릿 스캐닝, 그리고 비공개 취약점 신고 기능이 첫 커밋을 푸시하기 전에 모두 구성됩니다. 동일한 도구가 이미 보유한 저장소를 감사하고 수정하며, 코드가 로컬 머신을 떠나기 전에 시크릿을 스캔합니다.

상태: 핵심 워크플로는 안정적이며 엔드 투 엔드로 검증되었지만, CLI는 아직 다듬어지는 중입니다. 1.0 이전에는 간헐적인 호환성 깨지는 변경이 있을 수 있습니다.

목차

  • 제공 기능
  • 설치
  • 빠른 시작
  • 명령어
  • CLI 레퍼런스
  • 출력 — 계획 테이블, JSON, 검증, 종료 코드
  • 안전한 기본값
  • 코드 푸시 — --local 및 --from
  • 사전 점검 스캐너
  • 구성
  • GitHub 플랜 제한 사항
  • AI 에이전트와 함께 사용하기
  • 작동 방식
  • 개발

제공 기능

GitHub의 기본값은 안전성보다 발견 가능성을 우선합니다: 새 저장소에는 브랜치 보호도, Dependabot도 없으며, Actions는 저장소에 쓰고 자체 풀 리퀘스트를 승인할 수 있습니다. gh-safe-repo는 이를 바꾸고, 무엇이든 건드리기 전에 계획을 보여줍니다:

  • 기본적으로 비공개. 공개로 만들려면 --public을 전달하세요.
  • 브랜치 보호. PR 필수, 승인 리뷰 1개, 오래된 리뷰 무효화, 대화 해결, 강제 푸시 금지, 브랜치 삭제 금지.
  • 변경 불가능한 태그. 릴리스 태그는 재작성하거나 삭제할 수 없습니다.
  • Actions 잠금 설정. 읽기 전용 토큰, 자체 승인 PR 금지, SHA 고정 액션, GitHub 소유 및 검증된 게시자만 허용.
  • Dependabot 활성화. 취약점 경고 및 자동 수정 PR.
  • 푸시 보호 기능이 포함된 시크릿 스캐닝. 지원되는 시크릿이 포함된 커밋은 차단됩니다.
  • 비공개 취약점 신고. 연구자가 비공개로 연락할 수 있습니다.
  • 사전 점검 시크릿 스캔. 기존 코드를 푸시할 때 작업 트리와 git 히스토리가 먼저 로컬에서 스캔됩니다.
  • 선택적 추가 기능. 위키, 프로젝트, 이슈는 구성에서 관리하지 않는 한 그대로 유지됩니다.

모든 설정은 구성 가능합니다. 정확한 값은 안전한 기본값을, 변경 방법은 구성을 참조하세요.

설치

요구 사항:

  • Python 3.10+
  • 로그인된 gh CLI (gh auth login), 또는 환경에 설정된 GITHUB_TOKEN
  • 소스에서 설치하기 위한 uv
  • 사전 점검 스캐너용 truffleHog v3 (선택 사항). PATH에서 찾거나 podman/docker를 통해 실행됩니다. 둘 다 없으면 정규식 스캐너가 사용됩니다.

--local 또는 --from으로 코드를 푸시하려면 GitHub에 대한 일반 git 자격 증명도 필요합니다. 코드 푸시를 참조하세요.

git clone https://github.com/AriESQ/gh-safe-repo
cd gh-safe-repo
uv tool install .
gh-safe-repo --help

설치 없이 실행하려면:

uv sync
./gh-safe-repo create <owner/repo>

빠른 시작

1. 미리보기. --dry-run은 API 호출을 하지 않고 아무것도 생성하지 않습니다.

$ gh-safe-repo create AriESQ/demo-repo --dry-run

Configuring AriESQ/demo-repo...

Planned Changes
Type    Category           Setting                                 Value / Note
------  -----------------  --------------------------------------  ----------------------------------------------------------------
ADD     repo               repository                              AriESQ/demo-repo
DELETE  file               readme                                  README.md
UPDATE  actions            allowed_actions                         'all' → 'selected'
UPDATE  actions            verified_allowed                        False → True
UPDATE  actions            sha_pinning_required                    False → True
UPDATE  actions            default_workflow_permissions            'write' → 'read'
UPDATE  actions            can_approve_pull_request_reviews        True → False
SKIP    branch_protection  branch_protection                       Branch protection requires a public repo or paid GitHub plan
SKIP    security           dependabot_alerts                       Requires a public repo or paid GitHub plan
SKIP    security           secret_scanning                         Requires a public repo or paid GitHub plan
SKIP    security           dependabot_security_updates             Requires a public repo or paid GitHub plan
SKIP    security           private_vulnerability_reporting         Requires a public repo or paid GitHub plan
SKIP    security           enable_dependency_graph                 Requires a public repo or paid GitHub plan
SKIP    security           enable_secret_scanning_push_protection  Requires a public repo or paid GitHub plan
SKIP    tag_protection     tag_protection                          Tag protection rulesets require a public repo or paid GitHub plan

7 change(s) to apply, 8 skipped

Dry run — no changes made.

SKIP 행은 무료 플랜에서 프라이빗 저장소가 어떤 모습인지를 보여줍니다. 해당 기능들은 퍼블릭 저장소나 유료 플랜이 필요하며, 도구는 조용히 실패하는 대신 이를 명시합니다. GitHub 플랜 제한 사항을 참조하세요.

2. 적용. --dry-run을 제거하세요. 동일한 계획이 표시된 후 확인 프롬프트가 나타납니다(--yes는 이를 건너뜁니다).

gh-safe-repo create AriESQ/demo-repo

3. 작업 시작. 성공하면 Verified 섹션(GitHub에서 다시 읽어온 모든 설정)과 바로 붙여넣을 수 있는 명령이 담긴 배너가 표시됩니다:

╭─ Done ───────────────────────────────────────────────────╮
│   Repository created successfully!                       │
│   https://github.com/AriESQ/demo-repo                    │
│                                                          │
│   Add remote to existing repo:                           │
│   SSH  : git remote add origin [email protected]:AriESQ/…   │
│   HTTPS: git remote add origin https://github.com/…      │
│                                                          │
│   Clone fresh:                                           │
│   SSH  : git clone [email protected]:AriESQ/demo-repo.git   │
│   HTTPS: git clone https://github.com/AriESQ/demo-…      │
╰──────────────────────────────────────────────────────────╯

선호하는 프로토콜(gh config get -h github.com git_protocol)이 먼저 나열됩니다.

명령어

새 저장소 생성

gh-safe-repo create <owner/repo>            # private (default)
gh-safe-repo create <owner/repo> --public   # public: branch and tag protection apply

저장소가 초기화되어 기본 브랜치가 존재하게 되며(브랜치 보호에 필요함), 그런 다음 자동 생성된 README.md가 삭제되어 깨끗한 상태에서 시작합니다. 이를 유지하려면 config에서 auto_init = true로 설정하세요. 소유자는 인증된 계정과 일치해야 하며, 이는 다중 계정 시스템에서의 실수를 방지합니다.

기존 로컬 프로젝트 푸시

gh-safe-repo create <owner/repo> --local ~/projects/myapp

디렉터리에서 시크릿을 스캔하고, 저장소를 생성한 뒤 모든 브랜치와 태그를 푸시하고, 원래 디렉터리에 origin과 업스트림 추적을 설정하여 git push가 즉시 작동하도록 합니다. 이미 다른 곳을 가리키는 origin은 그대로 두고, 배너에서 대신 실행해야 할 명령을 알려줍니다. 이후 푸시된 모든 브랜치와 태그를 GitHub SHA와 SHA 단위로 대조하여 검증합니다. 자세한 내용은 코드 푸시를 참조하세요.

기존 저장소 미러링

gh-safe-repo create <owner/repo> --from <owner/source>
gh-safe-repo create <owner/pub> --from <owner/priv> --public   # scanned thoroughly first

전체 이력을 포함하여 소스를 클론하고, 스캔한 뒤, 새 저장소로 미러링하고, 소스의 기본 브랜치, 설명 및 토픽을 복사합니다. 스캔 단계에서 중단하면 어떤 코드도 GitHub에 도달하지 않습니다.

이미 보유한 저장소 감사 및 수정

gh-safe-repo fix <owner/repo> --dry-run   # what is out of compliance?
gh-safe-repo fix <owner/repo>             # apply the missing defaults
gh-safe-repo fix <owner/repo> --yes       # no prompt, for scripts

fix는 각 설정을 읽고, 다른 항목에는 UPDATE를, 이미 올바른 항목에는 SKIP을 표시하며, 실제 변경에 대해서만 API를 호출합니다. 이는 설정 전용이며(비밀 스캔 없음), 저장소에 대한 관리자 권한이 필요하며, 저장소는 조직이나 다른 계정이 소유할 수 있습니다.

로컬 코드 스캔

gh-safe-repo scan .
gh-safe-repo scan . && git push     # exit 1 on critical findings

로컬 전용입니다. GitHub로 아무것도 전송되지 않습니다. 사전 점검 스캐너를 참조하세요.

CLI 레퍼런스

gh-safe-repo [--config PATH] [--debug] create <owner/repo> [OPTIONS]
gh-safe-repo [--config PATH] [--debug] fix <owner/repo> [OPTIONS]
gh-safe-repo [--config PATH] [--debug] scan <path> [OPTIONS]

--config와 --debug는 전역 옵션이며 명령 앞이나 뒤에 올 수 있습니다. 두 번 지정하면 나중 것이 우선합니다. 다른 옵션은 명령 뒤에 와야 합니다. --config는 선택적 값을 받으므로, 값 없는 --config는 마지막에 와야 합니다: gh-safe-repo --config scan ./src는 scan을 경로로 읽게 됩니다.

GitHub를 대상으로 하는 모든 명령은 owner/repo를 받습니다 (예: myuser/my-repo).

전역 옵션

옵션설명
--config [PATH]사용할 설정 파일. 값 없는 --config는 내장 기본값만 사용
--debug모든 API 호출과 응답을 출력. fix의 경우 해석된 저장소 식별 정보(id, 전체 이름, 소유자 유형)도 출력

create <owner/repo>

도구 다운로드