GitHubは、世界中の開発者によってプロジェクトコードの保存および共有に利用されています。開発者はパブリックリポジトリを作成し、さまざまなプロジェクトで共同作業を行うことができます。2008年に設立されたGitHubは、クラウドベースのサービスでホスティング機能を提供しており、2018年にMicrosoftによって買収されました。
GitHubには、ソフトウェアリクエストの発行、バグトラッキング、タスク管理などの機能を備えたバージョン管理システムがあります。オープンソースでアクセス可能であり、3億7200万以上のリポジトリがあります。しかし、GitHubの作成者はセキュリティを考慮すべきであり、時には妥協が生じることもあります。パスワードが盗まれる可能性があり、GitHubシークレットが比較的安全でない状態で保持されることもあります。
GitHubには、シークレットトークンの形式を分析し、誤ってコミットされたものを検索するためのシークレットスキャニングパートナープログラムがあります。これらのスキャン結果をクラウドサービスプロバイダーに送信し、エンドポイントを検証することができます。GitHubスキャンは、認証情報の不正使用を防止し、パブリックnpmパッケージにも適用できます。組織はプライベートリポジトリをスキャンし、シークレットスキャニングを表示・管理することができます。GitHubには、シークレットスキャニングメッセージペイロードを含むWebhookを受け入れるシークレットアラートサービスもあります。

