静的アプリケーションセキュリティテスト(SAST)
ワークフローに SAST ツールを統合し、デプロイ前にコードのセキュリティ脆弱性を自動検出します。
「静的アプリケーションセキュリティテスト(SAST)」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。
SAST とは
静的アプリケーションセキュリティテスト(SAST)へようこそ。SAST は、開発プロセスの早い段階でコードを安全にするための重要な手法です。
SAST は「ホワイトボックス」テスト手法だと考えてください。アプリケーションを実際に実行せず、ソースコード、バイトコード、バイナリコードを調べます。
- Static: 実行されていないコードを分析します。
- Application: ソフトウェアに焦点を当てます。
- Security: 脆弱性の発見を目的とします。
SAST の仕組み
SAST ツールは、既知のセキュリティ脆弱性のパターンをコードから探します。次のような要素を分析します。
- データフロー: アプリケーション内でデータがどのように移動するか。
- 制御フロー: 命令が実行される順序。
- 構造上の欠陥: 不適切なコーディング手法や設定ミス。
この詳細な分析により、SQL インジェクション、クロスサイトスクリプティング(XSS)、安全でない直接オブジェクト参照(IDOR)などの問題を特定できます。
SASTが重要な理由
SASTをCI/CDパイプラインに組み込むと、次のような大きなメリットがあります。
- 早期検出:デプロイ前に脆弱性を発見できるため、修正コストを最小限に抑えられます。
- セキュリティ体制の強化:開発者が最初からより安全なコードを記述できるよう支援します。
- コンプライアンス:さまざまなセキュリティ標準や規制への準拠に役立ちます。
問題を早期に発見することで、後の段階で高額な修正が必要になったり、情報漏えいが発生したりするリスクを防げます。
一般的なSASTツール
オープンソースと商用の両方を含め、利用できるSASTツールは数多くあります。代表的なものには次のようなツールがあります。
- GitHub CodeQL:GitHubに組み込まれたSASTエンジンです。
- SonarQube:継続的なコード品質管理とセキュリティに広く利用されているプラットフォームです。
- Bandit:Pythonプロジェクト向けのセキュリティリンターです。
- Snyk Code:開発者のワークフローにセキュリティを組み込みます。
GitHub Actionsでは、組み込み機能であるCodeQLが最も簡単に統合できることが多いです。
GitHub ActionsでのSAST
SASTツールは、GitHub Actionsのワークフローに直接統合できます。これにより、コードをプッシュしたときやプルリクエストを作成したときに、コードを自動的にスキャンして脆弱性を検出できます。
継続的にフィードバックを得られるため、後の段階まで待つのではなく、セキュリティ上の問題が発生した時点で開発者が修正できるようになります。
ワークフローでのCodeQL設定
CodeQLを設定するための基本的なGitHub Actionsワークフローの例を見てみましょう。このアクションは、プッシュやプルリクエストが行われると自動的に実行され、コードをスキャンします。
github/codeql-action/init@v3ステップでCodeQL環境を準備します。
name: CodeQL Scan
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
analyze:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: javascript, python
# ... more steps for building and analyzingCodeQL解析の実行
CodeQLを初期化したら、必要に応じてコードをビルドし、その後で解析を実行します。autobuildステップを使うと、一般的なビルド処理を自動的に実行できることが多いです。
最後に、analyzeステップで解析結果をGitHubのSecurityタブにアップロードします。
# ... previous steps from last scene
- name: Autobuild
uses: github/codeql-action/autobuild@v3
# This step attempts to build your code (e.g., Maven, npm)
# If your project has a complex build, you might need a custom build step.
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3SASTレポートを理解する
SASTスキャンが完了すると、レポートが生成されます。GitHubでは、CodeQLの検出結果がリポジトリの「Security」タブに直接表示され、プルリクエストにはアノテーションとして表示されます。
レポートには通常、次の情報が含まれます。
- 脆弱性の種類:どのような問題なのかを示します。
- 重大度:Critical、High、Medium、Lowで示されます。
- 場所:コード内のファイルと行番号を示します。
- 修正方法:脆弱性の修正方法を示します。
SASTのベストプラクティス
SASTを最大限に活用するには、次の点を意識してください。
- 早期に統合する:できるだけ早い段階でコードをスキャンします。
- スキャンを自動化する:プッシュやPRのたびにSASTを実行します。
- 検出結果に優先順位を付ける:まずCriticalやHighの問題に取り組みます。
- 開発者を教育する:チームが一般的な脆弱性を理解し、修正できるよう支援します。
SASTの設定を定期的に見直し、改善することも重要です。
SAST理解度チェック
静的アプリケーションセキュリティテスト(SAST)は、アプリケーションのセキュリティを確保するための強力な手段です。次のうち、SASTの重要な特徴を最もよく表しているものはどれですか。
まとめ:パイプラインのSAST
このレッスンでは、静的アプリケーションセキュリティテスト(SAST)について学びました。SASTはコードを実行せずに解析し、開発サイクルの早い段階で脆弱性を発見します。
SASTツールの仕組みとメリット、そしてGitHub CodeQLのような強力なツールをGitHub Actionsのワークフローに統合する方法を確認しました。SASTを導入することで、アプリケーションのセキュリティ体制を大幅に強化できます。
よくある質問
「静的アプリケーションセキュリティテスト(SAST)」レッスンは無料ですか?
はい。「静的アプリケーションセキュリティテスト(SAST)」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。
「静的アプリケーションセキュリティテスト(SAST)」で何を学びますか?
ワークフローに SAST ツールを統合し、デプロイ前にコードのセキュリティ脆弱性を自動検出します。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
DevOps Bootcampを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「静的アプリケーションセキュリティテスト(SAST)」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDevOps Bootcampレッスンでコードを書いて実行できますか?
はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- CI/CD のセキュリティベストプラクティス
- GitHub によるシークレット管理
- 静的アプリケーションセキュリティテスト(SAST)
- 依存関係とソフトウェアサプライチェーンのセキュリティ(SCA)