Content last updated 2026-08-13

Secure QA プロセス

すべてはマージリクエストから始まります

私たちは、プロダクトへのすべての貢献がフォーマルなレビューを伴うマージリクエストを経ることを求め、要求しています。そのため、私たちは GitLab の開発者ドキュメントに記載されているマージリクエストワークフローコードレビューガイドラインに従っています。ただし、これらのドキュメントからいくつかの項目を強調し、レビュアーと著者に対するいくつかの追加的な考慮事項を追加したいと思います。

マージリクエストレビュアーへの追加的な考慮事項

  • ピアやコミュニティメンバーのブロックを解除する最善の方法は、タイムリーにフィードバックを提供することです。キャパシティがいっぱいで、私たちが目指す SLO 内でレビューを行えない場合は、別のレビュアーを見つけられるようにマージリクエストでその旨を知らせてください。

マージリクエスト著者への追加的な考慮事項

  • グローバルに分散した組織であることは、人々の間のやり取りに遅延を生じさせることがあり、頻繁にそうなります。変更へのフィードバックを受け取るのが予想より長くかかっても、個人的に受け取らないでください

Secure QA プロセス

Secure アナライザーは、サポートされる言語/フレームワークのダウンストリームテストプロジェクトに対して新しいコミットを実行することで、マージリクエストを検証します(例:Dependency Scanninggemnasium アナライザーphpgo、およびその他いくつかのテストプロジェクトに対してテストをトリガーします)。検証は、生成されたレポート出力をアナライザーのリポジトリにコミットされた期待レポートと比較することで行われます。アナライザーの動作が変更された場合、期待レポートと生成されたレポートの内容が一致しなくなるため、パイプラインは失敗します。

Dependency ScanningSASTSecrets Detection アナライザーの期待値は、プロジェクトの qa/expect ディレクトリに、各フレームワーク/言語タイプのサブディレクトリとともに格納されています。

テストプロジェクト

テストプロジェクトは Secure の tests サブグループにあり、その使用方法とベストプラクティスは common READMEに記載されています。

アナライザーの動作変更

アナライザーへの変更がレポート出力を変更する場合、期待レポートも変更する必要があります。

SASTDependency ScanningSecret Detection では、期待レポートはアナライザーとともに、言語/フレームワークのサブディレクトリ内のテストプロジェクトに対応するパスに格納されています。例えば、java-maven の依存関係をスキャンするための期待レポートは gemnasium-maven/qa/expectに格納されています。このようにして、アナライザーの動作が変更された場合、期待値を同じコミットで変更してパッケージ化できます。

License Compliance については、期待値はテストプロジェクトの qa/expect ディレクトリ(例:ruby-bundler/qa/expect)に格納されています。

詳細については、Security Products テストプロジェクトリポジトリで確認できます。

OpenShift でのテスト

現在、OpenShift の自動テストはありません。変更がアナライザーの動作に OpenShift 上でどのような影響を与えるかを確認したい場合は、OpenShift 環境をセットアップしてテストできます。これを行うには 2 つの方法があります。

1. 自動スクリプト

ディストリビューションチームが OpenShift クラスターをセットアップするための自動スクリプトを共有しています。私たちのグループではテストされていませんが、この方法はクラスター作成プロセスを効率化できる可能性があります。

2. 手動セットアップ

