セキュリティ gate とは? - リスクのあるコードの出荷を止める
セキュリティ gate とは、build が定義されたセキュリティポリシーに違反したときに、その先へ進むのを止める、パイプライン内の自動化されたチェックポイントです。
セキュリティ gate は、ポリシーがパイプラインと出会う場所です。「この build は通過しない限り先へ進まない」と告げる必須のチェックです。スキャン、secret チェック、ライセンスルール、attestation の要件、そのいずれもが gate になりえます。うまくやれば、gate は問題を自動的かつ一貫して捕捉します。まずくやれば、人々が迂回するうるさい障害物になります。
gate が強制するもの
- 依存関係やイメージに、修正可能な critical な脆弱性がないこと。
- diff の中に secret が検出されないこと。
- 必要な署名または attestation が存在すること。
- ライセンスとポリシーの遵守。
gate の仕組み
gate は、その失敗がパイプラインをブロックする CI のステップです。pull request が文字どおりマージできなくなるよう必須ステータスチェックとして設定するか、artifact が本番に到達できないようデプロイ gate として設定し、通過するまで進めないようにします。
調整の問題
低い深刻度の検出結果すべてでブロックする gate は、人々にそれを無視するか迂回するよう仕込んでしまいます。効果的な gate は、実際に深刻で対応可能なもの(修正可能な critical、本物の secret)でブロックし、それ以外は build を止めずに報告します。
ハード gate vs ソフト gate
ハード gate は build を失敗させます。ソフト gate は警告しつつ通過を許します。カバレッジを整えている間や、助言的なチェックに便利です。多くのチームは、ノイズを見積もるためにソフトから始め、シグナルが信頼できるようになったら gate を厳格にします。
gate とシフトレフト
gate を早い段階に置くこと(デプロイ直前だけでなく pull request にも)が、シフトレフトセキュリティの本質です。修正が安価なうちに問題を捕捉し、終盤に積み上がる前に対処するのです。マージ時の gate は、問題が共有ブランチに到達することを未然に防ぎます。
重要なポイント
- セキュリティ gate は、定義されたセキュリティポリシーに違反する build をブロックする。
- 失敗が本当に進行を止めるよう、必須チェックまたはデプロイ gate として組み込む。
- 深刻で対応可能な検出結果でブロックするよう調整し、信頼性を保つ。