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