BeyondProd: Google が境界ベースのセキュリティからクラウド ネイティブなセキュリティに移行した方法
Google Cloud Japan Team
※この投稿は米国時間 2019 年 12 月 18 日に、Google Cloud blog に投稿されたものの抄訳です。
Google のインフラストラクチャは、Kubernetes の前身にあたるコンテナ オーケストレーション システムである Borg を使用してコンテナ上で実行されています。Google のアーキテクチャは、現在「クラウド ネイティブ」として広く知られているものの発想のもとであり、枠組みとなるものです。つまり、マイクロサービスやコンテナを使用して、保守や探索のためにワークロードを小さく管理しやすいユニットに分割できるようになっています。
Google のクラウド ネイティブ アーキテクチャは、Google のアーキテクチャを発展させるためのあらゆる取り組みの一環として、セキュリティを重視して開発されました。今回は、Google がクラウド ネイティブのセキュリティを実装する方法のモデルとなっている BeyondProd について説明したホワイトペーパーをご紹介します。多数の組織がクラウド ネイティブのアーキテクチャを導入しようとしている中、Google が独自のアーキテクチャのセキュリティを確保している方法をセキュリティ チームに学んでいただくことで、同様のセキュリティ モデルを導入する一助となれば幸いです。
BeyondProd: クラウド ネイティブ セキュリティのための新しいアプローチ
従来の境界をベースとしたセキュリティ モデルは、ファイアウォールによってひとたび境界を保護した後は、ウォール内のユーザーやサービスを完全に信頼するという前提のもとに成り立っていますが、最新のセキュリティ アプローチは、より堅牢なものへと進化を遂げています。クラウド ネイティブ環境でもネットワーク境界の保護は引き続き必要ですが、そのようなセキュリティ モデルは十分とは言えません。ファイアウォールで企業ネットワークを完全に保護できなければ、本番環境ネットワークも完全に保護できないからです。一般ユーザーについて言えることは開発者にも当てはまります。物理的に同じ場所から同じデバイスを使ってユーザー アクセスが行われるわけではないのと同様、開発者もみな同じ環境にコードをデプロイするわけではないのです。
Google は 2014 年に、企業ネットワークにアクセスするユーザーのためのネットワーク セキュリティ モデルである BeyondCorp を発表しました。BeyondCorp は、ゼロトラストの原則を適用して企業ネットワークへのアクセスを定義したものです。同時に、Google ではこの原則をマシン、ワークロード、サービスへの接続方法にも適用しました。その成果の結集が BeyondProd です。
BeyondProd では、以下のセキュリティ原則を策定して最適化しています。
エッジでのネットワークの保護
サービス間に固有の相互信頼関係の排除
出所の確かなコードを信頼できるマシンで実行
データへのアクセス認証を確実に行うなど、サービス全体で一貫したポリシーを適用するチョーク ポイント
シンプルで標準化された変更の自動適用
個々のワークロードの隔離
BeyondProd は、相互認証されたサービス エンドポイント、転送セキュリティ、グローバル負荷分散とサービス拒否攻撃からの保護によるエッジの遮断、エンドツーエンドにわたるコードの出所の把握、ランタイム サンドボックスなどのコンセプトを適用しています。
その結果、これらの制御により、基盤となるインフラストラクチャのセキュリティと詳細な実装を個々のマイクロサービス開発者に負担させることなく、コンテナとその内部で実行されるマイクロサービスをデプロイし、相互通信させ、安全に混在させて実行きるようになりました。
BeyondProd の適用
Google では長年にわたり、BeyondProd のセキュリティ原則に従ってインフラストラクチャを保護するための内部ツールとサービスを設計、開発してきました。こうしたクラウド ネイティブ セキュリティへの移行を実現するには、インフラストラクチャと開発プロセスの両方を変更する必要がありました。Google の目標は、開発とデプロイのライフサイクルのできるだけ早い段階でセキュリティの問題に対処することです。そうすることで、セキュリティの問題への対処にかかるコストを低く抑えられます。これを、標準化された一貫性のある方法で実施することを目指しています。そのためには、共通コンポーネントを開発し、個々の開発者にセキュリティ要件を満たす責任を負わせずに済むようにすることが不可欠でした。セキュリティ機能は、個々のアプリケーションへの統合がほとんど必要ないものとし、代わりにすべてのマイクロサービスを包括して接続できるファブリックとして提供するようにしました。結果として、開発者はセキュリティに費やす時間を短縮しながら、より安全な結果を達成できるようになりました。
BeyondProd の原則をご自分の環境に適用されたい場合は、同様のアーキテクチャを実現するためのコンポーネントをご活用いただけます。Google Kubernetes Engine、Anthos、オープンソースなど多数の組み合わせを用意しております。
TLS の終端や受信トラフィックのポリシーの管理のための Envoy または Traffic Director
Istio の一部として提供される相互 TLS、または RPC 認証、暗号化、および整合性と
サービス ID 管理のための Istio on GKEデプロイ時の強制検証(コードの出所の把握など)のための Kubernetes アドミッション コントローラ、Kritis、OPA Gatekeeper、Binary Authorization
セキュアブートや整合性検証のための Shielded GKE Nodes
ワークロードの隔離のための gVisor または GKE Sandbox
Anthos のセキュリティ モデルについて詳しくは、Anthos: アプリケーション セキュリティをモダナイズする契機(英文)をご覧ください。
BeyondCorp によって境界ベースのセキュリティ モデルを超えて進化できたのと同じように、BeyondProd は本番環境のセキュリティへのアプローチに同様の飛躍をもたらします。BeyondProd モデルのセキュリティ原則を独自のクラウド ネイティブ インフラストラクチャに適用することで、Google の経験を参考にし、ワークロードのデプロイを強化して、通信がどのように保護され、他のワークロードに影響するかを把握できるようになります。
BeyondProd および BeyondProd モデルで使用する制御の一つである Binary Authorization for Borg について詳しくは、Google セキュリティ ブログをご覧ください。
- By コンテナ セキュリティ担当プロダクト マネージャー Maya Kaczorowski、クラウド セキュリティ担当横型リーダー Brandon Baker