Guards guarding a castle

GitHub Advanced Security を理解する

Nicholas Liffen
Nicholas Liffen // Director, GitHub Advanced Security // GitHub

GitHub Advanced Security (GHAS) は、開発者ファーストのアプリケーション セキュリティ テスト ソリューションで、GitHub の世界有数のセキュリティ能力をパブリック リポジトリとプライベート リポジトリに取り込んでいます。GitHub Advanced Security の機能の多くはパブリック リポジトリ向けに無料で使用できますが、プライベート リポジトリの場合は GitHub Advanced Security ライセンスが必要です。開始には数回クリックするだけです。導入により、世界でも最高クラスのセキュリティ エンジニア達により高度に厳選された検出と修復の機能からの恩恵をすぐに得ることができ、コードとソフトウェア サプライ チェーンの安全性を最大限に確保できます。完全に自動化されているため、一度有効化すると GHAS テストの実行を忘れないようにする必要もなく、セキュリティ レビューを待ってからマージする必要もありません。

GHAS の有効化と使用に入る前に、少し時間をかけてその主な機能について理解しましょう。学習をスムーズに進められるよう、TELUS が GitHub Advanced Security の使用から得たインサイトを同社にいくつか紹介してもらいます。


このガイドの学習内容

  • GHAS に用意されている検出方法 

  • さまざまな機能がソフトウェアのさまざまな部分を保護している仕組み

  • セキュリティの進捗状況を報告するために利用できる機能


シークレット スキャン

シークレット スキャンでは、Git History や問題を含むリポジトリ全体を対象に、コードベースにコミットされた可能性のあるパターンベースの認証情報を検索することで、トークンやその他のシークレットが誤って漏洩するのを防ぎます。シークレット スキャンでは 200 種類を超えるトークン タイプをテストし、約 150 のサービス プロバイダーからなるパートナー プログラムがサポートすることで、ソフトウェア開発時に使用する一般的なツール全体で漏洩したシークレットを検出します。Organization 全体で固有のシークレットまたは独自のシークレットに対して 500 を超えるカスタム パターンを定義して、それらも確実に検出されるようにすることもできます。さらに、正規表現を使用してカスタム パターンを作成することもできます。シークレット スキャンのプッシュ保護機能では、新しいシークレットをリポジトリにコミットするときに開発者に事前に警告することで、先回りの保護を実現しています。

コード スキャン

コード スキャンは GitHub のアプリケーション セキュリティ テスト インターフェイスです。このインターフェイスは GitHub の静的分析ソリューションである CodeQL で最も頻繁に使用する画面です。既知の脆弱性だけでなく、未知のバリエーション、安全でない可能性のあるコーディング手法、その他のコード品質の問題を明らかにできるセマンティック分析エンジンとして機能します。

CodeQL では、リポジトリのコードのデータベースを作成することで分析用のコードを準備します。コンテキストなしで静的コードを単にスキャンするのではなく、CodeQL がアプリケーションのデータ フローを理解するために使用する構造化データとして表されるユーザー コードの「構築済み」バージョンを提供します。次に、CodeQL ではリポジトリの CodeQL データベース全体に対して一連のクエリを実行します。 

独自のクエリを作成することもできますが、最も重大な種類の脆弱性をカバーする何千ものクエリが GitHub には用意されています。たとえば、デフォルトの CodeQL クエリと Dependabot クエリを組み合わせると、OWASP Top 10SANS Top 25 への準拠を確実に維持できます。これらのクエリは精度が高いことを理由に選択されているため、ユーザーの偽陽性率が低くなります。

CodeQL のデフォルト クエリで大半のニーズに対応できます。 開発者がこのプラットフォームに慣れるにつれて、カスタム クエリを作成するチームも出てきていますが、デフォルトのクエリを使用するだけでも多くの価値が得られます。

Justin Watts
Justin Watts // Director, Engineering Productivity // TELUS

CodeQL に加えて、コード スキャンを使用して、SARIF (Static Analysis Results Interchange Format) 標準でファイルを生成する他のアプリケーション セキュリティ ツールを表示および操作することができます。動的分析、コード品質、コンテナー セキュリティなど、多くのカテゴリーから一般的なオープン ソースおよび商用アプリケーション セキュリティ ソリューションを自動的に統合する、すぐに使用可能な、70 を超える GitHub Actions が GitHub には用意されています。こうしたインテグレーションの結果はコード スキャン インターフェイスを通じて表れ、CodeQL と同じ形式で表示されるため、ツール全体で一貫したエクスペリエンスが実現されます。

サプライ チェーン セキュリティ

オープンソースを全ての人が安全に使用できるようにするという約束を守るために、多くのサプライ チェーン セキュリティ機能を無料で提供しています。これには、世界で最も堅牢で関連性が高く、正確なオープン ソース脆弱性データのソースをホストする GitHub の Advisory DatabaseSecurity Lab の調査へのアクセスが含まれています。さらに、依存関係を要約する依存関係グラフ、依存関係内の脆弱性を特定してそれらを修正、パッチ適用、または更新するための自動的な方法を提案する Dependabot も利用できます。

こうした機能を Enterprise ユーザー向けに拡張するために、GHAS では、安全でない依存関係がプライベート リポジトリに入るのを防ぐプロアクティブな機能である依存関係レビューなど、Enterprise 向けに調整されたサプライ チェーン セキュリティを提供しています。

レポート

GHAS 機能を有効にすると、セキュリティの概要を含むセキュリティ態勢と導入状況に関するレポートを作成できます。セキュリティの概要では、アプリケーション セキュリティの取り組みがどの程度うまくいっているかを時系列で大まかに把握できるだけでなく、即時対応が必要なコードベースの問題領域を特定して優先順位を付けるためのきめ細かいフィルタリング機能も用意されています。

次の項目: GitHub Advanced Security を有効にする

各機能の役割が分かったところで、次は各機能を有効にしてみましょう。操作があまりにも簡単なのできっと驚くはずです。