GitLab Sandbox Cloudへのアクセスがすでにある場合、以下の手順に従って OpenShift クラスターをセットアップできます。

  1. https://gitlabsandbox.cloud/ にログインします。

  2. Static Analysis Group EC2 開発マシンセットアップガイドのステップ 1 から 3 に従って、AWS サンドボックスアカウントを作成し、AWS コンソールにログインします。

  3. AWS コンソールにログインしたら、左上の検索フィールドで「OpenShift」を検索します。Services カテゴリの下に Red Hat OpenShift Service on AWS が表示されます。ROSA は AWS との統合された OpenShift エクスペリエンスを提供します。この検索結果をクリックして進みます。

    AWS 上の OpenShift サービスの検索結果

  4. Red Hat OpenShift Service on AWS (ROSA) ランディングページにリダイレクトされます。左サイドバーの Get started リンク、または Get started オレンジボタンをクリックします。

    AWS 上の OpenShift サービスのランディングページ

  5. Verify ROSA prerequisites ページにリダイレクトされます。

    ROSA 前提条件の確認

    ROSA enablement セクションの Enable ROSA HCP and ROSA classic ボタンをクリックし、I agree to share my AWS account number... のチェックボックスをオンにしたままにします。ROSA enablement セクションには Your request to enable ROSA is pending and may take several minutes to resolve. We recommend keeping this page open so that you can review any errors. と表示されます。

  6. 数分後、ROSA enablement セクションが更新され、以下のメッセージが表示されます。

    • You have agreed to share your AWS account number and email address with red hat.
    • You have enabled ROSA and HCP and ROSA classic.

    ROSA の有効化完了

  7. 右下隅の Continue to Red Hat オレンジボタンをクリックします。これにより https://sso.redhat.com にリダイレクトされ、Log in to your Red Hat account が要求されます。

    Red Hat アカウントへのログイン

  8. Log in with Google をクリックし、gitlab.com の Gmail アカウントを使用します。Register for a Red Hat account ページにリダイレクトされます。

    Red Hat アカウントの登録

    必要なフィールドに入力します。Email address には gitlab.com の Gmail アカウントを使用し、Create my account をクリックします。

  9. Complete your account connection ページにリダイレクトされます。I have read and agreed to the terms and conditions チェックボックスをオンにし、Connect accounts ボタンをクリックします。

    アカウント接続の完了

  10. 次に We need a little more information と説明する別のページにリダイレクトされます。必要なフィールドに入力します。Email address には gitlab.com の Gmail アカウントを使用し、Account type には Personal を選択します。

    追加情報の入力

  11. Terms and conditions ボックスが表示されます。View Terms and Conditions をクリックして同意します。

    利用規約

  12. Red Hat Hybrid Cloud Console Overview 画面にリダイレクトされます。Red Hat OpenShift Service on AWS (ROSA) ダイアログボックスの Create cluster をクリックして OpenShift クラスターをセットアップできます。

    Red Hat の概要画面

    テストのみにクラスターを使用する予定の場合は、2 ヶ月間の無料試用期間がある OSD Trial を選択することをお勧めします。この期間後、クラスターは削除されます。無料試用期間中は 2 ヶ月以内に有料プランにアップグレードできます。

  13. クラスターのセットアップが完了したら、OpenShift クラスターにログインするためのユーザーを作成する必要があります。Cluster List > <your cluster> を選択し、Identity Providerhtpasswd を選択します。Cluster Roles and Access で OpenShift クラスターにアクセスするためのユーザーを作成できます。このユーザーが dedicated-admin グループと cluster-admins グループに属していることを確認してください。

  14. その後、Open console ボタンをクリックし、前のステップで作成したクラスター管理者ユーザーでログインします。

  15. OpenShift クラスターにログインしたら、Operators > Operator Hub を選択して GitLab Runner Operator をインストールできます。GitLab Runner を検索し、検索結果をクリックして、こちらで説明されているように Install ボタンをクリックします。

  16. OpenShift クラスターでランナーをセットアップするには、operator の READMEに含まれる手順に従ってください。

    gitlab-runner-operator README.md で参照されているランナートークンは、GitLab プロジェクトから CI/CD Settings > Runners > New Runner を選択することで取得できます。

    ランナーのセットアップには、コマンドラインツール oc(OpenShift クライアント)のインストールが必要です。oc を使用する前に、クラスターに対して認証する必要があります。OpenShift クラスター管理者ユーザー名をクリックし、Copy login comand を選択することで認証情報を確認できます。デフォルトのランナーセットアップでは、コンテナが root 権限で実行されることに注意してください。root 以外のユーザーへのアクセスを制限するには、以下の設定を提供できます。

    [[runners]]
    name = "gitlab-runner"
    url = "https://gitlab.com"
    executor = "kubernetes"
    [runners.kubernetes]
        [runners.kubernetes.pod_security_context]
        run_as_non_root = true
        run_as_user = 1000
    

    この設定を oc create configmap my-runner-config --from-file=config.toml で適用した後、以下のようにランナー設定を更新し、oc appy -f gitlab-runner.yml で適用できます。

    apiVersion: apps.gitlab.com/v1beta2
    kind: Runner
    metadata:
      name: gitlab-runner
    spec:
      gitlabUrl: https://gitlab.com
      buildImage: alpine
      token: gitlab-runner-secret
      tags: openshift
      config: my-runner-config
    
  17. OpenShift ランナーは、GitLab プロジェクト設定の CI/CD Settings > Runners に緑色で表示されるはずです。