Chromium Chronicle #23: Chrome インフラにおける検証済みビルド

エピソード 23: カリフォルニア州マウンテンビュー、Akash Mukherjee(2021 年 7 月)
前のエピソード

Chrome を構築する際、多くの要素が環境に貢献し、アーティファクトの出力に影響を与えます。 OS、サポート ライブラリのインストール、サードパーティの依存関係、 インストールしたツール、ランタイム環境自体などです。 各プロダクトは、さまざまなセキュリティ対策レベルで構築されています。

Google はこれまで Binary Authorization、 インサイダー リスクを最小限に抑える内部ランタイム適用チェック 本番環境ソフトウェアと構成が Google Cloud にデプロイされ、 適切に審査され、来歴を追跡できるようにします。

一人でビルドが不正使用されないようにする 検知されることなく LUCI 上に構築された アーティファクトのサプライチェーンです Google は、ユーザーに出荷するソフトウェアのリスクを軽減しています。

昨年から、ビルドごとに、システムによって検証可能なビルドが生成される manifest - 署名付きの JWT ビルドに入ったソースの完全な記述 生成されたバイナリとアーティファクトの暗号ハッシュ、および完全なビルドパラメータ。 このビルド マニフェストを使用すると、アーティファクトをソースまでトレースできます。 ビルドプロセスとその出力を検証できます。

さらに、マニフェストを使用すると、ビルドされたアーティファクトが変更されていないことも確認できます。 署名は無効になります。 合計 これにより、信頼できるシステム間を移動する際に、アーティファクトの管理の連鎖を確保できます。

Binary Authorization は 2 段階システムとして実装されています。 システムがprovenanceを生成する (ビルド時の情報を含む) ポリシーの適用は、ソフトウェアの署名またはインストールの前に行われます。

def CreateProvenance(self, build_manifest: Mapping[str, Any]):
  """Builder generates and signs provenance given build manifest. Signed JWT is placed
  alongside built artifact."""

Chrome の場合、生成されたソフトウェア アーティファクトに Google の署名インフラストラクチャを使用して署名する前に、 ビルドの特定の最小セキュリティ要件を満たすようにポリシーが適用される。

def VerifyProvenance(self, artifact_hash: str, provenance: str):
  """Provenance is verified using a policy engine service before signing an artifact."""

要件は、次の 4 つの領域に大別されます。

  • ソース管理: ビルドに追加されたデータを保護します。
  • ビルド: ソースをバイナリに変換するプロセスを保護します。
  • 来歴: 検証可能なビルド マニフェストを含む証明書。
  • ポリシー: 特定のアーティファクトが特定のコンテキストに該当するかどうかを決定するルール。

Chrome とインフラストラクチャの CI および CD プロセスの一環として、ポリシーの適用チェックを実装する コードが動作していることを セキュリティに関する特定の最小基準を満たしている必要があります。 これは重要なコントロールであり、 潜在的に悪意のあるインサイダーまたは侵害されたインサイダー アカウントの ユーザーに配布するソフトウェアを改変する。