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입니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

gh-safe-repo

안전한 기본값이 자동으로 적용된 GitHub 저장소를 생성합니다. 생성 후 5분 동안 설정 체크리스트를 확인하는 과정을 단일 명령으로 대체합니다.``` gh-safe-repo create <owner/repo>

브랜치 보호, 변경 불가 태그, Dependabot, 제한된 Actions 권한, 푸시 보호 기능이 포함된 시크릿 스캐닝 — 코드를 한 줄도 작성하기 전에 모두 구성됩니다.

> **상태:** gh-safe-repo는 활발히 개발 중입니다. 핵심 사용 사례 — 안전한 기본값으로 새 저장소를 생성하는 것 — 에서는 잘 작동하지만, CLI 옵션은 사용자 기대에 더 잘 부합하도록 여전히 다듬어지고 있습니다. 릴리스와 CI/CD가 확정될 때까지 호환성이 깨지는 변경이 있을 수 있습니다. ✌️

---

## 제공되는 기능

GitHub의 기본값은 보안이 아닌 발견 가능성과 유연성에 최적화되어 있습니다. 모든 새 저장소는 브랜치 보호 없이, Dependabot 없이, 그리고 저장소에 대한 쓰기 권한이 있고 자체 풀 리퀘스트를 승인할 수 있는 Actions와 함께 제공됩니다.

`gh-safe-repo`는 이 모든 것을 한 번에 해결하며, 먼저 계획을 보여줍니다:

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

모든 것이 구성 가능합니다. 정확한 설정은 [안전한 기본값 전체](#safe-defaults-in-full)를, 변경 방법은 [구성](#configuration)을 참조하세요.

## 요구 사항

- **Python 3.10+**
- 인증된 **[`gh` CLI](https://cli.github.com/)** (`gh auth login`), **또는** 환경에 설정된 `GITHUB_TOKEN`
- 소스에서 설치하기 위한 **[`uv`](https://docs.astral.sh/uv/)**
- **truffleHog v3** *(선택 사항)* — 사전 스캐너에서 사용되며, PATH에서 자동 감지되거나 podman/docker를 통해 실행되며, 둘 다 없으면 정규식 폴백이 사용됩니다

`--local` 또는 `--from`으로 코드를 푸시하려면 GitHub용 일반 git 자격 증명이 추가로 필요합니다 — [로컬 또는 기존 코드에서 작업하기](#working-from-local-or-existing-code)를 참조하세요.

## 설치```bash
git clone https://github.com/AriESQ/gh-safe-repo
cd gh-safe-repo
uv tool install .

gh-safe-repo --help

이것은 gh-safe-repo를 uv의 도구 환경에 설치하고 PATH에 추가합니다.

설치하지 않고 실행하려면:```bash uv sync # creates .venv ./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는 이를 건너뜁니다):```bash gh-safe-repo create AriESQ/demo-repo

**3. 작업 시작.** 성공하면 저장소 URL과 바로 붙여넣을 수 있는 원격 명령어를 받습니다:```
╭─ 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).

일반적인 작업

저장소 생성```bash

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

일반 `create`는 기본 브랜치가 존재하도록 저장소를 초기화한 다음(브랜치 보호에는 기본 브랜치가 필요함), 자동 생성된 `README.md`를 삭제하여 깨끗한 상태에서 시작할 수 있게 합니다. 이를 유지하려면 config에서 `auto_init = true`로 설정하세요.

### 기존 로컬 프로젝트 푸시```bash
gh-safe-repo create <owner/repo> --local ~/projects/myapp

먼저 디렉터리에서 시크릿을 스캔하고, 저장소를 생성한 뒤 모든 브랜치와 태그를 푸시한 다음, 원래 디렉터리에서 origin과 업스트림 추적을 설정하여 git push가 즉시 작동하도록 합니다. 다른 곳을 가리키는 기존 origin은 그대로 두며, 경고와 성공 배너가 대신 실행해야 할 정확한 git push -u origin <branch>:<branch> 명령을 알려줍니다. 로컬 또는 기존 코드에서 작업하기를 참조하세요.

기존 저장소 미러링```bash

gh-safe-repo create <owner/repo> --from <owner/source> gh-safe-repo create <owner/pub> --from <owner/priv> --public # the riskiest move — scanned thoroughly

전체 히스토리와 함께 소스를 클론하고, 스캔한 뒤, 안전한 기본값으로 새 저장소에 미러링합니다. 스캔 단계에서 중단하면, 어떤 코드도 새 저장소에 도달하지 않습니다.

### 이미 가지고 있는 저장소 감사하기```bash
gh-safe-repo fix <owner/repo> --dry-run   # what's 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 호출을 하지 않습니다. 설정 전용이며 — 시크릿 스캔은 하지 않습니다. 저장소에 대한 관리자 권한이 필요하며, 이는 조직이나 다른 계정이 소유한 저장소일 수 있습니다.

GitHub를 건드리지 않고 스캔하기```bash

gh-safe-repo scan . gh-safe-repo scan ~/projects/myapp

로컬 전용. 중요한 발견이 없으면 종료 코드 `0`, 있으면 `1`을 반환하므로 다음과 같이 조합할 수 있습니다:```bash
gh-safe-repo scan . && git push

사전 보안 스캐너를 참조하세요.


참조

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 [OPTIONS]

`--config`와 `--debug`는 전역 옵션입니다. 명령 앞이나 뒤 어디에든 지정할 수 있으며 (`gh-safe-repo --debug fix owner/repo`와 `gh-safe-repo fix owner/repo --debug`는 동일합니다), 둘 다 지정된 경우 나중에 지정된 것이 우선합니다. 다른 모든 옵션은 명령별 옵션이며 명령 뒤에 와야 합니다. `--config`는 선택적 값을 받으므로, 값 없는 `--config`는 마지막에 와야 합니다 — `gh-safe-repo --config scan ./src`는 `scan`을 경로로 읽습니다.

GitHub와 상호작용하는 모든 명령은 `owner/repo` 형식(예: `myuser/my-repo`)을 요구합니다. `create`의 경우, owner는 인증된 GitHub 계정에 대해 검증되어 다중 계정 시스템에서의 실수를 방지합니다. `fix`의 경우 대신 대상 repo에 대한 admin 권한이 필요하며, 이를 통해 admin 접근 권한이 있는 조직이나 다른 계정이 소유한 repo를 수정할 수 있습니다.

#### `create` — 새 repo 생성
도구 다운로드