
すべての 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 形式(情報)。--output-scheme フラグを使用すると、legitify は異なるグループ化スキームで結果を出力できます。
注:デフォルト以外のスキームを出力するには、--output-format=json を指定する必要があります。
flattened - グループ化なし。ポリシーをフラットに列挙し、それぞれに違反を表示します(デフォルト)。group-by-namespace - ポリシーを名前空間ごとにグループ化します。group-by-resource - ポリシーをリソース(特定の Organization/リポジトリなど)ごとにグループ化します。group-by-severity - ポリシーを重要度ごとにグループ化します。--output-file - 出力ファイルのフルパス(デフォルト:出力ファイルなし、stdout に出力)。--error-file - エラーログのフルパス(デフォルト:./error.log)。人間が読める形式で出力する場合、legitify は従来の --color[=when] フラグをサポートしており、以下のオプションがあります:
auto - stdout がターミナルであれば色付き出力、それ以外は色なし(デフォルト)。always - 出力先に関係なく色付き出力。none - 出力先に関係なく色なし出力。--failed-only フラグを使用すると、合格/スキップされたチェックを結果から除外します。--ignore-policies-path $PATH を使用して、無視したいポリシーをファイルで指定し、特定のポリシーをスキップできます。
1 行に 1 ポリシー。例:
no_conversation_resolution requires_status_checks ─╯Scorecard は OSSF のオープンソースプロジェクトです:
Scorecards は、ソフトウェアセキュリティに関連する多数の重要なヒューリスティック(「チェック」)を評価し、各チェックに 0~10 のスコアを割り当てる自動化ツールです。これらのスコアを使用して、プロジェクトのセキュリティ態勢を強化するために改善すべき具体的な領域を理解できます。また、依存関係がもたらすリスクを評価し、これらのリスクを受け入れるか、代替ソリューションを評価するか、またはメンテナーと協力して改善を行うかについて、情報に基づいた決定を下すことができます。
legitify は、組織のすべてのリポジトリに対して scorecard を実行し、スコアポリシーを適用して、--scorecard フラグを使用して結果を表示することをサポートしています:
no - scorecard を実行しない(デフォルト)。yes - scorecard を実行し、各リポジトリのスコアが 7.0 未満の場合に警告するポリシーを適用します。verbose - scorecard を実行し、各リポジトリのスコアが 7.0 未満の場合に警告するポリシーを適用し、その出力を legitify の出力に埋め込みます。legitify は以下の scorecard チェックを実行します:
| チェック | パブリックリポジトリ | プライベートリポジトリ |
|---|---|---|
| Security-Policy | V | |
| CII-Best-Practices | V | |
| Fuzzing | V | |
| License | V | |
| Signed-Releases | V | |
| Branch-Protection | V | V |
| Code-Review | V | V |
| Contributors | V | V |
| Dangerous-Workflow | V | V |
| Dependency-Update-Tool | V | V |
| Maintained | V | V |
| Pinned-Dependencies | V | V |
| SAST | V | V |
| Token-Permissions | V | V |
| Vulnerabilities | V | V |
| Webhooks | V | V |
legitify には、policies/ ディレクトリに各 SCM 向けの一連のポリシーが付属しています。
これらのポリシーはこちらで文書化されています。
Legitify へのコントリビューションをご検討いただきありがとうございます!あらゆる種類のコントリビューションを奨励し、感謝しています。 開始に役立つリソースをいくつか紹介します:
legitify に関するご質問や操作上のサポートが必要な場合は、お気軽にお問い合わせください。私たちのチームはサポートを提供し、スムーズな体験を保証することに努めています。
Legitify をお気に入りいただけたなら、Legit Security プラットフォームもきっと気に入っていただけるでしょう!
以下は Legitify と Legit の機能比較表です:
| 機能 | Legitify | Legit Security プラットフォーム |
|---|---|---|
| サポートされるプラットフォーム | GitHub GitLab | 主要なすべての SCM(Azure DevOps、Bitbucket などを含む) CI/CD システム(Jenkins など) パッケージレジストリ(JFrog Artifactory など) クラウドプロバイダー(AWS など) |
| リスク検出 | SCM の設定ミスのみ | SCM の設定ミス CI の設定ミス CD の設定ミス パッケージレジストリの設定ミス パイプラインのリスク シークレット IaC セキュリティインシデント その他... |
| コンプライアンスレポート | OSSF SCM ベストプラクティス | SSDF SLSA SOC2 ISO 27001 FedRAMP その他... |
| ポリシードリフトの検出 | Legitify の GitHub Action を通じて定期的に検出可能 | 設定ミスが導入されたときにリアルタイムアラートを取得 |
| SDLC 資産管理 | - | あり |
| Issue とポリシー管理 | - | あり |
| Code To Cloud コンテキスト | - | あり(コンテキスト化された情報により、よりスマートな優先順位付けが可能) |
| ワークスペースとプロダクトグループ | - | あり |
| チケット発行とアラート通知 | - | Jira、Slack など |
| リスクの取り込み | - | SAST、SCA およびその他のテストソリューションとのインポート API および統合 |
| REST API | - | あり |