IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特表2024-532097コンテナ・オーケストレーション環境においてポッドをセキュリティ保護する方法、システム
<>
  • 特表-コンテナ・オーケストレーション環境においてポッドをセキュリティ保護する方法、システム 図1
  • 特表-コンテナ・オーケストレーション環境においてポッドをセキュリティ保護する方法、システム 図2
  • 特表-コンテナ・オーケストレーション環境においてポッドをセキュリティ保護する方法、システム 図3
  • 特表-コンテナ・オーケストレーション環境においてポッドをセキュリティ保護する方法、システム 図4A
  • 特表-コンテナ・オーケストレーション環境においてポッドをセキュリティ保護する方法、システム 図4B
  • 特表-コンテナ・オーケストレーション環境においてポッドをセキュリティ保護する方法、システム 図5
  • 特表-コンテナ・オーケストレーション環境においてポッドをセキュリティ保護する方法、システム 図6A
  • 特表-コンテナ・オーケストレーション環境においてポッドをセキュリティ保護する方法、システム 図6B
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-09-05
(54)【発明の名称】コンテナ・オーケストレーション環境においてポッドをセキュリティ保護する方法、システム
(51)【国際特許分類】
   G06F 21/53 20130101AFI20240829BHJP
   G06F 21/62 20130101ALI20240829BHJP
   G06F 9/455 20180101ALI20240829BHJP
