次の方法で共有


StackHawk テクニカル オンボード ガイド

StackHawk を使うと、API とアプリケーションのセキュリティ テストをソフトウェア デリバリーの一部に含めることができます。 StackHawk プラットフォームは、ソフトウェア開発のあらゆる段階でアプリケーションのバグを見つけて修正する機能をエンジニアリング チームに提供します。また、開発中のアプリケーションと API のセキュリティ態勢に関する分析情報をセキュリティ チームに提供します。

セキュリティ テストのアプローチ

StackHawk は、CI/CD で実行される最新の動的アプリケーション セキュリティ テスト (DAST) および API セキュリティ テスト ツールです。開発者はこれを使って、運用環境に展開する前にセキュリティの問題を迅速に検出して修正することができます。

セキュリティのシフト レフトに重点を置いた StackHawk の最新の DAST アプローチにより、組織が行っている現在のアプリケーション開発およびテスト方法は変わります。 セキュリティ チームのシフト レフトを支援するために不可欠な次の手順は、どのような API を持っているか、どこに住んでいるか、誰に属しているかを理解することです。 StackHawk は、GitHub リポジトリ内のコードに関するセキュリティの問題を検出するためのツールに生成 AI テクノロジを組み込んでいます。 ソース コード内の非表示の API を特定し、自然言語の応答で関連する問題を記述する機能があります。

有効化

アプリケーションのセキュリティを優先することを検討されている Microsoft のお客様は、StackHawk をシームレスに使うパスを利用できるようになりました。 StackHawk プラットフォームは Microsoft エコシステムに複雑に組み込まれているため、開発者は、ワークフローの調整に GitHub Actions と Azure DevOps のどちらを使う場合でも、ニーズに合わせて複数のパスを検討できます。 Microsoft Defender for API が GitHub または ADO リポジトリにマップされると、開発者は SARIF を有効にして StackHawk の高度なセキュリティ ツールを利用できるようになります。

開発者は、StackHawk の無料試用版をアクティブ化して Hawkscan を実行し、GitHub Actions と Azure DevOps のどちらを使ってワークフローを調整するか、ニーズに合わせて複数のパスを検討できます。

DevOps 環境を Microsoft Defender for Cloud に接続する

この機能を使用するには、DevOps 環境を Defender for Cloud に接続する必要があります。

GitHub 組織をオンボードする方法に関するページをご覧ください。

Azure DevOps 組織をオンボードする方法に関するページを参照してください。

StackHawk API セキュリティ テスト スキャンを構成する

GitHub Actions CI/CD 環境の場合

