Binary Authorization の概要

このドキュメントでは、Binary Authorization の概要について説明します。

Binary Authorization とは

Binary Authorization は、コンテナベースのアプリケーションを開発してデプロイするときに、ソフトウェア サプライ チェーンのセキュリティ対策を実装するために使用できる Google Cloud プロダクトです。

Binary Authorization の機能

Binary Authorization を使用すると、次のことができます。

Binary Authorization がサポートするプラットフォーム

Binary Authorization は、次のプラットフォームをサポートしています。

Binary Authorization は、次の関連プロダクトを含むデプロイ アーキテクチャの一部です。

  • Artifact RegistryContainer Registry、デプロイするイメージを格納するその他のレジストリ。
  • Artifact Analysis。デプロイを制御するために Binary Authorization で使用できる脆弱性情報を提供します。これとは別に、Artifact Analysis は、認証プロセスで使用される、信頼できるメタデータを保存します。
  • セキュリティ モニタリング。Binary Authorization など、相互に関連する Google Cloud プロダクト全体のアプリケーションのセキュリティ ポスチャーを評価できるダッシュボード。
  • Cloud Build。Binary Authorization が適用とモニタリングに使用できる証明書と来歴を生成します。
  • Cloud Deploy は継続的デリバリーを実現するマネージド サービスで、定義した順序で、一連のターゲット環境へのアプリケーションの配信を自動化します。

Binary Authorization は、Grafeas オープンソース プロジェクトの一部である Kritis 仕様に基づいています。

背景

ソフトウェア サプライ チェーンのセキュリティは、内部のベスト プラクティスと標準に従い、ソフトウェアが確実に調達、構築、テスト、リリース、デプロイされるようにすることを目的としています。

コンテナベースのアーキテクチャを使用すると、マイクロサービス アーキテクチャをベースとするシステムなど、高度に分離されたシステムを開発し、継続的インテグレーション(CI)や継続的デプロイ(CD)など、ライフサイクルの短い開発手法を使用できます。

コンテナベースの開発環境では、ソフトウェア サプライ チェーンの一部である一連のクラスタ(テスト、ステージング、リリースなど)にイメージをデプロイできます。

Binary Authorization は、このような環境で不良なソフトウェア、脆弱性のあるソフトウェア、不正なソフトウェアをデプロイするリスクを軽減することを目的としています。このサービスを使用することで、定義したポリシーを満たさない場合にイメージがデプロイされないようにすることができます。

Binary Authorization では、内部プロセスやベスト プラクティスを規定していませんが、必要なチェックに合格していないイメージのデプロイを制限することで、独自のプラクティスを適用できます。

ライフサイクル

イメージのデプロイ ライフサイクルは次のステージで構成されます。ステージを完了することは、次のステージに進むための前提条件です。次に例を示します。

  1. ビルドと単体テスト
  2. ユーザーが影響を受けない開発環境へのデプロイ
  3. 社内ユーザーのみが影響を受ける QA 環境へのデプロイ
  4. 一部の外部ユーザーのみが影響を受けるカナリア環境へのデプロイ
  5. 本番環境へのデプロイ

各ステージには独自のデプロイ環境(GKE クラスタや Google Cloud プロジェクトなど)があり、イメージが次のステージに進む前に満たす必要がある、独自の基準があります。Binary Authorization では、あるステージから別のステージにイメージを渡すルールを定義し、これらのルールを適用できます。

証明書

Binary Authorization の最も一般的なユースケースは証明書に関するものです。前半で説明したように、証明書は、特定のイメージが前のステージを完了したことを証明するものです。イメージのデプロイを許可する前に証明書を検証するように Binary Authorization ポリシーを構成します。デプロイ時に、前のステージで完了したアクティビティをやり直す必要はなく、Binary Authorization で証明書を検証するだけで済みます。

