コンテンツにスキップ

PRゲーティングの概要

Aikido CI gatingは、機能ブランチが本番環境に到達する前にスキャンを行います。これにより、新たに導入されたIssueをブロックし、ブランチがどの既存Issueを解決しているかを確認できます。対象はオープンソース依存関係(SCA)、IaC、Secrets、SAST、マルウェア、ライセンスリスク、コード品質のIssueです。

Aikidoは2つのゲーティングモードを提供します。

  • PR Gating: 主にネイティブ統合(GitHub、GitLab、Bitbucket、Azure)を通じて処理されます。ブランチの差分をスキャンします。
  • Release Gating: Aikido CLIを通じて処理されます。デプロイ前に最終ビルドがクリーンであることを保証します。

ゲーティングは2通りの方法で設定できます。

  1. Aikidoインターフェース: GitHubGitLabBitbucketAzure向けのワンクリック設定を利用できます。この設定はすべてAikidoインターフェース内で管理され、見通しが良く、CIの実行時間を消費しません。
  2. CIパイプライン: 自身の環境で設定を管理したいチーム向けです。Bitbucket Pipesをネイティブに利用するか、Aikido CLIPublic CI APIを使って他のランナー(Jenkins、CircleCIなど)と統合できます。

Aikidoでゲーティングを設定すると、何が失敗のトリガーになるかを細かく制御できます。これらの設定は Integrations > PR Quality Gating > [Your Setup] から確認できます。

ここから以下が可能です。

  • デフォルトの設定: ワークスペースに新しく追加されるすべてのリポジトリに対するデフォルトのゲーティング設定を定義します。詳細は新規追加リポジトリ向けのデフォルトPR/MRゲーティング設定を参照してください。
  • 一括編集: 複数のリポジトリを選択して、プロジェクト全体に設定変更を適用します。
  • 細かい制御: 特定のプロジェクトのニーズに合わせて、単一のリポジトリの設定を調整します。
  • 詳細設定: Aikidoがワークフローとどのように連携するかを細かく調整します。

CIゲートを失敗させる最小の深刻度レベル(例: CriticalHigh)を選択します。

  • このレベル以上で検出された新しいIssueは、ビルドを失敗させます。
  • このしきい値未満のIssueも報告はされますが、マージをブロックしません。

CIゲートで特定のスキャンタイプをオン/オフに切り替えられます。これにより、ワークフローに最も関連するセキュリティカテゴリに集中できます。

開発速度を維持するために、Aikidoがワークフローとどのように連携するかを細かく調整します。

  • PRチェックを常にグリーンにする: マージを物理的にブロックすることなく、セキュリティの可視性を得るために使用します。Aikidoは完全なスキャンを実行しますが、常にgitプロバイダーへ「Success」ステータスを報告します。「可視性フェーズ」にあるチームに最適です。
  • ドラフトPull Requestではチェックを無効化する: 作業中のコードでノイズが発生するのを避けられます。PRが「Ready for Review」に移行した時点で初めてスキャンがトリガーされます。
  • @AikidoSecコマンドをAikidoユーザーに制限する: Aikidoワークスペースのメンバーのみが、PRやMRのコメント経由でアクション(@AikidoSec ignoreなど)をトリガーできます。他のユーザーからのコメントは拒否され、返信が返されます。

CI実行後、Aikidoはその特定のブランチのスキャン結果への直接リンクを提供します。Aikidoはリポジトリ全体ではなくブランチの差分をスキャンするため、修正されたIssue新たに導入されたリスクを明確に区別できます。

  • ブランチで修正済み: PRが既存の脆弱性を解決した場合、Aikidoはフィード上でそれを「PR open」としてマークし、マージ前に修正内容を確認できるようにします。
  • 新しいIssue: ブランチ内で導入され、深刻度のしきい値を超えるものは、失敗をトリガーします(「Always Green」が有効な場合を除く)。
ソフトウェアプロジェクトの未解決のクリティカルなセキュリティIssueと未対応タスクを一覧表示するテーブル。

失敗状態を回避したい場合、CIゲートを失敗させたIssueをignoreすることで可能です。Issueをクリックし、右上のActionsメニューからIgnoreまたはSnoozeを選択してください。これにより、このIssueは今後のCI内のすべてのブランチでignore/snoozeされます。