このガイドでは、GitHub Secret Scanningについて必要なすべての情報を網羅し、詳細を解説します。
GitHub Secret Scanningとは?
GitHub Secret Scanningは、組織内のシークレットを安全に保つためのさまざまなセキュリティ機能を含みます。これらの機能の一部はツールとして利用でき、GitHubの高度なセキュリティソリューションを導入している企業は独自の利点を享受できます。
GitHubシークレットスキャニングは、GitHubリポジトリ内のすべてのブランチのGit履歴全体からシークレットを抽出します。
GitHub Secret Scanningが重要な理由
GitHub Secret Scanningは、認証情報の漏洩を防ぎ、開発者の正規表現パターンを定義するのに役立つため必要です。リポジトリが機密データの露出リスクにさらされていることは広く知られており、ソースコードにシークレットをハードコーディングするのは悪い慣習です。DevOpsチームはGitHub Actionsを使用してワークフローを自動化し、アプリケーションをデプロイしていますが、強力な組み込み機能であるシークレットを備えています。ユーザーはソースコード内で値を安全に保存・利用できますが、専門家はツールの利用だけでは十分なセキュリティが確保できないと考えています。
サードパーティのシークレットスキャニングツールは、DevOpsワークフローにおいて、シークレットを安全かつ集中管理する外部サービスを提供します。これらはGitHub Actionsシークレットよりも柔軟性が高く、より大きな保存容量やストレージ制限、シークレットキーのローテーション、アクセス制御管理、監査、バージョニングなどの追加機能を提供します。
GitHubで利用可能なシークレットスキャニングの機能
- GitHub ActionsシークレットはGitHub Actionsのみに表示され、出力ログやWebインターフェースには表示されません
- GitHub Secret Scanningは、SSH証明書などの暗号化データファイルの保存に利用でき、いつでも更新または削除できます
- GitHub Actionsシークレットは、特定のセキュリティポリシーおよび暗号化プロトコルに従い、認可されたユーザーのみが閲覧・アクセスできます
ただし、デフォルトのGitHub Secret Scannerにはさまざまな制限があります:
- 1つ目は、シークレットごとに最大サイズが64KBに制限されており、リポジトリごとに保存できるシークレットは100個までです
- 組織は1,000個以上のシークレットを保存できず、シークレットキーのローテーション、監査、バージョニングなどの高度なセキュリティ機能がありません
- クロスリポジトリのサポートがなく、組織は複数のワークフローやプロジェクト間でシークレットを同期、共有、整理、同時更新することができません。
GitHub Secret Scanningの仕組み
ユーザーは、リポジトリ内の漏洩したシークレットをスキャンする際のリアルタイムアラートの受信方法を設定できます。GitHubシークレットスキャニング機能は、所有する任意のパブリックリポジトリで有効化できます。有効化すると、GitHubはリポジトリ内のすべてのブランチのGit履歴全体でシークレットをスキャンします。
シークレットスキャニングは、同一組織内の複数リポジトリに対して機能します。GitHubシークレットスキャニングは、組織がシークレットの不正使用を防止し、誤ってコミットされることを防ぎます。
GitHub Secret Scanningの設定方法
- GitHub.comにアクセスし、リポジトリのメインページに移動します
- Settingsタブをクリックしてドロップダウンメニューを表示します。サイドバーのセキュリティセクションでCode Security and analysisをクリックします
- GitHub Advanced Securityが有効かどうかを確認します。有効でない場合は、Enableをクリックします。
- このリポジトリのGitHub Advanced Securityを有効にするをクリックします。
- これが完了すると、組織のパブリックリポジトリでシークレットスキャニングが自動的に有効になります。Secret Scanning機能の横に「Enable」ボタンが表示されている場合は、それをクリックする必要があります。Disableボタンをクリックすることでシークレットスキャニングをオフにできます。
- GitHubシークレットスキャニングは、サポートされているシークレットを含むコミットもブロックし、Push Protection機能を提供します。手動でプッシュを確認したい場合は、Enableをクリックできます。
GitHub Secret Scanningのベストプラクティス
GitHubシークレットスキャニングに関するベストプラクティスをいくつか紹介します:
新しいシークレットを優先するシークレットに保存する前に、最近提出された認証情報を確認することが重要です。これにより、組織のシークレット数を抑え、新しいシークレット通知を適切なチームにWebhookで転送できます。開発者は十分なトレーニングドキュメントを受け取り、シークレットをコミットする前に配布されるべきです。アラートへの対応や高度な修復プロセスの実装は、すべてのシークレットタイプにとって重要です。
コミット済みシークレットへの対応最も重要なコミット済みシークレットに対応し、古いシークレットの確認を開始することが重要です。各シークレットタイプを特定した後、開発者は修復プロセスを定義し、文書化する必要があります。また、新しいユーザーへの変更内容の伝達や、影響を受けたリポジトリの管理ガイドラインの策定も必要です。
高度なセキュリティスキャンの実行GitHub Enterprise Cloudを使用して高度なセキュリティスキャンを設定できます。組織にはGitHub Advanced Securityライセンスが必要で、GitHubはパブリックリポジトリでパートナーパターンスキャンを自動的に実行できます。
GitHub Secret Scanningのメリットとデメリット
Git Secret Scanningのメリット
シークレットスキャニングは、組織が機密情報を特定し、その保護措置を講じるのに役立つ有用な機能です。シークレットスキャニングツールを利用することで、企業はクラウド全体のセキュリティ体制を強化できます。GitHubは、すべてのパブリックリポジトリでシークレットスキャニングを無料で提供し、クラウドベースのサービスプロバイダーと連携して、シークレットスキャニングパートナープログラムを通じて漏洩した認証情報を検出します。
オープンソース開発者は、コード内の漏洩シークレットに関するアラートを無料で受け取り、変更を追跡し、適切な対応を取ることができます。GitHubは2022年4月より、すべてのGitHub Advanced Security顧客向けにプッシュプロテクションを追加し、シークレットの事前スキャンとコミット前の漏洩防止を実現しています。カスタムパターンのプッシュプロテクションは、パターンごとに設定・適用されます。
以下はGitHub Secret Scanningのメリット一覧です:
- GitHubシークレットスキャニングは、すべての規模の組織に無料で提供され、パブリックアクセスが可能です
- 追加のセキュリティを提供し、パブリックリポジトリに保存されたすべてのシークレットを追跡するのが非常に便利です
- GitHubシークレットスキャニングは、個々のコード行を手動で確認するよりもはるかに高速です
- 医療、金融、小売業界は、機密情報を暗号化し、関連する基準や規制への準拠を確保できます。
Git Secret Scanningのデメリット
以下はGitHub Secret Scanningのデメリットです:
- 脅威分析に時間がかかる場合があります
- シークレット検出時に誤検知や見逃しが発生することがあります
- 開発時間が遅くなる可能性があります
- 自動ビルドの失敗が発生する可能性があります
- サードパーティのGitHubシークレットスキャニングツールと比較してスキャンされる行数が少ないです
- データベースでの抽出エラーや生成コードでのアラートが発生することがあります
- パブリックリポジトリのパートナーパターン用シークレットスキャニング設定は変更できません
SentinelOneがGitHub Secret Scanningで支援できること
盗まれた認証情報は、サイバーセキュリティ攻撃全体のほぼ半数の原因となっています。 GitHubは、パブリックリポジトリで100万件以上の漏洩シークレットと、毎分十数件の偶発的な漏洩を検出しています。
APIやトークン、その他のシークレットの偶発的な漏洩は、クラウドデータ侵害、評判の損失、法的責任のリスクを高めます。デフォルトのGitHub Secret Scannerは、既知の攻撃パターンやシグネチャに基づいて認証情報の悪用を検出します。組織は、これらのシークレットがどのようにアクセスされたかを調査する手段がなく、人的要素を軽視しがちです。
ここでSentinelOneが活躍します。
SentinelOneは、クラウドの設定ミスや認証情報の漏洩を特定し、Infrastructure as Code (IaC) テンプレートをレビューします。セキュリティチームは、管理されていないインスタンス、Kubernetesクラスター、多様なクラウドサービスを追跡できます。
SentinelOneの包括的なCNAPPは、さらに一歩進んだシフトレフトセキュリティを実現します。Offensive Security Engineは、あらゆる潜在的なエクスプロイトを特定し、未知または隠れた脆弱性を修復します。SentinelOne CNAPPは、パブリックおよびプライベートクラウドリポジトリをスキャンし、ミッションクリティカルなワークロードを保護します。セキュリティ自動化を提供し、組織のクラウドセキュリティ体制を即座に向上させます。このプラットフォームは750種類以上のシークレットを検出し、クラウド認証情報の漏洩も防止します。
静的な機械学習分析と動的な振る舞い分析を組み合わせることで、セキュリティチームはシークレットの問題をリアルタイムでスキャン・修復できます。SentinelOne CNAPPはシークレットキーを定期的にローテーションし、シークレットの漏洩リスクを低減します。プラットフォームはAES、DES、3DESなどの共通鍵暗号アルゴリズムを実装し、保護を強化します。Purple AIはパーソナルセキュリティアナリストとして機能し、AIによる統合コントロールプレーンでSecOpsを加速します。これにより、平均対応時間を短縮し、シークレット調査を効率化します。
サーバー、VM、コンテナ向けのAI搭載クラウドワークロード保護(CWPP)。実行時の脅威をリアルタイムで検知・阻止します。
まとめ
GitHub Secret Scanningは多くのリソースを消費する場合がありますが、組織はこれを軽視すべきではありません。適切なGitHubシークレットスキャニング手法は、データ侵害の防止、顧客の保護、運用上の障害の最小化に役立ちます。
GitHubシークレットスキャニングは重要なクラウドセキュリティコンポーネントであり、コードリポジトリの欠陥を特定するのに役立ちます。GitHubシークレットスキャニングツールがなければ、組織は脆弱な状態となり、深刻な結果を招く可能性があります。
よくある質問
GitHubシークレットスキャンは、パブリックおよびプライベートリポジトリ全体でシークレットをスキャンするためのツールやプロセスを使用することです。コード内のシークレットの欠陥をスキャンし、設定のドリフトや変更を検出し、効果的な対応や脅威の修復計画を立てます。
ユーザーは、デフォルトのGitHub Secret Scanning機能を使用してコードシークレットをスキャンできます。あるいは、SentinelOneのような包括的なGitHubシークレットスキャンツールを利用することで、より全体的なセキュリティと保護を実現できます。
GitHubが提供するGitHub Secret Scanningは完全に無料です。CNAPPに含まれるSentinelOne GitHub Scanningツールは、スタータープランで月額2,000米ドルから利用できます。
GitHubのコードスキャンは、デフォルトでGitHubユーザーに無料で提供されています。ただし、SentinelOneのような有料のプレミアムツールによって解決されるさまざまな制限が存在します。


