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 依存関係スキャン タスク (AdvancedSecurity-Dependency-Scanning@1) は、YAML パイプライン ファイルに直接追加することも、タスク アシスタントから選択することもできます。
コード スキャンは、結果がリポジトリごとに集約されるパイプライン ベースのスキャン ツールでもあります。 ビルド タスクは時間がかかる傾向があるため、メインの運用パイプラインの複製された別のパイプラインにコード スキャン タスクを追加するか、新しいパイプラインを作成することを検討してください。 パイプライン内で、次の順序でタスクを追加します。
- Advanced Security Initialize CodeQL (AdvancedSecurity-Codeql-Init@1)
- カスタム ビルド ステップ
- Advanced Security Perform CodeQL Analysis (AdvancedSecurity-Codeql-Analyze@1)
さらに、 Advanced Security の初期化 CodeQL タスクを使用して分析する言語のコンマ区切りの一覧を含める必要があります。 サポートされている言語には、csharp、cpp、go、java、JavaScript、python、ruby、swift などがあります。