このワークフローは、GitHub コード スキャンが有効になっていることを想定しています。 有効になっている場合は、upload-to-code-scanning オプションが true に設定されていることを確認します。 GitHub コード スキャンを有効にしていない場合は、以下の「GitHub コード スキャンなしでの Defender for Cloud 統合の有効化」セクション内の追加手順に従ってください。

  1. StackHawk HawkScan Action を使うには、GitHub にログインし、StackHawk アカウントを持っていることを確認します。

  2. GitHub からは、定義済みの GitHub Actions ワークフロー プロセスが既に存在する GitHub リポジトリを使うか、新しいワークフローを作成することができます。 GitHub Actions ワークフローの一環として、この GitHub リポジトリをスキャンして API の脆弱性を探します。

    理想的には、動的 Web API に対応する GitHub リポジトリをスキャンするように選ぶことをお勧めします。 REST、GraphQL、または gRPC API を使用できます。 HawkScan は、OpenAPI 仕様などの検出可能な API 仕様ファイルや、認証スキャンを使うとより効果的に機能します。 スキャン対象の脆弱な Web API をお持ちでない場合、StackHawk には、フォークして試すことができる脆弱な API 例である JavaSpringVulny が用意されています。

  3. 必ず StackHawk から自分の API キーを収集しておきます。また、StackHawk アプリケーションを作成し、stackhawk.yml スキャン構成を GitHub リポジトリにチェックインしておきます。

  4. GitHub Actions CI/CD 用 StackHawk HawkScan Action の詳細については、StackHawk HawkScan Action のページを参照してください。 リポジトリの /settings/secrets/actions ページから、StackHawk API キーを HAWK_API_KEY に割り当てます。 次に、それを GitHub Actions ワークフローに追加するために、以下のステップをビルドに追加します。

    # Make sure your app.host web application is started and accessible before you scan.
    #  - name: Start Web Application
    #     run: docker run --rm --detach --publish 8080:80 --name my_web_app nginx
       - name: API Scan with StackHawk
          uses: stackhawk/hawkscan-action@v2.1.3
          with:
          apiKey: ${{ secrets.HAWK_API_KEY }}
          env:
             SARIF_ARTIFACT: true
    

    こうすることで、stackhawk.yml で定義された app.host を指すランナー上で HawkScan が開始されます。 スキャンから SARIF の出力を取得するために、必ず with.env.SARIF_ARTIFACT: true を含めてください。 HawkScan アクションには、他にも構成の入力が記述されています。 アクションの使用例については、こちらを参照してください。

  5. また、以下の手順に従って、stackhawk/hawkscan-action を新しいワークフロー アクションに追加することもできます。

    1. GitHub にサインインします。
    2. GitHub アクションを構成する GitHub リポジトリを選びます。
    3. [Actions](アクション) を選択します。
    4. [新しいワークフロー] を選びます。
    5. 検索ボックスで「StackHawk HawkScan」を検索してフィルター処理します。
    6. StackHawk ワークフローの [構成] を選びます。
    7. エディターでサンプル ワークフローを変更します。 GitHub Actions のドキュメントを参照してください。
    8. [変更点のコミット] を選択します。 メイン ブランチに直接コミットするか、プル要求を作成できます。 メイン ブランチに対して PR が開かれると、既定のワークフローが起動するため、PR を作成して GitHub のベスト プラクティスに従うことをお勧めします。
    9. [Actions] (アクション) を選んで、新しいアクションが実行されていることを確認します。
    10. ワークフローが完了したら、[セキュリティ] を選び、[コード スキャン] を選んで結果を表示します。
    11. StackHawk によって検出されたコード スキャン アラートを選びます。 [コード スキャン] タブのツールでフィルター処理することもできます。StackHawk でフィルター処理します。
  6. これで、StackHawk のセキュリティ スキャン結果が GitHub コード スキャンに表示されることを確認できました。 次に、これらのスキャン結果が Defender for Cloud 内で使用できることを確認します。 Defender for Cloud に結果が表示されるまでに最大 30 分かかる場合があります。

GitHub コード スキャンなしでの Defender for Cloud 統合を有効にする

使用中の環境に GitHub コード スキャンが存在せず、StackHawk からのセキュリティ スキャン結果を Defender for Cloud に統合したい場合は、以下の手順に従ってください。 StackHawk ワークフロー手順内の追加後に、Microsoft Security DevOps GitHub アクションを使用してスキャン結果を Defender for Cloud に直接送信するための以下の手順を GitHub ワークフローに追加します。

- name: Upload SARIF file
        uses: actions/upload-artifact@v4
        with:
          name: StackHawk_Report_${{ github.run_id }}
          path: stackhawk.sarif
          if-no-files-found: error
- name: Upload results to MSDO
        uses: microsoft/security-devops-action@v1
        id: msdo
        with:
          existingFilename: stackhawk.sarif

次に、ワークフローに追加のアクセス許可を追加し、id-tokenwrite に設定します。

ワークフローの実行後、結果が Defender for Cloud に表示されるには最大 30 分かかる場合があります。

  1. [推奨事項] を選択します。
  2. API セキュリティ テストを検索してフィルター処理します。
  3. 推奨設定 [GitHub リポジトリで API セキュリティ テストの結果を解決する必要がある] を選択します。

