プロダクト

ラストマイルを担うボット:Rollouts、Security Review

Rustam Lalkaka読了時間 1分

本日、安全で信頼性の高いコードをより速く本番環境へ届けられる、ソフトウェア開発向けのボットをリリースしました。

  • Rollouts は、変更を PR から本番環境まで見守り、リグレッションを指摘して、正常な状態に戻すための対処を行います。
  • Security Reviewer は、コードベース内のセキュリティ上のIssueを見つけて修正します。

これらを構築した理由

コードを書くことは、もはやボトルネックではありません。いまだにスピードが上がっていないのは、PR を出した後の作業すべてです。コードの安全性を確認し、デプロイを見守り、レイテンシの上昇が本当に起きているのかを見極め、11 件の変更のうちどれがチェックアウトを壊したのかを突き止める、といった作業です。

こうした作業は難しく、繰り返しが多く、しかも膨大なコンテキストを必要とします。まさにボットに任せるべき仕事だと思いませんか?

私たちはこれまで、セルフドライビングなコードベースの実現を目指していると公言してきました。Rollouts と Security Review は、どのソフトウェアチームも「もっと専門知識と時間があれば」と感じている一般的なタスクを、自律的に処理します。

Rollouts

Rollouts は、PR がオープンされた時点から、変更が本番環境で問題なく動作していると確信できるまで、その変更を追跡します。

ソース管理、デプロイシステム、テレメトリ (Datadog、Grafana、Honeycomb など、メトリクスやトレースを保存している場所) を接続します。マージ前に、Rollouts は diff を読み取って監視プランを作成します。プランには、検出したリスク、変更によって期待される効果、そして現在の計測では変更が機能したかどうかを判断できない箇所が含まれます。不足している点があれば、プランを編集してください。

デプロイ後、Rollouts はプランに含まれるシグナルをデプロイ前のベースラインと比較します。リグレッションを検出すると、原因と疑われる変更と、これから実行する対応を通知します。設定に応じて、作成者への通知、段階的ロールアウトの一時停止、または承認待ちのリバート PR の作成が行われます。

現時点で特に得意なことは次の 3 つです。

  • 特定リージョンの特定エンドポイントに限定されたリグレッションを、グローバルアラートが発報される前に検出する
  • 意図した効果とリグレッションを区別するため、意図的なスパイクで誰かが呼び出されることがない
  • マージ前に計測の不足を指摘する (計測の不足は、問題のある変更が見過ごされる最も一般的な原因です)

今後の予定:Rollouts がトラフィックの段階的な増減を直接行えるフィーチャーフラグ統合、およびリリーストレインやデプロイフリーズへの対応。

Security Reviewer

Security Reviewer はすべての PR で実行され、コードベース全体のコンテキストを踏まえて変更内容を読み、見つかった脆弱性を説明と修正案付きで報告します。

Security Reviewer の導入により、平均レビュー時間は 4.8 分から 3.8 分に短縮され、コメントの受け入れ率は 45〜50% から 60〜70% に向上しました

静的解析はパターンマッチングに頼るため、SQL 呼び出しの近くにある文字列連結はすべて指摘する一方で、リファクタリング後に実行されなくなった認可チェックは見逃してしまいます。Security Review は、セキュリティエンジニアと同じ視点でコードを読みます。ユーザー入力がどこから入り、最終的にどこへ到達し、その途中で何を経由するのかを追跡します。

標準で次の項目を検出します:

  • SQL、コマンド、テンプレート、LDAP の各経路におけるインジェクション
  • 新規または変更されたルートにおける認証・認可の欠落や不備
  • ソースにコミットされたシークレットや認証情報
  • 安全でないデシリアライズや未検証のリダイレクト
  • 既知の脆弱性を持ち込む依存関係の変更
  • インフラストラクチャや設定における安全でないデフォルト値

各検出結果には、深刻度、攻撃経路、そしてワンクリックで適用できる修正が示されます。

はじめに

Rollouts と Security Reviewer は、本日より Teams プランおよび企業プランでご利用いただけます。自動化タブからいずれかのボットを有効にして、さっそく使い始めましょう。