
GitHub 및 GitLab 자산 전체의 잘못된 구성과 보안 위험을 탐지하고 해결합니다.
소스 코드 관리의 보안 태세를 강화하세요!
모든 GitHub 및 GitLab 자산에서 잘못된 구성, 보안 및 규정 준수 문제를 쉽게 탐지하고 해결하세요 🔥
by Legit Security.
Legit Security는 애플리케이션 보안 태세 관리(ASPM) 및 소프트웨어 공급망 보안 솔루션입니다.
자세한 내용은 비교표를 확인하세요.
여러 가지 방법으로 설치할 수 있습니다:
brew install legitify
https://github.com/Legit-Labs/legitify/releases에서 최신 legitify 릴리스를 다운로드할 수 있습니다. 각 아카이브에는 다음이 포함됩니다:
소스에서 다음 단계로 설치:
git clone [email protected]:Legit-Labs/legitify.git
go run main.go analyze ...
gh extension install legit-labs/gh-legitify
gh legitify
Legitify Custom GitHub Actions를 사용하여 CI 프로세스의 일부로 legitify를 실행할 수 있습니다:
name: Legitify Analyze
on:
workflow_dispatch:
schedule:
- cron: '0 11 * * 1-5'
jobs:
analyze:
runs-on: ubuntu-latest
steps:
- name: Legitify Action
uses: Legit-Labs/legitify@main
with:
github_token: ${{ secrets.PAT_FOR_LEGITIFY }}
ignore-policies: |
non_admins_can_create_public_repositories
requires_status_checks
추가 매개변수 및 구성은 액션 파일을 확인하세요.
legitify 사용자의 소프트웨어 공급망 보안을 강화하기 위해, v0.1.6부터 모든 legitify 릴리스에는 SLSA 레벨 3 출처 문서가 포함되어 있습니다.
출처 문서는 릴리스의 모든 아티팩트와 생성된 도커 이미지를 참조합니다.
SLSA 프레임워크의 공식 검증 도구를 사용하여 출처를 확인할 수 있습니다.
v0.1.6 릴리스의 darwin_arm64 아키텍처 사용 예시:
VERSION=0.1.6
ARCH=darwin_arm64
./slsa-verifier verify-artifact --source-branch main --builder-id 'https://github.com/slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@refs/tags/v1.2.2' --source-uri "git+https://github.com/Legit-Labs/legitify" --provenance-path multiple.intoto.jsonl ./legitify_${VERSION}_${ARCH}.tar.gz
SCM_TOKEN=<your_token> legitify analyze
기본적으로 legitify는 모든 리소스(조직, 리포지토리, 멤버, 액션)에 대해 정책을 확인합니다. 보관된 리포지토리는 건너뜁니다.
명령줄 플래그 --namespace와 --org를 사용하여 분석할 리소스를 제어할 수 있습니다:
--namespace (-n): 지정된 리소스와 관련된 정책을 분석합니다.--org: 분석을 특정 GitHub 조직 또는 GitLab 그룹으로 제한하며, 보관된 리포지토리는 제외합니다.--repo: 분석을 특정 GitHub 리포지토리 또는 GitLab 프로젝트로 제한합니다.--scm: 소스 코드 관리 플랫폼을 지정합니다. 가능한 값: github 또는 gitlab. 기본값은 github입니다. GitLab에서 실행할 경우 --scm gitlab이 필요합니다.--enterprise: 분석할 엔터프라이즈를 지정합니다. 엔터프라이즈를 분석하려면 엔터프라이즈 슬러그를 제공해야 합니다.SCM_TOKEN=<your_token> legitify analyze --org org1,org2 --namespace organization,member
위 명령은 org1과 org2에 대해 조직 및 멤버 정책을 테스트합니다.
SCM_TOKEN=<your_token> OPENAI_TOKEN=<token> ./legitify gpt-analysis --repo org1/repo1 --org org1
제공된 리포지토리 또는 조직의 보안 태세에 대한 GPT-3 기반 분석.
참고: 리포지토리/조직 메타데이터가 openai 서버로 전송됩니다.
플래그:
--org: 분석을 특정 GitHub 조직 또는 GitLab 그룹으로 제한합니다.--repo: 분석을 특정 GitHub 리포지토리 또는 GitLab 프로젝트로 제한합니다.--scm: 소스 코드 관리 플랫폼을 지정합니다. 가능한 값: github 또는 gitlab. 기본값은 github입니다.--token: SCM용 토큰 (또는 SCM_TOKEN 환경 변수 설정).--openai-token: openai API용 토큰 (또는 OPENAI_TOKEN 환경 변수 설정).--org 또는 --repo 중 하나 또는 둘 다를 제공해야 합니다.
openai 토큰 생성:
워크플로에서 legitify를 GitHub Action으로 실행할 수도 있습니다. 구체적인 예제는 action_examples 디렉토리를 참조하세요.
-t) 또는 환경 변수(SCM_TOKEN)로 제공할 수 있습니다.
전체 분석을 위해 PAT에는 다음 스코프가 필요합니다:admin:org, read:enterprise, admin:org_hook, read:org, repo, read:repo_hook
자세한 내용은 개인 액세스 토큰 생성을 참조하세요.
세분화된 개인 액세스 토큰은 현재 지원되지 않습니다.
환경 변수 SERVER_URL에 엔드포인트 URL을 설정하면 GitHub Enterprise Server 인스턴스에 대해 legitify를 실행할 수 있습니다:
export SERVER_URL="https://github.example.com/"
SCM_TOKEN=<your_token> legitify analyze --org org1,org2 --namespace organization,member
-t) 또는 환경 변수(SCM_TOKEN)로 제공할 수 있습니다.
전체 분석을 위해 PAT에는 다음 스코프가 필요합니다:
read_api, read_user, read_repository, read_registry
자세한 내용은 개인 액세스 토큰 생성을 참조하세요.--scm gitlab으로 설정하고, GitLab Server에 대해 실행하려면 SERVER_URL도 제공해야 합니다:export SERVER_URL="https://gitlab.example.com/"
SCM_TOKEN=<your_token> legitify analyze --namespace organization --scm gitlab
참고 1: 잘못된 서버 인증서를 무시하려면
ignore-invalid-certificate플래그를 전달하세요.
참고 2: 프리미엄이 아닌 GitLab 계정의 경우 일부 정책(예: 브랜치 보호 정책)이 건너뛰어집니다.
legitify의 네임스페이스는 수집되어 정책에 대해 실행되는 리소스입니다. 현재 다음 네임스페이스가 지원됩니다:
organization - GitHub 조직(또는 GitLab 그룹) 수준 정책 (예: "조직에 대해 2단계 인증이 적용되지 않음")actions - 조직 GitHub Actions 정책 (예: "GitHub Actions 실행이 확인된 Actions로 제한되지 않음")member - 기여자 수준 정책 (예: "오래된 관리자 발견")repository - GitHub 리포지토리(또는 GitLab 프로젝트) 수준 정책 (예: "최소 2명의 리뷰어에 의한 코드 리뷰가 적용되지 않음"). 참고: 보관된 리포지토리는 --repo 인수로 직접 지정되지 않는 한 무시됩니다.runner_group - 러너 그룹 정책 (예: "러너가 공개 리포지토리에서 사용 가능")기본적으로 legitify는 모든 네임스페이스를 분석합니다. --namespace 플래그와 선택한 네임스페이스의 쉼표로 구분된 목록을 사용하여 선택한 네임스페이스로 제한할 수 있습니다.
기본적으로 legitify는 사람이 읽을 수 있는 형식으로 결과를 출력합니다. 여기에는 심각도별로 나열된 정책 위반 목록과 네임스페이스별로 정렬된 요약 테이블이 포함됩니다.
--output-format (-f) 플래그를 사용하여 legitify는 다음 형식으로 결과를 출력할 수 있습니다:
human-readable - 사람이 읽을 수 있는 텍스트 (기본값).json - 표준 JSON.sarif - SARIF 형식 (정보).--output-scheme 플래그를 사용하여 legitify는 결과를 다양한 그룹화 방식으로 출력할 수 있습니다.
참고: 기본이 아닌 구성을 출력하려면 --output-format=json을 지정해야 합니다.