Binary Authorization の概要

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

Binary Authorization は、コンテナベースのアプリケーションにソフトウェア サプライ チェーンのセキュリティを提供する Google Cloud のサービスです。 Binary Authorization を使用すると、サポートされているコンテナベースのプラットフォームのいずれかにコンテナ イメージをデプロイしようとしたときにサービスが適用するポリシーを構成できます。

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

  • Google Kubernetes Engine(GKE): Google Cloud でホストされているクラスタでイメージを実行します。
  • Cloud Runプレビュー): フルマネージドのサーバーレス プラットフォーム上で、コンテナ化されたアプリケーションを実行します。
  • Anthos Service Meshプレビュー): オンプレミスまたは Google Cloud で信頼性の高いサービス メッシュを管理します。
  • Anthos clusters on VMware: オンプレミスのデータセンターでホストされているクラスタでイメージを実行します。

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

  • デプロイするイメージを格納するレジストリ。Artifact RegistryContainer Registry など。
  • Container Analysis 。デプロイを制御するために Binary Authorization で使用できる脆弱性情報を提供します。これとは別に、Container Analysis は、承認プロセスで使用される信頼できるメタデータを保存します。
  • セキュリティ モニタリング。ダッシュボードは、Binary Authorization を含む相互の Google Cloud プロダクト間のアプリケーション セキュリティ体制を評価するために使用できます。
  • Google Cloud Deploy は、決められた順序で一連のターゲット環境へのアプリケーションの配信を自動化するマネージド継続的デリバリー サービスです。
  • Binary Authorization そのもの。構成したポリシーに基づいてイメージのデプロイを許可またはブロックします。

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 によってビルドされたイメージも Container 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 監査ログに書き込みます。

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

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

継続的検証

継続的検証(CV)は、Binary Authorization の機能です。ポリシーへの準拠を継続するために、実行されている Pod に関連付けられたコンテナ イメージを定期的にチェックします。

CV の詳細を確認する

VPC Service Controls を使用した安全な Binary Authorization

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

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

次のステップ