GitHub と Azure DevOps 用に GitHub Advanced Security を構成する
GitHub Advanced Security は、組織がセキュリティの脆弱性を特定して軽減し、コードをセキュリティで保護し、ソフトウェア サプライ チェーンを保護するのに役立つ、GitHub によって提供される一連のセキュリティ機能です。 これは、次の主要なコンポーネントで構成されています。
- コード スキャン は、CodeQL またはサード パーティ製ツールによって提供される静的分析手法を使用して、リポジトリ内のコードを自動的にスキャンしてセキュリティの脆弱性とコーディング エラーを検出します。 古い依存関係や脆弱な暗号に関連するものなど、潜在的なセキュリティの脆弱性を特定します。
- シークレット スキャン は、リポジトリとコミット内の API トークンや暗号化キーなどのシークレットの存在を検出して修復するのに役立ちます。 リポジトリのコンテンツを自動的にスキャンし、検出に基づいてアラートを生成します。
- 依存関係のレビュー、パッケージ マニフェストやその他の構成ファイルから取得された直接的および推移的な依存関係に基づいて、ソフトウェア プロジェクトの依存関係を識別および管理するのに役立ちます。 これにより、プル要求をマージする前に、脆弱なバージョンの詳細など、依存関係への変更の影響をすべて評価できます。
- カスタム自動トリアージ ルール 、Dependabot アラートを大規模に管理するのに役立ちます。 カスタム自動トリアージ ルールを使用すると、無視できるアラートと、セキュリティ更新プログラムの適用が必要なアラートを制御できます。
- セキュリティ アドバイザリ では、オープンソースの依存関係で検出された脆弱性に関するセキュリティ アドバイザリとアラートがキュレーションされます。
GitHub Advanced Security は、GitHub と Azure DevOps の両方とネイティブに統合されます。
GitHub
GitHub では、Advanced Security のライセンスに基づいて、プライベート リポジトリで Advanced Security 機能を使用できます。 組織の GitHub Advanced Security ライセンスを購入したら、組織またはリポジトリ レベルでこれらの機能を有効または無効にすることができます。 これらの機能は、ライセンスの前提条件なしで GitHub.com のパブリック リポジトリでも永続的に有効になり、プロジェクトの可視性を変更した場合にのみ無効にすることができます。
組織の GitHub Advanced Security を構成するには、GitHub.com の右上隅にあるプロファイル アイコンを選択し、[組織] を選択します。 次に、[設定] を選択し、サイドバーの [セキュリティ] セクションで [コードのセキュリティと分析] を選択します。 これにより、組織内のリポジトリのすべてのセキュリティ機能と分析機能を有効または無効にできるページが表示されます。
構成変更の影響は、組織内のリポジトリの可視性によって決まります。
- プライベート脆弱性レポート - パブリック リポジトリのみ。
- 依存関係グラフ - この機能は常にパブリック リポジトリに対して有効になっているため、プライベート リポジトリのみ。
- Dependabot アラート - すべてのリポジトリ。
- Dependabot のセキュリティ更新プログラム - すべてのリポジトリ。
- GitHub Advanced Security - GitHub Advanced Security と関連する機能がパブリック リポジトリに対して常に有効になっているため、プライベート リポジトリのみ。
- シークレット スキャン - GitHub Advanced Security が有効になっているパブリック リポジトリとプライベート リポジトリ。 このオプションは、ユーザーのシークレット スキャン アラートを有効にするかどうかを制御します。
- コード スキャン - GitHub Advanced Security が有効になっているパブリック リポジトリとプライベート リポジトリ。
個々のプライベート リポジトリのセキュリティ機能と分析機能を管理することもできます。 これを行うには、GitHub.com からリポジトリのメイン ページに移動し、[設定] を選択します。 サイドバーの[セキュリティ]セクションで、[コードのセキュリティと分析]を選択します。 [コードのセキュリティと分析] ウィンドウで、個々の機能を無効または有効にします。 企業が必要なライセンスを購入していない場合、GitHub Advanced Security のコントロールは無効になります。
GitHub Advanced Security を無効にすると、依存関係の確認、ユーザーのシークレット スキャン アラート、およびコード スキャンが効果的に無効になります。 その結果、コード スキャンを含むワークフローはすべて失敗します。
有効にすると、セキュリティ機能が GitHub プラットフォームに直接統合され、継続的なセキュリティ監視とアラートが GitHub インターフェイス内で直接提供されます。 リポジトリ管理者と開発者は、セキュリティの分析情報、推奨事項、実行可能な手順にアクセスして、特定されたセキュリティの脆弱性に対処し、ソフトウェア プロジェクトの全体的なセキュリティ体制を強化できます。 さらに、組織はセキュリティ ポリシーをカスタマイズし、自動化されたワークフローを構成し、GitHub Advanced Security を他のセキュリティ ツールやサービスと統合して、特定のセキュリティ要件とコンプライアンスのニーズを満たすことができます。
Azure DevOps
GitHub Advanced Security for Azure DevOps ターゲット Azure Repos には、次のものが含まれます。
- シークレット スキャン プッシュ保護、コード プッシュにシークレットを公開するコミットが含まれているかどうかを確認します。
- シークレット スキャン リポジトリのスキャン、リポジトリで公開されているシークレットを検索します。
- 依存関係スキャン は、オープン ソースの依存関係における直接的および推移的な脆弱性を識別します。
- コード スキャン では、CodeQL 静的分析を使用して、SQL インジェクションや認証バイパスなどのコード レベルのアプリケーションの脆弱性を特定します。
Advanced Security は、組織、プロジェクト、またはリポジトリ のレベルで有効にすることができます。 これにより、シークレット スキャンのプッシュ保護とリポジトリのスキャンが自動的に有効になります。 実質的に、シークレットスキャンがバックグラウンドで実行されている間、シークレットを含む将来のプッシュは自動的にブロックされます。
依存関係のスキャンは、パイプライン ベースのスキャン ツールです。 結果はリポジトリごとに集計されます。 スキャンするすべてのパイプラインに依存関係スキャン タスクを追加することをお勧めします。 最も正確なスキャン結果を得るには、スキャンするコードをビルドするパイプラインのビルド手順に従って、依存関係スキャン タスクを追加してください。 Advanced Security Dependency Scanning タスク (AdvancedSecurity-Dependency-Scanning@1) を YAML パイプライン ファイルに直接追加するか、タスク アシスタントから選択できます。
コード スキャンは、リポジトリごとに結果が集計されるパイプライン ベースのスキャン ツールでもあります。 ビルド タスクは時間がかかる傾向があるため、メインの運用パイプラインの複製された別のパイプラインにコード スキャン タスクを追加するか、新しいパイプラインを作成することを検討してください。 パイプライン内で、次の順序でタスクを追加します。
- 高度なセキュリティ初期化コードQL (AdvancedSecurity-Codeql-Init@1)
- カスタムビルド手順
- 高度なセキュリティによるCodeQL解析を実行 (AdvancedSecurity-Codeql-Analyze@1)
さらに、高度なセキュリティ初期化 CodeQL タスクを使用して、分析する言語のコンマ区切りの一覧を含める必要があります。 サポートされている言語には、csharp、cpp、go、java、JavaScript、python、ruby、swift などがあります。