Containers & Kubernetes

Voucher のご紹介 - コンテナ サプライ チェーン保護を簡易化するサービス

opensource

※この投稿は米国時間 2020 年 11 月 19 日に、Google Cloud blog に投稿されたものの抄訳です。

Kubernetes は、スケーリングに対応した最新型ソフトウェアの構築に便利です。しかし、その安全性を高めるには、ソフトウェア サプライ チェーンを保護する強力なガバナンスも必要となってきます。Google Cloud では、安全なマネージド ベース イメージや、Container Registry の脆弱性スキャンBinary Authorization など、パイプラインを安全に保護する仕組みを提供し、デベロッパーが特定のプロバイダに縛られることなく優れたソフトウェアを柔軟に開発できるよう支援しています。

このたび、ソフトウェア サプライ チェーンを保護するためのオープンソース ツールセットに新しく Voucher が加わりました。Voucher は、Shopify のソフトウェア サプライ チェーン セキュリティ チームが Google Cloud ツールとの使用を想定して開発したツールで、CI / CD パイプラインによって作成されたコンテナ イメージを評価し、既定のセキュリティ条件を満たす場合は署名を付与する機能を持ちます。その後、デプロイの段階で Binary Authorization がこれらの署名を検証し、組織のポリシーとコンプライアンス要件を満たす明示的に承認されたコードのみを本番環境にデプロイする、という仕組みになっています。

Voucher は Grafeas の仕様に準拠し、最初からオープンソースとして提供されています。Voucher が生成する署名(「証明書」)は、Binary Authorization か、オープンソースの Kritis アドミッション コントローラによって検証することが可能です。たとえば Voucher では、インフラストラクチャ エンジニアは初めから Binary Authorization ポリシーを使って来歴などのセキュリティ要件を適用できます(例: 安全なソースブランチからビルドされたイメージにのみ付与される署名を要求する)。また、脆弱性の高いイメージをブロックすることも可能です(例: 「中」レベルを超える既知の脆弱性がないイメージにのみ付与される署名を要求する)。さらに、Voucher はオープンソースなので、手軽に拡張してセキュリティ チェックやコンプライアンス チェックを追加したり、任意の CI / CD ツールと統合したりできます。

Shopify のシニア インフラストラクチャ セキュリティ エンジニアである Cat Jones 氏は、次のように述べています。「Shopify では、1 日に 8,000 以上のビルドをお客様にお届けし、330,000 個超のコンテナ イメージを含むレジストリを維持しています。Google Cloud チームと共同で Voucher を設計したことによって、本番環境に移すコンテナを検証するための包括的な方法を確立するに至りました。Voucher と合わせて Google の Container Registry の脆弱性スキャン機能や Binary Authorization を使用することで、多層的なセキュリティ ポリシーに従って本番環境システムを保護できるようになりました。現在、当社の開発は前代未聞のピッチで進んでいますが、そうした開発のスピードもほとんど影響を受けません。Voucher を多くの組織でソフトウェア サプライ チェーン保護に役立てていただくことを願い、Grafeas のオープンソース プロジェクトに無償で提供させていただきました。Voucher、Grafeas、Kritis を合わせて使用することで、インフラストラクチャ チームはセキュリティを強化でき、デベロッパーはコーディングに専念できるようになります。」

Voucher がサプライ チェーン環境の保護を簡易化する仕組み

これまで、ビルド場所や脆弱性スキャン結果に基づいてデプロイを制御するには、以下に示すように独自の評価ロジックを記述、ホスト、実行する必要がありました(ステップ 2a、3a)。

How Voucher simplifies a secure supply chain setup.jpg

  1. コードがリポジトリに push されます。

  2. Cloud Build などの継続的インテグレーション(CI)パイプライン ツールによってコンテナがビルドされ、テストされます。

    1. ビルド場所に基づいてイメージに署名するカスタムコードを記述します(例: production ブランチからビルドされたイメージにのみ署名する)。

  3. 新しくビルドされたコンテナ イメージが Google Container Registry にチェックインされ、脆弱性スキャンが行われます。

    1. 脆弱性スキャンの結果に基づいて、イメージに署名するカスタムコードを記述します。

  4. GKE へのデプロイ時に、Binary Authorization がイメージの署名を検証します。

権限昇格を防ぐため、署名処理は CI / CD パイプラインの外でホストする必要があります(ビルド時に任意のコードを実行するデベロッパーは、署名鍵にアクセスしたり、署名ロジックに変更を加えたりすることはできません)。この方法の場合、DevOps チームが一連の署名ツールを準備しなければならず、大きな負担となります。一方、Voucher には既定のセキュリティ チェック一式が含まれていて、手動で行っていた準備の大部分が自動化され、Binary Authorization で署名ポリシーを指定するだけで済みます。いったん開始すると、証明書生成が以下のように自動的に行われます。

How Voucher simplifies a secure supply chain setup 2.jpg

試してみましょう

Shopify が Google Cloud のツールを利用して Voucher を開発し、さらに一般のデベロッパーに共有してくれたことは大変嬉しいニュースです。Voucher は GitHub で公開されていますので、ぜひお試しください。Google Cloud Marketplace ではクリック デプロイ バージョンも公開しています。さらに、Google Cloud で Binary Authorization を使って Voucher を導入する方法を説明する詳細チュートリアルもご用意しましたので、どうぞご利用ください。

-プロダクト マネージャー Jianing Guo