[フレーム]
BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

InfoQのすべての体験をアンロックして、そのメリットを最大限に活用しましょう

ログインして、InfoQのすべての体験をアンロックしましょう!お気に入りの著者やトピックの最新情報を入手し、コンテンツと交流し、限定リソースをダウンロードできます。

ログイン
または

アカウントをお持ちでない方

登録
  • あなたにとって重要なトピックや同僚の最新情報を入手しましょう最新の洞察とトレンドに関する最新情報を即座に受け取りましょう。
  • 継続的な学習のために、無料のリソースに手軽にアクセスしましょうミニブック、トランスクリプト付き動画、およびトレーニング教材。
  • 記事を保存して、いつでも読むことができます記事をブックマークして、準備ができたらいつでも読めます。

Topics

地域を選ぶ

AIオールスターズ2025

"AI活用"をキーワードに「AIを使い倒し/使いこなす」企業の最前線をお届けします。

QCon San Francisco - image
QCon San Francisco 2025

Get production-proven patterns from the leaders who scaled a GenAI search platform to millions, migrated a core ML system without downtime, and architected a global streaming service from the ground up.

Early Bird ends Nov 11.

QCon AI New York - image
QCon AI New York 2025

Move beyond AI demos to real engineering impact. Discover how teams embed LLMs, govern models, and scale inference pipelines to accelerate development securely.

Early Bird ends Nov 11.

QCon London - image
QCon London 2026

Benchmark your systems against leading engineering teams. See what really works in FinOps, modern Java, and distributed data architectures to balance cost, scale, and reliability.

Early Bird ends Nov 11.

InfoQ ホームページ ニュース GitHubによるCodeQLのセキュリティ活用方法

GitHubによるCodeQLのセキュリティ活用方法

2025年4月10日 読了時間 4 分

作者:

翻訳者

原文リンク(2025年03月22日)

GitHubのProduct Security Engineeringチームでは、GitHubの裏側を支えるコードのセキュリティ確保に向けて、CodeQLといったツール開発を通した大規模な脆弱性の検出・修正を行っている。 同チームからアプローチに関する洞察が共有されており、他の組織でもコードベース保護に向けたCodeQLの活用方法を知ることができる。

CodeQLで、セキュリティ分析の自動化が可能になっており、データベースクエリと似た方法でコードクエリができるようになっている。これは単純なテキスト検索よりも効果的な方法で、コード指示によるデータ移動の追跡、安全でないパターンの特定、テキストでは特定できない脆弱性の検出が可能だ。これにより、コードのパターンのより深い理解と潜在的なセキュリティ問題の発見が実現している。

GitHubのProduct Security Engineeringチームでは、CodeQLを多様な場面で採用しており、GitHubリポジトリのセキュリティ確保に役立てている。 既定の設定では、defaultクエリスイートとsecurity-extendedクエリスイートが使用可能で、同社のリポジトリの大半に対応している。この設定により、CodeQLでpull requestのセキュリティチェックが自動化されている。

GitHubのRubyモノリスなどの大規模なリポジトリの場合は、さらなる対策が必要だ。各セキュリティニーズに合わせたカスタムクエリパックを使用することになる。加えて、セキュリティ監査の実施やさらに調査が必要なコードパターンの特定には、マルチリポジトリ バリアント分析(MRVA)が用いられている。また、GitHubのコードベースに特有な潜在的な脆弱性の検出を目的として、カスタムクエリが記述されている。

当初、CodeQLのカスタムクエリはリポジトリで公開されていたが、このアプローチでは、いくつかの課題が生じていた。更新ごとに本番環境へのデプロイプロセスの実行が必要であることに加え、CIワークフローでの分析時間の増大、CodeQL CLIの更新に起因した問題などがあった。こうした課題の対処として、クエリパックの公開がGitHub Container Registry(GCR)に移行された。この変更により、プロセスの合理化や保守性が向上したほか、クエリ更新時のフリクションが減少している。

カスタムクエリパック開発時には、ruby-allパッケージなどの依存関係が考慮される。defaultクエリスイートからクラスを拡張することで、不要な複製の回避とクエリの簡潔性・有効性が両立できている。だが、CodeQLライブラリAPIの更新が決定的な変化をもたらす可能性があり、クエリのパフォーマンスへの影響が懸念されている。 こうしたリスクの軽減に向けて、最新バージョンのruby-allに対したクエリが開発されているが、リリース前から特定のバージョンにバージョンロックがかかっている。これにより、意図しないアップデートによる想定外の問題を防止でき、クエリのデプロイ処理実行が確実なものになっている。

クエリの安定性を維持するために、クエリごとに新しいユニットテストが書かれている。これらのテストはクエリパックリポジトリ向けのCIパイプラインに統合されており、デプロイ前の潜在的な問題の早期検出を可能にしている。リリースプロセスにはいくつかのステップがあり、pull requestの展開、ユニットテストの記述、変更のマージ、パックバージョンのインクリメント、依存関係の解決、更新されたクエリパックのGCRへの公開などが含まれる。この構造的アプローチで、開発の柔軟性と求められる安定性のバランスを図っている。

クエリパックをリポジトリに統合する方法は、組織全体のデプロイ戦略に依存している。GitHubのセキュリティチームではCodeQLの設定ファイルを使用した特定のクエリパックのバージョンロックは行わず、GCRを利用したバージョン管理を採用することにした。このアプローチでリポジトリが公開済みの最新バージョンを自動的に使用できるようになるほか、必要に応じて変更の迅速なロールバックも可能だ。

GCRでのクエリパック公開にまつわる課題の1つは、組織内で複数リポジトリにまたがるアクセシビリティをいかに確保するかであった。改善に向けてアクセス権限の手動付与、個人用アクセストークン、アクセス権限継承用のリポジトリとパッケージのリンク接続など、複数の解決策が検討された。 最終的にリポジトリをリンク接続するアプローチが導入され、手動による介入を必要としない複数リポジトリの権限管理の効率化が実現した。

GitHub のセキュリティチームでは、セキュリティ分析の強化に向けた様々なカスタムクエリを作成している。これらのクエリは、リスクの高いAPIの特定、セキュアコーディングプラクティスの実行、APIエンドポイントの認可制御の不備検出に特化している。一部のクエリは、厳格な実行を行うメカニズムとしてではなく、教育ツールとして機能しており、こうした教育的クエリではアラート報告時の重大度レベルが低く設定されて、デプロイを中断しないようになっている。 こうしたアプローチにより、開発者によるセキュリティリスク評価と最も重大な脆弱性への迅速な対応の両立が実現している。

作者について

Craig Risi

もっと見るより少なく

この記事に星をつける

おすすめ度
スタイル

このコンテンツのトピックは DevOps です。

関連記事:
  • 関連記事

    • 関連スポンサーコンテンツ

特集コンテンツ一覧

InfoQ ニュースレター

毎週火曜日に前週のまとめコンテンツをお送りいたします。(日本語版は不定期リリース)25万人のシニアな開発者コミュニティーにぜひご参加ください。 サンプルを見る

We protect your privacy.

BT

AltStyle によって変換されたページ (->オリジナル) /