機能
ポリシーゲート:本番環境に届く前に脆弱性を止める
スキャナーは脆弱性を知らせます。ポリシーゲートは、それを含むビルドを止めます。CRACIのゲートは各ビルドが実際に取り込んだものの記録に基づいて判断するため、誰もアラートを間に合うように確認しなかったというだけで、脆弱なパッケージが本番環境に届くことはありません。
更新日
アラートだけでは不十分な理由
多くのセキュリティツールは事後に報告します。検出結果がダッシュボードに届き、誰かがトリアージし、担当チームにチケットが送られ、その間もリリースは進み続けます。検出結果が見落とされたり、スキャンがそのパッケージを捉えていなかったりすれば、誰かが何かを決める前に脆弱性は本番環境に入っています。
ポリシーゲートなら、リリースが先に進む前に、リアルタイムでビルドを止めることもできます。
ゲートで止められるもの
| ルール | 動作 |
|---|---|
| ビルド内の検出結果 | ポリシーで禁止した検出結果を含むビルドはブロックされます。 |
| 特定のCVE | チームがあるCVEを出荷してはならないと判断したら、それを含むビルドはブロックされます。 |
| 既知の悪意あるリリース | xzのようにCVEが公開されている悪意あるリリースはフラグが立てられ、同じ方法でブロックできます。 |
| ライセンス | ライセンスポリシーのルールで、禁止したライセンスを持ち込むビルドをブロックできます。 |
ゲートの精度は、見えている範囲で決まる
ロックファイルのスキャンに基づくゲートは、ロックファイルに記載されたものしかブロックできません。CRACIは各ビルドに入ってくる通信を把握するため、ゲートはジョブが実際に取り込んだものに基づいて機能します。
- あらゆる階層の推移的依存関係。推移的依存関係をご覧ください。
- 隠れた依存関係。インストールスクリプトがダウンロードするコード、ビルド時にダウンロードを行うRustのビルドスクリプト、コンテナビルドのベースイメージなどです。
- CIキャッシュから復元されたパッケージ。記録され、キャッシュ由来であることが示されます。
CRACIのSBOMに含まれるすべてのコンポーネントは実際にビルドに存在したものなので、ゲートが推測されただけのパッケージに基づいて判断することはありません。その理由はビルド時SBOMをご覧ください。
ゲートとエグレスポリシーの役割は異なる
| リスク | 防ぐもの |
|---|---|
| 禁止した既知のCVEを持つ依存関係 | ポリシーゲート |
| 禁止したライセンス | ポリシーゲート |
| ビルドに不要なホストへの接続 | デフォルト拒否に設定したエグレスポリシー |
| まだアドバイザリのない新しい悪意あるパッケージ | アドバイザリが出るまではフラグが立ちません。それでも、エグレスポリシーをデフォルト拒否に設定していれば、ビルドに不要なホストへシークレットを送信することは阻止されます。 |
新しいCVEが公開されたとき
- CRACIが監視対象のSBOMを再評価し、影響を受けるものにフラグを立てます。
- セキュリティチームがトリアージし、修正を担当するチームに送ります。
- ビルド履歴から、どのビルドにそれが含まれていたか、つまりどれだけの期間影響を受けていたかがわかります。
- 担当チームが修正を出荷し、ポリシーゲートがそのCVEを以降のビルドから締め出します。
修正を行うのは引き続きお客様のチームです。ゲートは、修正された状態が保たれることを確実にします。脆弱性トラッキングをご覧ください。
ゲートが行わないこと
- 到達可能性分析は行いません。ゲートの判断基準はパッケージがビルドに含まれるかどうかであり、コードが脆弱な関数を呼び出しているかどうかではありません。
- マルウェア検出は行いません。ゲートはアドバイザリに基づいて動作するため、まったく新しい悪意あるパッケージはゲートでは検出されません。
- コードスキャンは行いません。SASTとシークレットスキャンは設計上の対象外であり、CRACIと併用できる優れたツールが数多くあります。
ポリシーゲート:よくあるご質問
ポリシーゲートとは何ですか?
ビルドがポリシーに違反したときにそのビルドを止めるルールです。後で誰かが対応する問題として報告するのではなく、ゲートがビルドの進行を止めます。
ポリシーゲートはスキャナーのアラートとどう違いますか?
アラートは、誰かが間に合うように対応するかどうかに左右されます。ゲートは自ら動作します。さらにCRACIのゲートはビルドが取り込んだものの記録に基づいて機能するため、ロックファイルのスキャンでは決して見えないパッケージも捕捉できます。
特定のCVEを1つだけブロックできますか?
はい。ポリシーゲートで特定のCVEを含むビルドをブロックできるため、チームが判断を下した脆弱性が後のビルドで再び入り込むことはありません。
ゲートでライセンスをブロックできますか?
はい。記録されたすべてのパッケージには宣言ライセンスが付与されており、ライセンスポリシーのルールに基づいてビルドをブロックできます。
ゲートで新しいマルウェアを止められますか?
ゲートだけでは止められません。CVEが公開されている既知の悪意あるリリースは、ほかの脆弱性と同様にフラグが立てられ、ゲートでそれを含むビルドをブロックできます。新しい悪意あるパッケージは、アドバイザリが出るまでフラグが立ちません。その間の被害を抑えるのは、デフォルト拒否に設定したエグレスポリシーです。
ポリシーゲートはどのCIシステムで使えますか?
CRACIランナー上のGitHub Actionsです。その他のCIシステムへの対応はロードマップに掲載されています。