[GitHub リポジトリで API セキュリティ テストの結果を解決する必要がある] という推奨設定のスクリーンショット。

Azure Pipelines 環境の場合

  1. StackHawk HawkScan 拡張機能を使うには、Azure Pipelines (https://dev.azure.com/{yourorganization}) にログインしていること、StackHawk アカウントを持っていることという要件があります。

  2. Azure Pipelines から、既に定義済みの azure-pipelines.yml プロセスを設定したパイプラインを使うか、新しいワークフローを作成することができます。 azure-pipelines.yml ワークフローの一環として、この Azure DevOps リポジトリに API の脆弱性がないかスキャンします。

    HawkScan をインストールして実行するタスクのスクリーンショット。

  3. HawkScan 拡張機能が Azure DevOps 組織に追加されたら、HawkScanInstall タスクと RunHawkScan タスクを使って、HawkScan をランナーに追加し、別のステップとして HawkScan を開始することができます。

    - task: HawkScanInstall@1.2.8
       inputs:
       version: "3.7.0"
       installerType: "msi"
    
    # start your web application in the background
    # - script: |
    #    curl -Ls https://GitHub.com/kaakaww/javaspringvulny/releases/download/0.2.0/java-spring-vuly-0.2.0.jar -o ./java-spring-vuly-0.2.0.jar
    #    java -jar ./java-spring-vuly-0.2.0.jar &
    
    
    - task: RunHawkScan@1.2.8
       inputs:
       configFile: "stackhawk.yml"
       version: "3.7.0"
       env:
       HAWK_API_KEY: $(HAWK_API_KEY) # use variables in the azure devops ui to configure secrets and env vars
       APP_ENV: $(imageName)
       APP_ID: $(appId)
       SARIF_ARTIFACT: true
    

    こうすることで、stackhawk.yml で定義された app.host を指すランナーに HawkScan がインストールされます。 スキャンから SARIF の出力を取得するために、必ずタスク仕様に env.SARIF_ARTIFACT: true を含めてください。 HawkScan アクションには、他にも構成の入力が記述されています。 アクションの使用例については、こちらを参照してください。

  4. Azure DevOps 組織に HawkScan 拡張機能をインストールします。

    1. StackHawk の Web サイトにアクセスし、無料試用版にサインアップします。
    2. Windows 開発者は、この Windows 上でソフトウェアをビルドするためのサンプル アプリを参照してください。
    3. HawkScan と Azure Pipelines のドキュメントを参照してください。
  5. 新しいパイプラインを作成するか、Azure DevOps プロジェクト内で StackHawk のサンプル アプリを複製します。 最初のパイプラインを作成するチュートリアルについては、「最初のパイプラインを作成する」を参照してください。

  6. パイプラインを実行します。

  7. 結果が Azure DevOps で正しく発行されていることを確認するには、stackhawk.sarifCodeAnalysisLogs フォルダーの下にある [ビルド成果物] にアップロードされていることを検証します。

    [ビルド成果物] にアップロードされた stackhawk.sarif のスクリーンショット。

  8. オンボード プロセスが完了しました。 次に、Defender for Cloud に表示される結果を確認します。

Defender for Cloud に移動する:

  1. [推奨事項] を選択します。
  2. API セキュリティ テストを検索してフィルター処理します。
  3. 推奨設定 [Azure DevOps リポジトリで API セキュリティ テストの結果を解決する必要がある] を選びます。

[Azure DevOps リポジトリで API セキュリティ テストの結果を解決する必要がある] という推奨設定のスクリーンショット。

よく寄せられる質問

StackHawk のライセンスはどのように付与されますか?

StackHawk は、プラットフォーム上にプロビジョニングされているコード共同作成者の数に基づいてライセンスが付与されます。 カスタム価格、EULA、またはプライベート コントラクトについては、marketplace-orders@stackhawk.com にお問い合わせください。

Microsoft Defender for APIs の概要