API の安定性を維持しながら OpenTelemetry のセキュリティを強化する

OpenTelemetry は、動作の変更が必要なセキュリティ修正に対応するため、クライアントバージョニングポリシーを更新しました。 安定版の SDK および計装ライブラリやエクスポーターなどの Contrib コンポーネントは、既存のユーザーに影響する場合でも、限定的な範囲で必要なセキュリティ変更をマイナーリリースまたはパッチリリースで行えるようになりました。 パブリック API の互換性は引き続き保護されます。

この目的は、ユーザーが現在使用しているメジャーバージョン内でセキュリティの改善を受けられるようにすることです。 一部のアップグレードでは、設定や運用上の変更が必要になる場合があります。 そのような場合、リリースノートで影響と対応方法を説明しなければなりません。

安定性にセキュリティ修正への道筋が必要な理由

私たちのエンジニアリングの価値観は「安定性を重視する」と述べています。 この約束は重要です。アプリケーションやライブラリは OpenTelemetry に依存しており、オブザーバビリティツールのアップグレードは予測可能であるべきです。

しかし、変更されない動作がセキュリティ上の脆弱性となることがあります。 たとえば、制限のないテレメトリーを受け入れると、攻撃者がアプリケーションの入力を過剰なメモリ使用に変えてしまう可能性があります。 以前は受け入れていた入力を拒否するセーフガードは、すべてのアプリケーションが引き続きコンパイルできるとしても、動作を変更します。

明示的な例外規定がなければ、そのような緩和策には新しいメジャーバージョンが必要になる可能性があります。 これは難しい選択を生みます。既存のリリースラインでリスクのある動作を維持するか、保護を得るためにユーザーにメジャーアップグレードを求めるかです。 新しいポリシーは、明確な境界と移行情報を伴い、現在のメジャーバージョン内で緩和策を提供するための道筋を提供します。

AI はタイムリーなセキュリティ改善をより緊急なものにしています。 英国国立サイバーセキュリティセンターの AI とサイバー脅威の評価は、AI が脆弱性の研究と悪用を改善し、防御側が対応できる時間を短縮すると予測しています。 ツールが攻撃者による脆弱性の発見と悪用を加速できる場合、微細な弱点でも注意に値します。 OpenTelemetry にとって、これはセキュリティアップデートを実用的に導入できるようにする必要性を強化します。

セキュリティリリースで変更できること

セキュリティリスクへの対応が必要な場合、安定版の SDK および Contrib コンポーネントは、メジャーバージョンの変更なしに動作、設定のデフォルト値、またはサポートされる設定値を変更できます。 これには、以前ドキュメント化されていた動作も含まれます。 該当する修正はパッチリリースで提供できます。

例としては、証明書の検証の厳格化、安全でないプロトコルの無効化、テレメトリーに認証情報が表示されることの防止、またはサービス拒否のリスクを軽減するためのリソース制限の導入があります。 緩和策の内容によっては、以前受け入れられていたデータや設定が拒否されたり、テレメトリーが切り詰められたり破棄されたりする可能性があります。 無効な設定は、アプリケーションの初期化の失敗を引き起こすこともあります。

メモリ枯渇のリスクを軽減するための、仮想的な SDK の属性値制限を考えてみてください。 アプリケーションは引き続きコンパイルできますが、大きすぎる値は切り詰められ、メモリ負荷が軽減される一方で、ダッシュボードに届く内容も変わります。 この影響はインシデント発生時に重要です。 このような変更は仕様に準拠し、セキュリティ上の利点、テレメトリーへの影響、および移行オプションを説明しなければなりません。

例外規定には明確な境界がある

すべての変更は、セキュリティリスクの緩和に必要な範囲に限定されなければなりません。 既存のソースおよびバイナリ互換性の保証(SDK プラグインインターフェイスを含む)を維持し、OpenTelemetry のエラーハンドリング要件に準拠しなければなりません。

この例外規定を使用して、パブリック API の名前変更や削除、シグネチャの変更、設定パラメーターの名前変更や削除、セマンティック規約の再定義、またはシグナルの非推奨化および削除ルールの回避を行うことはできません。 無関係な非互換の変更を含めることもできません。 安定版の API パッケージは、同じメジャーバージョン内での互換性保証を維持します。

アップグレード時の確認事項

リリースノートはセキュリティ変更の一部です。 リリースノートには、リスクと緩和策、影響を受ける動作と設定、変更前後の動作、新たに拒否される入力、切り詰めまたは破棄されるテレメトリー、および必要なユーザーアクションを記載しなければなりません。 また、利用可能な移行パスとそのセキュリティへの影響についても記載しなければなりません。

安全かつ実行可能な場合、実装はオーバーライドまたはその他の移行パスを提供すべきです。

SDK または Contrib のアップデートを導入するチームに向けて:

  1. パッチアップデートを含め、セキュリティリリースノートを読んでください。 影響を受ける設定や動作がアプリケーションに該当するかどうかを確認してください。
  2. 代表的な環境で起動とテレメトリーを検証してください。 より広範に展開する前に、設定の受け入れ、テレメトリーの量、重要な属性、ダッシュボード、およびアラートについてドキュメントに記載された影響を確認してください。
  3. サービスオーナーと必要な移行を計画してください。 テストとロールアウトの時間を確保してください。 一時的なオーバーライドが利用可能で必要な場合は、そのセキュリティへの影響を理解し、削除の計画を立ててください。

テレメトリーを生成するアプリケーションを保護することは、信頼できるオブザーバビリティを提供するための一部です。