
すべての GitHub および GitLab アセットにわたる設定ミスやセキュリティリスクを検出し、修正します。
ソースコード管理のセキュリティ態勢を強化!
GitHubおよびGitLab上のすべての資産にわたる設定ミス、セキュリティ、コンプライアンスの問題を検出して修正しましょう 🔥
by Legit Security.
Legit Security は、アプリケーションセキュリティ posture 管理(ASPM)およびソフトウェアサプライチェーンセキュリティソリューションです。
詳細については、比較表をご覧ください。
インストール方法はいくつかあります:
brew install legitify
最新の legitify リリースを https://github.com/Legit-Labs/legitify/releases からダウンロードすることもできます。各アーカイブには以下が含まれています:
ソースから以下の手順でインストール:
git clone [email protected]:Legit-Labs/legitify.git
go run main.go analyze ...
gh extension install legit-labs/gh-legitify
gh legitify
Legitify カスタム 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 Level 3 Provenance ドキュメントが含まれています。
この来歴証明ドキュメントは、リリース内のすべてのアーティファクトと生成された Docker イメージを対象としています。
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 Organization または 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 Organization または 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 Organization(または GitLab グループ)レベルのポリシー(例:「Organization に二要素認証が強制されていない」)actions - Organization の GitHub Actions ポリシー(例:「GitHub Actions の実行が検証済みアクションに制限されていない」)member - コントリビューターレベルのポリシー(例:「古い管理者が見つかりました」)repository - GitHub リポジトリ(または GitLab プロジェクト)レベルのポリシー(例:「少なくとも 2 人のレビュアーによるコードレビューが強制されていない」)。注:--repo 引数で直接指定されない限り、アーカイブされたリポジトリは無視されます。runner_group - ランナーグループのポリシー(例:「ランナーがパブリックリポジトリで使用可能」)デフォルトでは、legitify はすべての名前空間を分析します。--namespace フラグで選択した名前空間のみに制限できます。その場合は、選択した名前空間をカンマ区切りで指定します。
デフォルトでは、legitify は人間が読める形式で結果を出力します。 これには、重要度ごとにリストされたポリシー違反の一覧と、名前空間ごとにソートされたサマリーテーブルが含まれます。
--output-format (-f) フラグを使用すると、legitify は以下の形式で結果を出力できます:
human-readable - 人間が読めるテキスト(デフォルト)。json - 標準 JSON。sarif - SARIF 形式(情報)。