GitLab Security Essentials - ハンズオンラボ: 依存関係と IaC スキャン

このハンズオンガイドは、コードで依存関係スキャンと IaC スキャンを使用するプロセスを案内します。

推定所要時間: 15 分

タスク A. 依存関係と IaC の追加

初期プロジェクトが構築されたので、デプロイプロセスを開始したいと思います。プロジェクトに設定したい 2 つの領域があります。1 つ目はアプリケーションの依存関係、2 つ目はアプリケーションのデプロイ用のインフラストラクチャです。プロジェクトにこれらを設定しましょう。Python プロジェクトに依存関係を追加するには、以下の手順を実行します。

  1. Security Labs プロジェクトに移動します。

  2. requirements.txt ファイルを開き、その中の依存関係を確認します。

        #
        # This file is autogenerated by pip-compile with Python 3.12
        # by the following command:
        #
        #    pip-compile --output-file=requirements.txt requirements.in
        #
        requests==2.27.1
        pyopenssl
        httplib2
        flask
        flask-restful
        twisted
        service_identity
        flask-cors
        flask-httpauth
        pytz
    

    pip の場合、pip-compile ヘッダーを提供する必要があることに注意してください。

    Infrastructure as Code については、S3 バケットを環境にデプロイすることから始めます。これを行うには、インフラストラクチャ定義を含む Terraform ファイルを設定します。

  3. プロジェクトに移動します。

  4. + > 新しいファイル を選択します。

  5. ファイル名s3.tf と入力します。

  6. ファイルに以下の内容を追加します:

    resource "aws_s3_bucket_public_access_block" "publicaccess" {
        bucket = aws_s3_bucket_demobucket.id
        block_public_acls = false
        block_public_policy = false
    }
    
  7. 変更をコミット を選択し、現在の main ブランチにコミット を選択したままにします。変更をコミット を選択します。

タスク B. 依存関係スキャンの追加

プロジェクトに依存関係が追加されたので、依存関係にセキュリティ脆弱性が含まれていないことを確認したいと思います。これを検証するには、プロジェクトに依存関係スキャンを追加します。

  1. ビルド > パイプラインエディター を選択します。

  2. include ブロックに以下の行を追加します:

      - component: ilt.gitlabtraining.cloud/components/dependency-scanning/main@~latest
    
  3. 適切なコミットメッセージ(例: 「Added Dependency scanning to pipeline」)を入力し、main ブランチにコミットしていることを確認して、変更をコミット を選択します。

    新しいパイプラインの進行状況を確認するには:

  4. 左サイドバーで ビルド > パイプライン を選択します。

  5. 最新のパイプラインを選択します。dependency-scanning というジョブが表示されているはずです。このパイプラインが完了すると、セキュリティスキャンの結果を確認できます:

  6. 左サイドバーで Secure > 脆弱性レポート を選択します。

  7. 脆弱性レポート で、検索バーをクリックし、レポートタイプ をクリックしてから 依存関係スキャン をクリックして、依存関係スキャンツールでフィルタリングします。

  8. 各脆弱性をクリックして検出結果を確認します。結果には、使用している requests ライブラリのバージョンにある様々な脆弱性が表示されます。requirements.txt ファイルでこれらの問題を修正しましょう。

  9. レポートで脆弱性を選択すると、各問題を修正するためのターゲットバージョン番号が表示されます。最初の脆弱性はバージョン 2.32.4 へのアップグレードを推奨し、2 番目の脆弱性はバージョン 2.32.0 以上へのアップグレードを推奨し、3 番目の脆弱性はバージョン 2.31.0 以上へのアップグレードを推奨しています。これから、2.32.4 がすべての脆弱性を修正することがわかります。このバージョンを設定するには、既存の requirements.txt ファイルを編集します。requests のインポートを以下のように更新します:

    #
    # This file is autogenerated by pip-compile with Python 3.12
    # by the following command:
    #
    #    pip-compile --output-file=requirements.txt requirements.in
    #
    requests==2.32.4
    ...
    
  10. これらの変更をコミットし、脆弱性が検出されなくなったことを確認します。

  11. 脆弱性のスキャンに加えて、依存関係スキャンはプロジェクトの依存関係リストも提供します。これを表示するには、左サイドバーで Secure > 依存関係リスト を選択します。

  12. 記載されているコンポーネントとバージョンを確認します。各依存関係のライセンスも表示されていることに注目してください。

タスク C. IaC スキャンの追加

プロジェクトにインフラストラクチャ as コードスキャンを追加するには:

  1. ビルド > パイプラインエディター を選択します。

  2. include セクションに以下のコンポーネントを追加します:

        - component: ilt.gitlabtraining.cloud/components/sast/iac-sast@~latest
    
  3. 変更をコミット を選択します。

  4. 結果のパイプラインを確認し、kics-iac-sast ジョブが追加されていることを確認します。

  5. パイプラインが完了するまで待ちます。

  6. Secure > 脆弱性レポート に移動します。

  7. IaC スキャンの結果を確認します。脆弱性を検索またはフィルター… バーの スキャナー ドロップダウンを選択し、kics を選択することでフィルタリングできます。これらの結果は SAST レポートタイプとしてラベル付けされます。

ラボガイド完了

このラボ演習が完了しました。このコースの他のラボガイドを参照できます。

ご提案・改善点

ラボに変更を加えたい場合は、マージリクエストで変更内容を送信してください。