【FI】
G06F21/53
G06F21/62
G06F9/455 150
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024508042
(86)(22)【出願日】2022-08-11
(85)【翻訳文提出日】2024-02-08
(86)【国際出願番号】 EP2022072545
(87)【国際公開番号】W WO2023030854
(87)【国際公開日】2023-03-09
(31)【優先権主張番号】17/446,478
(32)【優先日】2021-08-31
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】マゴーワン、ジェームス、ロバート
(72)【発明者】
【氏名】ヌネツ メンシャス、エンジェル
(72)【発明者】
【氏名】リーシェ、ステファン
(72)【発明者】
【氏名】小原 盛幹
(57)【要約】
コンテナ・オーケストレーション環境においてポッドをセキュリティ保護する方法が提供される。サービスに対応するアプリケーション・ワークロードを含むコンテナのセットに対するオーケストレーション・アクションを実行するためのコンテナ・ランタイム・インターフェース・コマンドが、トラステッド実行環境のポッド・サンドボックス仮想マシンに含まれるトラステッド実行環境コントラクトに包含される規則と、コンテナ・ランタイム・インターフェース・コマンドを照合することに基づいて検証される。トラステッド実行環境コントラクト内で合致する規則を発見したことに基づいて、コンテナのセットに対するオーケストレーション・アクションを実行するためのコンテナ・ランタイム・インターフェース・コマンドが有効かどうかが判断される。コンテナのセットに対するオーケストレーション・アクションを実行するためのコンテナ・ランタイム・インターフェース・コマンドが有効であると判断したことに応答して、トラステッド実行環境のポッド・サンドボックス仮想マシンにおけるコンテナのセットに対するオーケストレーション・アクションを実行するためのコンテナ・ランタイム・インターフェース・コマンドが実行される。
【特許請求の範囲】
【請求項1】
コンテナ・オーケストレーション環境においてポッドをセキュリティ保護するためのコンピュータ実施方法であって、
コンピュータによって、前記コンピュータのトラステッド実行環境に埋め込まれたエージェントを使用して、前記コンテナ・オーケストレーション環境によってホストされるサービスに対応するアプリケーション・ワークロードを含むコンテナのセットに対するオーケストレーション・アクションを実行するためのコンテナ・ランタイム・インターフェース・コマンドを、前記トラステッド実行環境のポッド・サンドボックス仮想マシンに含まれるトラステッド実行環境コントラクトに包含される規則と、前記コンテナ・ランタイム・インターフェース・コマンドを照合することに基づいて、検証することと、
前記コンピュータによって、前記エージェントを使用して、前記トラステッド実行環境コントラクト内で合致する規則を発見したことに基づいて、前記コンテナのセットに対する前記オーケストレーション・アクションを実行するための前記コンテナ・ランタイム・インターフェース・コマンドが有効かどうかを判断することと、
前記コンピュータが、前記エージェントを使用して、前記トラステッド実行環境コントラクト内で前記合致する規則を発見したことに基づいて、前記コンテナのセットに対する前記オーケストレーション・アクションを実行するための前記コンテナ・ランタイム・インターフェース・コマンドが有効であると判断したことに応答して、前記コンピュータによって、前記エージェントを使用して、前記トラステッド実行環境の前記ポッド・サンドボックス仮想マシンにおける前記サービスに対応する前記アプリケーション・ワークロードを含む前記コンテナのセットに対する前記オーケストレーション・アクションを実行するための前記コンテナ・ランタイム・インターフェース・コマンドを実行することと、
を含む、コンピュータ実施方法。
【請求項2】
前記コンピュータによって、前記エージェントを使用して、前記サービスに対応する前記アプリケーション・ワークロードを含む前記コンテナのセットに対する前記オーケストレーション・アクションの実行結果を返すことをさらに含む、請求項1に記載のコンピュータ実施方法。
【請求項3】
前記コンピュータによって、前記エージェントを使用して、前記コンテナ・オーケストレーション環境において前記サービスを提供するアプリケーション・オーナーに対応するコントラクト検証鍵に基づいて、前記トラステッド実行環境にデプロイされた前記サービスに対応する前記コンテナのセットを有する前記ポッド・サンドボックス仮想マシンに含まれる前記トラステッド実行環境コントラクトのデジタル署名を検証することをさらに含む、請求項1に記載のコンピュータ実施方法。
【請求項4】
前記コンピュータによって、前記エージェントを使用して、前記コントラクト検証鍵に基づいて前記トラステッド実行環境コントラクトの前記デジタル署名が有効かどうかを判断することと、
前記コンピュータが、前記エージェントを使用して、前記コントラクト検証鍵に基づいて前記トラステッド実行環境コントラクトの前記デジタル署名が有効であると判断したことに応答して、前記コンピュータによって、前記エージェントを使用して、前記トラステッド実行環境に埋め込まれた、前記サービスを提供する前記アプリケーション・オーナーに対応するコントラクト復号鍵に基づいて、前記トラステッド実行環境コントラクトを復号することと、
をさらに含む、請求項3に記載のコンピュータ実施方法。
【請求項5】
前記コンピュータによって、前記サービスに対応する前記コンテナのセットを有する前記ポッド・サンドボックス仮想マシンを前記コンテナ・オーケストレーション環境の前記トラステッド実行環境内にデプロイするための入力を、前記コンテナ・オーケストレーション環境の管理者に対応するクライアント・デバイスから受信することと、
前記コンテナのセットを有する前記ポッド・サンドボックス仮想マシンを前記トラステッド実行環境内にデプロイするための前記入力を受信することに応答して、前記コンピュータによって、前記トラステッド実行環境コントラクトおよびポッド・デプロイメント記述を前記コンテナ・オーケストレーション環境において前記サービスを提供するアプリケーション・オーナーに対応するクライアント・デバイスから取り出すこと、ならびに前記コンピュータによって、前記サービスのための前記ポッド・サンドボックス仮想マシンに対応するポッド・サンドボックス仮想マシン・イメージをイメージ・リポジトリから取り出すことと、
をさらに含む、請求項1に記載のコンピュータ実施方法。
【請求項6】
前記コンピュータによって、前記ポッド・サンドボックス仮想マシン・イメージに基づいて前記サービスのための前記ポッド・サンドボックス仮想マシンを生成することと、
前記コンピュータによって、前記サービスのための前記ポッド・サンドボックス仮想マシンに前記トラステッド実行環境コントラクトを挿入することと、
をさらに含む、請求項5に記載のコンピュータ実施方法。
【請求項7】
前記コンピュータによって、前記ポッド・サンドボックス仮想マシンに含まれる前記サービスに対応する前記コンテナのセット内のコンテナ毎の対応するコンテナ・イメージをイメージ・リポジトリからプルするように前記エージェントに指示することと、
前記コンピュータによって、前記イメージ・リポジトリからプルされた前記対応するコンテナ・イメージを使用して、前記ポッド・サンドボックス仮想マシンにおける前記サービスに対応する前記コンテナのセット内のそれぞれのコンテナを生成するように前記エージェントに指示することと、
をさらに含む、請求項1に記載のコンピュータ実施方法。
【請求項8】
前記エージェントが、前記イメージ・リポジトリからプルされたイメージに関連付けられた署名を正当性確認するための、前記トラステッド実行環境コントラクトに包含される対応する公開鍵を使用して、ランタイムに異なるコンテナ・イメージをプルしようとすることを妨げるために、前記コンテナのセット内のコンテナ毎の前記対応するコンテナ・イメージの真正性を検証し、前記エージェントが、前記トラステッド実行環境コントラクトまたは別のソースのうちの1つからの復号鍵を正しく使用して、暗号化されたイメージを復号できることを検証する、請求項7に記載のコンピュータ実施方法。
【請求項9】
前記コンピュータによって、前記エージェントを使用して、前記コンテナ・オーケストレーション環境において前記サービスを提供するアプリケーション・オーナーによって生成されたポッド・デプロイメント記述に基づいて、前記トラステッド実行環境コントラクトと前記トラステッド実行環境における前記サービスに対応する前記コンテナのセットとを含む前記ポッド・サンドボックス仮想マシンをデプロイすることであって、前記ポッド・デプロイメント記述および前記トラステッド実行環境コントラクトの一部が、前記アプリケーション・オーナーに対応する公開鍵を使用して暗号化され、前記エージェントが、前記トラステッド実行環境内部に位置する対応する秘密鍵を使用して、前記ポッド・デプロイメント記述および前記トラステッド実行環境コントラクトの暗号化部分を復号する、前記デプロイすることをさらに含む、請求項1に記載のコンピュータ実施方法。
【請求項10】
前記トラステッド実行環境が、前記サービスに対応する前記ポッド・サンドボックス仮想マシンにおける前記コンテナのセットの分離されたセキュアな実行を提供し、前記トラステッド実行環境が、前記コンピュータに連結された、メモリのセキュアな部分およびプロセッサのセキュアな部分を含む、請求項1に記載のコンピュータ実施方法。
【請求項11】
前記トラステッド実行環境コントラクトが、コンテナの署名、前記コンテナに関する制限、秘密、または暗号鍵のうちの少なくとも1つを含み、前記署名が、前記トラステッド実行環境における実行を許可された前記コンテナのセットに対応し、前記コンテナに関する前記制限が、前記コンテナのセット内のどのコンテナが、構成マップ、秘密、またはコンテナがどのように永続ボリュームを消費するかを記述した永続ボリューム要求のうちの少なくとも1つにアクセス可能であるかを定義し、前記秘密または前記暗号鍵が、前記トラステッド実行環境に提供される、秘密、構成マップ、または永続ボリュームのうちの少なくとも1つを復号するために前記トラステッド実行環境内部で使用される、請求項1に記載のコンピュータ実施方法。
【請求項12】
コンテナ・オーケストレーション環境においてポッドをセキュリティ保護するためのコンピュータ・システムであって、
バス・システムと、
前記バス・システムに接続された記憶デバイスであって、前記記憶デバイスがプログラム命令を記憶する、前記記憶デバイスと、
前記バス・システムに接続されたプロセッサであって、前記プロセッサが、
前記コンピュータ・システムのトラステッド実行環境に埋め込まれたエージェントを使用して、前記コンテナ・オーケストレーション環境によってホストされるサービスに対応するアプリケーション・ワークロードを含むコンテナのセットに対するオーケストレーション・アクションを実行するためのコンテナ・ランタイム・インターフェース・コマンドを、前記トラステッド実行環境のポッド・サンドボックス仮想マシンに含まれるトラステッド実行環境コントラクトに包含される規則と、前記コンテナ・ランタイム・インターフェース・コマンドを照合することに基づいて、検証することと、
前記エージェントを使用して、前記トラステッド実行環境コントラクト内で合致する規則を発見したことに基づいて、前記コンテナのセットに対する前記オーケストレーション・アクションを実行するための前記コンテナ・ランタイム・インターフェース・コマンドが有効かどうかを判断することと、
前記エージェントを使用して、前記トラステッド実行環境コントラクト内で前記合致する規則を発見したことに基づいて、前記コンテナのセットに対する前記オーケストレーション・アクションを実行するための前記コンテナ・ランタイム・インターフェース・コマンドが有効であると判断したことに応答して、前記エージェントを使用して、前記トラステッド実行環境の前記ポッド・サンドボックス仮想マシンにおける前記サービスに対応する前記アプリケーション・ワークロードを含む前記コンテナのセットに対する前記オーケストレーション・アクションを実行するための前記コンテナ・ランタイム・インターフェース・コマンドを実行することと、
をするための前記プログラム命令を実行する、前記プロセッサと、
を備える、コンピュータ・システム。
【請求項13】
前記プロセッサが、
前記エージェントを使用して、前記サービスに対応する前記アプリケーション・ワークロードを含む前記コンテナのセットに対する前記オーケストレーション・アクションの実行結果を返すための前記プログラム命令をさらに実行する、請求項12に記載のコンピュータ・システム。
【請求項14】
前記プロセッサが、
前記エージェントを使用して、前記コンテナ・オーケストレーション環境において前記サービスを提供するアプリケーション・オーナーに対応するコントラクト検証鍵に基づいて、前記トラステッド実行環境にデプロイされた前記サービスに対応する前記コンテナのセットを有する前記ポッド・サンドボックス仮想マシンに含まれる前記トラステッド実行環境コントラクトのデジタル署名を検証するための前記プログラム命令をさらに実行する、請求項12に記載のコンピュータ・システム。
【請求項15】
前記プロセッサが、
前記エージェントを使用して、前記コントラクト検証鍵に基づいて前記トラステッド実行環境コントラクトの前記デジタル署名が有効かどうかを判断することと、
前記エージェントを使用して、前記コントラクト検証鍵に基づいて前記トラステッド実行環境コントラクトの前記デジタル署名が有効であると判断したことに応答して、前記エージェントを使用して、前記トラステッド実行環境に埋め込まれた、前記サービスを提供する前記アプリケーション・オーナーに対応するコントラクト復号鍵に基づいて、前記トラステッド実行環境コントラクトを復号することと、
をするための前記プログラム命令をさらに実行する、請求項14に記載のコンピュータ・システム。
【請求項16】
前記プロセッサが、
前記サービスに対応する前記コンテナのセットを有する前記ポッド・サンドボックス仮想マシンを前記コンテナ・オーケストレーション環境の前記トラステッド実行環境内にデプロイするための入力を、前記コンテナ・オーケストレーション環境の管理者に対応するクライアント・デバイスから受信することと、
前記コンテナのセットを有する前記ポッド・サンドボックス仮想マシンを前記トラステッド実行環境内にデプロイするための前記入力を受信することに応答して、前記トラステッド実行環境コントラクトおよびポッド・デプロイメント記述を前記コンテナ・オーケストレーション環境において前記サービスを提供するアプリケーション・オーナーに対応するクライアント・デバイスから取り出し、前記サービスのための前記ポッド・サンドボックス仮想マシンに対応するポッド・サンドボックス仮想マシン・イメージをイメージ・リポジトリから取り出すことと、
をするための前記プログラム命令をさらに実行する、請求項12に記載のコンピュータ・システム。
【請求項17】
前記プロセッサが、
前記ポッド・サンドボックス仮想マシン・イメージに基づいて前記サービスのための前記ポッド・サンドボックス仮想マシンを生成することと、
前記サービスのための前記ポッド・サンドボックス仮想マシンに前記トラステッド実行環境コントラクトを挿入することと、
のための前記プログラム命令をさらに実行する、請求項16に記載のコンピュータ・システム。
【請求項18】
コンテナ・オーケストレーション環境においてポッドをセキュリティ保護するためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品が、具現化されたプログラム命令を有するコンピュータ可読記憶媒体を含み、前記プログラム命令が、
コンピュータによって、前記コンピュータのトラステッド実行環境に埋め込まれたエージェントを使用して、前記コンテナ・オーケストレーション環境によってホストされるサービスに対応するアプリケーション・ワークロードを含むコンテナのセットに対するオーケストレーション・アクションを実行するためのコンテナ・ランタイム・インターフェース・コマンドを、前記トラステッド実行環境のポッド・サンドボックス仮想マシンに含まれるトラステッド実行環境コントラクトに包含される規則と、前記コンテナ・ランタイム・インターフェース・コマンドを照合することに基づいて検証することと、
前記コンピュータによって、前記エージェントを使用して、前記トラステッド実行環境コントラクト内で合致する規則を発見したことに基づいて、前記コンテナのセットに対する前記オーケストレーション・アクションを実行するための前記コンテナ・ランタイム・インターフェース・コマンドが有効かどうかを判断することと、
前記コンピュータが、前記エージェントを使用して、前記トラステッド実行環境コントラクト内で前記合致する規則を発見したことに基づいて、前記コンテナのセットに対する前記オーケストレーション・アクションを実行するための前記コンテナ・ランタイム・インターフェース・コマンドが有効であると判断したことに応答して、前記コンピュータによって、前記エージェントを使用して、前記トラステッド実行環境の前記ポッド・サンドボックス仮想マシンにおける前記サービスに対応する前記アプリケーション・ワークロードを含む前記コンテナのセットに対する前記オーケストレーション・アクションを実行するための前記コンテナ・ランタイム・インターフェース・コマンドを実行することと、
の方法を前記コンピュータに実行させるように、前記コンピュータにより実行可能である、コンピュータ・プログラム製品。
【請求項19】
前記コンピュータによって、前記エージェントを使用して、前記サービスに対応する前記アプリケーション・ワークロードを含む前記コンテナのセットに対する前記オーケストレーション・アクションの実行結果を返すことをさらに含む、請求項18に記載のコンピュータ・プログラム製品。
【請求項20】
前記コンピュータによって、前記エージェントを使用して、前記コンテナ・オーケストレーション環境において前記サービスを提供するアプリケーション・オーナーに対応するコントラクト検証鍵に基づいて、前記トラステッド実行環境にデプロイされた前記サービスに対応する前記コンテナのセットを有する前記ポッド・サンドボックス仮想マシンに含まれる前記トラステッド実行環境コントラクトのデジタル署名を検証することをさらに含む、請求項18に記載のコンピュータ・プログラム製品。
【請求項21】
前記コンピュータによって、前記エージェントを使用して、前記コントラクト検証鍵に基づいて前記トラステッド実行環境コントラクトの前記デジタル署名が有効かどうかを判断することと、
前記コンピュータが、前記エージェントを使用して、前記コントラクト検証鍵に基づいて前記トラステッド実行環境コントラクトの前記デジタル署名が有効であると判断したことに応答して、前記コンピュータによって、前記エージェントを使用して、前記トラステッド実行環境に埋め込まれた、前記サービスを提供する前記アプリケーション・オーナーに対応するコントラクト復号鍵に基づいて、前記トラステッド実行環境コントラクトを復号することと、
をさらに含む、請求項20に記載のコンピュータ・プログラム製品。
【請求項22】
前記コンピュータによって、前記サービスに対応する前記コンテナのセットを有する前記ポッド・サンドボックス仮想マシンを前記コンテナ・オーケストレーション環境の前記トラステッド実行環境内にデプロイするための入力を、前記コンテナ・オーケストレーション環境の管理者に対応するクライアント・デバイスから受信することと、
前記コンテナのセットを有する前記ポッド・サンドボックス仮想マシンを前記トラステッド実行環境内にデプロイするための前記入力を受信することに応答して、前記コンピュータによって、前記トラステッド実行環境コントラクトおよびポッド・デプロイメント記述を前記コンテナ・オーケストレーション環境において前記サービスを提供するアプリケーション・オーナーに対応するクライアント・デバイスから取り出すこと、ならびに前記コンピュータによって、前記サービスのための前記ポッド・サンドボックス仮想マシンに対応するポッド・サンドボックス仮想マシン・イメージをイメージ・リポジトリから取り出すことと、
をさらに含む、請求項18に記載のコンピュータ・プログラム製品。
【請求項23】
前記コンピュータによって、前記ポッド・サンドボックス仮想マシン・イメージに基づいて前記サービスのための前記ポッド・サンドボックス仮想マシンを生成することと、
前記コンピュータによって、前記サービスのための前記ポッド・サンドボックス仮想マシンに前記トラステッド実行環境コントラクトを挿入することと、
をさらに含む、請求項22に記載のコンピュータ・プログラム製品。
【請求項24】
ポッドをセキュリティ保護するための方法であって、
サービスに対応するアプリケーション・ワークロードを含むコンテナのセットに対するオーケストレーション・アクションを実行するためのコンテナ・ランタイム・インターフェース・コマンドを、トラステッド実行環境のポッド・サンドボックス仮想マシンに含まれるトラステッド実行環境コントラクトに包含される規則と、前記コンテナ・ランタイム・インターフェース・コマンドを照合することに基づいて、検証することと、
前記トラステッド実行環境コントラクト内で合致する規則を発見したことに基づいて、前記コンテナのセットに対する前記オーケストレーション・アクションを実行するための前記コンテナ・ランタイム・インターフェース・コマンドが有効かどうかを判断することと、
前記トラステッド実行環境コントラクト内で前記合致する規則を発見したことに基づいて、前記コンテナのセットに対する前記オーケストレーション・アクションを実行するための前記コンテナ・ランタイム・インターフェース・コマンドが有効であると判断したことに応答して、前記トラステッド実行環境の前記ポッド・サンドボックス仮想マシンにおける前記サービスに対応する前記アプリケーション・ワークロードを含む前記コンテナのセットに対する前記オーケストレーション・アクションを実行するための前記コンテナ・ランタイム・インターフェース・コマンドを実行することと、
を含む、方法。
【請求項25】
前記コンテナのセットに対する前記オーケストレーション・アクションの実行結果を返すことをさらに含む、請求項24に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般に、コンテナ・オーケストレーション環境に関し、より詳細には、コンテナ・オーケストレーション環境において規制コンプライアンスのためにポッドの分離およびセキュリティを増大させつつ、ポッド・デプロイメント記述で指定され、かつコンテナ・オーケストレーション環境のトラステッド実行環境において実行するためにトラステッド実行環境コントラクトに包含される規則に対して検証されたコンテナのみを許可することによって、ユーザ・エクスペリエンスを維持することに関する。
【背景技術】
【0002】
例えば、Kubernetes(R)(Linux Foundation、San Francisco、Californiaの登録商標)などのコンテナ・オーケストレーション環境は、ホスト・ノードのクラスタにわたるアプリケーション・コンテナのデプロイメント、スケーリング、および動作を自動化するためのプラットフォームを提供する。多くのクラウド・サービスは、コンテナ・オーケストレーション環境をサービス(例えば、サービスとしてのプラットフォーム、サービスとしてのインフラストラクチャ、など)として提供する。
【0003】
コンテナ・オーケストレーション環境は、コントローラ・ノードを含み、コントローラ・ノードは、ホスト・ノード(計算ノードとも呼ばれる)のクラスタの主な制御ユニットであり、クラスタのワークロードを管理し、クラスタにわたる通信を指示する。制御ノードが形成するクラスタの制御プレーンは、データ・ストア、アプリケーション・プログラミング・インターフェース(API)・サーバ、スケジューラ、およびコントローラなどの様々なコンポーネントから構成される。データ・ストアは、任意の所与の時間におけるクラスタの全体的な状態および所望の状態を表す、クラスタの構成データを含む。APIサーバは、コントローラ・ノードに内部および外部インターフェースを提供する。APIサーバは、リソース可用性リクエストを処理および正当性確認し、データ・ストア内のAPIオブジェクトの状態を更新し、それにより、ユーザ(例えば、テナント、クライアント、顧客など)が、クラスタ内のホスト・ノードにわたってワークロードおよびコンテナを構成することを可能にする。スケジューラは、それぞれのホスト・ノードのリソース可用性に基づいて、スケジューリングされていないポッドがどのホスト・ノード上で動作するかを選択する。ポッドは、スケジューラによって管理される基本単位である。スケジューラは、各ホスト・ノード上のリソース使用率を追跡して、利用可能なリソースを超過してワークロードがスケジューリングされないことを保証する。コントローラは、コントローラが管理するリソース(例えば、ポッド、サービス・エンドポイントなど)を生成、更新、および削除するためにAPIサーバと通信して、実際のクラスタ状態を所望のクラスタ状態に向かわせる調整ループ(reconciliation loop)を有する。
【0004】
ホスト・ノードは、物理または仮想のいずれかのマシンであり、そこにコンテナ(即ち、アプリケーション・ワークロード)がデプロイされる。ポッドは、共有のストレージおよびネットワーク・リソース、ならびにコンテナを実行する方法についての仕様を有する、1つまたは複数のコンテナのグループである。ポッドのコンテンツは、常に共同設置され、共同でスケジューリングされ、共有コンテキストで動作する。ホスト・ノードは、アプリケーション・ワークロードのコンポーネントであるポッドをホストする。
【0005】
kubernetesなどのコンテナ・オーケストレーション環境では、ホスト・ノードは、kubelet、kube-proxy、およびコンテナ・ランタイムを含む。kubeletは、各ホスト・ノード上で動作し、各ホスト・ノードの実行状態について担当するエージェントであり、ホスト・ノード上の全てのコンテナが実行中かつ正常であることを保証する。kubeletは、制御プレーンによって指示されるようにポッドに編成されたコンテナを開始、停止、および維持する。kube-proxyは、リクエストに含まれる所与のコンテナのインターネット・プロトコル・アドレスに基づいて、ネットワーク・トラフィックを適当なコンテナにルーティングする役割をする。コンテナ・ランタイムは、コンテナ・オーケストレーション環境によってホストされるサービスの実行アプリケーション、ライブラリ、およびそれらの依存関係を保持する。
【0006】
現在、コンテナ・オーケストレーション環境におけるポッドの分離およびセキュリティの改善を目的とする解決策が存在する。現在の解決策の1つ、GVisor(R)(Google、LLC、Mountain View、Californiaの登録商標)は、ユーザ空間カーネルを使用することによってポッドの分離およびセキュリティの増大を試みる。この解決策は、ホスト・ノードの攻撃を試みるコンテナからホスト・ノード・カーネルに到達可能となる前にユーザ空間カーネルを攻撃することへ脅威面をシフトすることを目指している。
【0007】
もう1つの現在の解決策、Kata Containers(R)(OpenStack Foundation、Austin、Texasの登録商標)は、コンテナがホスト・ノードへの攻撃を試みるときに、カーネルベース仮想マシンの分離を使用して脅威面を変更することを目指している。カーネルベース仮想マシンの境界は、ハードウェア仮想化の上に完全なオペレーティング・システムを導入し、それによってホスト・ノード・カーネルを攻撃することが可能となる前の攻撃が必要となる。カーネルベース仮想マシンは、コンテナが仮想マシンの内部で開始するポッドを表し、それによってコンテナがホスト・ノードを攻撃することがより困難になる。
【0008】
上記のこれらの現在の解決策の両方が、コンテナ・オーケストレーション環境のポッド内のコンテナがホスト・ノードを攻撃しようとするリスクに関係しているが、コンテナ・オーケストレーション環境管理者がホスト・ノードからポッドのコンテナ内へ攻撃を開始してくることには関係していない。加えて、これらの現在の解決策は、コンテナ・オーケストレーション環境管理者からメモリを保護することはなく、コンテナ・オーケストレーション環境管理者が一度実行したポッド内のコンテナにアクセスすること、またはコンテナを操作することを妨げることもない。
【0009】
さらなる別の現在の解決策、Cloud Data Shieldは、ソフトウェア・ガード・エクステンション環境内で使用される形式にコンテナを変換することが必要となる。この解決策は、例えば、C++などの共通プログラミング言語を使用して書かれたアプリケーション用に自動的にコンテナを変換することを試みる。したがって、この現在の解決策のためにコンテナを、特にソフトウェア・ガード・エクステンション環境用に構築しなければならない。この現在の解決策は、ポッド/アプリケーションをコンテナ・オーケストレーション環境管理者から保護することができるが、実行されているコンテナを変化させることによってそれを行い、それによってコンテナ・オーケストレーション環境におけるユーザ・エクスペリエンスが変更または改変される。
【発明の概要】
【0010】
本発明の態様によれば、コンテナ・オーケストレーション環境においてポッドをセキュリティ保護するためのコンピュータ実施方法が提供される。コンピュータは、コンピュータのトラステッド実行環境に埋め込まれたエージェントを使用して、コンテナ・オーケストレーション環境によってホストされるサービスに対応するアプリケーション・ワークロードを含むコンテナのセットに対するオーケストレーション・アクションを実行するためのコンテナ・ランタイム・インターフェース・コマンドを、トラステッド実行環境のポッド・サンドボックス仮想マシンに含まれるトラステッド実行環境コントラクトに包含される規則と、コンテナ・ランタイム・インターフェース・コマンドを照合することに基づいて、検証する。コンピュータは、エージェントを使用して、トラステッド実行環境コントラクト内で合致する規則を発見したことに基づいて、コンテナのセットに対するオーケストレーション・アクションを実行するためのコンテナ・ランタイム・インターフェース・コマンドが有効かどうかを判断する。コンピュータが、エージェントを使用して、トラステッド実行環境コントラクト内で合致する規則を発見したことに基づいて、コンテナのセットに対するオーケストレーション・アクションを実行するためのコンテナ・ランタイム・インターフェース・コマンドが有効であると判断したことに応答して、コンピュータは、エージェントを使用して、トラステッド実行環境のポッド・サンドボックス仮想マシンにおけるサービスに対応するアプリケーション・ワークロードを含むコンテナのセットに対するオーケストレーション・アクションを実行するためのコンテナ・ランタイム・インターフェース・コマンドを実行する。
【0011】
本発明の別の態様によれば、コンテナ・オーケストレーション環境においてポッドをセキュリティ保護するためのコンピュータ・システムであって、バス・システムと、バス・システムに接続された記憶デバイスであって、記憶デバイスがプログラム命令を記憶する、記憶デバイスと、バス・システムに接続されたプロセッサであって、プロセッサが、コンピュータ・システムのトラステッド実行環境に埋め込まれたエージェントを使用して、コンテナ・オーケストレーション環境によってホストされるサービスに対応するアプリケーション・ワークロードを含むコンテナのセットに対するオーケストレーション・アクションを実行するためのコンテナ・ランタイム・インターフェース・コマンドを、トラステッド実行環境のポッド・サンドボックス仮想マシンに含まれるトラステッド実行環境コントラクトに包含される規則と、前記コンテナ・ランタイム・インターフェース・コマンドを照合することに基づいて、検証することと、エージェントを使用して、トラステッド実行環境コントラクト内で合致する規則を発見したことに基づいて、コンテナのセットに対するオーケストレーション・アクションを実行するためのコンテナ・ランタイム・インターフェース・コマンドが有効かどうかを判断することと、エージェントを使用して、トラステッド実行環境コントラクト内で合致する規則を発見したことに基づいて、コンテナのセットに対するオーケストレーション・アクションを実行するためのコンテナ・ランタイム・インターフェース・コマンドが有効であると判断したことに応答して、エージェントを使用して、トラステッド実行環境のポッド・サンドボックス仮想マシンにおけるサービスに対応するアプリケーション・ワークロードを含むコンテナのセットに対するオーケストレーション・アクションを実行するためのコンテナ・ランタイム・インターフェース・コマンドを実行することとのためのプログラム命令を実行する、プロセッサと、を備える、コンピュータ・システムが提供される。
【0012】
本発明の別の態様によれば、コンテナ・オーケストレーション環境においてポッドをセキュリティ保護するためのコンピュータ・プログラム製品であって、コンピュータ・プログラム製品が、具現化されたプログラム命令を有するコンピュータ可読記憶媒体を含み、プログラム命令が、コンピュータによって、コンピュータのトラステッド実行環境に埋め込まれたエージェントを使用して、コンテナ・オーケストレーション環境によってホストされるサービスに対応するアプリケーション・ワークロードを含むコンテナのセットに対するオーケストレーション・アクションを実行するためのコンテナ・ランタイム・インターフェース・コマンドを、トラステッド実行環境のポッド・サンドボックス仮想マシンに含まれるトラステッド実行環境コントラクトに包含される規則と、コンテナ・ランタイム・インターフェース・コマンドを照合することに基づいて検証することと、コンピュータによって、エージェントを使用して、トラステッド実行環境コントラクト内で合致する規則を発見したことに基づいて、コンテナのセットに対するオーケストレーション・アクションを実行するためのコンテナ・ランタイム・インターフェース・コマンドが有効かどうかを判断することと、コンピュータが、エージェントを使用して、トラステッド実行環境コントラクト内で合致する規則を発見したことに基づいて、コンテナのセットに対するオーケストレーション・アクションを実行するためのコンテナ・ランタイム・インターフェース・コマンドが有効であると判断したことに応答して、コンピュータによって、エージェントを使用して、トラステッド実行環境のポッド・サンドボックス仮想マシンにおけるサービスに対応するアプリケーション・ワークロードを含むコンテナのセットに対するオーケストレーション・アクションを実行するためのコンテナ・ランタイム・インターフェース・コマンドを実行することとの方法をコンピュータに実行させるように、コンピュータにより実行可能である、コンピュータ・プログラム製品が提供される。
【0013】
本発明の別の態様によれば、ポッドをセキュリティ保護するための方法が提供される。サービスに対応するアプリケーション・ワークロードを含むコンテナのセットに対するオーケストレーション・アクションを実行するためのコンテナ・ランタイム・インターフェース・コマンドが、トラステッド実行環境のポッド・サンドボックス仮想マシンに含まれるトラステッド実行環境コントラクトに包含される規則と、コンテナ・ランタイム・インターフェース・コマンドを照合することに基づいて、検証される。トラステッド実行環境コントラクト内で合致する規則を発見したことに基づいて、コンテナのセットに対するオーケストレーション・アクションを実行するためのコンテナ・ランタイム・インターフェース・コマンドが有効かどうかを判断する。トラステッド実行環境コントラクト内で合致する規則を発見したことに基づいて、コンテナのセットに対するオーケストレーション・アクションを実行するためのコンテナ・ランタイム・インターフェース・コマンドが有効であると判断したことに応答して、トラステッド実行環境のポッド・サンドボックス仮想マシンにおけるサービスに対応するアプリケーション・ワークロードを含むコンテナのセットに対するオーケストレーション・アクションを実行するためのコンテナ・ランタイム・インターフェース・コマンドが実行される。
【0014】
その結果、本発明の態様は、コンテナ・オーケストレーション環境においてポッド分離およびセキュリティを増大させつつ、ユーザ・エクスペリエンスを維持する。
【0015】
本発明の態様は、また、任意選択的に、エージェントを使用して、コンテナ・オーケストレーション環境においてサービスを提供するアプリケーション・オーナーに対応するコントラクト検証鍵に基づいて、トラステッド実行環境にデプロイされたサービスに対応するコンテナのセットを有するポッド・サンドボックス仮想マシンに含まれるトラステッド実行環境コントラクトのデジタル署名を検証する。さらに、本発明の態様は、任意選択的に、イメージ・リポジトリからのイメージに関連付けられた署名を正当性確認するための、トラステッド実行環境コントラクトに包含される対応する公開鍵を使用して、ランタイムに異なるコンテナ・イメージをプルしようとすることを妨げるために、コンテナのセット内のコンテナ毎の対応するコンテナ・イメージの真正性を検証する。
【0016】
その結果、本発明の態様は、任意選択的に、ポッド・デプロイメント記述で指定され、かつコンテナ・オーケストレーション環境のトラステッド実行環境において実行するためにトラステッド実行環境コントラクトに包含される規則に対して検証されたコンテナのみを許可する。さらに、本発明の態様は、任意選択的に、クラスタのオーケストレーションから、トラステッド実行環境コントラクトおよびポッド・デプロイメント記述の準備を技術的に分離および保護することを可能にする。
【図面の簡単な説明】
【0017】
図1】例示的実施形態が実施される、データ処理システムのネットワークの図形表現である。
図2】例示的実施形態が実施される、データ処理システムの図である。
図3】例示的実施形態による、ポッド・システムをセキュリティ保護するためのトラステッド実行環境を示す図である。
図4A】例示的実施形態による、トラステッド実行環境コントラクトの検証および復号プロセスの実施例を示す図である。
図4B】例示的実施形態による、トラステッド実行環境コントラクトの検証および復号プロセスの実施例を示す図である。
図5】例示的実施形態による、トラステッド実行環境においてポッド・サンドボックス仮想マシンをデプロイするためのプロセスを示すフローチャートである。
図6A】例示的実施形態による、トラステッド実行環境内に位置するコンテナを使用してアプリケーション・ワークロードを実行するコマンドを検証するためのプロセスを示すフローチャートである。
図6B】例示的実施形態による、トラステッド実行環境内に位置するコンテナを使用してアプリケーション・ワークロードを実行するコマンドを検証するためのプロセスを示すフローチャートである。
【発明を実施するための形態】
【0018】
本発明は、統合の任意の可能な技術的詳細レベルにおけるシステム、方法、またはコンピュータ・プログラム製品、あるいはそれらの組み合わせであってもよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(または複数の媒体)を含み得る。
【0019】
コンピュータ可読記憶媒体は、命令実行デバイスにより使用するための命令を保持および記憶し得る有形デバイスであり得る。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁気記憶デバイス、半導体記憶デバイス、または前述したものの任意の適当な組み合わせであってもよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な実施例の非網羅リストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー・ディスク、パンチカードまたは命令をその上に記録させる溝内の隆起構造などの機械的に符号化されたデバイス、および前述したものの任意の適当な組み合わせを含む。本明細書で用いられるコンピュータ可読記憶媒体は、電波もしくは他の自由伝播する電磁波、導波管もしくは他の伝送媒体を通って伝播する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、または電線を通って伝送される電気信号などの、一過性信号それ自体であると解釈されるべきではない。
【0020】
本明細書に記載されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、あるいはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくはワイヤレス・ネットワーク、またはそれらの組み合わせを介して外部コンピュータまたは外部記憶デバイスに、ダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはそれらの組み合わせを含み得る。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、コンピュータ可読プログラム命令をネットワークから受信し、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体の記憶用にコンピュータ可読プログラム命令を転送する。
【0021】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用の構成データ、またはSmalltalk(R)、C++などのオブジェクト指向プログラム言語、および「C」プログラミング言語もしくは類似のプログラミング言語などの手続き型プログラミング言語を含む、1つもしくは複数のプログラミング言語の任意の組み合わせで書かれたソース・コードもしくはオブジェクト・コードのいずれかであってもよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で完全に、ユーザのコンピュータ上で部分的に、スタンドアロン・ソフトウェア・パッケージとして、ユーザのコンピュータ上で部分的にかつリモート・コンピュータ上で部分的に、またはリモート・コンピュータもしくはサーバ上で完全に、実行してもよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意の種類のネットワークを通してユーザのコンピュータに接続されてもよく、または、接続は、(例えば、インターネット・サービス・プロバイダを用いてインターネットを通して)外部コンピュータに対して行われてもよい。いくつかの実施形態では、例えば、プログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個別化することによって、コンピュータ可読プログラム命令を実行し得る。
【0022】
本発明の態様は、発明の実施形態による、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して、本明細書に記載される。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方のブロックの組み合わせが、コンピュータ可読プログラム命令によって実施されると理解されたい。
【0023】
コンピュータまたは他のプログラマブル・データ処理装置のプロセッサによって実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実施する手段を生成するように、これらのコンピュータ可読プログラム命令は、コンピュータ、または機械を製造するための他のプログラマブル・データ処理装置のプロセッサに提供されてもよい。コンピュータ可読記憶媒体に記憶される命令を有するコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作の態様を実施する命令を含む製品を含むように、これらのコンピュータ可読プログラム命令は、また、コンピュータ、プログラマブル・データ処理装置、または他のデバイス、あるいはそれらの組み合わせに特定の方式で機能するように指示し得る、コンピュータ可読記憶媒体に記憶されてもよい。
【0024】
コンピュータ、他のプログラマブル装置、または他のデバイス上で実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実施するように、コンピュータ可読プログラム命令は、また、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させてコンピュータ実施プロセスを作り出すために、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上にロードされてもよい。
【0025】
図面中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の考えられる実施態様のアーキテクチャ、機能、および動作を例示している。この点に関して、フローチャートまたはブロック図内の各ブロックは、指定された論理機能を実施するための1つまたは複数の実行可能命令を含む、モジュール、セグメント、または命令の一部を表し得る。いくつかの代替実施態様において、ブロック内に記載された機能は、図面中に記載された順序以外で発生してもよい。例えば、連続して示される2つのブロックが、実際には、同時に、実質的に同時に、部分的または全体的に時間的に重複して実行されて、1つのステップとして実現されてもよく、または、ブロックが、関係する機能性次第で逆の順序で実行されることがあってもよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方におけるブロックの組み合わせが、指定された機能もしくは動作を実行し、または専用ハードウェアおよびコンピュータ命令の組み合わせを実行する専用ハードウェア・ベース・システムによって実施されることにも留意されたい。
【0026】
ここで図面を参照すると、特に図1図4を参照すると、例示的実施形態が実施されるデータ処理環境の図が提供される。図1図4は、単なる実施例であることを意味し、異なる実施形態が実施される環境に関していかなる限定も主張または示唆することを意図するものではないと理解されたい。図示された環境に対して多くの修正が行われてもよい。
【0027】
図1は、例示的実施形態が実施される、コンテナ・オーケストレーション環境の図形表現を示す。コンテナ・オーケストレーション環境100は、例示的実施形態が実施される、コンピュータ、データ処理システム、および他のデバイスのネットワークである。コンテナ・オーケストレーション環境100は、ポッドの自動デプロイメント、スケーリング、および動作を提供する。各ポッドは、アプリケーション・ワークロードを実行するためのコンテナのセットを含み、アプリケーション・ワークロードは、コンテナ・オーケストレーション環境100によってホストされるサービスのセットに対応する。コンテナ・オーケストレーション環境100は、例えば、Kubernetes環境であってもよい。しかしながら、Kubernetesは、例示的実施形態に対する限定としてではなく、単なる実施例として意図されている。言い換えると、例示的実施形態は、任意の種類のコンテナ・オーケストレーション環境、プラットフォーム、またはインフラストラクチャにおいて実施されてもよい。
【0028】
コンテナ・オーケストレーション環境100は、ネットワーク102を含み、ネットワーク102は、コンテナ・オーケストレーション環境100の中で互いに接続されたコンピュータ、データ処理システム、および他のデバイスの間に通信リンクを提供するために使用される媒体である。ネットワーク102は、例えば、有線通信リンク、無線通信リンク、光ファイバ・ケーブルなどの接続を含んでもよい。
【0029】
図示された実施例では、コンテナ・オーケストレーション環境100は、コントローラ・ノード104およびホスト・ノード106を、ストレージ108と共に含む。コントローラ・ノード104およびホスト・ノード106は、例えば、ネットワーク102への高速接続を有するサーバ・コンピュータであってもよい。加えて、コントローラ・ノード104およびホスト・ノード106はそれぞれ、1つまたは複数のデータ・センタ内のサーバのクラスタを表し得る。代替として、コントローラ・ノード104およびホスト・ノード106はそれぞれ、1つまたは複数のクラウド環境内の複数のコンピューティング・ノードを表し得る。さらに、コントローラ・ノード104およびホスト・ノード106はそれぞれ、仮想マシンのセットを含んでもよい。
【0030】
コントローラ・ノード104は、例えば、顧客、クライアント、テナントなどのユーザから、アプリケーション・ワークロードを実行するためのオーケストレーション・リクエストを受信および追跡する。加えて、コントローラ・ノード104は、ホスト・ノードのクラスタを制御する。ホスト・ノードのクラスタは、ホスト・ノード106で表され、ユーザによってリクエストされたサービスに対応するアプリケーション・ワークロードを実行する。
【0031】
クライアント110、クライアント112、およびクライアント114もまた、ネットワーク102に接続している。クライアント110、112、および114は、コントローラ・ノード104およびホスト・ノード106のクライアントである。本実施例では、クライアント110、112、および114は、ネットワーク102への有線通信リンクを有するデスクトップまたはパーソナル・コンピュータとして示されている。しかしながら、クライアント110、112、および114は、単なる実施例であり、ネットワーク102への有線または無線通信リンクを有する、例えば、ネットワーク・コンピュータ、ラップトップ・コンピュータ、ハンドヘルド・コンピュータ、スマート・フォン、スマート・テレビなどの他の種類のデータ処理システムを表し得ることに留意されたい。
【0032】
クライアント110、112、および114のユーザは、クライアント110、112、および114を利用して、コンテナ・オーケストレーション環境100によってホストされるサービスのセットに対応するアプリケーション・ワークロードを実行するためのオーケストレーション・リクエストをサブミットし得る。アプリケーション・ワークロードは、例えば、データ処理、画像処理、トランザクション処理、センサ・モニタリング、科学計算、予想、予測などの、任意の種類のワークロードであってもよい。クライアント・デバイス・ユーザは、また、例えば、コンテナ・オーケストレーション環境100の管理者、コンテナ・オーケストレーション環境100によってホストされるサービスのセットのためのコンテナ化アプリケーションおよびポッド・デプロイメント記述を提供するアプリケーション・オーナー、サービスのセットのアプリケーション・ワークロードを実行するコンテナに対応するコンテナ・イメージを生成するコンテナ開発者などを含み得ることに留意されたい。
【0033】
ストレージ108は、任意の種類のデータを構造化フォーマットまたは非構造化フォーマットで記憶することが可能なネットワーク記憶デバイスである。加えて、ストレージ108は、複数のネットワーク記憶デバイスを表してもよい。さらに、ストレージ108は、例えば、コンテナ・イメージ、仮想マシン・イメージ、ポッド・サンドボックス仮想マシン・イメージ、カーネルベース仮想マシン・イメージなどの、複数の異なるイメージを記憶してもよい。さらに、ストレージ108は、例えば、コンテナ・オーケストレーション環境管理者に関連付けられた、ユーザ名、パスワードなどを含み得る認証データまたは信用データなどの他の種類のデータを記憶してもよい。
【0034】
加えて、コンテナ・オーケストレーション環境100は、任意の数の追加のコンピュータ・ノード、クライアント・デバイス、記憶デバイス、および図示されない他のデバイスを含んでもよいことに留意されたい。コンテナ・オーケストレーション環境100に位置するプログラム・コードは、コンピュータ可読記憶媒体またはコンピュータ可読記憶媒体のセット上に記憶されてもよく、使用のためにコンピュータまたは他のデータ処理デバイスにダウンロードされてもよい。例えば、プログラム・コードは、コントローラ・ノード104上のコンピュータ可読記憶媒体に記憶されてもよく、ホスト・ノード106上で使用するためにネットワーク102を経てホスト・ノード106にダウンロードされてもよい。
【0035】
図示された実施例では、コンテナ・オーケストレーション環境100は、例えば、インターネット、イントラネット、ワイド・エリア・ネットワーク、ローカル・エリア・ネットワーク、電気通信ネットワーク、またはそれらの任意の組み合わせなどのいくつかの異なる種類の通信ネットワークとして実施されてもよい。図1は、異なる例示的実施形態についてのアーキテクチャの限定としてではなく、単なる一実施例として意図されている。
【0036】
本明細書で用いられるように、品目を参照して使用される場合、「いくつかの(a number of)」は、1つまたは複数の品目を意味する。例えば、「いくつかの異なる種類の通信ネットワーク」は、1つまたは複数の異なる種類の通信ネットワークである。同様に、「~のセット」は、品目を参照して使用される場合、1つまたは複数の品目を意味する。
【0037】
さらに、「~の少なくとも1つ」という語句は、品目のリストと共に使用されるとき、リストされた品目の1つまたは複数の異なる組み合わせが使用されることを意味し、リスト内の各品目の1つだけが必要であってもよい。言い換えると、「~の少なくとも1つ」は、品目の任意の組み合わせおよび任意の数の品目がリストから使用されることを意味するが、リスト内の品目の全てが必要とされるわけではない。品目は、特定のオブジェクト、もの、またはカテゴリであってもよい。
【0038】
例えば、限定ではなく、「品目A、品目B、または品目Cの少なくとも1つ」は、品目A、品目Aおよび品目B、または品目Bを含み得る。この例は、品目A、品目B、および品目C、または品目Bおよび品目Cも含み得る。当然ながら、これらの品目の任意の組み合わせが存在してもよい。いくつかの例示的な例では、「~の少なくとも1つ」は、限定ではなく例えば、2つの品目A、1つの品目B、および10個の品目C、4個の品目Bおよび7個の品目C、または他の適当な組み合わせであってもよい。
【0039】
ここで図2を参照すると、データ処理システムの図が、例示的実施形態に従って図示されている。データ処理システム200は、図1のホスト・ノード106などのコンピュータの例であり、ホスト・ノード106には、例示的実施形態のポッド分離およびセキュリティ・プロセスを実施するコンピュータ可読プログラム・コードまたは命令が、位置し得る。本実施例では、データ処理システム200は、通信ファブリック202を含み、通信ファブリック202は、プロセッサ・ユニット204、メモリ206、永続ストレージ208、通信ユニット210、入力/出力(I/O)ユニット212、およびディスプレイ214の間に通信を提供する。
【0040】
プロセッサ・ユニット204は、メモリ206内にロードされるソフトウェア・アプリケーションおよびプログラムのための命令を実行する役割をする。プロセッサ・ユニット204は、特定の実施態様に応じて、1つまたは複数のハードウェア・プロセッサ・デバイスのセットであってもよく、またはマルチコア・プロセッサであってもよい。加えて、プロセッサ・ユニット204は、例えば、中央処理装置、グラフィック処理装置、専用プロセッサなどであってもよい。
【0041】
メモリ206および永続ストレージ208は、記憶デバイス216の実施例である。本明細書で用いられるように、コンピュータ可読記憶デバイスまたはコンピュータ可読記憶媒体は、限定ではなく例えば、データ、関数形式のコンピュータ可読プログラム・コード、または他の適当な情報、あるいはそれらの組み合わせなどの情報を、一時的または永続的に記憶することが可能なハードウェアの任意の部分である。さらに、コンピュータ可読記憶デバイスまたはコンピュータ可読記憶媒体は、一過性信号などの伝播媒体を除外する。さらに、コンピュータ可読記憶デバイスまたはコンピュータ可読記憶媒体は、コンピュータ可読記憶デバイスのセットまたはコンピュータ可読記憶媒体のセットを表し得る。これらの実施例におけるメモリ206は、例えば、ランダム・アクセス・メモリ(RAM)、または任意の他の適当な揮発性記憶デバイス、もしくはフラッシュ・メモリなどの不揮発性記憶デバイスであってもよい。永続ストレージ208は、特定の実施態様に応じて様々な形態をとり得る。例えば、永続ストレージ208は、1つまたは複数のデバイスを含んでもよい。例えば、永続ストレージ208は、ディスク・ドライブ、ソリッドステート・ドライブ、書き換え可能な光学ディスク、書き換え可能な磁気テープ、または上記の任意の組み合わせであってもよい。永続ストレージ208によって使用される媒体は、リムーバブルであってもよい。例えば、リムーバブル・ハード・ドライブが、永続ストレージ208のために使用されてもよい。
【0042】
本実施例では、プロセッサ・ユニット204およびメモリ206は、トラステッド実行環境218を含む。しかしながら、本実施例は、トラステッド実行環境218を含むプロセッサ・ユニット204およびメモリ206の全てを示しているものの、代替の例示的実施形態では、トラステッド実行環境218を含むために、プロセッサ・ユニット204およびメモリ206の局所的なセキュア領域のみが使用されることに留意されたい。別の代替の例示的実施形態では、プロセッサ・ユニット204は、メモリ・コンポーネントを含み、トラステッド実行環境218を含み得る。トラステッド実行環境218は、サービスに対応するポッド・サンドボックス仮想マシン内のコンテナのセットの分離されたセキュアな実行を提供し、サービスは、コンテナのセットについてのポッド・デプロイメント記述に対応するトラステッド実行環境コントラクトに包含される規則のセットに基づいて、コンテナ・オーケストレーション環境においてアプリケーション・オーナーにより提供される。さらに、トラステッド実行環境218は、データ処理システム200に位置するトラステッド実行環境のセットを表し得る。
【0043】
本実施例では、メモリ206は、セキュア・エージェント220を記憶する。代替の例示的実施形態では、セキュア・エージェント220は、プロセッサ・ユニット204上に位置し得る。別の代替の例示的実施形態では、セキュア・エージェント220の一部は、メモリ206上に位置してもよく、セキュア・エージェント220の別の一部は、プロセッサ・ユニット204上に位置してもよい。セキュア・エージェント220は、トラステッド実行環境218の中でトラステッド実行環境コントラクトを記憶し、ポッド・デプロイメント記述において指定され、かつトラステッド実行環境218において実行するためにトラステッド実行環境コントラクトに包含される規則に対して検証されるコンテナのみを許可するプロセスを制御する。さらに、セキュア・エージェント220は、クラスタのオーケストレーションから、トラステッド実行環境コントラクトおよびポッド・デプロイメント記述の準備を技術的に分離および保護することを可能にする。
【0044】
結果として、データ処理システム200は、専用コンピュータ・システムとして動作し、データ処理システム200において、データ処理システム200のトラステッド実行環境218の中のセキュア・エージェント220は、規制への適合のために増大したポッド分離およびセキュリティの増大を可能にしつつ、コンテナ・オーケストレーション環境におけるユーザ・エクスペリエンスを維持する。特に、トラステッド実行環境218内のセキュア・エージェント220は、セキュア・エージェント220を有しない現在利用可能な汎用コンピュータ・システムと比較して、データ処理システム200を専用コンピュータ・システムに変換する。
【0045】
本実施例では、通信ユニット210は、図1のネットワーク102などのネットワークを介して、他のコンピュータ、データ処理システム、およびデバイスとの通信を提供する。通信ユニット210は、物理的通信リンクおよび無線通信リンクの両方の使用を通して通信を提供してもよい。物理的通信リンクは、例えば、ワイヤ、ケーブル、ユニバーサル・シリアル・バス、または任意の他の物理技術を利用して、データ処理システム200のための物理的通信リンクを確立し得る。無線通信リンクは、例えば、短波、高周波、極超短波、マイクロ波、ワイヤレス・フィディリティ(Wi-Fi)、Bluetooth(R)技術、GSM(global system for mobile communications)、符号分割多元接続(CDMA:code division multiple access)、第2世代(2G)、第3世代(3G)、第4世代(4G)、4G LTE(4G Long Term Evolution)、LTEアドバンスト(LTE Advanced)、第5世代(5G)、またはデータ処理システム200のための無線通信リンクを確立するための任意の他の無線通信技術もしくは規格を利用してもよい。
【0046】
入力/出力ユニット212は、データ処理システム200に接続される他のデバイスを用いてデータの入力および出力を可能にする。例えば、入力/出力ユニット212は、キーパッド、キーボード、マウス、マイクロフォン、または何らかの他の適当な入力デバイス、あるいはそれらの組み合わせを通して、ユーザ入力のための接続を提供し得る。ディスプレイ214は、ユーザに情報を表示するためのメカニズムを提供し、例えば、ユーザがユーザ・インターフェースまたは入力データを通してオンスクリーン選択を行うこと可能にするタッチ・スクリーン・ケイパビリティを含んでもよい。
【0047】
オペレーティング・システム、アプリケーション、またはプログラム、あるいはそれらの組み合わせのための命令は、記憶デバイス216に位置してもよく、記憶デバイス216は、通信ファブリック202を通してプロセッサ・ユニット204と通信している。この例示的実施例では、命令は、永続ストレージ208上で関数形式である。これらの命令は、プロセッサ・ユニット204による実行用にメモリ206内にロードされ得る。異なる実施形態のプロセスは、コンピュータ実施命令を使用してプロセッサ・ユニット204によって実行されてもよく、コンピュータ実施命令は、メモリ206などのメモリ内に位置してもよい。これらのプログラム命令は、プロセッサ・ユニット204内のプロセッサによって読み出しおよび実行される、プログラム・コード、コンピュータ使用可能プログラム・コード、またはコンピュータ可読プログラム・コードと呼ばれる。異なる実施形態においてプログラム命令は、メモリ206または永続ストレージ208などの異なる物理的コンピュータ可読記憶デバイス上で具現化され得る。
【0048】
プログラム・コード222は、選択的にリムーバブルであるコンピュータ可読媒体224上に関数形式で位置し、プロセッサ・ユニット204による実行用のデータ処理システム200上にロードされ、または移送されてもよい。プログラム・コード222およびコンピュータ可読媒体224は、コンピュータ・プログラム製品226を形成する。一実施例では、コンピュータ可読媒体224は、コンピュータ可読記憶媒体228またはコンピュータ可読信号媒体230であってもよい。
【0049】
これらの例示的実施例では、コンピュータ可読記憶媒体228は、プログラム・コード222を伝播または送信する媒体ではなく、プログラム・コード222を記憶するために使用される物理的または有形記憶デバイスである。コンピュータ可読記憶媒体228は、例えば、永続ストレージ208の一部であるハード・ドライブなどの記憶デバイス上への移送のために、永続ストレージ208の一部であるドライブまたは他のデバイス内へ挿入または配置される、例えば光ディスクまたは磁気ディスクを含んでもよい。コンピュータ可読記憶媒体228は、また、データ処理システム200に接続されるハード・ドライブ、サム・ドライブ、またはフラッシュ・メモリなどの永続ストレージの形態をとってもよい。
【0050】
代替として、プログラム・コード222は、コンピュータ可読信号媒体230を使用してデータ処理システム200に移送されてもよい。コンピュータ可読信号媒体230は、例えば、プログラム・コード222を包含する伝播されたデータ信号であってもよい。例えば、コンピュータ可読信号媒体230は、電磁気信号、光学信号、または任意の他の適当な種類の信号であってもよい。これらの信号は、無線通信リンク、光ファイバ・ケーブル、同軸ケーブル、ワイヤ、または任意の他の適当な種類の通信リンクなどの通信リンクを経て送信されてもよい。
【0051】
さらに、本明細書で使用される「コンピュータ可読媒体224」は、単数または複数であってもよい。例えば、プログラム・コード222は、単一記憶デバイスまたはシステムの形態のコンピュータ可読媒体224に位置してもよい。別の実施例では、プログラム・コード222は、複数のデータ処理システムに分散されたコンピュータ可読媒体224に位置してもよい。言い換えると、プログラム・コード222内のいくつかの命令は、1つのデータ処理システムに位置してもよく、プログラム・コード222内の他の命令は、1つまたは複数の他のデータ処理システムに位置してもよい。例えば、プログラム・コード222の一部は、サーバ・コンピュータ内のコンピュータ可読媒体224に位置してもよく、プログラム・コード222の別の一部は、クライアント・コンピュータのセットに位置するコンピュータ可読媒体224に位置してもよい。
【0052】
データ処理システム200について例示された異なるコンポーネントは、異なる実施形態が実施される方式にアーキテクチャを限定することを意味しない。いくつかの例示的実施例では、コンポーネントの1つまたは複数が、別のコンポーネントに組み込まれてもよく、または別のコンポーネントの一部を形成してもよい。例えば、メモリ206またはその一部は、いくつかの例示的実施例においてプロセッサ・ユニット204に組み込まれてもよい。異なる例示的実施形態は、データ処理システム200について示されるものに加えて、またはその代わりにコンポーネントを含むデータ処理システムにおいて実施されてもよい。図2に示される他のコンポーネントは、図示された例示的実施例から変化してもよい。異なる実施形態は、プログラム・コード222を実行することが可能な任意のハードウェア・デバイスまたはシステムを使用して実施されてもよい。
【0053】
別の実施例では、バス・システムは、通信ファブリック202を実施するために使用されてもよく、システム・バスまたは入力/出力バスなどの1つまたは複数のバスから構成されてもよい。当然ながら、バス・システムは、バス・システムに取り付けられた異なるコンポーネントまたはデバイス間のデータ移送を提供する、任意の適当な種類のアーキテクチャを使用して実施されてもよい。
【0054】
サーバレス・コンピューティングに向かっている現在の傾向は、コンテナ・オーケストレーション環境におけるホスト・ノードの管理されたクラスタの中でのマルチユーザへの期待が高まることにつながっており、それによって、ホスト・ノードの管理されたクラスタの中でのセキュリティへの期待が高まっている。これらの現在の傾向は、コンテナ・オーケストレーション環境管理者の特権を再検査する必要性と、コンテナ・オーケストレーション環境管理者からユーザ・データおよびアプリケーションを保護する方法につながっている。
【0055】
コンテナ・オーケストレーション環境管理者からのコンテナ・オーケストレーション環境内のポッド間の分離およびポッドのセキュリティの増大は、ユーザ・エクスペリエンスを妥協すること、または低下させることなく達成される必要がある。例えば、コンテナ・オーケストレーション環境においてトラステッド実行環境を使用することは、ポッド・セキュリティの増大につながるはずである。しかしながら、コンテナ・オーケストレーション環境管理者が信頼できない場合、コンテナ・オーケストレーション環境内のトラステッド実行環境によりメモリを保護することおよびポッド分離を増大させることに加えて、ユーザのデータへのアクセスを得るため、またはユーザのアプリケーションを妨害するために、コンテナ・オーケストレーション環境管理者がトラステッド実行環境で動作しているものを操作できないことを保証する必要がある。
【0056】
例示的実施形態は、規制への適合のためにコンテナ・オーケストレーション環境のユーザ・エクスペリエンスおよびポッド・セキュリティへの期待を保持しつつ、メモリを保護するためにトラステッド実行環境を使用して、ランタイムにユーザのデータおよびアプリケーションをコンテナ・オーケストレーション環境管理者から保護する問題を考慮し、対処している。加えて、例示的実施形態は、いくつかの現在の解決策が行うように、ユーザ・エクスペリエンスを変更するコンテナの再構築または変換の必要はない。例えば、例示的実施形態は、コンテナ・オーケストレーション環境でトラステッド実行環境を利用するために、任意の既存のポッド・デプロイメント記述を補充してもよい。さらに、例示的実施形態がトラステッド実行環境を初期化した後、例示的実施形態は、ポッド・デプロイメント記述で指定されたコンテナおよび挙動が、コンテナ・デプロイメント時間に実行することだけを可能にする。
【0057】
ポッド・デプロイメント記述生成の役割は、コンテナ・オーケストレーション環境を管理するコンテナ・オーケストレーション環境管理者以外の異なるペルソナに属し得る。例えば、アプリケーション・オーナーは、ポッド・デプロイメント記述を生成し、ポッド・デプロイメント記述をコンテナ・オーケストレーション環境管理者に与えて、コンテナ化アプリケーションをコンテナ・オーケストレーション環境内で実行するためにホスト・ノードのクラスタを使用および管理し得る。アプリケーション・オーナーは、コンテナ・オーケストレーション環境上でアプリケーションを実行することによって、サービスを提供する。例示的実施形態は、ポッド・デプロイメント記述に定義されるように、コンテナのセットにアプリケーションをデプロイする。コンテナ・オーケストレーション環境管理者が、アプリケーションおよびデータ・セキュリティに関するアプリケーション・オーナーの意図および期待に妥協するようなやり方でコンテナをデプロイする前に、ポッド・デプロイメント記述を変更することができないことを保証するための保護が、存在するはずである。
【0058】
例示的実施形態は、アプリケーション・オーナーによって定義されるポッド・デプロイメント記述が、例示的実施形態がトラステッド実行環境ランタイムを開始すると、トラステッド実行環境ランタイム内で何が起こるかを制御するものであることを保証する。言い換えると、例示的実施形態は、そのアクションがポッド・デプロイメント記述に定義されていない場合に、コンテナ・オーケストレーション環境管理者またはコンテナ・オーケストレーション環境へのアクセスを有する任意の他の管理者によってトラステッド実行環境ランタイム内でいかなる追加のアクションも発生することを許可しない。例示的実施形態は、コンテナ・オーケストレーション環境管理者またはトラステッド実行環境の外部の他の何かからのメモリ保護を提供する、トラステッド実行環境を利用することに留意されたい。また、例示的実施形態は、コンテナのデプロイにおいてコンテナ・オーケストレーション環境のユーザ・エクスペリエンスおよびポッド・サンドボックス仮想マシン(例えば、カーネルベース仮想マシン)の役割を維持することに留意されたい。カーネルベース仮想マシンは、オペレーティング・システム・カーネルが、例えば、ハイパバイザ、仮想マシン・マネージャなどとして機能することを可能にする、オペレーティング・システム・カーネル内の仮想化コンポーネントであり、それによって、ホスト・マシンがゲストまたは仮想マシンと呼ばれる複数の分離した仮想環境を実行することが可能となる。
【0059】
例示的実施形態は、トラステッド実行環境を利用して、コンテナ・オーケストレーション環境内のコンテナのポッドを表す。さらに、例示的実施形態は、トラステッド実行環境内のセキュア・エージェントを起動してポッド・サンドボックス仮想マシン・セマンティクスを処理し、それは、コンテナ・ランタイム・インターフェース・アプリケーション・プログラミング・インターフェースおよびコンテナ・ランタイム(例えば、オープン・コンテナ・イニシアチブ(Open Container Initiative))を介してコンテナ・オーケストレーション環境により駆動される。オープン・コンテナ・イニシアチブは、2つの仕様、1)ランタイム仕様、および2)イメージ仕様を含む。
【0060】
セキュア・エージェントは、セキュア・エージェントがトラステッド実行環境(例えば、ポッド・サンドボックス仮想マシン)内でどのコンテナを実行可能にするかを制御する、登録プロセスを含む。例示的実施形態は、まず、ポッド・サンドボックス仮想マシンの中でコンテナのセットを起動する前に、コンテナ・オーケストレーション環境でポッド・サンドボックス仮想マシンを生成し、それによって、ポッド・サンドボックス仮想マシンの生成が、セキュア・エージェントが内部で動作してトラステッド実行環境が開始する結果をもたらす。
【0061】
例示的実施形態は、コンテナ・オーケストレーション環境の人間可読データシリアル化言語(例えば、YAML(YAML Ain’t Markup Language))を、トラステッド実行環境コントラクトを含むように拡張する。例示的実施形態は、任意のコンテナ・デプロイメントが発生する前に例示的実施形態がポッド・サンドボックス仮想マシンを生成すると、トラステッド実行環境コントラクトをセキュア・エージェントに配置する。しかしながら、トラステッド実行環境コントラクトをアプリケーション・オーナーからトラステッド実行環境内のセキュア・エージェントへ渡すための複数の方法が存在することに留意されたい。例えば、アプリケーション・オーナーは、ポッド・デプロイメント記述にトラステッド実行環境コントラクトを含んでもよく、またはトラステッド実行環境コントラクトを別個の文書としてコントローラ・ノードに送信してもよい。
【0062】
セキュア・エージェントは、トラステッド実行環境コントラクトに含まれる規則に対して、コンテナ・ランタイム、コンテナ・オーケストレーション環境管理者、またはトラステッド実行環境外部の任意の他のソースからの任意の外部オーケストレーション・リクエストを正当性確認または検証することによって、トラステッド実行環境内でトラステッド実行環境コントラクトを施行する。オーケストレーション・リクエストが、アプリケーション・ワークロードをデプロイまたは開始するためのコマンドのシーケンスを含み得ることに留意されたい。セキュア・エージェントは、トラステッド実行環境コントラクト内の規則によって許可されない、いかなるオーケストレーション・リクエストも、実行することを拒否する。セキュア・エージェントは、また、暗号化されたイメージが、トラステッド実行環境コントラクトまたは別のソースのうちの1つからの復号鍵を正しく使用して復号されることを検証する。トラステッド実行環境コントラクトは、例えば、ランタイムに異なるコンテナ・イメージをプルしようとするいかなる試みも妨げる、ポッド・サンドボックス仮想マシンの中で実行されるコンテナのセットに対応する署名情報を含み得る。トラステッド実行環境が、トラステッド実行環境内部でのみ利用可能な秘密鍵で非対称暗号化をサポートする場合、トラステッド実行環境コントラクトの全てまたはある部分が暗号化されて、コンテナ・オーケストレーション環境管理者が、トラステッド実行環境コントラクト内に包含される特定の詳細または秘密(機密情報)を見ることを妨げ得る。
【0063】
例示的実施形態は、ポッド・デプロイメント記述の中にトラステッド実行環境コントラクトを組み込む。例示的実施形態は、非対称公開暗号鍵を使用してポッド・デプロイメント記述を暗号化してもよく、それは、トラステッド実行環境内部に位置する、対応する秘密暗号鍵を使用してのみ、復号可能であることを意味する。
【0064】
トラステッド実行環境内のセキュア・エージェントは、秘密鍵を使用してトラステッド実行環境コントラクトを復号すること、およびトラステッド実行環境の境界内でトラステッド実行環境コントラクトを施行することが可能である。トラステッド実行環境が、ホスト・ノードに連結された、メイン・メモリのセキュアな部分およびプロセッサ(例えば、中央処理装置、グラフィック処理装置、専用プロセッサなど)のセキュアな部分を含むことに留意されたい。セキュアな部分は、メイン・メモリおよびプロセッサの中の全てまたは特定の領域のみを含んでもよい。
【0065】
例示的実施形態が、コンテナ・オーケストレーション環境においてトラステッド実行環境を確立するとき、例示的実施形態は、トラステッド実行環境の境界内でセキュア・エージェントも確立し、トラステッド実行環境コントラクトをセキュア・エージェントに渡す。これは、例示的実施形態がコンテナ・オーケストレーション環境においてトラステッド実行環境を確立した後、トラステッド実行環境境界の境界にわたって信頼可能である必要がもはやないことを意味する。なぜなら、例示的実施形態は、トラステッド実行環境境界の中に含まれるデバイス(例えば、プロセッサ、メモリなど)上で実行しているコンテナのセットを変更するためのアクションをセキュア・エージェントにルーティングし、セキュア・エージェントが、トラステッド実行環境コントラクトの規則に対してアクションを正当性確認するからである。例示的実施形態は、トラステッドなブート・メカニズムが、あらゆるバイナリ・イメージ(例えば、ファームウェア、オペレーティング・システム・イメージなど)を、それぞれのバイナリ・イメージの署名を検証することによって正当性確認する場合に、セキュア・エージェントがアクティブになるまで、トラステッドなブート・メカニズムを利用してトラステッド実行環境を育てることに留意されたい。セキュア・エージェントが一旦アクティブになると、トラステッド実行環境を変更または修正(例えば、コンテナをデプロイ)するためのいかなるリクエストもセキュア・エージェントが正当性確認するため、例示的実施形態では、もはやトラステッドなブート・メカニズムが必要とされない。
【0066】
トラステッド実行環境コントラクトは、例えば、コンテナに対応する署名、コンテナに関する制限、秘密、暗号鍵などのうちの少なくとも1つを含み得る。署名は、トラステッド実行環境(例えば、ポッド・サンドボックス仮想マシン)における実行を許可されたコンテナのセットに対応する。署名は、例えば、アプリケーション・オーナーに対応するデジタル署名であってもよい。典型的なユースケースでは、トラステッド実行環境コントラクトは、コンテナ・イメージに署名するコンテナ開発者からの(公開)署名検証鍵を含み得る。セキュア・エージェントが外部リポジトリからコンテナ・イメージをプルすると、セキュア・エージェントは、ランタイムに異なるコンテナ・イメージをプルしようとすることを妨げるために、コンテナ・イメージが真正である(例えば、いかなる方法でも修正されていない)ことを正当性確認または検証するための、トラステッド実行環境コントラクトに包含される対応する秘密鍵を使用して、コンテナ・イメージに対応する署名を検証し得る。さらに、アプリケーション・オーナーは、トラステッド実行環境コントラクト全体に署名し、トラステッド実行環境コントラクトは、その署名を含む。セキュア・エージェントは、オーナーのコントラクト署名検証鍵を使用してコントラクト署名を検証して、コントラクトが真正である(例えば、いかなる方法でも修正されていない)ことを確認する。例示的実施形態は、ピア・ポッド仮想マシン・イメージにコントラクト署名検証鍵を埋め込んでもよく、またはコントラクト署名検証鍵を別の経路を介してトラステッド実行環境に渡してもよい。コンテナに関する制限は、コンテナのセット内のどのコンテナが、構成マップ、秘密(機密情報)、または永続ボリューム要求の少なくとも1つにアクセスし得るかを定義し、永続ボリューム要求は、コンテナがどのように永続ボリュームを消費するかを記述する。秘密または暗号鍵は、トラステッド実行環境内部で使用されて、トラステッド実行環境に付属され、または提供される、秘密、構成マップ、または永続ボリュームの少なくとも1つを復号する。
【0067】
したがって、セキュア・エージェントを使用する例示的実施形態は、コンテナの特定のセットにセキュアな方式でデータを提供してもよく、それによって、データは、そのコンテナの特定のセットに対してトラステッド実行環境内で暗号化されていない状態でのみ見ることができる。これを実現するために、例示的実施形態は、ポッドのためのコンテナ・オーケストレーション環境デプロイメント記述を、暗号化されたトラステッド実行環境コントラクトを含むように拡張する。例示的実施形態は、ポッド・デプロイメント記述YAMLでポッド・セキュリティ・コンテキスト・セクションを拡張することなどによって、例えば、セキュア・エージェントが理解する周知の構成マップとして、ポッド・デプロイメント記述の中のいくつかの既存のポイントを用いてトラステッド実行環境コントラクトを提供し得る。また、コンテナ・ランタイム・インターフェースの実施態様を拡張することによって、コンテナ・ランタイム・インターフェース・コールを介してRunPodSandbox(例えば、RunPodSandboxRequest)へ渡されるものは何でも、例示的実施形態がトラステッド実行環境内でセキュア・エージェントを確立した時点で、例示的実施形態に利用可能である。しかしながら、例示的実施形態が、コンテナ・ランタイム実装を拡張することによって最初のコンテナ・ランタイム・インターフェース・コールで渡された情報を使用して、この情報がトラステッド実行環境内のセキュア・エージェントに利用可能であることを保証し得ることに留意されたい。
【0068】
したがって、例示的実施形態は、コンテナ・オーケストレーション環境における規制への適合のためにポッドを分離およびセキュリティ保護しつつ、ユーザ・エクスペリエンスを維持することに関する技術的問題を克服する、1つまたは複数の技術的解決策を提供する。その結果、これらの1つまたは複数の技術的解決策は、コンテナ・オーケストレーション環境の分野における技術的効果および実際の用途を提供する。
【0069】
ここで図3を参照すると、ポッド・システムをセキュリティ保護するためのトラステッド実行環境を示す図が、例示的実施形態に従って示されている。ポッド・システムをセキュリティ保護するためのトラステッド実行環境300は、図1のコンテナ・オーケストレーション環境100などのコンテナ・オーケストレーション環境において実施され得る。ポッド・システムをセキュリティ保護するためのトラステッド実行環境300は、コンテナ・オーケストレーション環境において規制コンプライアンスのためにポッドの分離およびセキュリティを増大させつつ、ポッド・デプロイメント記述で指定され、かつコンテナ・オーケストレーション環境のトラステッド実行環境において実行するためにトラステッド実行環境コントラクトに包含される規則に対して検証されたコンテナのみを許可することによって、ユーザ・エクスペリエンスを維持するための、ハードウェアおよびソフトウェア・コンポーネントのシステムである。さらに、ポッド・システムをセキュリティ保護するためのトラステッド実行環境300は、クラスタのオーケストレーションから、トラステッド実行環境コントラクトおよびポッド・デプロイメント記述の準備を技術的に分離および保護することを可能にする。
【0070】
本実施例では、ポッド・システムをセキュリティ保護するためのトラステッド実行環境300は、コントローラ・ノード302、ホスト・ノード304、および外部イメージ・リポジトリ306を含む。コントローラ・ノード302は、例えば、図1のコントローラ・ノード104であってもよい。ホスト・ノード304は、例えば、図1のホスト・ノード106または図2のデータ処理システム200であってもよい。外部イメージ・リポジトリ306は、例えば、図1のストレージ108であってもよい。しかしながら、ポッド・システムをセキュリティ保護するためのトラステッド実行環境300は、例示的実施形態に対する限定としてではなく単なる例として意図されていることに留意されたい。言い換えると、ポッド・システムをセキュリティ保護するためのトラステッド実行環境300は、任意の数のコントローラ・ノード、ホスト・ノード、外部イメージ・リポジトリ、および図示されていない他のコンポーネントを含んでもよい。
【0071】
コントローラ・ノード302は、ポッド・デプロイメント記述308を含む。コンテナ・オーケストレーション環境上でサービスを提供するアプリケーション・オーナーは、ポッド・デプロイメント記述308を生成し、ポッド・デプロイメント記述308をコントローラ・ノード302に送信する。ポッド・デプロイメント記述308は、コンテナ・オーケストレーション環境上でアプリケーション・オーナーによって提供されるサービスに対応するコンテナのセット310が、サービスのアプリケーション・ワークロードを実行するためにホスト・ノード304上にデプロイされることを指定する。本実施例では、コンテナのセット310は、コンテナA312およびコンテナB314を含む。しかしながら、コンテナのセット310は、例示的実施形態に対する限定としてではなく単なる例として意図されていることに留意されたい。言い換えると、コンテナのセット310は、図示されるよりも多くの、または少ないコンテナを含んでもよい。
【0072】
本実施例では、外部イメージ・リポジトリ306は、コンテナAイメージ316およびコンテナBイメージ318を記憶する。しかしながら、外部イメージ・リポジトリ306は、任意の数のコンテナ・イメージを記憶してもよい。コンテナA312は、アプリケーション・オーナーによって提供されるサービスに対応するアプリケーション・ワークロードA317を実行するためのコンテナAイメージ316に対応する。同様に、コンテナB314は、アプリケーション・オーナーによって提供されるサービスに対応するアプリケーション・ワークロードB319を実行するためのコンテナBイメージ318に対応する。
【0073】
ポッド・デプロイメント記述308は、トラステッド実行環境コントラクト320をさらに含む。アプリケーション・オーナーは、また、トラステッド実行環境コントラクト320を生成する。本実施例では、トラステッド実行環境コントラクト320は、公開鍵321を使用して暗号化され、公開鍵321は、アプリケーション・オーナーに対応する。また、本実施例では、アプリケーション・オーナーが、ポッド・デプロイメント記述308をコントローラ・ノード302に送信する前に、トラステッド実行環境コントラクト320をポッド・デプロイメント記述308内に挿入した。代替として、アプリケーション・オーナーは、ポッド・デプロイメント記述308およびトラステッド実行環境コントラクト320を別々にコントローラ・ノード302に送信してもよい。
【0074】
トラステッド実行環境コントラクト320は、例えば、任意の他のコンテナ・イメージがランタイムにプルされることを妨げる、ポッド・サンドボックス仮想マシン330の中で実行されるコンテナのセット310のコンテナA312およびコンテナB314に対応する署名情報を含み得る。トラステッド実行環境コントラクト320は、また、コンテナA312およびコンテナB314に関する制限、秘密、暗号鍵などを含んでもよい。
【0075】
コントローラ・ノード302は、ポッド・デプロイメント記述308をホスト・ノード304に送信し、本実施例では、ポッド・デプロイメント記述308は、トラステッド実行環境コントラクト320を含む。ホスト・ノード304は、kubelet322、コンテナ・マネージャ324、コンテナ・ランタイムおよびプロキシ326、ならびにトラステッド実行環境328を含む。トラステッド実行環境328は、例えば、図2のトラステッド実行環境218であってもよい。また、ホスト・ノード304が、トラステッド実行環境のセットを含み得ることに留意されたい。kubelet322は、コントローラ・ノード302の制御プレーンによって指示されるように、ホスト・ノード304上でコンテナを開始および停止する。コンテナ・マネージャ324は、ホスト・ノード304上の全てのコンテナが実行中かつ正常であることを保証する。コンテナ・ランタイムおよびプロキシ326は、アプリケーション・オーナーによって提供されるサービスの実行中アプリケーション、ライブラリ、およびそれらの依存関係を保持し、ネットワーク・トラフィックを適切なコンテナにルーティングする役割をする。
【0076】
トラステッド実行環境328は、ポッド・サンドボックス仮想マシン330、セキュア・エージェント332、およびゲスト・カーネル334を含む。ゲスト・カーネル334は、ポッド・サンドボックス仮想マシン330のためのゲスト・オペレーティング・システムを表す。セキュア・エージェント332は、例えば、図2のセキュア・エージェント220であってもよい。例示的実施形態が、トラステッド実行環境328においてセキュア・エージェント332を生成すると、例示的実施形態は、ポッド・デプロイメント記述308からトラステッド実行環境コントラクト320を抽出し、トラステッド実行環境コントラクト320の署名を検証した後、セキュア・エージェント332にトラステッド実行環境コントラクト320を埋め込む。加えて、例示的実施形態は、秘密鍵336を使用してトラステッド実行環境コントラクト320を復号し、秘密鍵336は、トラステッド実行環境328においてのみ利用可能である。秘密鍵336は、公開鍵321に対応する。さらに、セキュア・エージェント332は、署名情報およびトラステッド実行環境コントラクト320に包含される規則に基づき、コンテナA312およびコンテナB314が、ポッド・デプロイメント記述308に従ってポッド・サンドボックス仮想マシン330において実行可能にされることを検証する。
【0077】
ここで図4A図4Bを参照すると、トラステッド実行環境コントラクト検証および復号プロセスの実施例を示す図が、例示的実施形態に従って示されている。トラステッド実行環境コントラクト検証および復号プロセス400は、例えば、図1のホスト・ノード106、図2のデータ処理システム200、または図3のホスト・ノード304などのコンピュータにおいて実施され得る。
【0078】
トラステッド実行環境コントラクト検証および復号プロセス400は、ポッド・サンドボックス仮想マシン・イメージ402およびトラステッド実行環境404を含む。ポッド・サンドボックス仮想マシン・イメージ402は、例えば、図3のポッド・サンドボックス仮想マシン330などのポッド・サンドボックス仮想マシンに対応する。トラステッド実行環境404は、例えば、図3のトラステッド実行環境328であってもよい。
【0079】
本実施例では、ポッド・サンドボックス仮想マシン・イメージ402は、例えば、図3のセキュア・エージェント332およびゲスト・カーネル334などのセキュア・エージェント406およびゲスト・カーネル408を含む。ポッド・サンドボックス仮想マシン・イメージ402は、また、例えば図3においてそれぞれ公開鍵321および秘密鍵336などの、コントラクト検証鍵410およびコントラクト復号鍵412を含む。
【0080】
414において、セキュア・エージェント406は、コントラクト検証鍵410を使用して、トラステッド実行環境コントラクト418の署名416を検証する。トラステッド実行環境コントラクト418は、例えば、図3のトラステッド実行環境コントラクト320であってもよい。420において、セキュア・エージェント406は、コントラクト復号鍵412を使用して、トラステッド実行環境コントラクト418に包含される、例えば、署名情報、規則、秘密、暗号鍵などの暗号文422を復号する。セキュア・エージェント406は、トラステッド実行環境コントラクト418に包含される秘密または暗号鍵を使用して、例えば、図3のポッド・デプロイメント記述308などのポッド・デプロイメント記述内の暗号化された情報または値を復号し得る。
【0081】
424において、セキュア・エージェント406は、平文428に包含される署名情報に基づいてコンテナA426の署名を検証した後、トラステッド実行環境404のポッド・サンドボックス仮想マシンにおいて、例えば、図3のコンテナA312などのコンテナA426を生成する。平文428は、復号後の暗号文422に対応する。同様に、430において、セキュア・エージェント406は、平文428に包含される署名情報に基づいてコンテナB432の署名を検証した後、トラステッド実行環境404のポッド・サンドボックス仮想マシンにおいて、例えば、図3のコンテナB314などのコンテナB432を生成する。
【0082】
ここで図5を参照すると、トラステッド実行環境においてポッド・サンドボックス仮想マシンをデプロイするためのプロセスを示すフローチャートが、例示的実施形態に従って示されている。図5に示されるプロセスは、例えば、図1のホスト・ノード106、図2のデータ処理システム200、または図3のホスト・ノード304などのコンピュータにおいて実施され得る。例えば、図5に示されるプロセスは、図2のセキュア・エージェント220または図3のセキュア・エージェント332において実施されてもよい。
【0083】
プロセスは、コンピュータが、サービスに対応するコンテナのセットを有するポッド・サンドボックス仮想マシンをコンテナ・オーケストレーション環境のトラステッド実行環境内にデプロイするための入力を、コンテナ・オーケストレーション環境の管理者に対応するクライアント・デバイスから受信すると、開始する(ステップ502)。コンテナのセットを有するポッド・サンドボックス仮想マシンをトラステッド実行環境内にデプロイするための入力を受信することに応答して、コンピュータは、コンテナ・オーケストレーション環境においてサービスを提供するアプリケーション・オーナーに対応するクライアント・デバイスから、トラステッド実行環境コントラクトおよびポッド・デプロイメント記述を取り出す(ステップ504)。加えて、コンピュータは、サービスのためのポッド・サンドボックス仮想マシンに対応するポッド・サンドボックス仮想マシン・イメージを外部イメージ・リポジトリから取り出す(ステップ506)。
【0084】
コンピュータは、ポッド・サンドボックス仮想マシン・イメージに基づいてサービスのためのポッド・サンドボックス仮想マシンを生成する(ステップ508)。さらに、コンピュータは、サービスのためのポッド・サンドボックス仮想マシンにトラステッド実行環境コントラクトを挿入する(ステップ510)。さらに、コンピュータは、ポッド・サンドボックス仮想マシンに含まれるサービスに対応するコンテナのセット内のコンテナ毎の対応するコンテナ・イメージを外部イメージ・リポジトリからプルするように、コンピュータのセキュア・エージェントに指示する(ステップ512)。さらに、コンピュータは、外部イメージ・リポジトリからプルされた対応するコンテナ・イメージを使用して、ポッド・サンドボックス仮想マシンにおけるサービスに対応するコンテナのセット内のそれぞれのコンテナを生成するように、セキュア・エージェントに指示する(ステップ514)。その後、コンピュータは、セキュア・エージェントを使用して、トラステッド実行環境コントラクトとサービスに対応するコンテナのセットとを含むポッド・サンドボックス仮想マシンを、ポッド・デプロイメント記述に基づいてトラステッド実行環境にデプロイする(ステップ516)。ポッド・デプロイメント記述の一部およびトラステッド実行環境コントラクトの一部が、アプリケーション・オーナーに対応する公開鍵を使用して暗号化されることに留意されたい。セキュア・エージェントは、トラステッド実行環境内部に位置する対応する秘密鍵を使用して、ポッド・デプロイメント記述およびトラステッド実行環境コントラクトの暗号化された部分を復号し得る。
【0085】
ここで図6A図6Bを参照すると、トラステッド実行環境内に位置するコンテナを使用してアプリケーション・ワークロードを実行するコマンドを検証するためのプロセスを示すフローチャートが、例示的実施形態に従って示されている。図6A図6Bに示されるプロセスは、例えば、図1のホスト・ノード106、図2のデータ処理システム200、または図3のホスト・ノード304などのコンピュータにおいて実施され得る。例えば、図6A図6Bに示されるプロセスは、図2のセキュア・エージェント220または図3のセキュア・エージェント332において実施され得る。
【0086】
コンピュータが、コンピュータのトラステッド実行環境に埋め込まれたセキュア・エージェントを使用して、コンテナ・オーケストレーション環境においてサービスを提供するアプリケーション・オーナーに対応する公開コントラクト検証鍵に基づいて、トラステッド実行環境にデプロイされたサービスに対応するコンテナのセットを有するポッド・サンドボックス仮想マシンに含まれるトラステッド実行環境コントラクトのデジタル署名を検証するときに、プロセスが開始する(ステップ602)。コンピュータは、セキュア・エージェントを使用して、公開コントラクト検証鍵に基づいてトラステッド実行環境コントラクトのデジタル署名が有効かどうかに関する判断を行う(ステップ604)。
【0087】
コンピュータが、セキュア・エージェントを使用して、トラステッド実行環境コントラクトのデジタル署名が、公開コントラクト検証鍵に基づいて無効であると判断し、ステップ604の出力がいいえの場合、コンピュータは、セキュア・エージェントを使用して、ポッド・サンドボックス仮想マシンをシャットダウンする(ステップ606)。その後、プロセスは終了する。コンピュータが、セキュア・エージェントを使用して、公開コントラクト検証鍵に基づいてトラステッド実行環境コントラクトのデジタル署名が有効であると判断し、ステップ604の出力がはいの場合、コンピュータは、セキュア・エージェントを使用して、トラステッド実行環境に埋め込まれたサービスを提供するアプリケーション・オーナーに対応する秘密コントラクト復号鍵に基づいて、トラステッド実行環境コントラクトを復号する(ステップ608)。
【0088】
コンピュータは、セキュア・エージェントを使用して、サービスに対応するアプリケーション・ワークロードを含むコンテナのセットに対するオーケストレーション・アクションを実行するためのコンテナ・ランタイム・インターフェース・コマンドを、トラステッド実行環境の外部に位置するkubeletから受信する(ステップ610)。オーケストレーション・アクションは、アプリケーション・ワークロードの一部を形成するコンテナの可用性および相互接続性を維持するためのオーケストレーション層によって必要とされる任意のアクションである。限定ではなく例えば、コンテナの開始/停止、コンテナからのログの検査、コンテナからクラスタの残りへのネットワーキングの構成、ポッド・サンドボックス仮想マシンにストレージを取り付けること、およびストレージをコンテナに利用可能にすることなどである。また、コンテナ・ランタイム・インターフェース・コマンドが、プル・コンテナ・イメージ・コマンドおよび生成コンテナ・コマンドを含むことに留意されたい。コンピュータは、セキュア・エージェントを使用して、サービスに対応するアプリケーション・ワークロードを含むコンテナのセットに対するオーケストレーション・アクションを実行するためのコンテナ・ランタイム・インターフェース・コマンドを、トラステッド実行環境のポッド・サンドボックス仮想マシンに含まれるトラステッド実行環境コントラクトに包含される規則と、コンテナ・ランタイム・インターフェース・コマンドを照合することに基づいて、検証する(ステップ612)。
【0089】
例えば、セキュア・エージェントは、トラステッド実行環境コントラクト内のコンテナ・イメージ名についての規則に対して、ポッド・デプロイメント記述内のコンテナ・イメージ名を検証してもよい。トラステッド実行環境コントラクト内のコンテナ・イメージ名についての規則に対してコンテナ・イメージ名が有効である場合、セキュア・エージェントは、外部リポジトリからコンテナ・イメージをプルする。トラステッド実行環境コントラクトが、コンテナ・イメージ署名検証鍵を含むとき、セキュア・エージェントは、リポジトリからコンテナ・イメージと共にプルされたコンテナ・イメージ署名を、コンテナ・イメージ署名検証鍵を使用して検証する。コンテナ・イメージ署名が、コンテナ・イメージ署名検証鍵に基づいて有効である場合、セキュア・エージェントは、プル・コンテナ・イメージ・コマンドを成功として完了する。そうでない場合、セキュア・エージェントは、コンテナ・イメージ署名が検証されないときにエラーを返す。
【0090】
セキュア・エージェントは、リポジトリから以前にプルされ、かつ有効と検証されたコンテナ・イメージに対応するコマンド・パラメータのコンテナ・イメージ仕様を検証し得る。セキュア・エージェントは、また、例えば、コンテナ環境変数、コンテナ・エントリ・コマンドおよびそのパラメータなどの、その他のコンテナ・パラメータを、トラステッド実行環境コントラクトに定義された規則に対して検証する。コンテナ・パラメータの全てが、トラステッド実行環境コントラクト内の規則を満たす場合、セキュア・エージェントは、トラステッド実行環境(例えば、ポッド・サンドボックス仮想マシン)においてコンテナを生成する。セキュア・エージェントは、例えば、環境変数値が暗号化されているときにトラステッド実行環境コントラクト内の秘密を鍵として使用して、ポッド・デプロイメント記述内の環境変数値を復号し得る。
【0091】
セキュア・エージェントは、コンテナ・イメージ名に対応する規則が、ポッド・デプロイメント記述に包含されるコンテナ・イメージ名を許容するかどうかを検証し得る。トラステッド実行環境コントラクトは、例えば、特定のコンテナ・イメージ名またはコンテナ・イメージ名パターンを記述する正規表現として、規則を定義する。セキュア・エージェントは、トラステッド実行環境コントラクトに含まれるコンテナ署名検証鍵を使用して、リポジトリからプルされた各コンテナ・イメージの署名をコンテナ・イメージ自体と共に検証し得る。
【0092】
トラステッド実行環境コントラクトは、また、構成マップ、秘密、およびトラステッド実行環境内の特定のコンテナによる永続ボリューム要求の使用に対する制限を含み得る。加えて、トラステッド実行環境コントラクトは、環境変数、コンテナ・コマンド引数、およびコンテナ毎にマウントする永続ボリュームについての規則、ならびに永続ボリューム毎の規則を定義し得る。各規則は、特定の構成マップ、秘密、または永続ボリュームを許可または却下し得る。さらに、トラステッド実行環境コントラクトは、秘密、構成マップ、および永続ボリュームを復号するための秘密または鍵を含み得る。さらに、トラステッド実行環境コントラクトは、1つまたは複数の暗号化秘密を含んでもよく、セキュア・エージェントがトラステッド実行環境に埋め込まれたコントラクト復号鍵を使用して暗号化秘密を復号し得る。セキュア・エージェントは、それらの復号された秘密を使用して、ポッド・デプロイメント記述、構成マップ、および永続ボリュームを通して渡された他の秘密を復号し得る。
【0093】
続いて、コンピュータは、セキュア・エージェントを使用して、トラステッド実行環境コントラクト内で合致する規則を発見したことに基づいて、コンテナのセットに対するオーケストレーション・アクションを実行するためのコンテナ・ランタイム・インターフェース・コマンドが有効かどうかに関する判断を行う(ステップ614)。コンピュータは、セキュア・エージェントを使用して、コンテナのセットに対するオーケストレーション・アクションを実行するためのコンテナ・ランタイム・インターフェース・コマンドが、トラステッド実行環境コントラクト内に合致する規則を発見しないことに基づいて無効であると判断し、ステップ614の出力がいいえの場合、コンピュータは、セキュア・エージェントを使用して、kubeletにエラーを返す(ステップ616)。その後、プロセスは終了する。コンピュータが、セキュア・エージェントを使用して、トラステッド実行環境コントラクト内で合致する規則を発見したことに基づいて、コンテナのセットに対するオーケストレーション・アクションを実行するためのコンテナ・ランタイム・インターフェース・コマンドが有効であると判断し、ステップ614の出力がはいの場合、コンピュータは、セキュア・エージェントを使用して、トラステッド実行環境のポッド・サンドボックス仮想マシンにおけるサービスに対応するアプリケーション・ワークロードを含むコンテナのセットに対するオーケストレーション・アクションを実行するためのコンテナ・ランタイム・インターフェース・コマンドを実行する(ステップ618)。その後、コンピュータは、セキュア・エージェントを使用して、サービスに対応するアプリケーション・ワークロードを含むコンテナのセットに対するオーケストレーション・アクションの実行結果を、kubeletに返す(ステップ620)。その後、プロセスは、ステップ610に戻り、ステップ610において、コンピュータは、別のコンテナ・ランタイム・インターフェース・コマンドの受信を待機する。
【0094】
したがって、本発明の例示的実施形態は、コンテナ・オーケストレーション環境において規制コンプライアンスのためにポッドの分離およびセキュリティを増大させつつ、ポッド・デプロイメント記述で指定され、かつコンテナ・オーケストレーション環境のトラステッド実行環境において実行するためにトラステッド実行環境コントラクトに包含される規則に対して検証されたコンテナのみを許可することによって、ユーザ・エクスペリエンスを維持するための、コンピュータ実施方法、コンピュータ・システム、及びコンピュータ・プログラム製品を提供する。さらに、例示的実施形態は、クラスタのオーケストレーションから、トラステッド実行環境コントラクトおよびポッド・デプロイメント記述の準備を技術的に分離および保護することを可能にする。本発明の様々な実施形態の説明は、例示の目的で提示されているが、網羅的であるように、または開示された実施形態に限定されるように意図されたものではない。多くの修正および変形が、説明された実施形態の範囲から逸脱することなく当業者には明らかであろう。本明細書で使用される専門用語は、実施形態の原理、実際の用途、もしくは市場で見出される技術に対する技術的改善を最もよく説明するため、または本明細書で開示された実施形態を他の当業者が理解可能にするために、選択された。
図1
図2
図3
図4A
図4B
図5
図6A
図6B
【手続補正書】
【提出日】2024-08-27
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
コンピュータの情報処理により、コンテナ・オーケストレーション環境においてポッドをセキュリティ保護する方法であって、
コンピュータによって、前記コンピュータのトラステッド実行環境に埋め込まれたエージェントを使用して、前記コンテナ・オーケストレーション環境によってホストされるサービスに対応するアプリケーション・ワークロードを含むコンテナのセットに対するオーケストレーション・アクションを実行するためのコンテナ・ランタイム・インターフェース・コマンドを、前記トラステッド実行環境のポッド・サンドボックス仮想マシンに含まれるトラステッド実行環境コントラクトに包含される規則と、前記コンテナ・ランタイム・インターフェース・コマンドを照合することに基づいて、検証することと、
前記コンピュータによって、前記エージェントを使用して、前記トラステッド実行環境コントラクト内で合致する規則を発見したことに基づいて、前記コンテナのセットに対する前記オーケストレーション・アクションを実行するための前記コンテナ・ランタイム・インターフェース・コマンドが有効かどうかを判断することと、
前記コンピュータが、前記エージェントを使用して、前記トラステッド実行環境コントラクト内で前記合致する規則を発見したことに基づいて、前記コンテナのセットに対する前記オーケストレーション・アクションを実行するための前記コンテナ・ランタイム・インターフェース・コマンドが有効であると判断したことに応答して、前記コンピュータによって、前記エージェントを使用して、前記トラステッド実行環境の前記ポッド・サンドボックス仮想マシンにおける前記サービスに対応する前記アプリケーション・ワークロードを含む前記コンテナのセットに対する前記オーケストレーション・アクションを実行するための前記コンテナ・ランタイム・インターフェース・コマンドを実行することと、
を含む、方法
【請求項2】
前記コンピュータによって、前記エージェントを使用して、前記サービスに対応する前記アプリケーション・ワークロードを含む前記コンテナのセットに対する前記オーケストレーション・アクションの実行結果を返すことをさらに含む、請求項1に記載の方法
【請求項3】
前記コンピュータによって、前記エージェントを使用して、前記コンテナ・オーケストレーション環境において前記サービスを提供するアプリケーション・オーナーに対応するコントラクト検証鍵に基づいて、前記トラステッド実行環境にデプロイされた前記サービスに対応する前記コンテナのセットを有する前記ポッド・サンドボックス仮想マシンに含まれる前記トラステッド実行環境コントラクトのデジタル署名を検証することをさらに含む、請求項1に記載の方法
【請求項4】
前記コンピュータによって、前記エージェントを使用して、前記コントラクト検証鍵に基づいて前記トラステッド実行環境コントラクトの前記デジタル署名が有効かどうかを判断することと、
前記コンピュータが、前記エージェントを使用して、前記コントラクト検証鍵に基づいて前記トラステッド実行環境コントラクトの前記デジタル署名が有効であると判断したことに応答して、前記コンピュータによって、前記エージェントを使用して、前記トラステッド実行環境に埋め込まれた、前記サービスを提供する前記アプリケーション・オーナーに対応するコントラクト復号鍵に基づいて、前記トラステッド実行環境コントラクトを復号することと、
をさらに含む、請求項3に記載の方法
【請求項5】
前記コンピュータによって、前記サービスに対応する前記コンテナのセットを有する前記ポッド・サンドボックス仮想マシンを前記コンテナ・オーケストレーション環境の前記トラステッド実行環境内にデプロイするための入力を、前記コンテナ・オーケストレーション環境の管理者に対応するクライアント・デバイスから受信することと、
前記コンテナのセットを有する前記ポッド・サンドボックス仮想マシンを前記トラステッド実行環境内にデプロイするための前記入力を受信することに応答して、前記コンピュータによって、前記トラステッド実行環境コントラクトおよびポッド・デプロイメント記述を前記コンテナ・オーケストレーション環境において前記サービスを提供するアプリケーション・オーナーに対応するクライアント・デバイスから取り出すこと、ならびに前記コンピュータによって、前記サービスのための前記ポッド・サンドボックス仮想マシンに対応するポッド・サンドボックス仮想マシン・イメージをイメージ・リポジトリから取り出すことと、
をさらに含む、請求項1に記載の方法
【請求項6】
前記コンピュータによって、前記ポッド・サンドボックス仮想マシン・イメージに基づいて前記サービスのための前記ポッド・サンドボックス仮想マシンを生成することと、
前記コンピュータによって、前記サービスのための前記ポッド・サンドボックス仮想マシンに前記トラステッド実行環境コントラクトを挿入することと、
をさらに含む、請求項5に記載の方法
【請求項7】
前記コンピュータによって、前記ポッド・サンドボックス仮想マシンに含まれる前記サービスに対応する前記コンテナのセット内のコンテナ毎の対応するコンテナ・イメージをイメージ・リポジトリからプルするように前記エージェントに指示することと、
前記コンピュータによって、前記イメージ・リポジトリからプルされた前記対応するコンテナ・イメージを使用して、前記ポッド・サンドボックス仮想マシンにおける前記サービスに対応する前記コンテナのセット内のそれぞれのコンテナを生成するように前記エージェントに指示することと、
をさらに含む、請求項1に記載の方法
【請求項8】
前記エージェントが、前記イメージ・リポジトリからプルされたイメージに関連付けられた署名を正当性確認するための、前記トラステッド実行環境コントラクトに包含される対応する公開鍵を使用して、ランタイムに異なるコンテナ・イメージをプルしようとすることを妨げるために、前記コンテナのセット内のコンテナ毎の前記対応するコンテナ・イメージの真正性を検証し、前記エージェントが、前記トラステッド実行環境コントラクトまたは別のソースのうちの1つからの復号鍵を正しく使用して、暗号化されたイメージを復号できることを検証する、請求項7に記載の方法
【請求項9】
前記コンピュータによって、前記エージェントを使用して、前記コンテナ・オーケストレーション環境において前記サービスを提供するアプリケーション・オーナーによって生成されたポッド・デプロイメント記述に基づいて、前記トラステッド実行環境コントラクトと前記トラステッド実行環境における前記サービスに対応する前記コンテナのセットとを含む前記ポッド・サンドボックス仮想マシンをデプロイすることであって、前記ポッド・デプロイメント記述および前記トラステッド実行環境コントラクトの一部が、前記アプリケーション・オーナーに対応する公開鍵を使用して暗号化され、前記エージェントが、前記トラステッド実行環境内部に位置する対応する秘密鍵を使用して、前記ポッド・デプロイメント記述および前記トラステッド実行環境コントラクトの暗号化部分を復号する、前記デプロイすることをさらに含む、請求項1に記載の方法
【請求項10】
前記トラステッド実行環境が、前記サービスに対応する前記ポッド・サンドボックス仮想マシンにおける前記コンテナのセットの分離されたセキュアな実行を提供し、前記トラステッド実行環境が、前記コンピュータに連結された、メモリのセキュアな部分およびプロセッサのセキュアな部分を含む、請求項1に記載の方法
【請求項11】
前記トラステッド実行環境コントラクトが、コンテナの署名、前記コンテナに関する制限、秘密、または暗号鍵のうちの少なくとも1つを含み、前記署名が、前記トラステッド実行環境における実行を許可された前記コンテナのセットに対応し、前記コンテナに関する前記制限が、前記コンテナのセット内のどのコンテナが、構成マップ、秘密、またはコンテナがどのように永続ボリュームを消費するかを記述した永続ボリューム要求のうちの少なくとも1つにアクセス可能であるかを定義し、前記秘密または前記暗号鍵が、前記トラステッド実行環境に提供される、秘密、構成マップ、または永続ボリュームのうちの少なくとも1つを復号するために前記トラステッド実行環境内部で使用される、請求項1に記載の方法
【請求項12】
コンテナ・オーケストレーション環境においてポッドをセキュリティ保護するためのコンピュータ・システムであって、
バス・システムと、
前記バス・システムに接続された記憶デバイスであって、前記記憶デバイスがプログラム命令を記憶する、前記記憶デバイスと、
前記バス・システムに接続されたプロセッサであって、前記プロセッサが、
前記コンピュータ・システムのトラステッド実行環境に埋め込まれたエージェントを使用して、前記コンテナ・オーケストレーション環境によってホストされるサービスに対応するアプリケーション・ワークロードを含むコンテナのセットに対するオーケストレーション・アクションを実行するためのコンテナ・ランタイム・インターフェース・コマンドを、前記トラステッド実行環境のポッド・サンドボックス仮想マシンに含まれるトラステッド実行環境コントラクトに包含される規則と、前記コンテナ・ランタイム・インターフェース・コマンドを照合することに基づいて、検証することと、
前記エージェントを使用して、前記トラステッド実行環境コントラクト内で合致する規則を発見したことに基づいて、前記コンテナのセットに対する前記オーケストレーション・アクションを実行するための前記コンテナ・ランタイム・インターフェース・コマンドが有効かどうかを判断することと、
前記エージェントを使用して、前記トラステッド実行環境コントラクト内で前記合致する規則を発見したことに基づいて、前記コンテナのセットに対する前記オーケストレーション・アクションを実行するための前記コンテナ・ランタイム・インターフェース・コマンドが有効であると判断したことに応答して、前記エージェントを使用して、前記トラステッド実行環境の前記ポッド・サンドボックス仮想マシンにおける前記サービスに対応する前記アプリケーション・ワークロードを含む前記コンテナのセットに対する前記オーケストレーション・アクションを実行するための前記コンテナ・ランタイム・インターフェース・コマンドを実行することと、
をするための前記プログラム命令を実行する、前記プロセッサと、
を備える、コンピュータ・システム。
【請求項13】
前記プロセッサが、
前記エージェントを使用して、前記サービスに対応する前記アプリケーション・ワークロードを含む前記コンテナのセットに対する前記オーケストレーション・アクションの実行結果を返すための前記プログラム命令をさらに実行する、請求項12に記載のコンピュータ・システム。
【請求項14】
前記プロセッサが、
前記エージェントを使用して、前記コンテナ・オーケストレーション環境において前記サービスを提供するアプリケーション・オーナーに対応するコントラクト検証鍵に基づいて、前記トラステッド実行環境にデプロイされた前記サービスに対応する前記コンテナのセットを有する前記ポッド・サンドボックス仮想マシンに含まれる前記トラステッド実行環境コントラクトのデジタル署名を検証するための前記プログラム命令をさらに実行する、請求項12に記載のコンピュータ・システム。
【請求項15】
前記プロセッサが、
前記エージェントを使用して、前記コントラクト検証鍵に基づいて前記トラステッド実行環境コントラクトの前記デジタル署名が有効かどうかを判断することと、
前記エージェントを使用して、前記コントラクト検証鍵に基づいて前記トラステッド実行環境コントラクトの前記デジタル署名が有効であると判断したことに応答して、前記エージェントを使用して、前記トラステッド実行環境に埋め込まれた、前記サービスを提供する前記アプリケーション・オーナーに対応するコントラクト復号鍵に基づいて、前記トラステッド実行環境コントラクトを復号することと、
をするための前記プログラム命令をさらに実行する、請求項14に記載のコンピュータ・システム。
【請求項16】
前記プロセッサが、
前記サービスに対応する前記コンテナのセットを有する前記ポッド・サンドボックス仮想マシンを前記コンテナ・オーケストレーション環境の前記トラステッド実行環境内にデプロイするための入力を、前記コンテナ・オーケストレーション環境の管理者に対応するクライアント・デバイスから受信することと、
前記コンテナのセットを有する前記ポッド・サンドボックス仮想マシンを前記トラステッド実行環境内にデプロイするための前記入力を受信することに応答して、前記トラステッド実行環境コントラクトおよびポッド・デプロイメント記述を前記コンテナ・オーケストレーション環境において前記サービスを提供するアプリケーション・オーナーに対応するクライアント・デバイスから取り出し、前記サービスのための前記ポッド・サンドボックス仮想マシンに対応するポッド・サンドボックス仮想マシン・イメージをイメージ・リポジトリから取り出すことと、
をするための前記プログラム命令をさらに実行する、請求項12に記載のコンピュータ・システム。
【請求項17】
前記プロセッサが、
前記ポッド・サンドボックス仮想マシン・イメージに基づいて前記サービスのための前記ポッド・サンドボックス仮想マシンを生成することと、
前記サービスのための前記ポッド・サンドボックス仮想マシンに前記トラステッド実行環境コントラクトを挿入することと、
のための前記プログラム命令をさらに実行する、請求項16に記載のコンピュータ・システム。
【請求項18】
請求項1~11の何れか1項に記載の方法を、コンピュータに実行させる、コンピュータ・プログラム
【請求項19】
請求項18に記載の前記コンピュータ・プログラムを、コンピュータ可読記憶媒体に記憶した、記憶媒体
【国際調査報告】