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

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

▶ ジェネンテック, インコーポレイテッドの特許一覧

特表2023-551382中央ネットワークメッシュを介したサービス間通信および認証
<>
  • 特表-中央ネットワークメッシュを介したサービス間通信および認証 図1
  • 特表-中央ネットワークメッシュを介したサービス間通信および認証 図2
  • 特表-中央ネットワークメッシュを介したサービス間通信および認証 図3
  • 特表-中央ネットワークメッシュを介したサービス間通信および認証 図4
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-12-08
(54)【発明の名称】中央ネットワークメッシュを介したサービス間通信および認証
(51)【国際特許分類】
   G06F 21/62 20130101AFI20231201BHJP
【FI】
G06F21/62 318
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023527689
(86)(22)【出願日】2021-11-08
(85)【翻訳文提出日】2023-07-06
(86)【国際出願番号】 US2021058402
(87)【国際公開番号】W WO2022103681
(87)【国際公開日】2022-05-19
(31)【優先権主張番号】63/111,997
(32)【優先日】2020-11-10
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Linux
(71)【出願人】
【識別番号】509012625
【氏名又は名称】ジェネンテック, インコーポレイテッド
(74)【代理人】
【識別番号】110002077
【氏名又は名称】園田・小林弁理士法人
(72)【発明者】
【氏名】ジャラール, ニアズ アフサン
(72)【発明者】
【氏名】ドリディ, アブデスレム
(57)【要約】
本開示は、ネットワークメッシュを介したサービス間通信および認証のための技術に関する。特に、態様は、ネットワークメッシュにおいて、第1のサービスについてのサービス要求を受信することと、第1のサービスに関連する情報を取得することとに関する。情報は、第1のサービスをカプセル化する第1のポッドの位置を含む。ネットワークメッシュは、第1のポッドの位置を使用して、第1のポッドに固有のセキュリティ規則を取得する。ネットワークメッシュは、第1のポッドについてのセキュリティ規則に基づいて第1のサービスにサービス要求を転送し、第1のサービスからサービス要求の結果を取得する。結果は、第1のサービスをカプセル化する第1のポッドについてのセキュリティ規則および第2のサービスをカプセル化する第2のポッドについてのセキュリティ規則にしたがって第2のサービスから取得されたサブ結果を含む。
【選択図】図1
【特許請求の範囲】
【請求項1】
コンピュータ実装方法であって、
ネットワークメッシュにおいて、第1のサービスについてのサービス要求を受信することと、
前記ネットワークメッシュによって、キャッシュまたはサービスレジストリから前記第1のサービスに関連する情報を取得することであって、前記情報が、前記第1のサービスを含む第1のポッドの識別および第1の分散コンピューティング環境内の前記第1のポッドの位置を含む、前記第1のサービスに関連する情報を取得することと、
前記ネットワークメッシュによって、前記第1のポッドの前記位置を使用して、前記第1のポッドについてのセキュリティ規則を取得することであって、前記セキュリティ規則が、(i)前記第1のサービスについての一意のアドレス識別子、および(ii)前記第1のサービスが通信およびアクセスを許可されているサービスを定義する、前記第1のポッドについてのセキュリティ規則を取得することと、
前記ネットワークメッシュによって、前記第1のサービスについての前記一意のアドレス識別子を使用して、前記第1のサービスに前記サービス要求を転送することと、
前記ネットワークメッシュによって、第2のサービスと通信して第2のサービスにアクセスするための前記第1のサービスからのアクセス要求を受信することであって、前記アクセス要求が前記第2のサービスに固有のセキュリティキーを含む、アクセス要求を受信することと、
前記ネットワークメッシュによって、前記キャッシュまたは前記サービスレジストリから前記第2のサービスに関連する情報を取得することであって、前記情報が、前記第2のサービスを含む第2のポッドの識別および前記第1の分散コンピューティング環境または第2の分散コンピューティング環境内の前記第2のポッドの位置を含む、前記第2のサービスに関連する情報を取得することと、
前記ネットワークメッシュによって、前記第2のポッドの前記位置を使用して、前記第2のポッドについてのセキュリティ規則を取得することであって、前記セキュリティ規則が、(i)前記第2のサービスについての一意のアドレス識別子、および(ii)前記第2のサービスが通信およびアクセスを許可されているサービスを定義する、前記第2のポッドについてのセキュリティ規則を取得することと、
前記ネットワークメッシュによって、前記第2のサービスについての前記一意のアドレス識別子を使用して、前記第1のポッドについての前記セキュリティ規則および前記第2のポッドについての前記セキュリティ規則に基づいて、前記第1のサービスから前記第2のサービスに前記アクセス要求を転送することと、
前記ネットワークメッシュによって、前記第1のサービスから前記サービス要求の最終結果を受信することであって、前記最終結果が、前記第2のサービスから取得されたサブ結果を含む、最終結果を受信することと、
前記ネットワークメッシュによって、前記サービス要求の前記最終結果を出力することと、を含む、コンピュータ実装方法。
【請求項2】
前記第1のサービスに関連する前記情報を取得すること、または前記第2のサービスに関連する前記情報を取得することが、
前記第1のサービスまたは前記第2のサービスに関連する前記情報が前記キャッシュから利用可能であるかどうかを決定することと、
前記第1のサービスまたは前記第2のサービスに関連する前記情報が前記キャッシュから利用可能である場合、前記第1のサービスまたは前記第2のサービスに関連する前記情報を前記キャッシュから取得することと、
前記第1のサービスまたは前記第2のサービスに関連する前記情報が前記キャッシュから利用可能でない場合、前記第1のサービスまたは前記第2のサービスに関連する前記情報を前記レジストリから取得することと、
前記第1のサービスまたは前記第2のサービスに関連する前記情報を前記レジストリから取得することに応答して、前記第1のサービスまたは前記第2のサービスに関連する前記情報を後続の要求のために前記キャッシュに記憶することと、を含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記セキュリティキーが、ボールトから前記第1のサービスによって取得され、前記第1のサービスが、前記アクセス要求に前記セキュリティキーを埋め込む、請求項1または2に記載のコンピュータ実装方法。
【請求項4】
前記第1のサービスからの前記アクセス要求が、前記第1のサービスの代わりに1つまたは複数の動作を実行しおよび/またはサービスを取得するための、前記第2のサービスの要求をさらに含む、請求項3に記載のコンピュータ実装方法。
【請求項5】
前記第2のサービスが、前記第1のサービスに代わって前記1つまたは複数の動作を実行し、および/または前記サービスを取得し、1つまたは複数の動作の実行および/またはサービスの取得に基づいて前記サブ結果を生成する、請求項4に記載のコンピュータ実装方法。
【請求項6】
前記第2のサービスが、前記1つまたは複数の動作を実行する前に、および/または前記第1のサービスに代わって前記サービスを取得する前に、前記セキュリティキーを検証する、請求項5に記載のコンピュータ実装方法。
【請求項7】
前記第2のポッドが、前記第1の分散コンピューティング環境とは異なる前記第2の分散コンピューティング環境内に位置する、請求項1から6のいずれか一項に記載のコンピュータ実装方法。
【請求項8】
前記第1のポッドについての前記セキュリティ規則が、(i)前記第1のサービスに利用可能なインスタンスの数、および(ii)どのインスタンスが前記サービス要求を処理するために利用可能であるかをさらに定義し、前記第1のサービスに前記サービス要求を転送することが、
前記第1のポッドについての前記セキュリティ規則に基づいて、前記サービス要求を処理するのに利用可能な前記インスタンスを決定することと、
前記第1のサービスの前記インスタンスのうちの少なくとも1つに前記サービス要求を転送することと、を含む、請求項1から7のいずれか一項に記載のコンピュータ実装方法。
【請求項9】
前記第1のサービスから前記第2のサービスに前記アクセス要求を転送することが、
前記第1のポッドについての前記セキュリティ規則が、前記第1のサービスが通信およびアクセスを許可されているサービスとして前記第2のサービスを定義するかどうかを決定することと、
前記第2のポッドについての前記セキュリティ規則が、前記第2のサービスが通信を受信してアクセスすることを許可することを許可されているサービスとして前記第1のサービスを定義するかどうかを決定することと、
前記第2のサービスが、前記第1のサービスが通信およびアクセスを許可されているサービスであり、前記第1のサービスが、前記第2のサービスが通信を受信してアクセスを許可することを許可されているサービスである場合、前記第1のサービスから前記第2のサービスに前記アクセス要求を転送することと、を含む、請求項1から8のいずれか一項に記載のコンピュータ実装方法。
【請求項10】
前記第2のポッドについての前記セキュリティ規則が、(i)前記第2のサービスに利用可能なインスタンスの数と、(ii)どのインスタンスが前記アクセス要求を処理するために利用可能であるかをさらに定義し、前記第1のサービスから前記第2のサービスに前記アクセス要求を転送することが、
前記第2のポッドについての前記セキュリティ規則に基づいて、前記アクセス要求を処理するのに利用可能な前記インスタンスを決定することと、
前記第2のサービスの前記インスタンスのうちの少なくとも1つに前記アクセス要求を転送することと、をさらに含む、請求項9に記載のコンピュータ実装方法。
【請求項11】
前記第1のサービスが、前記第1の分散コンピューティング環境上の第1のコンテナまたは第1のコンテナセットとしてパッケージ化された1つまたは複数のクラスタ上に展開された1つまたは複数のプログラムを含み、前記第1のコンテナまたは前記第1のコンテナセットが、前記1つまたは複数のクラスタ上で実行される前記1つまたは複数のプログラムを表す上位レベルの構造である前記第1のポッドとしてパッケージ化されており、
前記第2のサービスが、前記第1の分散コンピューティング環境または第2の分散コンピューティング環境上で第2のコンテナまたはコンテナの第2のセットとしてパッケージ化された1つまたは複数のクラスタ上に展開された1つまたは複数のプログラムを含み、前記第2のコンテナまたは前記コンテナの第2のセットが、前記1つまたは複数のクラスタ上で実行される前記1つまたは複数のプログラムを表す上位レベルの構造である前記第2のポッドとしてパッケージ化されている、請求項1から10のいずれか一項に記載のコンピュータ実装方法。
【請求項12】
システムであって、
ネットワークメッシュの1つまたは複数のデータプロセッサと、
命令を含む非一時的コンピュータ可読記憶媒体であって、前記命令が、前記1つまたは複数のデータプロセッサ上で実行されると、前記1つまたは複数のデータプロセッサに、
第1のサービスについてのサービス要求を受信することと
キャッシュまたはサービスレジストリから前記第1のサービスに関連する情報を取得することであって、前記情報が、前記第1のサービスを含む第1のポッドの識別および第1の分散コンピューティング環境内の前記第1のポッドの位置を含む、前記第1のサービスに関連する情報を取得することと、
前記第1のポッドの前記位置を使用して、前記第1のポッドについてのセキュリティ規則を取得することであって、前記セキュリティ規則が、(i)前記第1のサービスについての一意のアドレス識別子、および(ii)前記第1のサービスが通信およびアクセスを許可されているサービスを定義する、前記第1のポッドについてのセキュリティ規則を取得することと、
前記第1のサービスについての前記一意のアドレス識別子を使用して、前記第1のサービスに前記サービス要求を転送することと、
第2のサービスと通信して第2のサービスにアクセスするための前記第1のサービスからのアクセス要求を受信することであって、前記アクセス要求が前記第2のサービスに固有のセキュリティキーを含む、アクセス要求を受信することと、
前記キャッシュまたは前記サービスレジストリから前記第2のサービスに関連する情報を取得することであって、前記情報が、前記第2のサービスを含む第2のポッドの識別および前記第1の分散コンピューティング環境または第2の分散コンピューティング環境内の前記第2のポッドの位置を含む、前記第2のサービスに関連する情報を取得することと、
前記第2のポッドの前記位置を使用して、前記第2のポッドについてのセキュリティ規則を取得することであって、前記セキュリティ規則が、(i)前記第2のサービスについての一意のアドレス識別子、および(ii)前記第2のサービスが通信およびアクセスを許可されているサービスを定義する、前記第2のポッドについてのセキュリティ規則を取得することと、
前記第2のサービスについての前記一意のアドレス識別子を使用して、前記第1のポッドについての前記セキュリティ規則および前記第2のポッドについての前記セキュリティ規則に基づいて、前記第1のサービスから前記第2のサービスに前記アクセス要求を転送することと、
前記第1のサービスから前記サービス要求の最終結果を受信することであって、前記最終結果が、前記第2のサービスから取得されたサブ結果を含む、最終結果を受信することと、
前記サービス要求の前記最終結果を出力することと、を含む動作を実行させる、システム。
【請求項13】
前記第1のサービスに関連する前記情報を取得すること、または前記第2のサービスに関連する前記情報を取得することが、
前記第1のサービスまたは前記第2のサービスに関連する前記情報が前記キャッシュから利用可能であるかどうかを決定することと、
前記第1のサービスまたは前記第2のサービスに関連する前記情報が前記キャッシュから利用可能である場合、前記第1のサービスまたは前記第2のサービスに関連する前記情報を前記キャッシュから取得することと、
前記第1のサービスまたは前記第2のサービスに関連する前記情報が前記キャッシュから利用可能でない場合、前記第1のサービスまたは前記第2のサービスに関連する前記情報を前記レジストリから取得することと、
前記第1のサービスまたは前記第2のサービスに関連する前記情報を前記レジストリから取得することに応答して、前記第1のサービスまたは前記第2のサービスに関連する前記情報を後続の要求のために前記キャッシュに記憶することと、を含む、請求項12に記載のシステム。
【請求項14】
前記セキュリティキーが、ボールトから前記第1のサービスによって取得され、前記第1のサービスが、前記アクセス要求に前記セキュリティキーを埋め込む、請求項12または13に記載のシステム。
【請求項15】
前記第1のサービスからの前記アクセス要求が、前記第1のサービスの代わりに1つまたは複数の動作を実行しおよび/またはサービスを取得するための、前記第2のサービスの要求をさらに含む、請求項14に記載のシステム。
【請求項16】
前記第2のサービスが、前記第1のサービスに代わって前記1つまたは複数の動作を実行し、および/または前記サービスを取得し、1つまたは複数の動作の実行および/またはサービスの取得に基づいて前記サブ結果を生成する、請求項15に記載のシステム。
【請求項17】
前記第2のサービスが、前記1つまたは複数の動作を実行する前に、および/または前記第1のサービスに代わって前記サービスを取得する前に、前記セキュリティキーを検証する、請求項16に記載のシステム。
【請求項18】
前記第2のポッドが、前記第1の分散コンピューティング環境とは異なる前記第2の分散コンピューティング環境内に位置する、請求項12から17のいずれか一項に記載のシステム。
【請求項19】
前記第1のポッドについての前記セキュリティ規則が、(i)前記第1のサービスに利用可能なインスタンスの数、および(ii)どのインスタンスが前記サービス要求を処理するために利用可能であるかをさらに定義し、前記第1のサービスに前記サービス要求を転送することが、
前記第1のポッドについての前記セキュリティ規則に基づいて、前記サービス要求を処理するのに利用可能な前記インスタンスを決定することと、
前記第1のサービスの前記インスタンスのうちの少なくとも1つに前記サービス要求を転送することと、を含む、請求項12から18のいずれか一項に記載のシステム。
【請求項20】
前記第1のサービスから前記第2のサービスに前記アクセス要求を転送することが、
前記第1のポッドについての前記セキュリティ規則が、前記第1のサービスが通信およびアクセスを許可されているサービスとして前記第2のサービスを定義するかどうかを決定することと、
前記第2のポッドについての前記セキュリティ規則が、前記第2のサービスが通信を受信してアクセスすることを許可することを許可されているサービスとして前記第1のサービスを定義するかどうかを決定することと、
前記第2のサービスが、前記第1のサービスが通信およびアクセスを許可されているサービスであり、前記第1のサービスが、前記第2のサービスが通信を受信してアクセスを許可することを許可されているサービスである場合、前記第1のサービスから前記第2のサービスに前記アクセス要求を転送することと、を含む、請求項12から19のいずれか一項に記載のシステム。
【請求項21】
前記第2のポッドについての前記セキュリティ規則が、(i)前記第2のサービスに利用可能なインスタンスの数と、(ii)どのインスタンスが前記アクセス要求を処理するために利用可能であるかをさらに定義し、前記第1のサービスから前記第2のサービスに前記アクセス要求を転送することが、
前記第2のポッドについての前記セキュリティ規則に基づいて、前記アクセス要求を処理するのに利用可能な前記インスタンスを決定することと、
前記第2のサービスの前記インスタンスのうちの少なくとも1つに前記アクセス要求を転送することと、をさらに含む、請求項20に記載のシステム。
【請求項22】
前記第1のサービスが、前記第1の分散コンピューティング環境上の第1のコンテナまたは第1のコンテナセットとしてパッケージ化された1つまたは複数のクラスタ上に展開された1つまたは複数のプログラムを含み、前記第1のコンテナまたは前記第1のコンテナセットが、前記1つまたは複数のクラスタ上で実行される前記1つまたは複数のプログラムを表す上位レベルの構造である前記第1のポッドとしてパッケージ化されており、
前記第2のサービスが、前記第1の分散コンピューティング環境または第2の分散コンピューティング環境上で第2のコンテナまたはコンテナの第2のセットとしてパッケージ化された1つまたは複数のクラスタ上に展開された1つまたは複数のプログラムを含み、前記第2のコンテナまたは前記コンテナの第2のセットが、前記1つまたは複数のクラスタ上で実行される前記1つまたは複数のプログラムを表す上位レベルの構造である前記第2のポッドとしてパッケージ化されている、請求項12から21のいずれか一項に記載のシステム。
【請求項23】
ネットワークメッシュの1つまたは複数のデータプロセッサに動作を実行させるように構成された命令を含む非一時的機械可読記憶媒体に有形に具現化されたコンピュータプログラム製品であって、前記動作が、
第1のサービスについてのサービス要求を受信することと、
キャッシュまたはサービスレジストリから前記第1のサービスに関連する情報を取得することであって、前記情報が、前記第1のサービスを含む第1のポッドの識別および第1の分散コンピューティング環境内の前記第1のポッドの位置を含む、前記第1のサービスに関連する情報を取得することと、
前記第1のポッドの前記位置を使用して、前記第1のポッドについてのセキュリティ規則を取得することであって、前記セキュリティ規則が、(i)前記第1のサービスについての一意のアドレス識別子、および(ii)前記第1のサービスが通信およびアクセスを許可されているサービスを定義する、前記第1のポッドについてのセキュリティ規則を取得することと、
前記第1のサービスについての前記一意のアドレス識別子を使用して、前記第1のサービスに前記サービス要求を転送することと、
第2のサービスと通信して第2のサービスにアクセスするための前記第1のサービスからのアクセス要求を受信することであって、前記アクセス要求が前記第2のサービスに固有のセキュリティキーを含む、アクセス要求を受信することと、
前記キャッシュまたは前記サービスレジストリから前記第2のサービスに関連する情報を取得することであって、前記情報が、前記第2のサービスを含む第2のポッドの識別および前記第1の分散コンピューティング環境または第2の分散コンピューティング環境内の前記第2のポッドの位置を含む、前記第2のサービスに関連する情報を取得することと、
前記第2のポッドの前記位置を使用して、前記第2のポッドについてのセキュリティ規則を取得することであって、前記セキュリティ規則が、(i)前記第2のサービスについての一意のアドレス識別子、および(ii)前記第2のサービスが通信およびアクセスを許可されているサービスを定義する、前記第2のポッドについてのセキュリティ規則を取得することと、
前記第2のサービスについての前記一意のアドレス識別子を使用して、前記第1のポッドについての前記セキュリティ規則および前記第2のポッドについての前記セキュリティ規則に基づいて、前記第1のサービスから前記第2のサービスに前記アクセス要求を転送することと、
前記第1のサービスから前記サービス要求の最終結果を受信することであって、前記最終結果が、前記第2のサービスから取得されたサブ結果を含む、最終結果を受信することと、
前記サービス要求の前記最終結果を出力することと、を含む、コンピュータプログラム製品。
【請求項24】
前記第1のサービスに関連する前記情報を取得すること、または前記第2のサービスに関連する前記情報を取得することが、
前記第1のサービスまたは前記第2のサービスに関連する前記情報が前記キャッシュから利用可能であるかどうかを決定することと、
前記第1のサービスまたは前記第2のサービスに関連する前記情報が前記キャッシュから利用可能である場合、前記第1のサービスまたは前記第2のサービスに関連する前記情報を前記キャッシュから取得することと、
前記第1のサービスまたは前記第2のサービスに関連する前記情報が前記キャッシュから利用可能でない場合、前記第1のサービスまたは前記第2のサービスに関連する前記情報を前記レジストリから取得することと、
前記第1のサービスまたは前記第2のサービスに関連する前記情報を前記レジストリから取得することに応答して、前記第1のサービスまたは前記第2のサービスに関連する前記情報を後続の要求のために前記キャッシュに記憶することと、を含む、請求項23に記載のコンピュータプログラム製品。
【請求項25】
前記セキュリティキーが、ボールトから前記第1のサービスによって取得され、前記第1のサービスが、前記アクセス要求に前記セキュリティキーを埋め込む、請求項23または24に記載のコンピュータプログラム製品。
【請求項26】
前記第1のサービスからの前記アクセス要求が、前記第1のサービスの代わりに1つまたは複数の動作を実行しおよび/またはサービスを取得するための、前記第2のサービスの要求をさらに含む、請求項25に記載のコンピュータプログラム製品。
【請求項27】
前記第2のサービスが、前記第1のサービスに代わって前記1つまたは複数の動作を実行し、および/または前記サービスを取得し、1つまたは複数の動作の実行および/またはサービスの取得に基づいて前記サブ結果を生成する、請求項26に記載のコンピュータプログラム製品。
【請求項28】
前記第2のサービスが、前記1つまたは複数の動作を実行する前に、および/または前記第1のサービスに代わって前記サービスを取得する前に、前記セキュリティキーを検証する、請求項27に記載のコンピュータプログラム製品。
【請求項29】
前記第2のポッドが、前記第1の分散コンピューティング環境とは異なる前記第2の分散コンピューティング環境内に位置する、請求項23から28のいずれか一項に記載のコンピュータプログラム製品。
【請求項30】
前記第1のポッドについての前記セキュリティ規則が、(i)前記第1のサービスに利用可能なインスタンスの数、および(ii)どのインスタンスが前記サービス要求を処理するために利用可能であるかをさらに定義し、前記第1のサービスに前記サービス要求を転送することが、
前記第1のポッドについての前記セキュリティ規則に基づいて、前記サービス要求を処理するのに利用可能な前記インスタンスを決定することと、
前記第1のサービスの前記インスタンスのうちの少なくとも1つに前記サービス要求を転送することと、を含む、請求項23から29のいずれか一項に記載のコンピュータプログラム製品。
【請求項31】
前記第1のサービスから前記第2のサービスに前記アクセス要求を転送することが、
前記第1のポッドについての前記セキュリティ規則が、前記第1のサービスが通信およびアクセスを許可されているサービスとして前記第2のサービスを定義するかどうかを決定することと、
前記第2のポッドについての前記セキュリティ規則が、前記第2のサービスが通信を受信してアクセスすることを許可することを許可されているサービスとして前記第1のサービスを定義するかどうかを決定することと、
前記第2のサービスが、前記第1のサービスが通信およびアクセスを許可されているサービスであり、前記第1のサービスが、前記第2のサービスが通信を受信してアクセスを許可することを許可されているサービスである場合、前記第1のサービスから前記第2のサービスに前記アクセス要求を転送することと、を含む、請求項23から30のいずれか一項に記載のコンピュータプログラム製品。
【請求項32】
前記第2のポッドについての前記セキュリティ規則が、(i)前記第2のサービスに利用可能なインスタンスの数と、(ii)どのインスタンスが前記アクセス要求を処理するために利用可能であるかをさらに定義し、前記第1のサービスから前記第2のサービスに前記アクセス要求を転送することが、
前記第2のポッドについての前記セキュリティ規則に基づいて、前記アクセス要求を処理するのに利用可能な前記インスタンスを決定することと、
前記第2のサービスの前記インスタンスのうちの少なくとも1つに前記アクセス要求を転送することと、をさらに含む、請求項31に記載のコンピュータプログラム製品。
【請求項33】
前記第1のサービスが、前記第1の分散コンピューティング環境上の第1のコンテナまたは第1のコンテナセットとしてパッケージ化された1つまたは複数のクラスタ上に展開された1つまたは複数のプログラムを含み、前記第1のコンテナまたは前記第1のコンテナセットが、前記1つまたは複数のクラスタ上で実行される前記1つまたは複数のプログラムを表す上位レベルの構造である前記第1のポッドとしてパッケージ化されており、
前記第2のサービスが、前記第1の分散コンピューティング環境または第2の分散コンピューティング環境上で第2のコンテナまたはコンテナの第2のセットとしてパッケージ化された1つまたは複数のクラスタ上に展開された1つまたは複数のプログラムを含み、前記第2のコンテナまたは前記コンテナの第2のセットが、前記1つまたは複数のクラスタ上で実行される前記1つまたは複数のプログラムを表す上位レベルの構造である前記第2のポッドとしてパッケージ化されている、請求項23から32のいずれか一項に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
優先権主張
本出願は、2020年11月10日出願の米国特許仮出願第63/111,997号の利益および優先権を主張し、該仮出願は、その全体があらゆる目的のために参照により本明細書に組み込まれる。
【0002】
本開示は、デジタルおよび個人向けヘルスケアに関し、特に、分散コンピューティング環境における集中型ネットワークメッシュを介したサービス間通信および認証のための技術に関する。
【背景技術】
【0003】
ヘルスケアでは、コストを削減しながら、さらに個人向けヘルスケアのために、データドリブン型の技術ソリューションが開発されている。ヘルスケアの状況が個人向け医療サービスおよびソリューションのオンデマンド展開システムに移行するにつれて、ヘルスケア提供者は、ソフトウェア展開およびサービス管理プロセスを自動化および合理化することによってより迅速にソリューションを革新する助けを開発者に求めている。ヘルスケア提供者およびサービスをサポートするために、開発者は、ヘルスケア情報技術インフラストラクチャ規格として分散コンピューティング環境(例えば、クラウドコンピューティング)に目を向けてきた。クラウドコンピューティングには、柔軟性、コストとエネルギーの節約、リソースの共有、迅速な展開など、多くの利点がある。例えば、クラウドコンピューティングは、様々なサービスモデル(例えば、サービスとしての分析(AaaS))内のソフトウェア展開およびサービス管理プロセスをサポートするために必要な複雑なインフラストラクチャを提供することができ、それは異なるヘルスケア提供者間の通信、協調、および調整を容易にするのを助けることができる。クラウドコンピューティングはまた、ヘルスケア産業がドルに対してより多くの価値をもたらすのを助けることができる。例えば、クラウドコンピューティングは、高速で、柔軟で、スケーラブルで、費用効果の高いインフラストラクチャおよびアプリケーションを提供することができる。クラウドコンピューティングはまた、電子健康記録(EHR)、検査室情報システム、医薬品情報システム、および医療画像を記憶、管理、保護、共有、およびアーカイブするのを助けることができる。
【0004】
クラウドコンピューティングなどの分散コンピューティング環境は、ヘルスケア提供者に多くの利益をもたらすが、それらはレガシーストレージまたは情報共有ソリューションとは異なって機能し、したがって独自の固有のプライバシーおよびセキュリティの課題を引き起こす。クラウド上のデータの集中化は、個人およびヘルスケア提供者にとって多くのセキュリティおよびプライバシーの懸念を引き起こす。このデータの集中化は、データを盗み取り、移動中のデータを傍受し、データの所有権をクラウドサービスプロバイダに移動させるためのワンストップショッピングを攻撃者に提供する。したがって、個人およびヘルスケア提供者は、機密データに対する何らかの制御を失う。その結果、セキュリティ、プライバシー、効率、およびスケーラビリティの懸念が、クラウド技術の広範な採用を妨げている。例えば、ユーザは、インターネット接続を介してデータにアクセスするため、政府規制(例えば、医療保険の相互運用性と説明責任に関する法律(HIPAA)、「優良事例」の品質ガイドラインおよび規制(GxP)、ならびに一般データ保護規制(GDPR)の順守は、ソフトウェア展開およびサービス管理プロセスをサポートするためのクラウドソリューションを検討しているヘルスケア提供者にとって固有の課題となる。したがって、保護されたヘルスケア情報の機密性、可用性、および完全性を保証するように構築された、準拠したソフトウェア展開プラットフォームにおける進歩が必要とされている。
【発明の概要】
【0005】
いくつかの実施形態では、ネットワークメッシュにおいて、第1のサービスについてのサービス要求を受信することと、ネットワークメッシュによって、キャッシュまたはサービスレジストリから第1のサービスに関連する情報を取得することであって、情報が、第1のサービスを含む第1のポッドの識別および第1の分散コンピューティング環境内の第1のポッドの位置を含む、第1のサービスに関連する情報を取得することと、ネットワークメッシュによって、第1のポッドの位置を使用して、第1のポッドについてのセキュリティ規則を取得することであって、セキュリティ規則が、(i)第1のサービスについての一意のアドレス識別子、および(ii)第1のサービスが通信およびアクセスを許可されているサービスを定義する、第1のポッドについてのセキュリティ規則を取得することと、ネットワークメッシュによって、第1のサービスについての一意のアドレス識別子を使用して、第1のサービスにサービス要求を転送することと、ネットワークメッシュによって、第2のサービスと通信して第2のサービスにアクセスするための第1のサービスからのアクセス要求を受信することであって、アクセス要求が第2のサービスに固有のセキュリティキーを含む、アクセス要求を受信することと、ネットワークメッシュによって、キャッシュまたはサービスレジストリから第2のサービスに関連する情報を取得することであって、情報が、第2のサービスを含む第2のポッドの識別および第1の分散コンピューティング環境または第2の分散コンピューティング環境内の第2のポッドの位置を含む、第2のサービスに関連する情報を取得することと、ネットワークメッシュによって、第2のポッドの位置を使用して、第2のポッドについてのセキュリティ規則を取得することであって、セキュリティ規則が、(i)第2のサービスについての一意のアドレス識別子、および(ii)第2のサービスが通信およびアクセスを許可されているサービスを定義する、第2のポッドについてのセキュリティ規則を取得することと、ネットワークメッシュによって、第2のサービスについての一意のアドレス識別子を使用して、第1のポッドについてのセキュリティ規則および第2のポッドについてのセキュリティ規則に基づいて、第1のサービスから第2のサービスにアクセス要求を転送することと、ネットワークメッシュによって、第1のサービスからサービス要求の最終結果を受信することであって、最終結果が、第2のサービスから取得されたサブ結果を含む、最終結果を受信することと、ネットワークメッシュによって、サービス要求の最終結果を出力することと、を含む、コンピュータ実装方法が提供される。
【0006】
いくつかの実施形態では、前記第1のサービスに関連する前記情報を取得すること、または前記第2のサービスに関連する前記情報を取得することは、第1のサービスまたは第2のサービスに関連する情報がキャッシュから利用可能であるかどうかを決定することと、第1のサービスまたは第2のサービスに関連する情報がキャッシュから利用可能である場合、第1のサービスまたは第2のサービスに関連する情報をキャッシュから取得することと、第1のサービスまたは第2のサービスに関連する情報がキャッシュから利用可能でない場合、第1のサービスまたは第2のサービスに関連する情報をレジストリから取得することと、第1のサービスまたは第2のサービスに関連する情報をレジストリから取得することに応答して、第1のサービスまたは第2のサービスに関連する情報を後続の要求のためにキャッシュに記憶することと、を含む。
【0007】
いくつかの実施形態では、セキュリティキーは、ボールトから第1のサービスによって取得され、第1のサービスは、アクセス要求にセキュリティキーを埋め込む。
【0008】
いくつかの実施形態では、第1のサービスからのアクセス要求は、第1のサービスに代わって1つまたは複数の動作を実行し、および/またはサービスを取得するための第2のサービスについての要求をさらに含む。
【0009】
いくつかの実施形態では、第2のサービスは、第1のサービスに代わって1つまたは複数の動作を実行し、および/またはサービスを取得し、1つまたは複数の動作の実行および/またはサービスの取得に基づいてサブ結果を生成する。
【0010】
いくつかの実施形態では、第2のサービスは、1つまたは複数の動作を実行する前に、および/または第1のサービスに代わってサービスを取得する前に、セキュリティキーを検証する。
【0011】
いくつかの実施形態では、第2のポッドは、第1の分散コンピューティング環境とは異なる第2の分散コンピューティング環境内に位置する。
【0012】
いくつかの実施形態では、第1のポッドについてのセキュリティ規則は、(i)第1のサービスに利用可能なインスタンスの数、および(ii)どのインスタンスがサービス要求を処理するために利用可能であるかをさらに定義し、サービス要求を第1のサービスに転送することは、第1のポッドについてのセキュリティ規則に基づいてサービス要求を処理するために利用可能なインスタンスを決定することと、第1のサービスのインスタンスのうちの少なくとも1つにサービス要求を転送することと、を含む。
【0013】
いくつかの実施形態では、第1のサービスから第2のサービスにアクセス要求を転送することは、第1のポッドについてのセキュリティ規則が、第1のサービスが通信およびアクセスを許可されているサービスとして第2のサービスを定義するかどうかを決定することと、第2のポッドについてのセキュリティ規則が、第2のサービスが通信を受信してアクセスすることを許可することを許可されているサービスとして第1のサービスを定義するかどうかを決定することと、第2のサービスが、第1のサービスが通信およびアクセスを許可されているサービスであり、第1のサービスが、第2のサービスが通信を受信してアクセスすることを許可することを許可されているサービスである場合に、第1のサービスから第2のサービスにアクセス要求を転送することと、を含む。
【0014】
いくつかの実施形態では、第2のポッドについてのセキュリティ規則は、(i)第2のサービスに利用可能なインスタンスの数、および(ii)どのインスタンスがアクセス要求を処理するために利用可能であるかをさらに定義し、第1のサービスから第2のサービスにアクセス要求を転送することは、第2のポッドについてのセキュリティ規則に基づいてアクセス要求を処理するために利用可能なインスタンスを決定することと、アクセス要求を第2のサービスのインスタンスのうちの少なくとも1つに転送することと、をさらに含む。
【0015】
いくつかの実施形態では、第1のサービスは、第1の分散コンピューティング環境上の第1のコンテナまたはコンテナの第1のセットとしてパッケージ化された1つまたは複数のクラスタ上に展開された1つまたは複数のプログラムを含み、第1のコンテナまたはコンテナの第1のセットは、1つまたは複数のクラスタ上で実行される1つまたは複数のプログラムを表す上位レベル構造である第1のポッドとしてパッケージ化されており、第2のサービスは、第1の分散コンピューティング環境または第2の分散コンピューティング環境上で第2のコンテナまたはコンテナの第2のセットとしてパッケージ化された1つまたは複数のクラスタ上に展開された1つまたは複数のプログラムを含み、第2のコンテナまたはコンテナの第2のセットは、1つまたは複数のクラスタ上で実行される1つまたは複数のプログラムを表す上位レベルの構造である第2のポッドとしてパッケージ化されている。
【0016】
本開示のいくつかの実施形態は、1つまたは複数のデータプロセッサを含むシステムを含む。いくつかの実施形態では、システムは、1つまたは複数のデータプロセッサ上で実行されると、1つまたは複数のデータプロセッサに、本明細書に開示された1つまたは複数の方法の一部または全部および/または1つまたは複数のプロセスの一部または全部を実行させる、命令を含む非一時的コンピュータ可読記憶媒体を含む。本開示のいくつかの実施形態は、1つまたは複数のデータプロセッサに、本明細書に開示された1つまたは複数の方法の一部または全部および/または1つまたは複数のプロセスの一部または全部を実行させるように構成された命令を含む非一時的機械可読記憶媒体において、有形に具現化されたコンピュータプログラム製品を含む。
【0017】
使用された用語および表現は、限定ではなく説明の用語として使用され、そのような用語および表現の使用において、示されて説明された特徴のいかなる均等物またはその一部も除外する意図はないが、特許請求の範囲に記載された発明の範囲内で様々な変更が可能であることが認識される。したがって、特許請求の範囲に記載された本発明は、実施形態および任意の特徴によって具体的に開示されているが、本明細書に開示された概念の変更および変形は、当業者によってあてにされてもよく、そのような変更および変形は、添付の特許請求の範囲によって定義される本発明の範囲内にあると見なされることを理解されたい。
【図面の簡単な説明】
【0018】
本開示は、以下の添付の図面と併せて説明される。
【0019】
図1】様々な実施形態にかかる、データドリブン型技術ソリューションを提供するためのデジタルヘルスプラットフォームの図を示している。
【0020】
図2】様々な実施形態にかかるセキュリティシステムの図を示している。
【0021】
図3】様々な実施形態にかかるデジタルヘルスプラットフォームにおけるサービス間通信および認証のためのプロセスを示すスイムレーン図を示している。
【0022】
図4】様々な実施形態にかかる、集中型ネットワークメッシュ環境を介したサービス間通信および認証のためのプロセスを示すフローチャートを示している。
【0023】
添付の図面において、同様のコンポーネントおよび/または特徴は、同じ参照ラベルを有することができる。さらに、同じタイプの様々なコンポーネントは、参照ラベルの後にダッシュを続けることによって、および同様のコンポーネントを区別する第2のラベルによって区別され得る。本明細書において第1の参照ラベルのみが使用される場合、説明は、第2の参照ラベルに関係なく、同じ第1の参照ラベルを有する同様のコンポーネントのいずれかに適用可能である。
【発明を実施するための形態】
【0024】
I.概要
本開示は、分散コンピューティング環境における集中型ネットワークメッシュを介したサービス間通信および認証のための技術を記載する。より具体的には、本開示の実施形態は、サービスが複数のタイプの分散コンピューティング環境にわたってセキュアな方法で互いに通信することを可能にするポッドレベルネットワーキングを提供するネットワークメッシュを提供する。ネットワークメッシュおよびポッドレベルネットワーキングは、どこにデータが記憶されるか、誰がどのデータにアクセスすることができるか、サービスまたはユーザが所与の時間にどのリソースを消費することができるかに対する制御を維持することがより容易になるように、サービスとリソースとの間の分離を維持し、サービスまたはリソースが実行または記憶されている場所にかかわらず、常に正しいサービスおよびリソースが正しいアクセスを有することを保証する。
【0025】
クラウドコンピューティングは、機会および課題を提供する。他の多くの情報技術ソリューションと同様に、クラウドは、様々なセキュリティ上の問題および懸念を有する。クラウドコンピューティングは、通常、オープンで共有された環境で動作するため、データ損失、盗難、および悪意のある攻撃に対して脆弱であることが多い。弱いクラウドセキュリティは、ヘルスケア業界におけるクラウドコンピューティングの完全な普及を妨げている重要な問題の1つである。医療従事者は、クラウドコンピューティングを信頼しない多くの理由を有しており、例えば、医療従事者は、自身の医療記録を自由に制御することができない。組織およびクラウドプロバイダは、通常、異なる地理的位置に位置する異なるデータセンタにそれらのデータを記憶する。これは、クラウド上のデータストレージが冗長になり、不可抗力の場合、異なるデータセンタが災害からの回復に役立つため、独自の利点を表す。一方、この同じ利点は、異なる場所に記憶されたデータが盗難や紛失を起こしやすいため、セキュリティ上の課題を提起する可能性がある。さらに、異なる場所に記憶されたデータおよびそのセキュリティは、様々な国際的、地域的、および現地の規制によって管理される。一般に、クラウドコンピューティングの使用に関連する多くのセキュリティリスクがあり、例えば、仮想ユーザの分離の失敗、ID盗難、特権乱用、および不十分な暗号化は、これらのセキュリティリスクの一部である。
【0026】
これらの制限および問題に対処するために、本開示におけるサービス間通信および認証のための技術は、通信規則およびセキュリティキーによって管理されるポッドレベルネットワーキングを利用する。デジタルおよび個人向けヘルスケア環境では、通常、互いに対話する複数のパートナーが存在し、これらの対話は、サービスとリソースとの間の分離およびトレーサビリティを維持するためにセキュアな方法で制御される必要がある。サービスは、1人または複数のパートナーによって提供され得る任意のサービス(例えば、医療装置としてのデータ分析またはソフトウェアなどのヘルスケア関連サービス)である。リソースは、一般に、サービスをサポートするハードウェアリソースおよびソフトウェアリソース(例えば、メモリおよび処理ユニット)である。しかしながら、特定の例では、リソースはまた、データ、アルゴリズム、モデルなど(例えば、データストアに記憶されたヘルスケア関連データ)も含み得ることを理解されたい。これらの対話をセキュアな方法で制御するために、どのサービスが互いに通信することを許可され、どのリソースにそれらのサービスがアクセスすることを許可されるかを定義するポッドレベルのセキュリティ規則が提供される。さらに、サービスが他のサービスまたはリソースにアクセスすることを可能にするセキュリティキー(例えば、公開/秘密鍵ペア)が提供される。この2層アプローチは、サービスとリソースとの間の分離およびトレーサビリティを維持するために、1つまたは複数の分散コンピューティング環境上の各サービスのポッドレベルのセキュリティ規則および位置へのアクセスを有する集中型ネットワークメッシュによって促進される。例えば、サービスの呼び出しがネットワークメッシュによって受信されると、ネットワークメッシュは、ポッドレベルのセキュリティ規則およびサービスの位置に関する情報に基づいて呼び出しを適切なサービスにルーティングし、サービスは、ネットワークメッシュを介して1つまたは複数のセキュリティキーおよびプロキシ呼び出しを使用して他のサービスおよびリソースにアクセスして、サービスを提供するための様々な動作を実行することができる。
【0027】
本開示の1つの例示的な実施形態は、ネットワークメッシュにおいて、ユーザから第1のサービスについてのサービス要求を受信することと、ネットワークメッシュによって、キャッシュまたはサービスレジストリから第1のサービスに関連する情報を取得することと、を含む方法に関する。情報は、第1のサービスを含む第1のポッドの識別および第1の分散コンピューティング環境内の第1のポッドの位置を含む。本方法は、ネットワークメッシュによって、第1のポッドの位置を使用して、第1のポッドについてのセキュリティ規則を取得することをさらに含む。セキュリティ規則は、(i)第1のサービスについての一意のアドレス識別子、および(ii)第1のサービスが通信およびアクセスを許可されているサービスを定義する。本方法は、ネットワークメッシュによって、第1のサービスについての一意のアドレス識別子を使用して、第1のサービスにサービス要求を転送することと、ネットワークメッシュによって、第2のサービスと通信してアクセスするために、第1のサービスからアクセス要求を受信することと、をさらに含む。アクセス要求は、第2のサービスに固有のセキュリティキーを含む。本方法は、ネットワークメッシュによって、キャッシュまたはサービスレジストリから第2のサービスに関連する情報を取得することをさらに含む。情報は、第2のサービスを含む第2のポッドの識別および第1の分散コンピューティング環境または第2の分散コンピューティング環境内の第2のポッドの位置を含む。本方法は、ネットワークメッシュによって、第2のポッドの位置を使用して、第2のポッドについてのセキュリティ規則を取得することをさらに含む。セキュリティ規則は、(i)第2のサービスについての一意のアドレス識別子、および(ii)第2のサービスが通信およびアクセスを許可されているサービスを定義する。本方法は、ネットワークメッシュによって、第2のサービスについての一意のアドレス識別子を使用して、第1のポッドについてのセキュリティ規則および第2のポッドについてのセキュリティ規則に基づいて、第1のサービスから第2のサービスにアクセス要求を転送することと、ネットワークメッシュによって、第1のサービスからサービス要求の最終結果を受信することと、をさらに含む。最終結果は、第2のサービスから取得されたサブ結果を含む。本方法は、ネットワークメッシュによって、サービス要求の最終結果をユーザに転送することをさらに含む。
II.デジタルヘルスプラットフォーム
【0028】
図1は、様々な実施形態にかかる、データドリブン型技術ソリューションを提供するためのデジタルヘルスプラットフォーム100の簡略図を示している。図示の実施形態では、デジタルヘルスプラットフォーム100は、ネットワークゲートウェイ120およびネットワークメッシュ125を含むネットワーク115を介してクラウドベースのインフラストラクチャ110に結合されたクライアントコンピューティング装置105を含む。インフラストラクチャ110は、様々なハードウェアおよびクラウドインフラストラクチャ(例えば、プライベートクラウドまたはオンプレミスのクラウドインフラストラクチャおよびパブリッククラウドインフラストラクチャ)を使用してクラウドサービスプロバイダ140(例えば、分散コンピューティング環境)によって配置リング135内にプロビジョニングされたリソースを使用して、サービスポッド130内でサービスまたはソフトウェアアプリケーションを実行するように適合される。これらのサービスまたはソフトウェアアプリケーションは、ウェブベースまたはクラウドサービスとして、例えばAaaSまたはSaaSモデルの下で、クライアントコンピューティング装置105のユーザに提供され得る。Amazon、Google、Oracleなどのいくつかのプロバイダがクラウドサービスを提供している。クラウドサービスという用語は、一般に、ヘルスケア提供者または政府規制エンティティなどのサービス提供者のシステム(例えば、インフラストラクチャ110)によって、インターネットなどの通信ネットワークを介してオンデマンドでユーザに利用可能にされるサービスを指すために使用される。したがって、消費者は、サービスをサポートする別個のライセンス、サポート、またはハードウェアおよびソフトウェアリソースを購入する必要なく、サービスプロバイダによって提供されるクラウドサービスを利用し得る。例えば、クラウドサービスプロバイダのシステムは、1つまたは複数のプログラムをホストしてもよく、ユーザは、インターネットを介して、オンデマンドで、ユーザが1つまたは複数のプログラムを実行するためのインフラストラクチャリソースを購入する必要なく、1つまたは複数のプログラムを使用し得る。クラウドサービスは、アプリケーション、リソース、およびサービスへの容易でスケーラブルなアクセスを提供するように設計されている。
【0029】
場合によっては、クライアントコンピューティング装置105を操作するユーザ(例えば、ソフトウェアまたはサービス消費者)は、インフラストラクチャ110の様々なコンポーネント145によって提供されるソフトウェア製品、サービス、またはシステムを消費するために、1つまたは複数のクライアントアプリケーションを利用する。他の例では、クライアントコンピューティング装置105を操作するユーザ(例えば、開発者)は、インフラストラクチャ110の様々なコンポーネント145によって提供されるソフトウェア製品、サービス、またはシステムのソースコードをアップロードするために、1つまたは複数のクライアントアプリケーションを利用する。コンポーネント145は、1つまたは複数のプロセッサ、ハードウェアコンポーネント、またはそれらの組み合わせによって実行され得るソフトウェアコンポーネントを含む。様々な異なるシステム構成が可能であり、これは、デジタルヘルスプラットフォーム100について示されたものとは異なってもよいことを理解されたい。したがって、図1に示す実施形態は、デジタルヘルスプラットフォームを実装するための分散コンピューティング環境の一例であり、限定することを意図するものではない。
【0030】
クライアントコンピューティング装置105は、携帯型ハンドヘルド装置、パーソナルコンピュータおよびラップトップなどの汎用コンピュータ、ワークステーションコンピュータ、ウェアラブル装置、ゲームシステム、シンクライアント、様々なメッセージング装置、センサまたは他の検知装置などの様々なタイプのコンピューティングシステムを含む。これらのコンピューティング装置は、様々なモバイルオペレーティングシステム(例えば、Microsoft Windows Mobile(登録商標)、iOS(登録商標)、Windows Phone(登録商標)、Android(商標)、BlackBerry(登録商標)、Palm OS(登録商標))を含む様々なタイプおよびバージョンのソフトウェアアプリケーションおよびオペレーティングシステム(例えば、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)、UNIX(登録商標)またはUNIX系オペレーティングシステム、LinuxまたはGoogle Chrome(商標)OSなどのLinux系オペレーティングシステム)を実行し得る。携帯型ハンドヘルド装置は、携帯電話、スマートフォン、(例えば、iPhone(登録商標))、タブレット(例えば、iPad(登録商標))、携帯情報端末(PDA)などを含み得る。ウェアラブル装置は、Fitbit Versa(商標)スマートウォッチ、magic leap1(登録商標)、HTC Vive(登録商標)およびOculus(登録商標)などの仮想現実(VR)または拡張現実(AR)システム、および他の装置を含み得る。ゲームシステムは、様々なハンドヘルドゲーム装置、インターネット対応ゲーム装置(例えば、Kinect(登録商標)ジェスチャ入力装置を有するまたは有しないMicrosoft Xbox(登録商標)ゲームコンソール、Sony PlayStation(登録商標)システム、Nintendo(登録商標)によって提供される様々なゲームシステム、およびその他)などを含み得る。クライアント装置105は、様々なインターネット関連アプリケーション、通信アプリケーション(例えば、電子メールアプリケーション、ショートメッセージサービス(SMS)アプリケーション)などの様々な異なるアプリケーションを実行することができるようにしてもよく、様々な通信プロトコルを使用し得る。
【0031】
ネットワーク115は、TCP/IP(伝送制御プロトコル/インターネットプロトコル)、SNA(システムネットワークアーキテクチャ)、IPX(インターネットパケット交換)、AppleTalk(登録商標)などを含むが、これらに限定されない、様々な利用可能なプロトコルのいずれかを使用してデータ通信をサポートすることができる、当業者によく知られている任意のタイプのネットワークである。単なる例として、ネットワーク115は、ローカルエリアネットワーク(LAN)、イーサネット、トークンリング、ワイドエリアネットワーク(WAN)、インターネット、仮想ネットワーク、仮想プライベートネットワーク(VPN)、イントラネット、エクストラネット、公衆交換電話網(PSTN)、赤外線ネットワーク、無線ネットワーク(例えば、米国電気電子学会(IEEE)1002.11プロトコル一式、Bluetooth(登録商標)、および/または任意の他の無線プロトコルのいずれかの下で動作するネットワーク)、および/またはこれらのおよび/または他のネットワークの任意の組み合わせとすることができる。
【0032】
ネットワークゲートウェイ120は、同じまたは異なるプロトコルで動作するネットワーク115のうちの複数の間にセキュアな経路を形成するネットワークノードである。ネットワークゲートウェイ120は、以下の技術、すなわち、着信および発信のネットワークトラフィックを監視するためのファイアウォール、プライベートなセキュアな通信チャネルを提供するための仮想プライベートネットワーク、ネットワーク内のセキュリティ上の欠陥を識別するためのセキュリティスキャン、認証サービスおよび許可サービスのためのアクセスマネージャなどのうちの1つまたは複数を使用してネットワークセキュリティを提供し得る。ネットワークゲートウェイ120は、ルータおよび様々なソフトウェア製品、サービス、またはシステム(例えば、サービスサブスクリプションビジネスモデルを使用する)へのアクセスを管理するサービスコネクタを使用してネットワークトラフィックをルーティングする。ネットワークメッシュ125は、インフラストラクチャ110(例えば、ブリッジ、スイッチ、および他のインフラストラクチャ装置)が可能な限り多くの他のノードに直接、動的に、および非階層的に接続し、互いに協働して装置とノードとの間でデータを効率的にルーティングするローカルネットワークトポロジである。ネットワークメッシュ125は、負荷分散、製品、サービス、またはシステム発見、ネットワークアクセス、ルーティング、およびピアリング、トラフィックミラーリングなどの技法のうちの1つまたは複数を使用して接続を管理する。ネットワーク115、ネットワークゲートウェイ120、およびネットワークメッシュ125は、インフラストラクチャ110から流入または流出する全てのデータを管理するために組み合わせて機能する。
【0033】
コンポーネント145は、ネットワーク115を介してクライアントコンピューティング装置105にリソース、データ、サービス、またはプログラムを提供するために個別にまたは組み合わせて動作する、1つまたは複数の汎用コンピュータ、専用サーバコンピュータ(例として、PC(パーソナルコンピュータ)サーバ、特定用途向けサーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウント型サーバなどを含む)、サーバファーム、サーバクラスタ、または任意の他の適切な配置および/または組み合わせコンピュータまたはシステムを含む。コンポーネント145は、仮想オペレーティングシステムを実行する1つまたは複数の仮想マシン、または仮想ストレージ装置を維持するために仮想化され得る論理ストレージ装置の1つまたは複数の柔軟なプールなどの仮想化を含む他のコンピューティングアーキテクチャをさらに含み得る。様々な実施形態では、コンポーネント145は、本開示に記載された機能を提供する1つまたは複数のサービスまたはソフトウェアアプリケーションを実行するように適合される。
【0034】
コンポーネント145はまた、1つまたは複数のデータリポジトリを含む。これらのデータリポジトリは、様々な実施形態において、データおよび他の情報を記憶するために使用され得る。例えば、データリポジトリのうちの1つまたは複数が使用されて、医療装置としてのソフトウェア(SAMD)などのデータドリブン技術ソリューションを提供するための情報を記憶し、データドリブン技術ソリューションを実装するためのソースコードの検証および展開のための情報を記憶し得る。データリポジトリは、様々な場所に存在し得る。例えば、コンポーネントによって使用されるデータリポジトリは、コンポーネントのローカルであってもよく、またはコンポーネントから離れており、ネットワークベースまたは専用接続を介してコンポーネントと通信してもよい。データリポジトリは、異なるタイプのものであってもよい。特定の実施形態では、コンポーネントによって使用されるデータリポジトリは、データベース、例えば、集中データベース、分散データベース、NoSQLデータベース、リレーショナルデータベースなどであってもよい。これらのデータベースのうちの1つまたは複数は、SQLフォーマットされたコマンドに応答してデータベースへのおよびデータベースからのデータの記憶、更新、および取得を可能にするように適合されてもよい。特定の実施形態では、データリポジトリのうちの1つまたは複数はまた、アプリケーションデータを記憶するためにアプリケーションによって使用されてもよい。アプリケーションによって使用されるデータリポジトリは、例えば、キーバリューストアリポジトリ、オブジェクトストアリポジトリ、またはファイルシステムによってサポートされる一般的なストレージリポジトリなどの異なるタイプのものであってもよい。
【0035】
コンポーネント145はまた、本開示に記載された機能を提供するサービスまたはソフトウェアアプリケーション(例えば、ウェブベースまたはクラウドサービスとして提供されるサービスまたはソフトウェアアプリケーション、または継続的統合および継続的展開(CI/CD)システムを実装するためのアプリケーション)などの1つまたは複数のプログラムを実行するように適合されたコンピューティングノードを含む。各ノードは、任意にノードのクラスタ内に実装される単一のマシンの表現である。単一のマシンは、利用可能なCPUおよびRAMリソースのセットのセットを有する物理マシン(例えば、データセンタ内のサーバ)またはAmazon Web Services(商標)(AWS)などのクラウドプロバイダ上でホストされる仮想マシンであってもよい。クラスタでは、ノードは、より強力なマシンを形成するためにそれらのリソースをプールする。1つまたは複数のプログラムがクラスタ上に展開されると、クラスタは、個々のノードへの分散作業をインテリジェントに処理する。ノードが追加または削除されると、クラスタは、必要に応じて作業をシフトすることができる。どの個々のマシンが実際にコードを実行しているかは、1つまたは複数のプログラム、またはインフラストラクチャ110にとって重要ではない。
【0036】
1つまたは複数のクラスタに展開された1つまたは複数のプログラムは、コンテナとしてパッケージ化される。コンテナは、広く受け入れられている標準であり、インフラストラクチャ110上に1つまたは複数のプログラムを展開するために様々な画像が定義され得る。コンテナ化は、インフラストラクチャ110が自己完結型の実行環境を作成することを可能にする。任意のプログラムおよびその全ての依存関係は、単一のファイルにまとめられ、次いでインフラストラクチャ110上で共有され得る。コンテナの作成はプログラム的に行われ得、インフラストラクチャ110上のコードの検証およびコードの展開に使用される強力な完全に自動化されたCI/CDパイプラインを可能にする。コンテナは、ポッド130として知られる上位レベルの構造にラップされる。同じポッド130内のコンテナは、同じリソースおよびローカルネットワークを共有し得る。場合によっては、コンテナは、他からのある程度の隔離を維持しながら、あたかも同じマシン上にあるかのように同じポッド130内の他のコンテナと通信することができる。ポッド130は、インフラストラクチャ110内の複製単位として使用される。プログラムまたはリソースが処理によって圧迫され、単一のポッド130インスタンスが負荷を担持することができない場合、インフラストラクチャ110は、必要に応じてポッド130の新たなレプリカをクラスタに展開するように構成され得る。重い負荷がかかっていない場合であっても、負荷分散および故障耐性を可能にするために、生産システムにおいていつでも動作するポッド130の複数のコピーを有することが有益であり得る。ポッド130の1つまたは複数のインスタンスは、1つまたは複数のクラウドサービスプロバイダ140によって提供されるクラウドインフラシステムにプロビジョニングされる。
【0037】
1つまたは複数のクラウドサービスプロバイダ140によって提供されるクラウドインフラシステムは、インフラストラクチャ110によって提供される様々なクラウドサービスをサポートするポッド130の1つまたは複数のインスタンスの提供を容易にするために利用されるインフラストラクチャリソースを含む。ポッド130の1つまたは複数のインスタンスをプロビジョニングするためのこれらのリソースの効率的な利用を容易にするために、リソースは、リソースまたはリソースモジュールのセット(「配置リング135」または「ステートフルリング135」とも呼ばれる)にバンドルされ得る。各リソースモジュールまたは配置リング135は、1つまたは複数のタイプのリソースの予め統合されて最適化された組み合わせを含み得る。特定の例では、異なるタイプのクラウドサービスに対して異なる配置リング135が事前プロビジョニングされ得る。例えば、第1のセットの配置リング135は、SAMDサービスのためにプロビジョニングされてもよく、第2のセットの配置リング135は、第1のセットの配置リング135内の配置リング135とは異なるリソースの組み合わせを含んでもよく、データ分析サービスのためにプロビジョニングされてもよい、などである。いくつかのクラウドサービスの場合、サービスをプロビジョニングするために割り当てられたリソースは、サービス間で共有されてもよい。
【0038】
デジタルヘルスプラットフォーム100は、1つまたは複数のカーネル150をさらに含む。カーネル150は、1つまたは複数のクラウドサービスプロバイダ140によって提供される各クラウドインフラシステム上で動作するように適合される。カーネル150は、デジタルヘルスプラットフォーム100全体にわたる分散アプリケーションまたはフレームワークにわたってリソースの割り当ておよび分離を提供するクラスタマネージャである。カーネル150は、リソース管理およびスケジューリングを含むサービスおよびソフトウェアのオーケストレーションのためのアプリケーションプログラミングインターフェース(API)を1つまたは複数のプログラムに提供する。カーネル150のアーキテクチャは、タスクを実行するためのエージェントノードと、エージェントノードにタスクを送信するためのマスタノードと、選出のための、およびマスタノードのアドレスをルックアップするための領域管理者と、エージェントノード上にタスクをスケジュールするためにマスタノードと協調するためのフレームワークとを含む。
【0039】
デジタルヘルスプラットフォーム100は、CI/CDシステム155をさらに含む。CI/CDシステム155は、クラウドインフラシステム内に実装され、デジタルヘルスプラットフォーム100がソフトウェア製品、サービス、またはシステムのソースコード内の変更を頻繁に更新、試験、および配信することを可能にする。本明細書で詳細に説明するように、ヘルスケアにおいては、ソフトウェアが遵守しなければならないデータのセキュリティ(例えば、データ完全性およびデータプライバシー)に関する政府の規制がある。CI/CDシステム155では、これらのポリシー規制がコードに含められ得、コンプライアンスが自動的に追跡、検証、および再構成されることを可能にする。SAMDの例では、データ記憶場所、サーバアクセス制御、およびアクティビティロギングがソースコードに含められ得、ソフトウェアの使用中にユーザデータが保護および管理され得る。暗号化およびパスワードで保護された動作は、連続的な統合中にさらに含められ得る。継続的な配信中、セキュリティおよび監視ツールが使用されて、ユーザの活動を追跡し、セキュリティの脅威につながる可能性があるエラーを検出することができる。
【0040】
CI/CDシステム155はまた、機械学習モデルをプロビジョニングするために使用されてもよい。機械-学習モデルは、最初にデータセットを使用して訓練されるが、経時的に、モデルがドリフトしたり、データが変化したりする場合があり、更新された機械学習モデルの必要性をもたらす。機械学習モデルがソフトウェアアプリケーション内で実行される場合、ソフトウェアアプリケーションに関連付けられたコードは、機械学習モデルがいつ再訓練されるべきかについてのトリガを含むことができる。例えば、コードは、新たな訓練データが利用可能であるとき、または機械学習モデルの性能が閾値を下回ると決定されたときに、機械学習モデルを所定の時間間隔で再訓練するための命令を含み得る。さらに、ソフトウェア開発者は、生産環境における機械学習モデルの性能を監視することに基づいて、またはモデル最適化のための推定された改善に基づいて、試験環境におけるモデルアーキテクチャおよびハイパーパラメータの変動を探索し得る。CI/CDシステム155は、機械学習モデルが性能要件を満たすと決定されたときに、構築、試験、および生産環境への展開を容易にすることを可能にする。
III.セキュリティシステム
【0041】
図2は、様々な実施形態にかかる、分散コンピューティング環境205における集中型ネットワークメッシュを介したサービス間通信および認証のためのセキュリティシステム200(図1を参照して説明したネットワークゲートウェイ120、ネットワークメッシュ125、およびポッド130を含む)の簡略図を示している。単一の分散コンピューティング環境のみが示されているが、複数の分散コンピューティング環境がデジタルヘルスプラットフォーム内に実装されてもよく、各分散コンピューティング環境は、図2に示す独自のコンポーネントのセットを有することを理解されたい。図示の実施形態では、セキュリティシステム200は、1つまたは複数のクライアントアプリケーション210(例えば、患者および/またはサービス消費者などの人間の行為者によって操作される装置内のアプリケーション/ソフトウェアモジュール)、ドメインネームシステム(DNS)215、ゲートウェイ220、ネットワークメッシュ225、パブリックエージェント230、およびプライベートエージェント235を含む。パブリックエージェント230は、パブリックサービスをユーザ210に提供する。プライベートエージェント235は、プライベートサービスを提供するために協働するサービスポッド240、ボールト245、およびボールトゲートウェイ250を含む。
【0042】
クライアントアプリケーション210は、デジタルヘルスプラットフォームによって提供されるソフトウェア製品、サービス、またはシステムを消費するためにユーザによって操作される。クライアントアプリケーション210は、分散コンピューティング環境コネクタおよびDNS215を介したデジタルヘルスプラットフォームとの通信(例えば、要求を送信する)によってソフトウェア製品、サービス、またはシステムを消費し得る。DNS215は、IPアドレスおよび他のデータを記憶する階層型分散データベースであり、IPアドレスに呼び出しを転送するためにIPアドレスが名称によって検索されることを可能にする。例えば、ユーザからの要求がデジタルヘルスプラットフォームによって受信された場合、分散コンピューティング環境コネクタは、要求を満たすことができる分散コンピューティング環境を識別し、要求および要求を満たすことができる分散コンピューティング環境をDNS215に転送し、DNS215は、分散コンピューティング環境に関連するIPアドレスおよび他のデータを検索し、関連する分散コンピューティング環境(例えば、分散コンピューティング環境205)のゲートウェイ(例えば、ゲートウェイ220)のゲートウェイエンドポイントに要求を転送する。
【0043】
ゲートウェイエンドポイントに接続されると、クライアントアプリケーション210は、セッション内の1つまたは複数のサービスにアクセスするために認可部(例えば、アクセス管理システム)と通信することができる。例示の目的で、本明細書で説明される「セッション」は、1つまたは複数のサービスへのアクセスをユーザに提供するセッションまたはアクセスセッションを含む。本明細書で開示されるセッションは、例えば、SSOセッション、認証セッション、またはユーザにアクセスを提供する任意の他のタイプのセッションと呼ばれることがある。サービスは、ファイル、ウェブページ、電子コンテンツ、文書、ウェブコンテンツ、コンピューティングリソース、またはアプリケーションによって提供されるアクセスおよび機能を含み得るが、これらに限定されない。例えば、デジタルヘルスプラットフォームは、ソフトウェア製品、クラウドサービス、またはシステムなどのアクセス可能なサービスを含み得る。サービスは、アプリケーションを使用して要求およびアクセスされ得る。例えば、アプリケーションは、要求されたサービスを識別するURLに基づいて、サービスサーバからサービスへのアクセスを要求し得る。本明細書で使用される場合、動作が何かによって「トリガされる」または「基づいて」いるとき、これは、動作が何かの少なくとも一部によってトリガされるかまたは少なくとも一部に基づいていることを意味する。サービスは、1つまたは複数のコンピュータシステム、例えば分散コンピューティングシステムによって記憶および/または管理され得る。分散コンピューティングシステムは、クライアントアプリケーション210を介したユーザの認証時に、1つまたは複数のサービスへのアクセスを促進または制御し得る。
【0044】
クライアントコンピューティング装置においてサービスのうちの1つがクライアントアプリケーション210によってアクセスされることを可能にするために、ユーザは、クライアントアプリケーション210を介してユーザにサービスへのアクセスを提供するセッション(例えば、SSOセッション)を確立するために認証するように要求される。クライアントコンピューティング装置は、認可部にアクセスを要求することによって認証プロセスを開始する。認証プロセスは、ユーザの認証情報を受信するために1つまたは複数のGUIを表示し、認証の要求を認可部に提出するクライアントコンピューティング装置を含み得る。認証は、アクセスを要求されたサービスに対して定義された認証のためのユーザの認証情報を検証することに基づいて確立される。サービスへのアクセスを試みる際に、ユーザは、認可部を介したユーザのアカウントへのアクセスを管理するアプリケーション(例えば、クライアントアプリケーション210の一部または別個のアプリケーション)を操作する。例えば、アプリケーションは、GUIを提示し得るアクセス管理アプリケーションであってもよい。アプリケーションおよび/またはクライアントアプリケーション210を使用して、ユーザは、1つまたは複数のサービスへのアクセスを要求し、認証を行い、認証レベルの変更を要求する。
【0045】
ユーザのクライアントコンピューティング装置と認可部との間の通信は、ゲートウェイ220を介して受信される。ゲートウェイ220は、アクセス管理サービスをサポートする。例えば、SSOゲートウェイは、クライアントアプリケーション210と認可部からのリクエストのバランスをとる、および/またはこのリクエストを処理するために、1つまたは複数のアクセスエージェントを実装し得る。クライアントコンピューティング装置は、クライアントコンピューティング装置による1つまたは複数のサービスへのアクセスを容易にするために、エージェントとの間で1つまたは複数の通信を送受信し得る。認可部は、クライアントコンピューティング装置による1つまたは複数のサービスへのアクセスを容易にするために、エージェントとの間で1つまたは複数の通信を送受信し得る。サービスは、認証情報の認証の成功に基づいてクライアントアプリケーション210にアクセス可能とし得る。認証情報を受信すると、認可部は、要求されたサービスが、アクセスのための認証情報を必要とする保護されたサービスであるかどうかを検証する。認可部は、サービスへのアクセスが保護されているかどうかを決定する。サービスが保護されていないと決定すると、認可部は、サービス(例えば、公共サービス)へのアクセスを認可する。認可部は、サービスへのアクセスが保護されていると決定すると、認証情報に基づいてクライアントアプリケーション210を介したユーザの認証を決定する。具体的には、認可部は、認証の1つまたは複数のレベルおよび/または1つまたは複数の要因についての認証情報を収集し、認可部は、認証情報が、クライアントアプリケーション210を介してユーザがサービスにアクセスすることを可能にするために登録された認証情報と一致するかどうか検証し得る。ユーザの認証を決定すると、認可部は、ユーザに許可されたアクセスに基づいて、ユーザがサービスにアクセスすることを認可されているかどうかを決定し得る。認可部は、ユーザがサービスにアクセスすることを許可されているか否かに関するユーザの認可を示すために、クライアントコンピューティング装置に通信を送信し得る。次いで、サービスは、ユーザが認証され、任意にサービスにアクセスすることを許可されていると決定すると、クライアントアプリケーション210を介してユーザにアクセス可能なサービスとして有効化される。
【0046】
サービスがクライアントアプリケーション210にアクセス可能なサービスとして有効化されると、ゲートウェイ220は、ネットワークメッシュ225に要求を転送する。ネットワークメッシュ225は、サービスレベル(例えば、様々なサービスが互いにデータをどのように共有するか)で通信およびネットワーキングの懸念を管理する分散コンピューティング環境に組み込まれた専用層である。理想的には、サービス間の通信が少ないほどよい。しかしながら、サービスが動作を完了するために互いに依存することが多いため、回避は常に可能であるとは限らない。そのような場合、ネットワークメッシュ225は、(i)認可部を使用してユーザと様々なサービスとの間の後続の要求または対話を認証し、(ii)任意にサービス間の通信を暗号化し、(iii)セキュリティ規則またはポリシー(例えば、同じポッド内のサービス間の通信および異なるポッド内のサービス間の通信のためのポッドレベルのセキュリティ規則)を施行することによって、サービス間の通信を管理および保護する。これらの動作を容易にするために、ネットワークメッシュ225は、サービスへのおよびサービス間の呼び出しを傍受するように適合されたルータおよび1つまたは複数のプロキシを含み、サービスへのおよびサービス間の呼び出しを制御およびルーティングするためのセキュリティ規則またはポリシーによって構成される。サービス間の通信を管理および確保することに加えて、ネットワークメッシュ225はまた、サービス発見および負荷分散のためのサポートを提供し得る。例えば、ネットワークメッシュ225は、ポッドエンドポイントからサービスインスタンスの対応するプールを取得し得る。次いで、ネットワークメッシュ225は、特定のサービスインスタンスに要求を送信またはルーティングし、結果の待ち時間および応答タイプを記録する。ネットワークメッシュ225は、最近の要求の観測された待ち時間を含む様々な要因に基づいて、高速応答を返す可能性が最も高いインスタンスを選択し得る。
【0047】
パブリックエージェント230は、1つまたは複数のパブリックサービスを提供するように適合される。これらのサービスは、パブリックとして指定されているが、これは、パブリックサービスにアクセスするために認証/認可が必要でないことを必ずしも意味しない。場合によっては、認証および/または許可の1つまたは複数のレベルまたは要因が、パブリックサービスにアクセスするために必要とされ得る。ネットワークメッシュ225は、クライアントアプリケーション210とパブリックエージェント230との間の通信を管理して確保する。場合によっては、これは、認可部を使用してユーザと様々なパブリックサービスとの間の要求または対話を認証することと、セキュリティ規則またはポリシーを施行しながら、パブリックエージェント230によって提供されるサービスへの呼び出しおよびサービス間の呼び出しをルーティングすることとを含む。
【0048】
プライベートエージェント235は、サービスポッド240(例えば、第1のポッドを有する第1のサービスおよび第2のポッド内の第2のサービス)内に含まれる1つまたは複数のプライベートサービスを提供するように適合される。ネットワークメッシュ225は、クライアントアプリケーション210とプライベートエージェント235との間の通信を管理および確保する。場合によっては、これは、セキュリティ規則またはポリシーを施行しながら、プライベートエージェント235によって提供されるサービスへのおよびサービス間の呼び出しをルーティングすることを含む。プライベートエージェント235は、他のサービスと通信し、他のサービスにアクセスするために各サービスによって使用されるセキュリティキーまたはアクセスキーを管理および記憶するためのボールト245およびボールトゲートウェイ250を利用する。ボールトゲートウェイ250は、サービスとボールト245との間のセキュアな経路を形成するネットワークノードである。ボールトゲートウェイ250は、以下の技術、すなわち、着信および発信のネットワークトラフィックを監視するためのファイアウォール、プライベートなセキュアな通信チャネルを提供するための仮想プライベートネットワーク、ネットワーク内のセキュリティ上の欠陥を識別するためのセキュリティスキャン、認証サービスおよび許可サービスのためのアクセスマネージャなどのうちの1つまたは複数を使用してボールトネットワークセキュリティを提供し得る。ボールトゲートウェイ250は、ボールトへのアクセスおよび様々な秘密、すなわちセキュリティまたはアクセスキーを管理するルータおよびサービスコネクタを使用して、ボールトトラフィックをルーティングする。
【0049】
ボールト245は、セキュリティキーまたはアクセスキーを管理して記憶する。セキュリティキーは、サービスが別のサービスと通信し、別のサービスにアクセスするための短期的な認証情報である。セキュリティキーは、別のサービス(例えば、別のサービスのアプリケーションプログラミングインターフェース)へのプログラム要求に署名するために使用され得る。セキュリティキーは、アクセス識別子と秘密アクセスキーとからなる。ユーザ名およびパスワードと同様に、サービスは、アクセス要求を認証するためにアクセス識別子および秘密アクセスキーの双方を一緒に使用しなければならない。セキュリティキーは、サービスへのアクセスを制御するためにデータストア(「ポリシー」)に記憶された1つまたは複数の規則またはポリシーを使用して管理され得る。ポリシーは、各サービスによってアクセスされ得る他のサービスを定義する。例えば、管理者は、サービス間の分離および/またはデータプライバシーを維持するために、特定のサービスが特定のサービスによってアクセスされることのみを許可し得る。ボールト245は、ポリシーのうちの1つまたは複数に基づいて、どのサービスが他のサービスにアクセスするためにどのセキュリティキーを取得するかを決定する。
IV.デジタルヘルスプラットフォーム上にサービスを展開するための技術
【0050】
図3および図4は、集中型ネットワークメッシュを介したサービス間通信および認証のためのプロセスおよび動作を示している。個々の実施形態は、フローチャート、フロー図、データフロー図、構造図、またはブロック図として示されるプロセスとして説明されるプロセスとして記載され得る。フローチャートは、シーケンシャルなプロセスとして動作を説明しているが、動作の多くは、並行してまたは同時に実行されてもよい。さらに、動作の順序は並べ替えられてもよい。プロセスは、その動作が完了したときに終了するが、図に含まれていない追加のステップを有することができる。プロセスは、方法、機能、手順、サブルーチン、サブプログラムなどに対応してもよい。プロセスが関数に対応する場合、その終了は、呼び出し関数またはメイン関数への関数の戻りに対応し得る。
【0051】
図3および図4に示すプロセスおよび/または動作は、1つまたは複数の処理ユニット(例えば、プロセッサコア)、ハードウェア、またはそれらの組み合わせによって実行されるソフトウェア(例えば、コード、命令、プログラム)で実装され得る。ソフトウェアは、メモリ(例えば、メモリ装置上、非一時的コンピュータ可読記憶媒体上)に記憶されてもよい。図3および図4の特定の一連の処理ステップは、限定することを意図するものではない。ステップの他のシーケンスが、代替実施形態にしたがって実行されてもよい。例えば、代替実施形態では、上記で概説したステップは、異なる順序で実行されてもよい。さらに、図3および図4に示す個々のステップは、個々のステップに適切であるように様々な順序で実行され得る複数のサブステップを含んでもよい。さらにまた、特定の用途に応じて、追加のステップが追加または削除されてもよい。当業者は、多くの変形、変更、および代替を認識するであろう。
【0052】
図3は、デジタルヘルスプラットフォームにおけるサービス間通信および認証のためのプロセス300を示している。フローチャート300に示すプロセスは、図1および図2に示すアーキテクチャ、システム、および技術によって実装される。
【0053】
ステップ305において、ネットワークメッシュは、サービス要求(例えば、ユーザからのサービスAなどのサービスへのアクセスの要求)を受信する。ネットワークメッシュは、ネットワークメッシュがサービスに精通しているかどうかを決定することによって要求を解決する。この決定は、ネットワークメッシュがキャッシュ内にサービスに関するデータを有するかどうかを決定することによって行われ得る。キャッシュは、データ(例えば、様々なサービスに関する情報)を記憶するハードウェアまたはソフトウェアコンポーネントであり、そのデータに対する将来の要求は、より高速に処理され得る。キャッシュに記憶されたデータは、サービスに対する以前の要求または他の場所に記憶されたデータのコピーの結果とし得る。ネットワークメッシュがキャッシュ内にサービスに関するデータを有する場合、ネットワークメッシュは、キャッシュからデータを取得する。データは、サービス(例えば、サービスA)を含む1つまたは複数のポッド(例えば、ポッドA)の識別、および分散コンピューティング環境内の1つまたは複数のポッドの位置を含む。位置は、1つまたは複数のポッドを実行する特定の分散コンピューティング環境、ノード、ノードのクラスタ、ノードまたはクラスタのインスタンス、またはそれらの組み合わせを含み得る。データは、どのポッドがサービスをカプセル化しているか(例えば、サービスを管理する)、およびサービスをカプセル化しているポッドにどのように接触するか(例えば、分散コンピューティング環境内のポッドのIPアドレス)をネットワークメッシュに通知する。
【0054】
ステップ310において、ネットワークメッシュがキャッシュ内にサービス上のデータを有していない場合、ネットワークメッシュは、データレジストリに接触してサービス上のデータを取得する。データレジストリは、デジタルヘルスプラットフォーム(例えば、複数の分散コンピューティング環境)上で実行される全てのサービスに関するデータを記憶する単一の真のポイントである。キャッシュと同様に、データは、どのポッドがサービスをカプセル化しているか(例えば、サービスを管理する)、およびサービスをカプセル化しているポッドにどのように接触するか(例えば、分散コンピューティング環境内のポッドのIPアドレス)をネットワークメッシュに通知する。レジストリからネットワークメッシュによって取得されたデータは、下流の処理および将来の要求のためにキャッシュ内に記憶され得る。
【0055】
ステップ315において、ネットワークメッシュは、キャッシュまたはレジストリから取得されたデータに基づいてサービスをカプセル化する1つまたは複数のポッド(例えば、ポッドA)と通信する。通信は、1つまたは複数のポッドについてのセキュリティ規則のためのネットワークメッシュからの要求を含む。セキュリティ規則は、(i)サービスについての一意のアドレス識別子、および(ii)サービスが通信およびアクセスを許可されているサービスを定義する。例えば、ポッドAのセキュリティ規則は、サービスAおよびサービスAが通信およびアクセスを許可されているサービスについての一意のアドレス識別子を定義する。各ポッドが作成されると、各ポッドには、各ポッドによってカプセル化されたサービスと通信されてアクセスされ得る他のポッドまたはサービスを管理する規則またはポリシーが割り当てられる。1つまたは複数の規則は、デジタルヘルスプラットフォームの管理者などの管理者によって書かれてもよい。さらに、作成されると、各サービスには、一意のアドレス識別子アドレスが割り当てられる。このアドレスは、サービスの寿命に結び付けられており、サービスがアクティブである間は変化しない。ネットワークメッシュおよびポッドは、一意のアドレス識別子を介してサービスと通信し、サービスへのその通信は、規則またはポリシーによって管理され、サービスをカプセル化するポッドのインスタンスに自動的にロードバランスされ得る。
【0056】
ステップ320において、1つまたは複数のポッドについてのセキュリティ規則が、1つまたは複数のポッド(例えば、ポッドA)から取得される。1つまたは複数のポッドは、セキュリティ規則のためのネットワークメッシュからの要求を受信し、データ記憶装置からセキュリティ規則を取得し、ネットワークメッシュにセキュリティ規則を転送する。
【0057】
ステップ325において、セキュリティ規則に基づいてサービス要求がサービス(例えば、サービスA)に転送される。例えば、ネットワークメッシュは、サービスについての一意のアドレス識別子を使用して、リソース要求と通信し、リソースにリソース要求を転送する。場合によっては、ネットワークメッシュは、サービスと通信し、サービス要求をサービスに転送するために、一意のアドレス識別子およびサービスに関連付けられたプロキシを使用する。プロキシは、その後、サービス要求に関するサービスとの任意の後続の通信に使用され得る。
【0058】
ステップ330において、サービスは、サービス要求を受信して処理する。処理は、サービス要求を満たすために1つまたは複数のプログラム動作を実行するサービスを含む。例えば、サービス要求の場合、サービスは、医療データの収集、医療データの変換、医療データの通信などのサービスを提供するための1つまたは複数の動作を実行し得る。場合によっては、サービス要求を満たす一部として、サービスは、他のポッド(例えば、ポッドB)上の他のサービスと通信してアクセスする(例えば、サービスBなどの別個のデータ記憶装置からデータを取得する)必要があり得る。そのような場合、ステップ335において、サービスは、ボールトに接続して、別のポッド上の別のサービスと通信してアクセスするための秘密鍵を取得する。
【0059】
ステップ335において、ボールトは、サービスに接続し、データストアに記憶された1つまたは複数の規則またはポリシーを使用して、別のサービスへのアクセスを制御する。例えば、サービスに接続すると、ボールトは、1つまたは複数のポリシーに基づいて、サービスが別のサービスと通信してアクセスすることを許可されているかどうかを決定する。サービスがポリシーのうちの1つまたは複数に基づいて別のサービスと通信してアクセスすることを許可されている場合、ボールトは、別のサービスのセキュリティキーを取得し、ステップ340においてセキュリティキーをサービスに転送する。サービスが1つまたは複数のポリシーに基づいて別のサービスと通信してアクセスすることを許可されていない場合、ボールトは、別のサービスと通信してアクセスすることを許可されていないことをサービスに通知する。
【0060】
ステップ345において、サービスが別のサービスと通信し、別のサービスにアクセスすることを許可されている場合、サービスは、別のサービスのセキュリティキーを受信し、別のサービスへのアクセス要求にセキュリティキーを埋め込む。例えば、サービスは、サービス要求を満たすのを支援するために、1つまたは複数のプログラム動作を実行するように別のサービスに要求するアクセス要求を生成し得る。アクセス要求は、セキュリティキーを使用して署名されてもよい。
【0061】
ステップ350において、サービスは、ネットワークメッシュを用いてアクセス要求を通信する。場合によっては、サービスは、サービスに関連付けられたプロキシを介してネットワークメッシュを用いてアクセス要求を通信する。サービスは、(i)サービスがサービスについての一意のアドレス識別子を有しておらず、(ii)ネットワークメッシュが全てのサービス間通信にわたって制御およびセキュリティを維持することを可能にするため、アクセス要求をネットワークメッシュに通信する。
【0062】
ステップ355において、ネットワークメッシュは、サービスからアクセス要求を受信して処理する。アクセス要求の処理は、ステップ305~325に関して説明したサービス要求の処理と同様である(図3には示されていない)。
【0063】
ステップ360において、ネットワークメッシュは、サービスに関連付けられたポッド(例えば、ポッドA)のセキュリティ規則および別のサービスに関連付けられたポッド(例えば、ポッドB)のセキュリティ規則に基づいて、サービスから別のサービスにアクセス要求を転送する。場合によっては、ネットワークメッシュは、サービスに関連付けられたプロキシを介して、サービスからのアクセス要求を別のサービスに転送する。転送は、ネットワークメッシュが、ポッド(例えば、ポッドA)のセキュリティ規則が、別のサービス(例えば、サービスB)を、サービス(例えば、サービスA)が通信およびアクセスを許可されているサービスとして定義するかどうかを決定することと、別のポッド(例えば、ポッドB)のセキュリティ規則が、サービス(例えば、サービスA)を、別のサービス(例えば、サービスB)が通信を受信してアクセスを許可されるサービスとして定義するかどうかを決定することとを含む。別のサービス(例えば、サービスB)が、サービス(例えば、サービスA)が通信およびアクセスを許可されているサービスであり、サービス(例えば、サービスA)が、別のサービス(例えば、サービスB)が通信を受信してアクセスを許可することを許可されているサービスである場合、サービスからのアクセス要求を別のサービスに転送する。
【0064】
ステップ365において、別のサービスは、ネットワークメッシュからアクセス要求を受信し、セキュリティキーを検証する。セキュリティキーが無効である場合、別のサービスは、無効なセキュリティキーをサービスに直接通知する。セキュリティキーが有効である場合、別のサービスは、アクセス要求を処理する。処理は、サービス要求を満たすのを支援するために1つまたは複数のプログラム動作を実行する別のサービスを含む。例えば、サービス要求の場合、サービスは、医療データの収集、医療データの変換、医療データの通信などのサービスを提供するための1つまたは複数の動作を実行し得る。
【0065】
ステップ370において、別のサービスは、アクセス要求を処理した結果をサービスに直接返す。場合によっては、別のサービスは、サービスに関連付けられたプロキシを介してサービスを用いてアクセス要求の結果を通信する。
【0066】
ステップ375において、サービスは、アクセス要求の結果を受信し、アクセス要求の結果をサービス要求を処理するサービスの結果と統合して、サービス要求の最終結果を生成する。次いで、サービスは、サービス要求の最終結果をネットワークメッシュに出力してもよく、ネットワークメッシュは、サービス要求の最終結果を、例えば、ネットワークゲートウェイを介してユーザに通信する。
【0067】
図4は、集中型ネットワークメッシュを介したサービス間通信および認証のためのプロセス400を示している。ステップ405において、ネットワークメッシュは、例えばユーザから第1のサービスについてのサービス要求を受信する。場合によっては、サービス要求は、サービスについての要求であり、第1のサービスは、第1のサービスである。第1のサービスは、第1の分散コンピューティング環境上の第1のコンテナまたはコンテナの第1のセットとしてパッケージ化された1つまたは複数のクラスタ上に展開された1つまたは複数のプログラムを含んでもよく、第1のコンテナまたはコンテナの第1のセットは、1つまたは複数のクラスタ上で実行される1つまたは複数のプログラムを表す上位レベルの構造である第1のポッドとしてパッケージ化され得る。
【0068】
ステップ410において、ネットワークメッシュは、キャッシュまたはサービスレジストリから第1のサービスに関連する情報を取得する。情報は、第1のサービスを含む第1のポッドの識別および第1の分散コンピューティング環境内の第1のポッドの位置を含む。情報を取得することは、(i)第1のサービスに関連する情報がキャッシュから利用可能であるかどうかを決定することと、(ii)第1のサービスに関連する情報がキャッシュから利用可能である場合、第1のサービスに関連する情報をキャッシュから取得することと、(iii)第1のサービスに関する情報がキャッシュから利用可能でない場合、第1のサービスに関する情報をレジストリから取得することと、(iv)レジストリから第1のサービスに関連する情報を取得することに応答して、第1のサービスに関連する情報を後続の要求のためにキャッシュに記憶することと、を含み得る。
【0069】
ステップ415において、ネットワークメッシュは、第1のポッドの位置を使用して、第1のポッドについてのセキュリティ規則を取得する。セキュリティ規則は、(i)第1のサービスについての一意のアドレス識別子、および(ii)第1のサービスが通信およびアクセスを許可されているサービスを定義する。場合によっては、セキュリティ規則は、(iii)第1のサービスに利用可能なインスタンスの数、および(iv)どのインスタンスがサービス要求を処理するために利用可能であるかをさらに定義する。
【0070】
ステップ420において、ネットワークメッシュは、第1のポッドについてのセキュリティ規則に基づいて第1のサービスにサービス要求を転送する。転送することは、(i)第1のポッドについてのセキュリティ規則に基づいてサービス要求を処理するために利用可能なインスタンスを決定することと、(ii)第1のサービスについての一意のアドレス識別子を使用して、第1のサービスのインスタンスの少なくとも1つにサービス要求を転送することと、を含む。
【0071】
ステップ425において、ネットワークメッシュは、第2のサービスと通信して第2のサービスにアクセスするために、第1のサービスからアクセス要求を受信する。第2のサービスは、第1の分散コンピューティング環境または第2の分散コンピューティング環境上で第2のコンテナまたはコンテナの第2のセットとしてパッケージ化された1つまたは複数のクラスタ上に展開された1つまたは複数のプログラムを含んでもよく、第2のコンテナまたはコンテナの第2のセットは、1つまたは複数のクラスタ上で実行される1つまたは複数のプログラムを表す上位レベルの構造である第2のポッドとしてパッケージ化され得る。アクセス要求は、第2のサービスに固有のセキュリティキーを含む。セキュリティキーは、ボールトから第1のサービスによって取得され、第1のサービスは、アクセス要求にセキュリティキーを埋め込む。アクセス要求はまた、第1のサービスの代わりに1つまたは複数の動作を実行し、および/またはサービスを取得するための第2のサービスの要求を含み得る。場合によっては、アクセス要求は、サービスについての要求であり、第2のサービスは、第2のサービスである。
【0072】
ステップ430において、ネットワークメッシュは、キャッシュまたはサービスレジストリから第2のサービスに関連する情報を取得する。情報は、第2のサービスを含む第2のポッドの識別および第1の分散コンピューティング環境または第2の分散コンピューティング環境内の第2のポッドの位置を含む。場合によっては、第2のポッドは、第1の分散コンピューティング環境とは異なる第2の分散コンピューティング環境内に位置する。情報を取得することは、(i)第2のサービスに関連する情報がキャッシュから利用可能であるかどうかを決定することと、(ii)第2のサービスに関連する情報がキャッシュから利用可能である場合、第2のサービスに関連する情報をキャッシュから取得することと、(iii)第2のサービスに関する情報がキャッシュから利用可能でない場合、第2のサービスに関する情報をレジストリから取得することと、(iv)第2のサービスに関連する情報をレジストリから取得することに応答して、第2のサービスに関連する情報を後続の要求のためにキャッシュに記憶することと、を含み得る。
【0073】
ステップ435において、ネットワークメッシュは、第2のポッドの位置を使用して、第2のポッドについてのセキュリティ規則を取得する。セキュリティ規則は、(i)第2のサービスについての一意のアドレス識別子、および(ii)第2のサービスが通信およびアクセスを許可されているサービスを定義する。場合によっては、セキュリティ規則は、(iii)第2のサービスに利用可能なインスタンスの数、および(iv)どのインスタンスがアクセス要求を処理するために利用可能であるかをさらに定義する。
【0074】
ステップ440において、ネットワークメッシュは、第1のポッドについてのセキュリティ規則および第2のポッドについてのセキュリティ規則に基づいてアクセス要求を第2のサービスに転送する。転送することは、(i)第2のポッドについてのセキュリティ規則が、第2のサービスを、第1のサービスが通信およびアクセスを許可されているサービスとして定義するかどうかを決定することと、(ii)第2のポッドについてのセキュリティ規則が、第2のサービスが通信を受信してアクセスすることを許可することを許可されているサービスとして第1のサービスを定義するかどうかを決定することと、(iii)第2のサービスが、第1のサービスが通信およびアクセスすることを許可されているサービスであり、第1のサービスが、第2のサービスが通信を受信してアクセスすることを許可することを許可されているサービスである場合、第2のサービスについての一意のアドレス識別子を使用して、第1のサービスから第2のサービスにアクセス要求を転送することと、を含む。場合によっては、転送は、(iv)第2のポッドについてのセキュリティ規則に基づいてアクセス要求を処理するために利用可能なインスタンスを決定し、第2のサービスについての一意のアドレス識別子を使用して第2のサービスのインスタンスの少なくとも1つにアクセス要求を転送することをさらに含む。第2のサービスは、第1のサービスの代わりに1つまたは複数の動作を実行し、および/またはサービスを取得し得、1つまたは複数の動作の実行および/またはサービスの取得に基づいてサブ結果を生成し得る。第2のサービスは、1つまたは複数の動作を実行する前に、および/または第1のサービスに代わってサービスを取得する前に、セキュリティキーを検証し得る。
【0075】
ステップ445において、ネットワークメッシュは、第1のサービスからサービス要求の最終結果を受信する。最終結果は、第2サービスから取得されたサブ結果を含む。
【0076】
ステップ450において、ネットワークメッシュは、サービス要求の最終結果を出力し、場合によっては、最終結果を、例えばユーザに通信する。
V.さらなる考察
【0077】
本開示のいくつかの実施形態は、1つまたは複数のデータプロセッサを含むシステムを含む。いくつかの実施形態では、システムは、1つまたは複数のデータプロセッサ上で実行されると、1つまたは複数のデータプロセッサに、本明細書に開示された1つまたは複数の方法の一部または全部および/または1つまたは複数のプロセスの一部または全部を実行させる、命令を含む非一時的コンピュータ可読記憶媒体を含む。本開示のいくつかの実施形態は、1つまたは複数のデータプロセッサに、本明細書に開示された1つまたは複数の方法の一部または全部および/または1つまたは複数のプロセスの一部または全部を実行させるように構成された命令を含む非一時的機械可読記憶媒体において有形に具現化された、コンピュータプログラム製品を含む。
【0078】
使用された用語および表現は、限定ではなく説明の用語として使用され、そのような用語および表現の使用において、示されて説明された特徴のいかなる均等物またはその一部も除外する意図はないが、特許請求の範囲に記載された発明の範囲内で様々な変更が可能であることが認識される。したがって、特許請求の範囲に記載された本発明は、実施形態および任意の特徴によって具体的に開示されているが、本明細書に開示された概念の変更および変形は、当業者によってあてにされてもよく、そのような変更および変形は、添付の特許請求の範囲によって定義される本発明の範囲内にあると見なされることを理解されたい。
【0079】
その後の説明は、好ましい例示的な実施形態のみを提供し、本開示の範囲、適用可能性または構成を限定することを意図しない。むしろ、好ましい例示的な実施形態のその後の説明は、様々な実施形態を実装するための可能な説明を当業者に提供する。添付の特許請求の範囲に記載の趣旨および範囲から逸脱することなく、要素の機能および配置に様々な変更が加えられ得ることが理解される。
【0080】
実施形態の完全な理解を提供するために、以下の説明において具体的な詳細が与えられる。しかしながら、これらの具体的な詳細なしで実施形態が実施され得ることが理解されよう。例えば、回路、システム、ネットワーク、プロセス、および他の構成要素は、実施形態を不必要に詳細に不明瞭にしないために、ブロック図形式の構成要素として示されてもよい。他の例では、実施形態を不明瞭にすることを避けるために、周知の回路、プロセス、アルゴリズム、構造、および技術が不必要な詳細なしに示されてもよい。
図1
図2
図3
図4
【国際調査報告】