証明書に関連するユースケースとしては、次のものがあります。

  • ビルド検証。Binary Authorization が証明書を使用して、特定のビルドシステムまたは継続的インテグレーション(CI)パイプラインによってイメージがビルドされたことを検証します。

    Cloud Build に基づいて、証明書を作成可能な CI パイプラインを設定する方法については、Cloud Build の統合をご覧ください。

  • 脆弱性スキャン。CI によってビルドされたイメージも Artifact Analysis によって脆弱性スキャンされます。この場合、検出された脆弱性が脆弱性署名ポリシーを満たしている場合にのみ、証明書が作成されます。

    Voucher または Kritis Signer を使用して脆弱性スキャン CI パイプラインを設定する方法を確認してください。

  • 手動チェック。QA 担当者などが証明書を手動で作成します。

    証明書を手動で作成する方法については、証明書の作成をご覧ください。

証明書のエンドツーエンドのチュートリアルについては、Google Cloud Console のスタートガイドをご覧ください。

機能

Binary Authorization は次の機能を提供します。

  • ポリシーモデル。イメージのデプロイを制限するための条件を記述します。
  • 証明書モデル。デプロイ前に環境内で必要なプロセスが完了していることを証明または検証する信頼できる機関を定義します。
  • デプロイ時に、ポリシー違反のイメージのデプロイを防ぐ適用者

ポリシーモデル

Binary Authorization はポリシーモデルを実装します。ポリシーは、コンテナ イメージのデプロイを制御する一連のルールです。ポリシー内のルールには、イメージをデプロイする前に満たす必要がある条件を指定します。

Binary Authorization ポリシーモデルとその他のコンセプトの詳細については、主なコンセプトをご覧ください。

設定

Binary Authorization を設定するには、まず、デプロイと認証のパイプラインを構成する Google Cloud プロジェクトのサービスを有効にする必要があります。

コンテナ イメージをデプロイできる条件を示すポリシーを定義します。ポリシーでデプロイ前に証明書が要求される場合は、関連するイメージのデプロイを許可する前に証明書の検証を行う認証者を設定する必要があります。

Binary Authorization を設定するには、次のガイドをご覧ください。

承認

イメージをデプロイする前に、イメージが次のデプロイ ステージに進む準備ができていることを証明する証明書を、所定の署名者が作成する必要があります。証明書は、イメージのレジストリパスとダイジェストを含むレコードです。署名者の秘密暗号鍵を使用してデジタル署名されます。

認証の詳細については、証明書を使用するをご覧ください。

適用

イメージをデプロイすると、Binary Authorization がポリシーを確認し、デプロイの制御ルールを適用します。

イメージがポリシーに定義されている制約を満たしている場合、Binary Authorization はイメージのデプロイを許可します。満たしていない場合、デプロイをブロックし、イメージがポリシーを遵守していない理由を説明するメッセージを Cloud Audit Logs に書き込みます。

Cloud Audit Logs で Binary Authorization 適用イベントを表示するには、次のガイドをご覧ください。

デプロイの詳細については、次のガイドをご覧ください。

継続的検証

チェックベースのプラットフォーム ポリシーを使用した継続的検証(CV)は、Binary Authorization の機能です。ポリシーの遵守を継続するために、実行されている Pod に関連付けられたコンテナ イメージのメタデータを定期的にチェックします。

CV の詳細をご覧ください

VPC Service Controls による Binary Authorization の保護

VPC Service Controls を使用すると、Google が管理するサービスやリソースからのデータの不正コピーや転送のリスクを軽減できます。

Binary Authorization 関連リソースの保護の詳細については、VPC Service Controls による保護をご覧ください。

ソフトウェア デリバリー シールド

Binary Authorization は、ソフトウェア デリバリー シールド ソリューションの一部です。ソフトウェア デリバリー シールドは、フルマネージドのエンドツーエンド ソフトウェア サプライ チェーン セキュリティ ソリューションです。ソフトウェアの構築とデプロイに使用するデベロッパー ワークフローとツール、ソフトウェアの依存関係、CI/CD システム、およびランタイム環境(Google Kubernetes Engine や Cloud Run など)のセキュリティ対策の改善に役立ちます。ソフトウェア デリバリー シールドのその他のコンポーネントで Binary Authorization を使用して、ソフトウェア サプライ チェーンのセキュリティ ポスチャーを改善する方法については、ソフトウェア デリバリー シールドの概要をご覧ください。

次のステップ