JP2023538870A - クラウドシェルのインスタンスにわたってデータを永続化するための技法 - Google Patents

クラウドシェルのインスタンスにわたってデータを永続化するための技法 Download PDF

Info

Publication number
JP2023538870A
JP2023538870A JP2023510338A JP2023510338A JP2023538870A JP 2023538870 A JP2023538870 A JP 2023538870A JP 2023510338 A JP2023510338 A JP 2023510338A JP 2023510338 A JP2023510338 A JP 2023510338A JP 2023538870 A JP2023538870 A JP 2023538870A
Authority
JP
Japan
Prior art keywords
volume
block volume
instance
block
service
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2023510338A
Other languages
English (en)
Other versions
JPWO2022036134A5 (ja
Inventor
カッソ,クリストファー・エス
ガバレス,ピーター・グラント
シュナイダー,リンダ・ケィ
カン,エイミー・エイチ
スナイダー,ジョセフ・ジェイ
チェン,シー-チャン
セイガー,デバセーナ・キルバ
ギルボーデ,マイケル・ウィリアム
ウェルズ,ジョン
Original Assignee
オラクル・インターナショナル・コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US16/993,973 external-priority patent/US11374792B2/en
Priority claimed from US16/993,970 external-priority patent/US11368306B2/en
Priority claimed from US17/078,835 external-priority patent/US11327673B1/en
Application filed by オラクル・インターナショナル・コーポレイション filed Critical オラクル・インターナショナル・コーポレイション
Publication of JP2023538870A publication Critical patent/JP2023538870A/ja
Publication of JPWO2022036134A5 publication Critical patent/JPWO2022036134A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/815Virtual
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0617Improving the reliability of storage systems in relation to availability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Databases & Information Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

セキュアシェルインスタンスにわたってユーザデータを永続化するための技法が提供される。本技法は、コンピュータシステムがブロックボリュームを予約する要求を受信する方法を含み、要求はセッションマネージャサービスから受信される。本方法はまた、ブロックボリュームを予約することと、ブロックボリュームのデータセンタ識別子を識別することと、ブロックボリュームのデータセンタ識別子をセッションマネージャサービスに返すことと、ブロックボリュームをボリューム管理フリートマシンにアタッチすることと、ブロックボリュームを解放する命令をセッションマネージャサービスから受信することと、ブロックボリュームに記憶されたデータを含むブロックボリュームのバックアップを作成することと、ブロックボリュームを解放することとを含む。

Description

関連出願の参照
本出願は、「TECHNIQUES FOR PERSISTING DATA ACROSS INSTANCES OF A CLOUD SHELL」と題される米国特許非仮出願17/078,835(2020年10月23日提出)、「TECHNIQUES FOR UTILIZING MULTIPLE NETWORK INTERFACES FOR A CLOUD SHELL」と題される米国特許非仮出願16/993,973(2020年8月14日提出)、および「TECHNIQUES FOR USING SIGNED NONCES TO SECURE CLOUD SHELLS」と題される米国特許非仮出願16/993,970(2020年8月14日提出)の利益および優先権を主張するものであり、これらの開示は、あらゆる目的のためにその全体が参照により組み込まれる。
背景
クラウドベースのプラットフォームは、スケーラブルで柔軟なコンピューティングリソースをユーザに提供する。そのようなクラウドベースのプラットフォームは、インフラストラクチャ・アズ・ア・サービス(IaaS)とも呼ばれ、顧客のデータの周囲のクラウドソリューションのスイート全体、例えば、変換をオーサリングし、データをロードし、データを提示するためのソリューションを提供し得る。IaaSシステムは、ユーザデータへの不正アクセスから保護するためにセキュリティプロトコルを実現し得る。
概要
クラウドシェルのインスタンスにわたるデータの永続化のための技法
セキュアシェルインスタンスにわたってユーザデータを永続化し、復元されたブロックボリュームを使用し、セッション間のインスタンスを終了するための技法が提供される(たとえば、方法、システム、1つ以上のプロセッサによって実行可能なコードまたは命令を記憶する非一時的コンピュータ可読媒体)。
ある実施形態では、ある方法は、コンピュータシステムが、ブロックボリュームを予約する要求を受信することを含み、要求はセッションマネージャサービスから受信される。本方法は、コンピュータシステムが、ブロックボリュームを予約することを含んでもよい。本方法は、コンピュータシステムが、ブロックボリュームのデータセンタ識別子を識別することを含んでもよい。本方法は、コンピュータシステムが、ブロックボリュームのデータセンタ識別子をセッションマネージャサービスに返すことを含んでもよい。本方法は、コンピュータシステムが、ブロックボリュームをアタッチすることを含んでもよい。本方法は、コンピュータシステムが、ブロックボリュームを解放するための命令をセッションマネージャサービスから受信することを含んでもよい。本方法は、コンピュータシステムが、ブロックボリュームに記憶されたデータを含むブロックボリュームのバックアップを作成することを含んでもよい。本方法はまた、コンピュータシステムが、ブロックボリュームを解放することを含んでもよい。
変形例では、要求はユーザ識別子を含んでもよく、ブロックボリュームを予約することは、登録されたブロックボリュームがユーザ識別子に対応するユーザに割り当てられているかどうかを判定することと、登録されたブロックボリュームがユーザに割り当てられていることに従って、登録されたブロックボリュームを予約することと、登録されたブロックボリュームがユーザ識別子に対応するユーザに割り当てられていないことに従って、空のボリュームのプールから空のボリュームを予約することとを含み、空のボリュームはセキュアクラウドシェルとドッキングするように予めフォーマットされる。本方法は、セッションマネージャサービスからブロックボリュームを復元するための要求を受信することと、ブロックボリュームのバックアップを使用して復元ボリュームを作成することとを含んでもよく、復元ボリュームは、ブロックボリュームに記憶されたデータを含み、本方法はさらに、復元ボリュームのデータセンタ識別子をセッションマネージャサービスに返すことを含んでもよい。ブロックボリュームのバックアップは、バックアップの識別子をさらに含んでもよく、復元ボリュームを作成することは、空のボリュームのプールから空のブロックボリュームを予約することを含んでもよく、空のブロックボリュームは、セキュアクラウドシェルとドッキングするように予めフォーマットされており、復元ボリュームを作成することはさらに、バックアップの識別子を使用してブロックボリュームのバックアップを取り出すことと、ブロックボリュームのバックアップを空のブロックボリュームにロードすることによって、空のブロックボリュームを少なくとも部分的にプロビジョニングすることと、空のブロックボリュームのデータセンタ識別子を復元ボリュームのデータセンタ識別子として識別することとを含んでもよい。ブロックボリュームのバックアップを作成することは、ブロックボリュームのディスクイメージを作成することを含んでもよい。ブロックボリュームのバックアップを作成することは、ブロックボリュームのデータをオブジェクトデータに変換することと、オブジェクトストレージシステムにオブジェクトデータを記憶することとを含んでもよい。
ある実施形態では、コンピュータシステムは、1つ以上のプロセッサと、1つ以上のプロセッサと通信するメモリとを含み、メモリは、コンピュータ実行可能命令を記憶するよう構成され、コンピュータ実行可能命令を実行することは、1つ以上のプロセッサに、上記で説明される方法のステップのうちの1つ以上を実行させる。
特定の実施形態では、コンピュータ可読記憶媒体は、実行されると、コンピュータシステムの1つ以上のプロセッサに上述の方法の1つ以上のステップを実行させるコンピュータ実行可能命令を記憶する。
署名されたノンスを使用してクラウドシェルをセキュアにするための技法
署名されたノンスを1つ以上の追加のセキュリティ動作と協調して使用して、1つ以上の端末を動作させるためにクラウドシェルをセキュアにするための技法も提供される(たとえば、方法、システム、1つ以上のプロセッサによって実行可能なコードまたは命令を記憶する非一時的コンピュータ可読媒体)。
第1の態様では、ある方法は、セッションマネージャサービスが、ユーザデバイスをセキュアシェルインスタンスへのセキュア接続に接続する要求を受信することと、セッションマネージャサービスが、ユーザデバイスを承認することと、セッションマネージャサービスが、セキュアシェルインスタンスのシェル識別子によって記述されるセキュアシェルインスタンスを構成することと、セッションマネージャサービスが、ノンストークンを生成することと、セッションマネージャサービスが、ノンストークンに署名して、署名されたノンストークンを生成することと、セッションマネージャサービスが、署名されたノンストークン、シェル識別子、およびルータアドレスをユーザデバイスに提供することとを含む。
ある例では、ユーザデバイスを承認することは、ユーザデバイスからユーザ識別子を含むログイントークンを受信することと、承認サービスに承認システム公開鍵を要求することと、承認システム公開鍵でログイントークンを復号することに少なくとも部分的に基づいてユーザデバイスを認証することと、ユーザ識別子と要求において識別されたリソースのリソース識別子と要求の満了期間とを提供することに少なくとも部分的によって、承認サービスに委任トークンを要求することと、承認サービスから委任トークンを受信することとを含み、承認サービスは、満了期間内において要求において識別されたリソースへのアクセスを承認すると委任トークンを生成するよう構成される。
ある例では、ノンストークンに署名することは、セッションマネージャサービスによって保持される公開/秘密鍵ペアのシステム秘密鍵を使用してノンストークンに署名することと、公開/秘密鍵ペアのシステム公開鍵をルータアドレスにおいてセキュアシェルルータに提供することとを含む。
ある例では、本方法は、さらに、ノンストークンをデータストアに記憶することを含み、ノンストークンはキーシーケンスを含み、本方法はさらに、ノンストークンが有効であるかどうかを、データストアをキーシーケンス上で検索することに少なくとも部分的に基づいて確認することと、セキュアシェルルータがユーザデバイスとセキュアシェルインスタンスとの間にセキュアな接続を確立した後に、データストアからノンストークンを除去することとを含む。
ある例では、本方法は、非アクティビティ期間の後、またはユーザデバイスによるセキュア接続の終了の後に、セキュアシェルインスタンスを終了することをさらに含む。
ある例では、セキュアシェルインスタンスを構成することは、ブロックボリュームを予約することと、ブロックボリュームに対応するドメイン識別子を受信することと、ドメイン識別子を使用してブロックボリューム上にインスタンスを割り当てることとを含み、インスタンスは複数の利用可能なインスタンスから割り当てられ、セキュアシェルインスタンスを構成することはさらに、インスタンスに対応するシェル識別子を受信することと、構成ファイルをインスタンス上にインストールすることとを含み、構成ファイルは、要求に含まれる要求情報を含む。
ある例では、セキュアシェルインスタンスは、要求がドッカーコンテナ上で端末を実行する命令を含むように、ドッカーコンテナを動作させる。
第2の態様では、コンピュータシステムは、1つ以上のプロセッサと、1つ以上のプロセッサと通信するメモリとを含み、メモリは、コンピュータ実行可能命令を記憶するよう構成され、コンピュータ実行可能命令を実行することは、1つ以上のプロセッサに、第1の態様および後続の例の方法の1つ以上のステップを含むステップを実行させる。
第3の態様では、非一時的コンピュータ可読記憶媒体は、実行されると、コンピュータシステムの1つ以上のプロセッサに、第1の態様および後続の例の方法の1つ以上のステップを含むステップを実行させるコンピュータ実行可能命令を記憶する。
クラウドシェルのために複数のネットワークインターフェイスを利用するための技法
異なるIaaSサブシステムを隔離する複数の仮想クラウドネットワークと協調して複数のネットワークインターフェイスを使用して、外部デバイスによる不正アクセスに対してクラウドシェルを保護するための技法がさらに提供される(たとえば、方法、システム、1つ以上のプロセッサによって実行可能なコードまたは命令を記憶する非一時的コンピュータ可読媒体)。
第1の態様では、ある方法は、コンピュータシステムによって動作を実行するためのコマンドを受信することを含み、コマンドは、プライマリ仮想ネットワークインターフェイスカード(vNIC)を介してルータから受信され、本方法はさらに、動作を実行することと、動作の出力を生成することと、セカンダリ仮想ネットワークインターフェイスカードを介してシェルサブネットに動作の出力を含むメッセージを送信することとを含み、セカンダリ仮想ネットワークインターフェイスカードは、コンピュータシステムからシェルサブネットへの単方向送信のために構成される。シェルサブネットは、動作の出力をネットワークゲートウェイを介して外部ネットワークに送信するよう構成されてもよい。
ある例では、動作は、ユーザデバイスのユーザによって要求されてもよく、動作の出力を生成することは、ユーザデバイスのために返信メッセージを生成することと、プライマリ仮想ネットワークインターフェイスカードを介してルータに返信メッセージを送信することとを含んでもよい。プライマリ仮想ネットワークインターフェイスカードは、ユーザデバイスに対する返信メッセージを受け入れ、動作の出力を含むメッセージを拒否するよう構成されてもよい。
ある例では、コンピュータシステムは、第1の仮想クラウドネットワーク内の仮想マシンであってもよく、第1の仮想クラウドネットワークは、プライベートルートコンパートメント内に構成される。
ある例では、ルータは、第2の仮想クラウドネットワーク内にあってもよく、第2の仮想クラウドネットワークは、第1の仮想クラウドネットワークとは異なり、プライベートルートコンパートメント内に構成される。
ある例では、シェルサブネットは、第3の仮想クラウドネットワーク内にあってもよく、第3の仮想クラウドネットワークは、第1の仮想クラウドネットワークとは異なり、パブリックルートコンパートメント内に構成される。
ある例では、プライベートルートコンパートメントは、プライベートルートコンパートメントからのネットワークトラフィックに帰され得る第1のブロックのIPアドレスに関連付けられてもよい。パブリックルートコンパートメントは、第2のブロックのIPアドレスに関連付けられてもよく、第2のブロックのIPアドレスは、第1のブロックのIPアドレスとは異なる。第2のブロックのIPアドレスは、コンピュータシステムの1人以上のユーザからのネットワークトラフィックに帰され得てもよい。
一例では、ネットワークゲートウェイは、コンピュータシステムの1人以上のユーザからのネットワークトラフィックに帰され得るIPアドレスのブロックのIPアドレスを使用してメッセージを送信するよう構成されたネットワークアドレス変換(NAT)ゲートウェイであってもよい。
第2の態様では、コンピュータシステムは、1つ以上のプロセッサと、1つ以上のプロセッサと通信するメモリとを含み、メモリは、コンピュータ実行可能命令を記憶するよう構成され、コンピュータ実行可能命令を実行することは、1つ以上のプロセッサに、第1の態様および後続の例の方法の1つ以上のステップを含むステップを実行させる。
第3の態様では、非一時的コンピュータ可読記憶媒体は、実行されると、コンピュータシステムの1つ以上のプロセッサに、第1の態様および後続の例の方法の1つ以上のステップを含むステップを実行させるコンピュータ実行可能命令を記憶する。
1つ以上の実施形態による、セキュアシェルインスタンスを管理するための例示的なシステムを示す図である。 1つ以上の実施形態による、セキュアシェルインスタンスのためにブロックボリュームを予約するための例示的な技法を示す図である。 1つ以上の実施形態による、セキュアシェルインスタンスからユーザデータを含むブロックボリュームを解放するための例示的な技法を示す図である。 1つ以上の実施形態による、復元されたセキュアシェルインスタンスのためにブロックボリュームを復元するための例示的な技法を示す図である。 1つ以上の実施形態による、ユーザデータを含むブロックボリュームが解放される例示的なデータフローを示すシーケンス図である。 1つ以上の実施形態による、ユーザデータが復元されたセキュアシェルインスタンスに永続化される例示的なデータフローを示すシーケンス図である。 1つ以上の実施形態による、セキュアシェルインスタンスのためにブロックボリュームを解放するための例示的なフローを示す図である。 1つ以上の実施形態による、セキュアシェルインスタンスのためにブロックボリュームを予約するための例示的なフローを示す図である。 1つ以上の実施形態による、セキュアシェルインスタンスのためにブロックボリュームを復元するための例示的なフローを示す図である。 1つ以上の実施形態による、セキュアシェルインスタンスを管理するための例示的なシステムを示す図である。 1つ以上の実施形態による、セキュアシェルセッションを管理するための例示的なシステムを示す図である。 1つ以上の実施形態による、ユーザデバイスをセキュアシェルインスタンスに接続するための例示的なシステムを示す図である。 1つ以上の実施形態による、セキュアシェルインスタンスを単回使用ノンストークンとともに構成するための例示的なシステムを示す図である。 1つ以上の実施形態による、セキュアシェルインスタンスに接続するユーザデバイスを承認するための例示的な技法を示す図である。 1つ以上の実施形態による、ユーザデバイスがセキュアシェルインスタンスに接続される例示的なデータフローを示すシーケンス図である。 1つ以上の実施形態による、承認サービスを使用してユーザデバイスがセキュアシェルインスタンスに接続される例示的なデータフローを示すシーケンス図である。 1つ以上の実施形態による、セキュアシェルセッションを管理するための例示的なフローを示す図である。 1つ以上の実施形態による、セキュアシェルインスタンスを単回使用ノンストークンとともに構成するための例示的なフローを示す図である。 1つ以上の実施形態による、セキュアシェルインスタンスのために複数のネットワークインターフェイスを利用する例示的な技法を示す図である。 1つ以上の実施形態による、セキュアシェルインスタンスの通信を管理するために複数のネットワークインターフェイスを利用する例示的なシステムを示す図である。 1つ以上の実施形態による、複数のネットワークインターフェイスを使用するセキュアシェルインスタンスによる単方向通信のための例示的な技法を示す図である。 1つ以上の実施形態による、セキュアシェルインスタンスとの双方向通信のために第1のネットワークインターフェイスを使用する例示的な技法を示す図である。 1つ以上の実施形態による、セキュアシェルインスタンスとの単方向通信のための例示的な技法を示す図である。 1つ以上の実施形態による、セキュアシェルインスタンスの通信を管理するための例示的リージョナルシステムを示す図である。 1つ以上の実施形態による、セキュアシェルインスタンスのために複数のネットワークインターフェイスを利用するための例示的フローを示す図である。 1つ以上の実施形態による、ネットワークインターフェイスを使用してセキュアシェルインスタンスと双方向通信するための例示的なフローを示す図である。 1つ以上の実施形態による、ネットワークインターフェイスを使用するセキュアシェルインスタンスからの単方向通信のための例示的なフローを示す図である。 少なくとも1つの実施形態による、サービスシステムとしてクラウドインフラストラクチャを実現するための1つのパターンを示すブロック図である。 少なくとも1つの実施形態による、サービスシステムとしてクラウドインフラストラクチャを実現するための別のパターンを示すブロック図である。 少なくとも1つの実施形態による、サービスシステムとしてクラウドインフラストラクチャを実現するための別のパターンを示すブロック図である。 少なくとも1つの実施形態による、サービスシステムとしてクラウドインフラストラクチャを実現するための別のパターンを示すブロック図である。 少なくとも1つの実施形態による、例示的なコンピュータシステムを示すブロック図である。
詳細な説明
以下の説明において、様々な実施形態が記載される。説明を目的として、実施形態についての完全な理解を与えるために、具体的な構成および詳細が述べられる。しかしながら、具体的な詳細がなくとも実施形態が実施され得ることは当業者にとって明らかである。さらにまた、周知の特徴は、記載される実施形態を不明瞭にしないために、省略または簡易化され得る。
クラウドシェルのインスタンスにわたるデータの永続化のための技法
クラウドベースのプラットフォームは、スケーラブルで柔軟なコンピューティングリソースをユーザに提供する。そのようなクラウドベースのプラットフォームは、インフラストラクチャ・アズ・ア・サービス(IaaS)とも呼ばれ、顧客のデータの周囲のクラウドソリューションのスイート全体、例えば、変換をオーサリングし、データをロードし、データを提示するためのソリューションを提供してもよい。IaaSリソースのユーザは、動作およびデータ転送がセキュアに実行され得るように、セキュアシェルインスタンス内にセキュア端末を作成することを要求してもよい(例えば、WebSocketセキュア(wss)接続を介した双方向暗号化を用いる)。
いくつかの実施形態では、シェルインスタンスは、ドッカーコンテナ(例えば、ホスト)を動作させ得、ユーザデバイスがそのドッカーコンテナ上で端末を動作させることを可能にしてもよい、専用計算インスタンスであり得る。ユーザデバイスは、単一のホストに割り当てられてもよいが、そのホスト上に複数のアクティブ端末を作成してもよい。シェルインスタンスは、非アクティブの期間の後に終了されてもよい。インスタンスはホストを動作させてもよく、ホストは次いでセキュアシェル(例えば、端末)を動作させてもよい。いくつかの実施形態では、インスタンスおよび/またはホストはまた、端末がある期間にわたってホスト上でアクティブになっていないときに終了されてもよい。
いくつかの実施形態では、インスタンスエージェントが、割り当てられたインスタンス上で動作してもよく、WebSocketトラフィックを受信すること、およびそのトラフィックをホスト上で動作するセキュアシェルに送信することを処理してもよい。インスタンスエージェントは、セキュアなWebSocket接続を開き、入力および出力をインスタンス上で動作する端末(例えば、ドッカーコンテナ上で動作するセキュアシェル)にリダイレクトするよう構成されてもよいHTTPサーバであってもよい。いくつかの実施形態では、エージェントは、ドッカーコンテナの更新されたバージョンを識別してもよく、ドッカーコンテナを開始してもよく、コンテナ内に端末を作成してもよい。いくつかの実施形態では、エージェントはさらに、セキュアシェル構成情報を含むようにドッカーコンテナを特化してもよく、特定の環境変数において通ることに少なくとも部分的によって、ドッカーコンテナ内の端末を実行してもよい。
いくつかの実施形態では、ボリュームマネージャサービスは、同じユーザの終了したインスタンスからその後に構成されたインスタンスにユーザデータを永続化し得る。ボリュームマネージャサービスは、ユーザブロックボリュームを識別し、セキュアシェルインスタンスが利用可能である場合には、それをセキュアシェルインスタンスにアタッチしてもよく、インスタンスのために、インスタンス寿命の終わりにおける終了動作の一部として、ユーザデータのバックアップを生成してもよい。バックアップ動作は、保持期間にわたるユーザデータの保持、オブジェクトストレージにおけるバックアップ、および/またはバックアップイメージ(例えば、ボリュームイメージ)を含んでもよい。ボリュームマネージャシステムは、ユーザブロックボリュームを解放する前にバックアップを作成してもよい。ボリュームマネージャサービスは、セキュアシェルインスタンスについてアイドル時間を確認するためにインスタンスエージェントに問い合わせてもよいセッションマネージャサービスと通信してもよい。セッションマネージャサービスは、アイドル時間がインスタンスの寿命を超えた後にユーザブロックボリュームを解放するようにボリュームマネージャサービスに要求してもよい。場合によっては、セッションマネージャサービスは、保持期間が経過した後にユーザブロックボリュームを解放するようにボリュームマネージャサービスに要求してもよい。保持期間は、ユーザが、ブロックストレージから新たに構成されたブロックボリュームにユーザデータを復元することなく、ユーザブロックボリュームを再アタッチすることによって、新たなセキュアシェルインスタンスを要求するとき、低減されたレイテンシを提供してもよい。
セキュアシェルインスタンスを作成することの一部としてユーザブロックボリュームを復元するために、バックアップユーザデータは、復元プロセスの一部として、オブジェクトストレージ、または他のバックアップストレージフォーマットから、転送されてもよい。例えば、ボリュームマネージャサービスは、空のブロックボリューム(例えば、セキュアシェルインスタンスへのアタッチメントのために少なくとも部分的に事前構成される)を予約してもよく、空のブロックボリュームをプロビジョニングするためにバックアップサービスによってバックアップユーザデータが転送されるよう要求してもよい。ボリュームマネージャサービスは、セキュアシェルインスタンスを構成することの一部として、復元されたユーザブロックボリュームの固有の識別子をセッションマネージャサービスに返してもよく、それによって、ユーザデータを、終了されたインスタンスから、新たな復元されたインスタンスに、永続化する。
いくつかの実施形態では、本明細書で説明する技法は、これらのリソースを作成およびアクセスするためにウェブベースの端末によって使用されてもよいソフトウェア開発者キット(SDK)にコンピュータ実行可能命令として組み込まれ得る。このようにして、SDKも、セキュアなウェブベースの端末を実現するために他のプロバイダによって使用され得る。さらに、本明細書で説明する技法は、ユーザデバイスが、改善されたセキュリティおよびレイテンシで1つ以上の端末を動作させるセキュアシェルに接続することを可能にしてもよい。例えば、バックアップを構成するために手動命令に依存するのではなく、ユーザデータを自動的に永続化することによって、セッションマネージャは、不均等なシステム負荷によって導入される非効率性、ならびにUIバックアップシステム要求によって、および(例えば、ユーザがユーザデータにアクセスしていないときに)セキュアシェルインスタンスへのユーザ接続間の期間に対してユーザブロックボリュームを維持することによって導入されるオーバーヘッドを潜在的に改善してもよい。レイテンシは、ユーザによって開始される解放に依存するのではなく、ブロックボリュームストレージ管理を自動化することによって、終了プロセスにおいて低減されてもよい。このようにして、接続要求は、所与のデータセンタまたはIaaS領域における高いシステム需要および低いストレージ可用性の期間中に予約されるべきブロックボリュームについて、より短い待ち時間に遭遇し得る。
図1は、1つ以上の実施形態による、セキュアシェルインスタンスを管理するための例示的なシステム100を示す。いくつかの実施形態では、システム100は、ユーザが計算インスタンス(例えば、仮想マシン(VM)またはドッカー)にセキュアに接続することを可能にしてもよい。セキュアアクセスは、ユーザが、IaaSシステムのVMとのリアルタイムデータ転送のために、暗号化された接続(例えば、httpsおよび/またはWebSocket Secure(wss))を介して、分散ストレージ、計算コア等を含むが、それらに限定されない、分散コンピューティングシステムリソース(例えば、インフラストラクチャ・アズ・ア・サービス(IaaS))に接続することを可能にしてもよい。いくつかの実施形態では、ユーザデバイス110は、セキュアシェルインスタンスに対する、署名された要求を生成してもよく、その署名された要求を、セッションマネージャサービス120に送信してもよい。セッションマネージャサービス120は、署名された要求を満たすことの一部として、ユーザデバイス110を検証すること、およびセキュアシェルインスタンスを構成することの一部として、動作を実行してもよい。
いくつかの実施形態では、ユーザデバイス110は、グラフィカルユーザインターフェイスコンソールまたはコマンドラインインターフェイス(CLI)を含むが、それらに限定されない、ユーザインターフェイスを使用して、署名された要求を生成してもよい。ユーザインターフェイスは、ユーザ公開/秘密鍵ペアを生成してもよい、アイデンティティ承認サービスを含む。場合によっては、ユーザ公開/秘密鍵ペアは、例えば、セッションの初期化時、セキュアVM接続の要求の生成時などに生成される一時的な鍵ペアであってもよい。ユーザデバイス110は、ユーザ公開/秘密鍵ペアの秘密鍵を使用して、署名された要求を生成してもよい。
いくつかの実施形態では、セッションマネージャサービス120は、セキュアシェルインスタンスを管理および準備することの一部として、1つ以上の承認ステップを実現してもよい。承認は、例えば、(例えば、ユーザデバイス110のアイデンティティを検証するステップとして、)署名された要求を受信すること、および公開鍵を要求し、その鍵を使用して、署名された要求の署名を検証することによって、署名された要求を検証することを含んでもよい。
いくつかの実施形態では、セッションマネージャサービス120は、セキュアシェルインスタンスを予約および構成することに少なくとも部分的によって、署名された要求を満たしてもよい。場合によっては、セッションマネージャサービス120は、ボリュームマネージャサービス130と通信して、ブロックボリューム140を予約してもよい。ボリュームマネージャサービス130は、ブロックボリューム140のドメイン識別子をセッションマネージャサービス120に返してもよい。いくつかの実施形態では、ドメイン識別子は、予約されたブロックボリューム140の地理的領域(例えば、可用性ドメイン(AD))内の1つ以上のデータセンタを記述してもよい。以下で図面を参照してより詳細に説明するように、ボリュームマネージャサービス130は、複数のセキュアシェルセッションにわたってユーザデータを永続化するための1つ以上の技法を容易にしてもよい。例えば、本技法は、場合によっては、セキュアシェルインスタンスからユーザブロックボリュームを解放し、セキュアシェルセッションを終了する前に、ボリュームマネージャサービス130によって解放要求を受信することに応答してユーザデータバックアップを生成することを含んでもよい。
いくつかの実施形態では、セッションマネージャサービス120は、ブロックボリューム140のドメイン識別子(例えば、予約されたブロックボリュームのAD)をインスタンスマネージャサービス150に提供してもよい。インスタンスマネージャサービス150は、ボリュームマネージャサービスによって提供されるADにおいて計算インスタンスを割り当ててもよい。インスタンスマネージャサービス150は、割り当てられたインスタンスについてインスタンス識別子情報(たとえば、クラウドインフラストラクチャID)をセッションマネージャサービス120に提供してもよい。計算インスタンスの割り当ては、ユーザごとおよび/またはコンパートメントごとに行われてもよい(ここで、コンパートメントは、クラウドシステムリソースへのアクセスを制御する論理コンテナであり、サブコンパートメントを含んでもよい)。例えば、セッションマネージャサービス120は、異なるコンパートメントにおいてユーザに別個のインスタンスを割り当ててもよい。対照的に、セッションマネージャサービス120は、別々のコンテナが同じ計算インスタンスを、コンパートメント当たり1つのコンテナで共有するように、複数のコンテナについて単一の計算インスタンスを割り当ててもよい(ここで、コンテナは、アプリケーションコード、ランタイム、システムツール、システムライブラリ、および設定を含んでもよいパッケージ化されたソフトウェアアプリケーションである)。
いくつかの実施形態では、セッションマネージャサービス120は、インスタンス識別子を、ルータ160のルータアドレスとともに、ユーザデバイス110に提供してもよい。ルータ160は、以下でより詳細に説明されるように、ユーザデバイスを(例えば、多重化ウェブソケット接続を介して)セキュアシェルインスタンスに接続するよう構成されてもよい。さらに、ルータはまた、ユーザデバイス110をセキュアシェルインスタンスにセキュアに接続することの一部として、ユーザデバイス110およびセッションマネージャサービス120を検証するよう構成されてもよい。
いくつかの実施形態では、セッションマネージャサービス120は、セキュアシェルインスタンスへのユーザデバイス110のセキュア接続の承認および検証の一部として、ノンストークンを生成してもよい。いくつかの実施形態では、ノンストークンは、限定はしないが、ヘッダ、有効期間(たとえば、満了前の分単位)、鍵、および/またはランダム文字列(例えば、セット長の英数字シーケンス)を含む情報を含むウェブトークン(例えば、JavaScriptオブジェクト表記「json」ウェブトークン(jwtトークン))であってもよい。場合によっては、ノンストークンが生成され、インスタンス識別子およびルータアドレスとともにユーザデバイス110に提供される。
セキュアシェルインスタンスを構成することの一部として、セッションマネージャサービス120は、以下の図を参照してより詳細に説明されるように、利用可能なインスタンス180のプールから既存のインスタンスを選択し、構成してもよい。場合によっては、セッションマネージャサービスは、選択されたインスタンスに構成ファイルおよび委任トークンをインストールしてもよい。構成は、限定はしないが、インスタンス識別子、ドメイン識別子、要求詳細(例えば、リソース割り当て、コンパートメント、テナンシ)などを含むパラメータ情報を含んでもよい。委任トークンは、インスタンス上のユーザのシェル環境にインストールされてもよい。トークンは、ユーザが認証されたことの証拠を提供してもよく、ユーザが、再認証の必要なく、自分のアカウントに対してコマンドを実行することを可能にしてもよい。いくつかの実施形態では、IaaSシステムは、委任トークンがユーザのシェル環境にインストールされていないユーザアカウントに対して実行されるCLIコマンドを拒否してもよい。
いくつかの実施形態では、セッションマネージャサービス120によってインストールされた構成パラメータは、インスタンス構成ストア190に記憶されてもよい。インスタンス構成ストア190は、新たなセキュアシェルインスタンスが、セキュアシェルインスタンスの終了に続いて、要求パラメータを用いて復元および/または再構成されることを可能にしてもよい。いくつかの実施形態では、セキュアシェルインスタンスは、ユーザがセキュアシェルインスタンスの使用を完了すると、終了されることになる。いくつかの実施形態では、セッションマネージャサービス120は、エージェントの非アクティビティの期間(例えば、アイドル時間)および/またはルータ160を介したアクティビティの期間に基づいて、セキュアシェルインスタンスを終了するようにインスタンスマネージャサービス150に命令してもよい。アイドル時間は、構成パラメータの一部として提供されてもよい。いくつかの実施形態では、ユーザデバイス110のユーザは、セキュアシェルインスタンスが終了されるように要求してもよく、それは、セッションマネージャサービス120によって実現されてもよい。
上述のように、例示的なシステム100は、少なくともユーザデバイスがコンソールおよび/またはコマンドラインインターフェイスからセキュアシェルインスタンスに接続することを可能にすることによって、IaaSシステムの改善されたセキュリティおよび安定性を提供してもよい。ユーザブロックボリュームを維持するのではなく、インスタンス復元動作中にユーザデータを永続化することは、潜在的に損なわれ得るブロックボリュームを維持するのではなく、使用されていないときに読出/書込アクセスなしにデータを保持するシステムサービスからデータを復元することによって、コンテナからのブレークアウトの潜在的な影響を低減してもよい。
例示的システム100はさらに、ユーザデータ永続化技法を実現することによって、IaaSシステムのセキュリティおよび性能を改善してもよい。例えば、ユーザデータバックアップを生成し、復元要求の受信に応答して復元ボリュームを生成することは、ユーザブロックボリュームを維持することに関連付けられるシステムリソース使用を低減し得る。代わりに、バックアップは、復元されたセキュアシェルセッションのためにデータが要求されるまで、低オーバーヘッドストレージフォーマット(たとえば、ディスクイメージなど)で記憶されてもよい。同様に、ユーザブロックボリュームを維持することは、システム100が侵害された場合に、あるレベルのリスクを呈し得る。例えば、読出/書込動作を許可しないシステムにおいて、長期ストレージにおいてユーザデータをバックアップとして保持することは、セキュアシェルセッション間でユーザデータへの不正アクセスのリスクを低減し得る。
図2は、1つ以上の実施形態による、セキュアシェルインスタンスのためにブロックボリュームを予約するための例示的な技法200を示す。上記で図1を参照してより詳細に説明したように、シェルインスタンスを予約および構成することの一部として、セッションマネージャサービス120は、図1の例示的なシステム100の構成サービスと協調して1つ以上の動作を実行してもよい。
いくつかの実施形態では、セッションマネージャサービスは、ユーザ要求を承認および検証することに関して上述したように、セキュアシェルに接続する要求をユーザデバイスから受信してもよい(例えば、動作202)。ユーザ要求の受信に応答して、セッションマネージャサービス120は、ボリュームマネージャサービス130と協調してボリュームを予約してもよい(例えば、動作204)。ボリュームを予約することは、ボリュームマネージャサービス130が、1つ以上のブロックボリュームがユーザデバイス110のユーザにすでに関連付けられ、および/または割り当てられており(たとえば、ユーザブロックボリューム230)、セキュアシェルインスタンス250をホストするために利用可能であるかどうか、を確認すること(たとえば、動作206)を含むが、それに限定されないステップを伴ってもよい。これは、ボリュームマネージャサービス130によって管理されるブロックボリュームのレジストリに対してユーザ識別子(例えば、ユーザ名またはログインID)をチェックすることを含んでもよい。ユーザブロックボリューム230が識別された場合、ドメイン識別子情報(例えば、リソースID、データセンタインフラストラクチャロケータなど)がセッションマネージャサービス120に返されて、ボリュームがセキュアシェルインスタンス250をホストするために予約されたことを示してもよい(例えば、動作208)。
ボリュームマネージャサービス130は、ユーザブロックボリューム230がセキュアシェルインスタンス250にアタッチするために利用可能でないことを見出し得る。いくつかの実施形態では、ボリュームマネージャサービス130は、ユーザがまだ割り当てられていない場合がある、所与のデータセンタおよび/またはIaaS領域で利用可能なブロックボリューム140のうちの1つ以上を含んでもよい、空のブロックボリューム240を予約してもよい。同様に、ボリュームマネージャサービス130は、セッションマネージャサービス120が後続の動作において実現するためのリソース識別子情報を提供してもよい。例えば、セッションマネージャサービス120は、ボリュームマネージャサービス130によって返されるブロックボリューム140においてインスタンスを割り当ててもよい(例えば、動作210)。
いくつかの実施形態では、インスタンスを割り当てることは、ドメイン識別子をインスタンスマネージャサービス150に提供することを含んでもよい。図1を参照してより詳細に説明されるように、インスタンスマネージャサービス150は、セキュアシェルインスタンスとしての使用のために少なくとも部分的に事前構成されてもよいいくつかの利用可能なインスタンス(例えば、図1のインスタンス180)の一部として維持される既存のインスタンスを選択し、予約してもよい。インスタンスマネージャサービス150は、セッションマネージャサービス120にインスタンス識別子(例えば、インスタンスID)を返してもよく、これは、セッションマネージャサービス120が後続の動作において、選択されたインスタンスを識別することを可能にしてもよい。いくつかの実施形態では、接続要求を実現するときにインスタンスを作成および構成するのではなく、既存のインスタンスを選択し、予約することは、接続要求を処理する際のシステムレイテンシを潜在的に低減し得る。
図3は、1つ以上の実施形態による、セキュアシェルインスタンスからユーザデータを含むブロックボリュームを解放するための例示的な技法300を示す。図1のシステム100の1つ以上のサブシステム(例えば、セッションマネージャサービス120、ボリュームマネージャサービス130、およびインスタンスマネージャサービス150)は、セキュアシェルインスタンス(例えば、図2のセキュアシェルインスタンス250)を終了および/または復元することに関連付けられる動作を実行してもよい。例えば、ユーザデバイス(例えば、図1のユーザデバイス110)のユーザがセキュアシェルインスタンスから切断することを要求するときに、セキュアシェルセッションを終了させることは、以下で説明されるように、セキュアシェルインスタンスからユーザブロックボリュームをデタッチすること、ならびに1つ以上の追加および/または代替動作を含んでもよい。
いくつかの実施形態では、セッションマネージャサービス120は、インスタンスエージェント350にアイドル時間を要求する(例えば、動作302)。上述のように、インスタンスエージェント350は、セキュアなWebSocket接続を開き、入力および出力をインスタンス上で動作する端末(例えば、ドッカーコンテナ上で動作するセキュアシェル)にリダイレクトするよう構成されてもよいHTTPサーバであってもよい。いくつかの実施形態では、エージェントは、ドッカーコンテナの更新されたバージョンを識別してもよく、ドッカーコンテナを開始してもよく、コンテナ内に端末を作成してもよい。いくつかの実施形態では、エージェントはさらに、セキュアシェル構成情報を含むようにドッカーコンテナを特化してもよく、特定の環境変数において通ることに少なくとも部分的によって、ドッカーコンテナ内の端末を実行してもよい。
いくつかの実施形態では、セッションマネージャサービス120は、閾値時間を超える最後の接続からある期間が経過した後、および/またはセキュアシェルインスタンスを切断もしくは終了するためのユーザ要求の後、セキュアシェルインスタンスを終了するよう構成されてもよい。いくつかの実施形態では、セッションマネージャサービス120は、インスタンスエージェント350によって返されたアイドル時間がセキュアシェルインスタンスの構成された寿命を超えた後、セキュアシェルインスタンスを終了する要求をインスタンスマネージャサービス150に送信してもよい(例えば、動作304)。それに応答して、インスタンスマネージャサービス150は、(例えば、インスタンスエージェント350と協調して)セキュアシェルインスタンスを終了するための追加の動作を実施してもよい。
終了動作の一部として、ボリュームマネージャサービス130は、ブロックボリュームを解放する要求を受信してもよい(例えば、動作308)。いくつかの実施形態では、ブロックボリューム(例えば、図1のブロックボリューム140)は、ユーザデバイス(例えば、図1のユーザデバイス110)のユーザにとって有益であってもよい、セキュアシェルセッション中に生成および/または記憶されたユーザデータを含んでもよい。このようにして、ボリュームマネージャサービス130は、ブロックボリュームのバックアップを作成すること(例えば、動作310)を含むがこれに限定されない、セキュアシェルインスタンスの終了を容易にするための1つ以上の動作を実施してもよい。
いくつかの実施形態では、ボリュームマネージャサービス130は、バックアップサービス340を使用してバックアップを作成してもよい。バックアップサービスは、ブロックストレージサービス342、オブジェクトストレージサービス344、ボリュームイメージサービス346などを含むがこれらに限定されない外部IaaSリソースを含んでもよい。いくつかの実施形態では、ボリュームマネージャサービス130は、バックアップを作成するのではなく、保持期間中にユーザブロックボリュームを維持してもよい。保持期間は、バックアップの作成を要求することなくユーザブロックボリュームを再アタッチすることによって、またはブロックストレージから新たに構成されたブロックボリュームにユーザデータを復元することによって、ユーザが新たなセキュアシェルインスタンスを要求するときにレイテンシを低減してもよい。
いくつかの実施形態では、ボリュームマネージャサービス130は、バックアップがオブジェクトストレージシステムへの転送のためにフォーマットされるように、オブジェクトストレージサービス344を使用してバックアップを作成してもよい。ブロックボリュームストレージとは対照的に、オブジェクトストレージは、データをチャンクオブジェクトとしてデータストアに記憶することを可能にすることによって、IaaSシステムオーバーヘッドを潜在的に低減し、ユーザブロックボリュームを維持するために必要とされるリソースを低減してもよい。いくつかの実施形態では、オブジェクトストレージサービス344は、セキュアシェルセッション復元プロセスにレイテンシを導入し得る追加のデータフォーマット変換動作を導入するにもかかわらず、バックアップが、システムリソースに関して、より低いコストのために、ユーザデータを記憶することを可能にしてもよい。
いくつかの実施形態では、ボリュームマネージャサービス130は、(例えば、ボリュームイメージサービス346を使用して)ボリュームイメージを作成することによってバックアップを作成してもよい。ボリュームイメージ(例えば、ブロックボリュームのディスクイメージ)は、コンピュータファイルとして、ボリュームの内容および構造を含んでもよい。ボリュームイメージは、元のブロックボリュームの構造を保存するブロックのマニフェストとともにコピーを生成することによって作成されてもよい。場合によっては、ボリュームイメージは、ブロックボリュームに対して圧縮されて、イメージのサイズをブロックボリュームに記憶されたデータのサイズに潜在的に縮小してもよい(例えば、ブロックボリューム内の余剰または未使用の予約された容量を省略する)。ボリュームイメージは、ユーザデータが、複数のブロックおよび/またはチャンクオブジェクトをプロビジョニングすることを含む復元手順ではなく、単一のファイルから復元されることを可能にしてもよい。したがって、それは、セキュアシェルセッション間でユーザデータのためにブロックボリュームを維持しないことに少なくとも部分的に起因して、潜在的に低減されたレイテンシおよび低減されたリソース需要を伴うシステム復元動作を可能にしてもよい。
図4は、1つ以上の実施形態による、復元されたセキュアシェルインスタンスのためにブロックボリュームを復元するための例示的な技法400を示す。図1のシステム100の1つ以上のサブシステム(例えば、セッションマネージャサービス120、ボリュームマネージャサービス130、およびインスタンスマネージャサービス150)は、セキュアシェルインスタンス(例えば、図2のセキュアシェルインスタンス250)を終了および/または復元することに関連付けられる動作を実行してもよい。セキュアシェルインスタンスを復元することは、新たなセキュアシェルインスタンスを空のブロックボリュームとともに作成することと、空のブロックボリュームにバックアップデータをプロビジョニングすること(空のブロックボリュームの「ハイドレーション」とも呼ばれる)とを含んでもよい。
いくつかの実施形態では、セッションマネージャサービス120は、上記で図1を参照してより詳細に説明されるように、セキュアシェルインスタンスに接続する要求をユーザデバイス110から受信してもよい(例えば、動作402)。技法400の復元動作では、ユーザ要求は、セッションマネージャサービス120が、初期構成および/またはセキュアシェルインスタンスへの接続ではなく、終了動作(例えば、図3の技法300)を要求した後セキュアシェルインスタンスに再接続するための要求を含んでもよい。
いくつかの実施形態では、セッションマネージャサービス120は、上記で図2を参照してさらに詳細に説明されるように、セキュアシェルインスタンスにアタッチするためにブロックボリューム140を予約するようにボリュームマネージャサービスに要求してもよい。ユーザブロックボリュームを検索する代わりに、前述のように、ボリュームマネージャサービス130は、空のブロックボリューム240を予約してもよい(例えば、動作404)。空のブロックボリューム240は、例えば、ブロックボリュームのプールの一部として、セキュアシェルインスタンスにアタッチするために、事前構成されてもよい。
ボリュームマネージャサービス130は、空のブロックボリューム240にバックアップユーザデータ430をプロビジョニングしてもよい(例えば、動作406)。図2を参照してより詳細に説明されるように、バックアップユーザデータ430は、ブロックストレージおよびオブジェクトストレージを含むが、それらに限定されない、いくつかの異なるデータフォーマットで、例えば、ディスクイメージとして(例えば、単一ファイルとして)記憶されてもよく、または複数のデータサブユニット(例えば、ブロック、オブジェクト等)に分散されてもよい。いくつかの実施形態では、ボリュームマネージャサービス130は、予約された空のブロックボリュームがバックアップサービス(例えば、図3のバックアップサービス340)を使用してバックアップユーザデータ430をプロビジョニングされることを要求してもよい。いくつかの実施形態では、バックアップサービスは、分散ストレージシステム(例えば、クラウドストレージシステム)を介したバックアップユーザデータ430(例えば、ブロック)の転送を容易にしてもよい。いくつかの実施形態では、空のブロックボリューム240をプロビジョニングすることは、上記で図3を参照してより詳細に説明したように、(例えば、バックアップがオブジェクトデータとして記憶される場合、)バックアップユーザデータ430をオブジェクトデータからブロックデータに再フォーマットすることを含んでもよい。
いくつかの実施形態では、ボリュームマネージャサービス130は、バックアップユーザデータ430がプロビジョニングされる空のブロックボリュームのデータセンタ(例えば、AD)識別子を識別してもよい(例えば、動作408)。データセンタ識別子を識別することは、バックアップユーザデータ430が記憶されるシステムを識別してもよい、IaaSインフラストラクチャ(例えば、データセンタ)内の空のブロックボリューム240のハードウェアアドレスを確認することを含んでもよい。識別されると、ボリュームマネージャサービス130は、データセンタ識別子をセッションマネージャサービス120に返してもよい(例えば、動作410)。セッションマネージャサービス120は、上記で図1~図2を参照してより詳細に説明したように、セキュアシェルインスタンスを構成および作成することの一部として、データセンタ識別子を使用してインスタンスマネージャサービス(例えば、図1のインスタンスマネージャサービス150)に提供してもよい。
図5は、1つ以上の実施形態による、ユーザデータを含むブロックボリュームが解放される例示的なデータフロー500を示すシーケンス図を示す。ユーザデバイス110のユーザは、セキュアシェルインスタンスに接続するように要求し、セッションマネージャサービス120は、ボリュームを予約するようにボリュームマネージャサービスに要求する。セッションマネージャサービス120は、セキュアシェルインスタンスを終了すると判断した後、ボリュームマネージャサービス130にブロックボリュームを解放するように要求する。
データフロー500では、ユーザデバイス110(これは、図1のユーザデバイス110の例であってもよい)は、図1~図2を参照してより詳細に説明されるように、セキュアシェルインスタンスに接続するための要求を提出してもよく、それは、セッションマネージャサービス120によって受信されてもよい。要求を受信すると、セッションマネージャサービス120は、上記で図を参照してより詳細に説明されるように、シェルインスタンスを構成してもよい。シェルインスタンスを構成することは、ボリュームを予約すること、セキュアシェルインスタンスを構成する目的で作成されるいくつかの利用可能なインスタンスからインスタンスを割り当てること、および割り当てられたインスタンス上に構成ファイルをインストールすることを含むが、それらに限定されない、複数の動作を含んでもよい。
ボリュームを予約することは、図2および図4を参照してより詳細に説明されるように、ボリュームマネージャサービス130にブロックボリュームを予約することを要求することを含む1つ以上の動作を含んでもよい。例えば、ブロックボリュームを予約することは、ユーザデータを含むユーザブロックボリューム(例えば、図2のユーザブロックボリューム230)について既存のブロックボリュームを検索することと、ユーザブロックボリュームのデータセンタ識別子をセッションマネージャサービス120に返すこととを含んでもよい。場合によっては、ユーザブロックボリュームがボリュームマネージャサービス130によって見つからない場合のように、ボリュームマネージャサービスは、予約されたブロックボリューム(例えば、図2の空のブロックボリューム240)のデータセンタ識別子(たとえば、AD識別子)を識別し、返してもよい。
シェルインスタンスを構成することは、セッションマネージャサービス120が、インスタンスマネージャサービスからシェルインスタンス識別子(たとえば、IaaSリソース識別子)を受信することを含んでもよい。図1~図2を参照してより詳細に説明されるように、インスタンスは、予約されたボリュームがそれにアタッチされてもよい、少なくとも部分的に事前構成されたインスタンスのプールから予約されてもよい。予約されたボリュームをアタッチすることは、例えば、ボリュームマネージャサービス130にボリュームをアタッチすることを要求する、1つ以上の動作を含んでもよい。セッションマネージャサービス120による要求に応答して、ボリュームマネージャサービス130は、ボリュームをアタッチし、確認をセッションマネージャサービス120に返してもよい。
セッションマネージャサービス120が、セキュアシェルインスタンスがアイドルである、および/またはユーザデバイス110のユーザがセキュアシェルインスタンスを終了するように要求する、と判断すると、セッションマネージャサービス120は、図3を参照してより詳細に説明されるように、ブロックボリュームを解放するようにボリュームマネージャサービス130に要求してもよい。ブロックボリュームを解放することの一部として、ボリュームマネージャサービスは、ブロックボリュームに含まれるユーザデータのバックアップを作成してもよい。ボリュームマネージャサービスは、バックアップ動作の一部として、バックアップ識別子をバックアップサービス340から受信してもよい。いくつかの実施形態では、バックアップ動作は、図3を参照してより詳細に説明されるように、バックアップサービスによって実行されてもよい。
ブロックボリュームを解放することは、ブロックボリュームからユーザデータを削除して(例えば、再フォーマットして)、記憶容量をブロックボリュームの将来の構成のために可用性に戻すことを含んでもよい。ブロックボリュームを解放することの一部として、ボリュームマネージャサービス130は、ブロックボリュームがセッションマネージャサービス120に解放されたことを確認してもよい。
図6は、1つ以上の実施形態による、復元されたセキュアシェルインスタンスにユーザデータが永続化される例示的なデータフロー600を示すシーケンス図を示す。ユーザデバイス110のユーザは、セキュアシェルインスタンスへの接続および/または再接続を要求し、セッションマネージャサービス120は、ユーザボリュームを復元するようにボリュームマネージャサービス130に要求してもよい。ボリュームマネージャサービス130は、復元ボリュームをプロビジョニングするために、バックアップサービス340と協調してもよい。
データフロー600において、セッションマネージャサービス120は、ユーザデバイス110から接続要求を受信してもよい。図3を参照してより詳細に説明されるように、ユーザデバイス110が以前にセキュアシェルインスタンスに接続され、そのインスタンスからのデータがバックアップに記憶されているとき、セッションマネージャサービス120は、復元要求をボリュームマネージャサービス130に送信してもよい。復元要求は、ユーザデバイス110のユーザおよび/またはバックアップユーザデータを記述する情報(例えば、ユーザ識別子、ユーザ名、最終セッション識別子、バックアップ識別子など)を識別すること含んでもよい。
ボリュームマネージャサービス130は、既存のユーザブロックボリューム(例えば、図2のユーザブロックボリューム230)を検索する代わりに、空のブロックボリューム(例えば、図2の空のブロックボリューム240)を予約してもよい。図2を参照して説明した動作とは対照的に、ボリュームマネージャサービス130は、ユーザバックアップデータ(例えば、図4のユーザバックアップデータ430)を復元するためのプロビジョニングプロセスの一部として、バックアップ識別子をバックアップサービス340に提供してもよい。
復元ボリュームをプロビジョニングすることは、バックアップサービス340によってバックアップストレージシステムから空のブロックボリュームにバックアップデータを転送することを含んでもよい。これは、ユーザブロックボリュームを再生するためにデータの構造を復元することを含んでもよい。ボリュームマネージャサービス130は、空のブロックボリュームのデータセンタ識別子をバックアップサービス340に提供してもよく、バックアップサービスは、空のボリュームにバックアップデータをプロビジョニングしてもよい。いくつかの実施形態では、ボリュームマネージャサービス130は、バックアップデータ識別子をバックアップサービス340に提供し、対応するユーザバックアップデータを受信し、データを予約されたブロックボリュームに復元することによって、プロビジョニング動作を実行してもよい。
プロビジョニングされると、ボリュームマネージャサービス130は、復元ボリューム識別子をセッションマネージャサービス120に提供してもよく、それは、空のブロックボリュームのデータセンタ識別子に対応してもよい。この識別子を使用して、セッションマネージャサービス120は、事前構成されたインスタンスのプールからインスタンスを予約すること、および予約されたインスタンスに復元ボリュームをアタッチするようにボリュームマネージャサービス130に要求することを含むが、それらに限定されない、図2を参照してより詳細に説明されるような動作を実行してもよい。ボリュームマネージャサービス130は、場合によっては、セッションマネージャサービス120に確認を返すことによって復元ボリュームのアタッチメントを確認してもよい。
図7は、1つ以上の実施形態による、セキュアシェルインスタンスのためにブロックボリュームを解放するための例示的なフローを示す図である。フローの動作は、ハードウェア回路として実現され、および/または図1のボリュームマネージャサービス130などのコンピュータシステムの非一時的コンピュータ可読媒体上にコンピュータ可読命令として記憶され得る。実現されると、命令は、コンピュータシステムのプロセッサによって実行可能な回路またはコードを含むモジュールを表す。そのような命令の実行は、本明細書で説明される特定の動作を実行するようコンピュータシステムを構成する。各回路またはコードは、プロセッサと組み合わせて、それぞれの動作を実行する。動作は、ある特定の順序で示されているが、特定の順序は必要ではなく、1つ以上の動作は省略され、スキップされ、および/または並べ替えられてもよいことを理解されたい。
ある例では、フロー700は、コンピュータシステムがブロックボリュームを予約する要求を受信する動作702を含む。図2を参照してより詳細に説明されるように、要求は、セキュアシェルインスタンス(例えば、図2のセキュアシェルインスタンス250)に接続するための、ユーザデバイス(例えば、図1のユーザデバイス110)からの要求に応答して、セッションマネージャサービス(例えば、図1のセッションマネージャサービス120)によって生成されてもよい。要求は、ユーザデバイス110に関連付けられたユーザ識別子(例えば、ユーザ名、ログインID、セッションID、ネットワークアドレスなど)を含んでもよい。
ある例では、フロー700は、コンピュータシステムがブロックボリュームを予約する動作704を含む。ブロックボリュームを予約することは、以下で図8を参照してより詳細に説明されるように、ユーザブロックボリューム(例えば、図2のユーザブロックボリューム230)が、ボリュームマネージャサービスが接続されるIaaSシステムのブロックボリュームストレージシステムによって維持されているかどうかを、ボリュームマネージャサービスが確認することを含んでもよい。そうでない場合、ボリュームマネージャサービスは、空のブロックボリューム(例えば、図2の空のブロックボリューム240)を予約してもよい。
ある例では、フロー700は、コンピュータシステムがブロックボリュームのデータセンタ識別子を識別する動作706を含む。データセンタ識別子は、ブロックボリューム(例えば、図1のブロックボリューム140)を維持するIaaSストレージリソース(例えば、ネットワーク化されたストレージインフラストラクチャ)を記述してもよく、IaaSシステムの単一のデータセンタ(例えば、特定の地理的領域における設備)に固有であってもよい。
ある例では、フロー700は、コンピュータシステムがブロックボリュームのデータセンタ識別子を返す動作708を含む。ボリュームマネージャシステムは、動作708の一部として識別された予約されたブロックボリュームのデータセンタ識別子をセッションマネージャサービスに提供してもよい。セッションマネージャサービスは、次に、図1~図2を参照してより詳細に説明されるように、セキュアシェルインスタンスを構成することの一部として、予約されたブロックボリュームのデータセンタ識別子をインスタンスマネージャサービス(例えば、図1のインスタンスマネージャサービス150)に提供してもよい。
ある例では、フロー700は、コンピュータシステムがブロックボリュームをアタッチする動作710を含む。ボリュームマネージャサービスは、セキュアシェルインスタンスを作成する際に使用するためにインスタンスマネージャサービスによって選択された、部分的に事前構成されたインスタンス(例えば、図1のインスタンス180)のプールから割り当てられたインスタンスに、予約されたブロックボリュームをアタッチしてもよい。
ある例では、フロー700は、コンピュータシステムがブロックボリュームを解放する命令を受信する動作712を含む。ボリュームマネージャサービスは、セッションマネージャサービスが、セキュアシェルインスタンスについて、セキュアシェルインスタンスの寿命を超えるアイドル時間を確認した後に、図3を参照してより詳細に説明されるように、セッションマネージャサービスから要求を受信してもよい。いくつかの実施形態では、ユーザデバイスのユーザは、セキュアシェルインスタンスを終了するように要求してもよい。セッションマネージャサービスは、コアIaaSリソースおよびユーザデータを潜在的に保護するために、セキュアシェルインスタンスを終了すること、例えば、セキュアシェルインスタンスを(例えば、ドッカーコンテナとして)ドッカーから切断すること、インスタンスを削除すること、およびブロックボリュームから計算リソースを関連付け解除することに関連付けられる複数の動作のうちの1つとして、予約されたブロックボリュームを解放するように、ボリュームマネージャサービスに要求してもよい。
いくつかの実施形態では、保持時間が、ユーザブロックボリュームデータが維持および/または保持されてもよいセキュアシェル終了に続いてもよい。ユーザブロックボリュームデータの保持は、例えば、オブジェクトストレージなどのバックアップからユーザデータを復元することなく、ユーザブロックボリュームデータを新たなセキュアシェルインスタンスにアタッチすることによって、新たなセキュアシェルインスタンスを初期化することに関連付けられるレイテンシを低減してもよい。いくつかの実施形態では、保持時間は、数時間または数日間、例えば、12時間、24時間、36時間、48時間、72時間などを含んでもよい。いくつかの実施形態では、保持時間は、アイドル時間の終了から計算されてもよく、セキュアシェルインスタンスタイムアウトがインスタンスの終了をトリガするようにしてもよいが、ユーザブロックボリュームは、アイドルタイムアウト後、保持期間(例えば、72時間)が経過するまで、保持されてもよい。
ある例では、フロー700は、コンピュータシステムがブロックボリュームのバックアップを作成する動作714を含む。ボリュームマネージャサービスは、ブロックボリュームの解放の一部として、バックアップの作成を要求してもよい。バックアップは、図3を参照してさらに詳細に説明されるように、ブロックストレージ、オブジェクトストレージおよび/またはボリュームイメージとして、含むが、それらに限定されない、異なるフォーマットで、作成されてもよい。バックアップデータ(例えば、図4のユーザバックアップデータ430)は、ボリュームマネージャサービスが通信するIaaSコアサービスであってもよいバックアップサービス(例えば、図3のバックアップサービス340)によって作成されてもよい。
ある例において、フロー700は、コンピュータシステムがブロックボリュームを解放する動作716を含む。ボリュームマネージャサービスは、ボリュームを再フォーマットすること(例えば、ブロックボリュームに記憶されたデータをクリアすること)、および他の使用のために利用可能であるとブロックボリュームとともに以前に識別されたストレージリソースを関連付け解除することに、少なくとも部分的によって、ブロックボリュームを解放してもよい。セキュアシェルインスタンスを終了した後の保持時間中のように、ユーザブロックボリュームを維持するのとは対照的に、ブロックボリュームを解放することは、ユーザがセキュアシェルインスタンスに接続されていない期間中にユーザブロックボリュームを維持することに専用のリソースを潜在的に低減することによって、本明細書で説明されるIaaSシステムが、低減された計算オーバーヘッドで動作することを可能にしてもよい。
図8は、1つ以上の実施形態による、セキュアシェルインスタンスのためにブロックボリュームを予約するための例示的なフローを示す図である。フローの動作は、ハードウェア回路として実現され、および/または図1のボリュームマネージャサービス130などのコンピュータシステムの非一時的コンピュータ可読媒体上にコンピュータ可読命令として記憶され得る。実現されると、命令は、コンピュータシステムのプロセッサによって実行可能な回路またはコードを含むモジュールを表す。そのような命令の実行は、本明細書で説明される特定の動作を実行するようコンピュータシステムを構成する。各回路またはコードは、プロセッサと組み合わせて、それぞれの動作を実行する。動作は、ある特定の順序で示されているが、特定の順序は必要ではなく、1つ以上の動作は省略され、スキップされ、および/または並べ替えられてもよいことを理解されたい。
一例では、フロー800は、ブロックボリュームを予約する要求を受信したこと(例えば、図7の動作702)に応答してボリュームマネージャサービスによって実行されてもよい1つ以上の動作を含む。したがって、フロー800は、動作702を含み、それによって、ボリュームマネージャサービスは、セッションマネージャサービス(例えば、図1のセッションマネージャサービス120)からブロックボリュームを予約する要求を受信する。
ある例において、フロー800は、コンピュータシステムが、登録されたブロックボリュームが割り当てられているかどうかを判定する動作804を含む。登録されたブロックボリュームは、ユーザデバイス(例えば、図1のユーザデバイス110)のユーザに関連付けられるブロックボリュームであってもよい。したがって、動作804は、ユーザブロックボリューム(例えば、図2のユーザブロックボリューム230)が、ボリュームマネージャサービスが接続されているIaaSシステムのブロックボリュームストレージシステムによって維持されているかどうかを、ボリュームマネージャサービスが確認することを含んでもよい。
ある例では、フロー800は、コンピュータシステムが、登録されたブロックボリュームが割り当てられていることに応じて、その登録されたブロックボリュームを予約する動作806を含む。動作804がユーザブロックボリュームのデータセンタ識別子を返す場合、ボリュームマネージャサービスは、セキュアシェルインスタンスへのアタッチメントのためにユーザブロックボリュームを予約してもよい。
ある例では、フロー800は、コンピュータシステムが、登録されたブロックボリュームが割り当てられていないことに応じて、空のボリュームを予約する動作808を含む。動作806とは対照的に、ユーザブロックボリュームが利用不可であるとき、ボリュームマネージャサービスは、空のブロックボリューム(例えば、図2の空のブロックボリューム240)を予約してもよい。空のブロックボリュームは、セキュアな計算インスタンスへのアタッチメントのために1つ以上の設定および/または構成パラメータを用いて少なくとも部分的に事前構成されてもよい。
図9は、1つ以上の実施形態による、セキュアシェルインスタンスのためにブロックボリュームを復元するための例示的なフロー900を示す。フローの動作は、ハードウェア回路として実現され、および/または図1のボリュームマネージャサービス130などのコンピュータシステムの非一時的コンピュータ可読媒体上にコンピュータ可読命令として記憶され得る。実現されると、命令は、コンピュータシステムのプロセッサによって実行可能な回路またはコードを含むモジュールを表す。そのような命令の実行は、本明細書で説明される特定の動作を実行するようコンピュータシステムを構成する。各回路またはコードは、プロセッサと組み合わせて、それぞれの動作を実行する。動作は、ある特定の順序で示されているが、特定の順序は必要ではなく、1つ以上の動作は省略され、スキップされ、および/または並べ替えられてもよいことを理解されたい。
ある例では、フロー900は、コンピュータシステムがブロックボリュームを復元する要求を受信する動作902を含む。図4を参照してより詳細に説明されるように、ボリュームマネージャサービスは、ユーザデバイス(例えば、図1のユーザデバイス110)のユーザがセキュアシェルインスタンス(例えば、図2のセキュアシェルインスタンス250)に再接続することを要求した後に、セッションマネージャサービス(例えば、図1のセッションマネージャサービス120)からブロックボリュームを復元するための要求を受信してもよい。いくつかの実施形態では、要求は、ユーザ識別子を含んでもよく、それによってボリュームマネージャサービスは、以下で説明する1つ以上のバックアップ復元動作を実現してもよい。
ある例において、フロー900は、コンピュータシステムが空のボリュームのプールから空のブロックボリュームを予約する動作904を含む。図8のフロー800を参照して説明される動作とは対照的に、ボリュームマネージャサービスは、ユーザブロックボリュームがIaaSデータストレージシステムによって維持されているかどうかを確認することなく、空のブロックボリューム(例えば、図2の空のブロックボリューム240)を予約することに、少なくとも部分的によって、動作902の復元要求を実現してもよい。例えば、図7を参照してより詳細に説明されるように、バックアップが作成されると、ボリュームマネージャサービスは、図8を参照して説明される動作を実行することなく、空のブロックボリュームを予約してもよい。
代替として、ボリュームマネージャシステムは、ユーザブロックボリュームがIaaSデータストレージシステムによって維持されているかどうかを確認することによって、図8を参照して説明される動作を実現してもよい。このようにして、ボリュームマネージャサービスは、空のブロックボリュームを予約するのではなく、ユーザブロックボリュームデータセンタ識別子を返してもよい。
ある例において、フロー900は、コンピュータシステムがユーザバックアップデータを要求する動作906を含む。ボリュームマネージャサービスは、ユーザデータバックアップ(例えば、図4のユーザデータバックアップ430)が、動作904の予約された空のブロックボリュームに転送されるよう、要求してもよい。要求は、データのバックアップおよび復元動作を容易にするコアIaaSサービスであってもよいバックアップサービス(例えば、図3のバックアップサービス340)からなされてもよい。
ある例では、フロー900は、コンピュータシステムが空のブロックボリュームをプロビジョニングする動作908を含む。図4を参照してより詳細に説明されるように、空のブロックボリュームをプロビジョニングすることは、バックアップ動作(例えば、図7の動作714)に先行する、ユーザブロックボリューム(例えば、図2のユーザブロックボリューム230)の構造を再作成するための動作を含んでもよい。
ある例では、フロー900は、コンピュータシステムが空のブロックボリュームのデータセンタ識別子を識別する動作910を含む。ボリュームマネージャサービスは、復元ボリュームがセキュアシェルインスタンスにアタッチされてもよいように、空のブロックボリュームのデータセンタ識別子を復元ボリュームのデータセンタ識別子として識別してもよい。データセンタ識別子は、空のブロックボリュームが維持されるデータセンタ(例えば、IaaSインフラストラクチャ)に対応する固有の識別子であってもよい。
ある例では、フロー900は、コンピュータシステムが復元ボリュームのデータセンタ識別子を返す動作912を含む。データセンタ識別子は、上記で図1~図2を参照してより詳細に説明したように、セキュアシェルインスタンスの構成のために、ボリュームマネージャサービスによってセッションマネージャサービスに返されてもよい。
署名されたノンスを用いてクラウドシェルをセキュアにするための技法
クラウドベースのプラットフォームは、スケーラブルで柔軟なコンピューティングリソースをユーザに提供する。そのようなクラウドベースのプラットフォームは、インフラストラクチャ・アズ・ア・サービス(IaaS)とも呼ばれ、顧客のデータの周囲のクラウドソリューションのスイート全体、例えば、変換をオーサリングし、データをロードし、データを提示するためのソリューションを提供してもよい。IaaSリソースのユーザは、動作およびデータ転送がセキュアに実行され得るように、セキュアシェルインスタンス内にセキュア端末を作成することを要求してもよい(例えば、WebSocket セキュアまたはwss接続を介した双方向暗号化を用いる)。
いくつかの実施形態では、シェルインスタンスは、ドッカーコンテナ(例えば、ホスト)を動作させ得、ユーザデバイスがそのドッカーコンテナ上で端末を動作させることを可能にしてもよい、専用計算インスタンスであり得る。ユーザデバイスは、単一のホストに割り当てられてもよいが、そのホスト上に複数のアクティブ端末を作成してもよい。シェルインスタンスは、非アクティブの期間の後に終了されてもよい。インスタンスはホストを動作させてもよく、ホストは次いでセキュアシェル(例えば、端末)を動作させてもよい。いくつかの実施形態では、インスタンスおよび/またはホストはまた、端末がある期間にわたってホスト上でアクティブになっていないときに終了されてもよい。
いくつかの実施形態では、インスタンスエージェントが、割り当てられたインスタンス上で動作してもよく、WebSocketトラフィックを受信すること、およびそのトラフィックをホスト上で動作するセキュアシェルに送信することを処理してもよい。インスタンスエージェントは、セキュアなWebSocket接続を開き、入力および出力をインスタンス上で動作する端末(例えば、ドッカーコンテナ上で動作するセキュアシェル)にリダイレクトするよう構成されてもよいHTTPサーバであってもよい。いくつかの実施形態では、エージェントは、ドッカーコンテナの更新されたバージョンを識別してもよく、ドッカーコンテナを開始してもよく、コンテナ内に端末を作成してもよい。いくつかの実施形態では、エージェントはさらに、セキュアシェル構成情報を含むようにドッカーコンテナを特化してもよく、特定の環境変数において通ることに少なくとも部分的によって、ドッカーコンテナ内の端末を実行してもよい。
いくつかの実施形態では、セッションマネージャサービスは、ブラウザからユーザのリソースへのコマンドラインアクセスを提供し得る。セッションマネージャサービスは、特定のユーザアカウントをサポートするように割り当てられ、および/または特化され得る、いくつかの利用可能な計算インスタンスを提供してもよい。利用可能な計算インスタンスを(例えば、セキュアシェル要求を受信する前にデフォルトパラメータとともに構成された1つ以上の計算インスタンスを作成することによって)提供することは、セッションマネージャサービスが(例えば、5秒、10秒、30秒、60秒以内などにインスタンスを作成および特化することによって)システム応答のレイテンシを改善することを可能にしてもよい。セッションマネージャサービスはまた、ユーザが、複数の動作において検証された後に最終的に承認されるセキュアな接続を通して、特化されたインスタンス上でIaaSインフラストラクチャリソースを(例えば、知的所有権下にあるおよび/または他のユニックスコマンドを介して)使用することを可能にしてもよい、ウェブベースの端末を提供してもよい。
いくつかの実施形態では、本明細書で説明する技法は、これらのリソースの作成およびそれらのリソースに対するアクセスのためにウェブベースの端末によって使用されてもよいソフトウェア開発者キット(SDK)にコンピュータ実行可能命令として組み込まれ得る。このようにして、SDKも、セキュアなウェブベースの端末を実現するために他のプロバイダによって使用され得る。さらに、本明細書で説明する技法は、ユーザデバイスが、改善されたセキュリティおよびレイテンシで1つ以上の端末を動作させるセキュアシェルに接続することを可能にしてもよい。例えば、セキュアシェルにセキュアに接続する要求時に新たなインスタンスを作成するのではなく、複数の利用可能なインスタンスからセキュアシェルインスタンスを選択し構成することによって、セッションマネージャは、インスタンスの事前構成によって導入されるシステムレイテンシを潜在的に改善してもよい。
さらに、1つ以上の端末をセキュアにするための1つ以上の技法を実現することは、本明細書で説明するシステムの動作および性能を改善し得る。たとえば、セッションマネージャサービスおよびユーザデバイスの両方によって署名されてもよいノンストークンを、署名をチェックする動作(例えば、セキュアシェルインスタンスへのユーザデバイスの接続を容易にするルータによって実現される)とともに提供することは、改善されたセキュリティを提供し得、セキュアシェルインスタンス上で動作する端末を介したデータおよび/またはIaaSリソースへの不正アクセスを防止し得る。さらに、ノンストークンの有効性が未使用のノンストークンのデータベースに関連して判断されてもよい単回使用プロトコルを実現することは、ノンストークンの再使用を防止し得る。加えて、マルチステップセキュリティプロトコルも、セッションマネージャサービスが、無許可および/または非認証ユーザデバイスによるログイントークン(例えば、ユーザデバイスを認証した後にアイデンティティ承認サービスによって生成されるトークン)の再使用を防止することを可能にしてもよい、追加のユーザ認証およびリソース承認保護を提供してもよい。加えて、ドッカーコンテナシステム内にセキュアシェルを構成することは、セキュアシェルに関連するデータを隔離し、それによって、潜在的に、侵害に対する外部データの暴露を低減することによって、セキュリティを改善してもよい。
図10は、1つ以上の実施形態による、セキュアシェルインスタンスを管理するための例示的なシステム1000を示す。いくつかの実施形態では、システム1000は、ユーザが計算インスタンス(例えば、仮想マシンまたは「VM」またはドッカーコンテナ)にセキュアに接続することを可能にしてもよい。セキュアアクセスは、ユーザが、IaaSシステムのVMとのリアルタイムデータ転送のために、暗号化された接続(例えば、httpsおよび/またはWebSocket Secure「WSS」)を介して、分散ストレージ、計算コア等を含むが、それらに限定されない、分散コンピューティングシステムリソース(例えば、インフラストラクチャ・アズ・ア・サービスまたは「IaaS」)に接続することを可能にしてもよい。いくつかの実施形態では、ユーザデバイス1010は、セキュアシェルインスタンスに対する、署名された要求を生成してもよく、その署名された要求を、セッションマネージャサービス1020に送信してもよい。セッションマネージャサービス1020は、署名された要求を満たすことの一部として、ユーザデバイス1010を検証すること、およびセキュアシェルインスタンスを構成することの一部として、動作を実行してもよい。
いくつかの実施形態では、ユーザデバイス1010は、グラフィカルユーザインターフェイスコンソールまたはコマンドラインインターフェイス(CLI)を含むが、それらに限定されない、ユーザインターフェイスを使用して、署名された要求を生成してもよい。ユーザインターフェイスは、ユーザ公開/秘密鍵ペアを生成してもよい、アイデンティティ承認サービスを含む。場合によっては、ユーザ公開/秘密鍵ペアは、例えば、セッションの初期化時、セキュアVM接続の要求の生成時などに生成される一時的な鍵ペアであってもよい。ユーザデバイス1010は、ユーザ公開/秘密鍵ペアの秘密鍵を使用して、署名された要求を生成してもよい。
いくつかの実施形態では、セッションマネージャサービス1020は、セキュアシェルインスタンスを管理および準備することの一部として、1つ以上の承認ステップを実現してもよい。承認は、例えば、(例えば、ユーザデバイス1010のアイデンティティを検証するステップとして、)署名された要求を受信すること、および(たとえば承認サービスに)公開鍵を要求し、その鍵を使用して、署名された要求の署名を検証することによって、署名された要求を検証することを含んでもよい。追加または代替として、公開鍵は、以下で図29を参照してより詳細に説明されるように、承認サービスによって提供されるログイントークンに含まれてもよい。
いくつかの実施形態では、セッションマネージャサービス1020は、セキュアシェルインスタンスを予約および構成することに少なくとも部分的によって、署名された要求を満たしてもよい。場合によっては、セッションマネージャサービス1020は、ボリュームマネージャサービス1030と通信して、ブロックボリューム1040を予約してもよい。ボリュームマネージャサービス1030は、ブロックボリューム1040のドメイン識別子をセッションマネージャサービス1020に返してもよい。いくつかの実施形態では、ドメイン識別子は、予約されたブロックボリューム1040の地理的領域(例えば、可用性ドメイン、すなわち「AD」)内の1つ以上のデータセンタを記述してもよい。
いくつかの実施形態では、セッションマネージャサービス1020は、ブロックボリューム1040のドメイン識別子(例えば、予約されたブロックボリュームのAD)をインスタンスマネージャサービス1050に提供してもよい。インスタンスマネージャサービス1050は、ボリュームマネージャサービスによって提供されるADにおいて計算インスタンスを割り当ててもよい。インスタンスマネージャサービス1050は、割り当てられたインスタンスについてインスタンス識別子情報(たとえば、クラウドインフラストラクチャID)をセッションマネージャサービス1020に提供してもよい。計算インスタンスの割り当ては、ユーザごとおよび/またはコンパートメントごとに行われてもよい(ここで、コンパートメントは、クラウドシステムリソースへのアクセスを制御する論理コンテナであり、サブコンパートメントを含んでもよい)。例えば、セッションマネージャサービス1020は、異なるコンパートメントにおいてユーザに別個のインスタンスを割り当ててもよい。対照的に、セッションマネージャサービス1020は、別々のコンテナが同じ計算インスタンスを、コンパートメント当たり1つのコンテナで共有するように、複数のコンテナについて単一の計算インスタンスを割り当ててもよい(ここで、コンテナは、アプリケーションコード、ランタイム、システムツール、システムライブラリ、および設定を含んでもよいパッケージ化されたソフトウェアアプリケーションである)。
いくつかの実施形態では、セッションマネージャサービス1020は、インスタンス識別子を、ルータ1060のルータアドレスとともに、ユーザデバイス1010に提供してもよい。ルータ1060は、以下でより詳細に説明されるように、ユーザデバイスを(例えば、多重化ウェブソケット接続を介して)セキュアシェルインスタンスに接続するよう構成されてもよい。さらに、ルータはまた、以下で説明されるように、ユーザデバイス1010をセキュアシェルインスタンスにセキュアに接続することの一部として、ユーザデバイス1010およびセッションマネージャサービス1020を検証するよう構成されてもよい。
いくつかの実施形態では、セッションマネージャサービス1020は、セキュアシェルインスタンスへのユーザデバイス1010のセキュア接続の承認および検証の一部として、ノンストークンを生成してもよい。いくつかの実施形態では、ノンストークンは、限定はしないが、ヘッダ、有効期間(たとえば、満了前の分単位)、鍵、および/またはランダムもしくは擬似ランダム文字列(例えば、セット長の英数字シーケンス、乱数または擬似乱数など)を含む情報を含むウェブトークン(例えば、JavaScriptオブジェクト表記法「json」ウェブトークンまたは「jwt」トークン)であってもよい。場合によっては、ノンストークンが生成され、インスタンス識別子およびルータアドレスとともにユーザデバイス1010に提供される。
いくつかの実施形態では、セッションマネージャサービス1020は、ノンストークンをノンスおよび識別子ストア1070に記憶してもよい。ノンスおよび識別子ストア1070は、以下で図13を参照してより詳細に説明されるように、ノンステーブルを記憶する分散データストア(たとえば、クラウドストレージ)であってもよく、ノンステーブルは、セッションマネージャサービス1020が、たとえば、ノンストークンを追跡し、ノンストークンがユーザデバイス1010からの単一の要求に対して有効であることを保証することによって、セキュアシェルインスタンスへのユーザデバイスのアクセスをさらにセキュアにすることを可能にしてもよい。同様に、ノンスおよび識別子ストア1070はまた、以下で図11、図14および図16を参照してより詳細に説明されるように、ユーザ要求の履行中にユーザデバイス1010を検証するために使用されてもよい、ユーザ鍵ペアのユーザ公開鍵を含む、承認サービスによって提供されるログイントークンを記憶してもよい。
セキュアシェルインスタンスを構成することの一部として、セッションマネージャサービス1020は、以下の図を参照してより詳細に説明されるように、利用可能なインスタンス1080のプールから既存のインスタンスを選択し、構成してもよい。場合によっては、セッションマネージャサービスは、選択されたインスタンスに構成ファイルおよび委任トークンをインストールしてもよい。構成は、限定はしないが、インスタンス識別子、ドメイン識別子、要求詳細(例えば、リソース割り当て、コンパートメント、テナンシ)などを含むパラメータ情報を含んでもよい。委任トークンは、ユーザデバイス1010が、インスタンスのレベルでの追加の承認なしにIaaSシステムリソースにアクセスすることを可能にしてもよい。
いくつかの実施形態では、セッションマネージャサービス1020によってインストールされた構成パラメータは、インスタンス構成ストア1090に記憶されてもよい。インスタンス構成ストア1090は、新たなセキュアシェルインスタンスが、セキュアシェルインスタンスの終了に続いて、要求パラメータを用いて復元および/または再構成されることを可能にしてもよい。いくつかの実施形態では、セキュアシェルインスタンスは、ユーザがセキュアシェルインスタンスの使用を完了すると、終了されることになる。いくつかの実施形態では、セッションマネージャサービス1020は、エージェントの非アクティビティの期間(例えば、アイドル時間)および/またはルータ1060を介したアクティビティの期間に基づいて、セキュアシェルインスタンスを終了するようにインスタンスマネージャサービス1050に命令してもよい。アイドル時間は、構成パラメータの一部として提供されてもよい。いくつかの実施形態では、ユーザデバイス1010のユーザは、セキュアシェルインスタンスが終了されるように要求してもよく、それは、セッションマネージャサービス1020によって実現されてもよい。
上述のように、例示的なシステム1000は、少なくともユーザデバイスがコンソールおよび/またはコマンドラインインターフェイスからセキュアシェルインスタンスに接続することを可能にすることによって、IaaSシステムの改善されたセキュリティおよび安定性を提供してもよい。例えば、単回使用ノンストークンおよびインスタンスを使用することは、(ソフトウェアが、承認された限度外のデータおよび/またはリソースにアクセスする)ブレークアウトのリスクを潜在的に含み得る。単回使用ノンストークンは、例えば、ユーザデバイスの秘密鍵によって署名されてもよく、これは、別のユーザがセキュアシェルインスタンスにアクセスすることを防止し得る。別の例として、単回使用インスタンスは、同じインスタンスを使用する後のユーザデバイスを潜在的に危うくし得るインスタンスを再利用するのではなく、インスタンスがもはや使用されなくなった後にインスタンスを交換することによって、コンテナからのブレークアウトの潜在的な影響を低減してもよい。
図11は、1つ以上の実施形態による、セキュアシェルセッションを管理するための例示的なシステム1100を示す。図10で説明したシステム(例えば、例示的なシステム100)を参照すると、例示的なシステム1100は、構成要素(例えば、図10のボリュームマネージャサービス130、インスタンスマネージャサービス150、インスタンス180など)のうちの1つ以上を含んでもよい。いくつかの実施形態では、例示的システム1100は、ユーザデバイスとセキュアシェルインスタンスとの間のセキュア接続を提供することの一部として、1つ以上の承認およびセキュリティプロトコルを実現してもよい。
いくつかの実施形態では、セッションマネージャサービス120は、ユーザデバイス110から署名された要求を受信してもよく(例えば、動作1102)、署名された要求は、ユーザデバイス110によって生成され得る。いくつかの実施形態では、ユーザは、「コンソール」インターフェイスとも称される、コマンドラインインターフェイス(CLI)および/またはグラフィカルユーザインターフェイス(GUI)を介して、セキュアシェルを要求してもよい。場合によっては、システム1100は、セッションマネージャサービス120とのアイデンティティおよび承認情報の通信を容易にしてもよいGUI/CLIログインサービス1120を含む。たとえば、セキュアシェル要求は、ユーザセッションに関連付けられる公開/秘密鍵ペアの一部としてGUI/CLIログインサービス1120によって生成された秘密鍵によって署名されてもよい。たとえば、ユーザログインおよび/またはアイデンティティ検証は、秘密鍵を用いてセキュアシェル要求に署名するために使用されてもよい一時的な公開/秘密鍵ペアを生成することを含んでもよい。公開鍵は、ユーザデバイス110のアクセスを承認し、ログイントークン(たとえば、アクセストークン)を生成することの一部として、承認サービス1130に提供されてもよく、ログイントークン(たとえば、アクセストークン)は、署名された要求を承認するためにセッションマネージャサービス120に提供されてもよい(たとえば、動作1104)。
いくつかの実施形態では、承認サービス1130は、ユーザデバイスに対するアイデンティティ承認を、ユーザ名/パスワードアカウント詳細に基づいて実行し、特定のIaaSリソースおよび/または階層リソースレイヤ(例えば、IaaSリソースに関連付けられるサブコンパートメントを含むルートコンパートメント)へのアクセスを承認してもよい。承認サービス1130は、GUI/CLIログインサービス1120と、ログイン/承認の最初のステップ中に直接通信してもよく、そこからGUI/CLIログインサービス1120は、セッションマネージャサービス120にログイントークンを提供してもよい。以下で図14および図16を参照してより詳細に説明するように、セッションマネージャサービス120は、セキュアシェルへのアクセスを承認することの一部として追加の動作(たとえば、動作1104)を実施してもよい。
いくつかの実施形態では、セッションマネージャサービス120は、セキュアシェルインスタンス1140を作成する際に使用のためのシェルインスタンスを予約してもよい(例えば、動作1106)。以下で図12~図4を参照してより詳細に説明するように、シェルインスタンスを予約することは、限定はしないが、ボリュームを予約することと、予約されたボリュームにインスタンスを割り当てることと、割り当てられたインスタンスを構成することとを含む、1つ以上の動作を含んでもよい。セッションマネージャサービス120は、シェルインスタンスを予約することの一部として、シェルインスタンス識別子を受信してもよく、承認サービス1130に委任トークンを要求することの一部として、限定はしないが、シェルインスタンス識別子、ユーザデバイス110に関連付けられるユーザ識別子、および満了時間(たとえば、有効期間)を含む情報を提供してもよい(たとえば、動作1108)。
承認サービス1130は、ユーザデバイス110がセキュアシェルインスタンス1140にセキュアに接続することを可能にするための手法として、委任トークンを生成し、それをセッションマネージャサービス120に提供してもよい(例えば、動作1110)。いくつかの実施形態では、セッションマネージャサービス120は、承認サービスから受信された委任トークンをインストールすることによって、予約されたシェルインスタンスを構成してもよい(例えば、動作1112)。図13を参照してより詳細に説明されるように、セキュアシェルインスタンス1140を構成することは、インスタンスの構成を実現すること(たとえば、署名された要求の1つ以上の局面を含む構成ファイルをインストールすること)を含んでもよい。
承認サービス1130からの委任トークンの受信に続いて、セッションマネージャサービス120は、セキュアシェルトークンをGUI/CLIログインサービス1120に提供してもよい(例えば、動作1114)。以下の段落を参照してより詳細に説明されるように、ノンストークンの生成、署名、および/または記憶を含むが、それらに限定されない、付加的な検証およびアクセス制御動作が、セッションマネージャサービス120によって実現されてもよい。いくつかの実施形態では、セキュアシェルトークンは、追加のアクセス制御要素を含んでもよく、委任トークンを含むメタデータと関連付けられてもよい。
いくつかの実施形態では、セッションマネージャサービス120はまた、シェルインスタンス識別子をセキュアシェルルータ1150に提供してもよい(例えば、動作1116)。いくつかの実施形態では、セキュアシェルルータは、図10のルータ160の例であってもよい。セキュアシェルルータ1150は、シェルインスタンス識別子を記憶してもよく、以下で図12を参照してより詳細に説明するように、セキュアシェルインスタンス1140への接続中にユーザデバイス110を検証することの一部としてセキュアシェル識別子を使用してもよい。
図12は、1つ以上の実施形態による、ユーザデバイスをセキュアシェルインスタンスに接続するための例示的なシステム1200を示す。図11を参照して説明した技法と同様に、セッションマネージャサービス120は、セキュアシェルインスタンス1140への接続の一部として、セキュアシェルルータ1150へのユーザデバイス110の接続を容易にしてもよい。
いくつかの実施形態では、セッションマネージャサービス120は、図11を参照してより詳細に説明されるように、(例えば、図11のGUI/CLIログインサービス1120を介して、)セキュアシェルインスタンスを作成するよう、ユーザデバイス110から署名された要求を受信してもよい。要求は、セッションマネージャサービス120に、セキュアシェルインスタンスのためにホストを作成させる要求を含んでもよい(例えば、動作1202)。ホストは、IaaSリソースにおいて実現されるクラウドリソースコンテナおよび/またはボリュームを参照してもよい。要求は、図11を参照して説明した、セキュリティ、承認情報を含んでもよく、したがって、システム1200の動作および要素は、上述した1つ以上の要素および/または動作(例えば、委任トークンを生成する図11の承認サービス1130)を含んでもよい。
いくつかの実施形態では、セッションマネージャサービス120は、セキュアシェルインスタンスのためにホストを構成してもよい(例えば、動作1204)。以下、図13を参照して、ホストの構成に含まれる1つ以上の構成動作について、より詳細に説明する。いくつかの実施形態では、セッションマネージャサービス120は、上記で図10を参照してさらに詳細に説明されるように、ボリュームマネージャサービス130およびインスタンスマネージャサービス150を含むが、それらに限定されない、1つ以上のマネージャサービス1230を使用して、インスタンスを予約および割り当ててもよい。
ユーザデバイス110のセキュアシェルインスタンス1140に対するセキュアアクセスを作成することの一部として、セッションマネージャサービス120は、ノンストークン、シェル識別子、およびルータアドレスを生成し、ユーザデバイス110に提供してもよい(例えば、動作1206)。図10を参照してより詳細に説明されるように、ノンストークンは、所定の数の文字および/または数字(例えば、文字と数字の8つの文字列)を有するランダム文字列を含んでもよいウェブトークン(たとえば、JWTトークン)を含んでもよい。シェル識別子は、図11を参照して説明されたセキュアシェルトークンに含まれてもよい。ルータアドレスは、セキュアシェルルータ1150を識別してもよく、ユーザデバイスがセキュア接続(例えば、WebSocketセキュア、すなわち「WSS」接続)を介してセキュアシェルルータ1150に接続するように要求することを可能にしてもよい。
いくつかの実施形態では、セッションマネージャサービス120は、例えば、セッションマネージャサービス120で識別された鍵ペアの秘密鍵を使用して、ノンストークンに署名してもよい。図14を参照してより詳細に説明されるように、追加の検証手順は、セッションマネージャサービス120がノンストークンに署名することによって生成されたシステム署名されたノンスの検証を含んでもよい。そのために、セッションマネージャサービス120は、システム署名されたノンスをシェルインスタンス識別子とともにユーザデバイス110および/またはセキュアシェルルータに提供してもよい。いくつかの実施形態では、セッションマネージャサービス120がシステム署名されたノンスをユーザデバイス110に提供すると、ユーザデバイス110は、システム署名されたノンスに署名し、二重署名されたノンスをセキュアシェルルータ1150に提供してもよい。
セキュアシェルルータ1150は、ユーザデバイス110から接続要求を受信してもよく、それは、ユーザ署名されたノンストークンを含んでもよい(たとえば、動作1208)。ユーザ署名されたノンストークンは、システム署名されたノンスと同様に、ユーザデバイス110によって保持される秘密鍵でノンストークンに署名することによって生成されてもよい。上述のように、ユーザ秘密鍵は、GIU/CLIログインサービスによって生成される鍵ペア(例えば、一時公開/秘密鍵ペア)の一部を形成してもよく、公開鍵は、セッションマネージャサービス120および/またはセキュアシェルルータ1150に提供されてもよい。
接続要求を許可することの一部として、セキュアシェルルータ1150は、ユーザおよびシステム署名を検証してもよい(たとえば、動作1210)。セキュアシェルルータ1150は、(例えば、ノンストークンが有効期間を含む場合)ノンストークンが満了していないかどうかをチェックすることに少なくとも部分的によって、ノンストークンを検証してもよい。検証は、セッションマネージャサービス120からの要求によって実現されてもよい(たとえば、セッションマネージャサービス120は、ノンスが有効であるかどうかを確認してもよく、有効性の指示を提供してもよい)。セキュアシェルルータ1150はまた、以下で図13を参照してより詳細に説明するように、ノンストークンが接続要求のために以前に使用されていないことを検証してもよい。
いくつかの実施形態では、セキュアシェルルータ1150は、少なくとも部分的に、それぞれユーザデバイス110およびセッションマネージャサービス120のための公開鍵を使用して、ユーザおよびシステム署名ノンストークンを復号することによって、署名のうちの1つ以上を検証してもよい。いくつかの実施形態では、ユーザデバイス110がシステム署名されたノンストークンに署名する場合のように、セキュアシェルルータ1150は、ユーザ公開鍵を使用して二重署名されたノンストークンを復号し、システム公開鍵を使用してシステム署名を復号することによって、ユーザ署名を検証してもよい。このようにして復号することは、セキュアシェルルータ1150がノンス値を確認し、ノンストークンを検証することを可能にしてもよい。いくつかの実施形態では、検証は、例えば、復号されたノンストークンを比較して、ノンストークンが一致するかどうかを確認することによって達成されてもよい。
ノンストークンならびにユーザおよびシステム署名の検証に続いて、セキュアシェルルータ1150は、ユーザデバイス110をセキュアシェルインスタンス1140に接続してもよい(例えば、動作1212)。上記で図10を参照してより詳細に説明されるように、セキュアシェルルータ1150は、ウェブブラウザ(または他のクライアントアプリケーション)とセキュアシェルインスタンス1140をホストするウェブサーバとの間の対話(例えば、全二重通信)を、暗号化されたメッセージを介して可能にしてもよい、WebSocket Secure(wss)接続を提供してもよい。
図13は、1つ以上の実施形態による、セキュアシェルインスタンスを単回使用ノンストークンとともに構成するための例示的なシステム1300を示す。上で図11~図3を参照してより詳細に説明したように、シェルインスタンスを予約および構成することの一部として、セッションマネージャサービス120は、例示的なシステム1300の構成サービスと協調して1つ以上の動作を実行してもよい。
いくつかの実施形態では、セッションマネージャサービスは、ユーザ要求を承認および検証することに関して上述したように、セキュアシェルに接続する要求をユーザデバイスから受信してもよい(例えば、動作1302)。ユーザ要求の受信に応答して、セッションマネージャサービス120は、ボリュームマネージャサービス130と協調してボリュームを予約してもよい(例えば、動作1304)。ボリュームを予約することは、ボリュームマネージャサービス130が、1つ以上のブロックボリュームがユーザデバイス110のユーザにすでに関連付けられ、および/または割り当てられており(たとえば、ユーザブロックボリューム1330)、セキュアシェルインスタンス1140をホストするために利用可能であるかどうか、を確認すること(たとえば、動作1306)を含むが、それに限定されないステップを伴ってもよい。これは、ボリュームマネージャサービス130によって管理されるブロックボリュームのレジストリに対してユーザ識別子(例えば、ユーザ名またはログインID)をチェックすることを含んでもよい。ユーザブロックボリューム1330が識別された場合、ドメイン識別子情報(例えば、リソースID、データセンタインフラストラクチャロケータなど)がセッションマネージャサービス120に返されて、ボリュームがセキュアシェルインスタンス1140をホストするために予約されたことを示してもよい(例えば、動作1308)。
ボリュームマネージャサービス130は、ユーザブロックボリューム1330がセキュアシェルインスタンス1140をホストするために利用可能でないことを見出す場合がある。いくつかの実施形態では、ボリュームマネージャサービスは、ユーザがまだ割り当てられていない場合がある、所与のデータセンタで利用可能なブロックボリューム140のうちの1つ以上を含んでもよい、空のブロックボリューム1340を予約してもよい。同様に、ボリュームマネージャサービス130は、セッションマネージャサービス120が後続の動作において実現するためのリソース識別子情報を提供してもよい。例えば、セッションマネージャサービス120は、ボリュームマネージャサービス130によって返されるブロックボリューム140においてインスタンスを割り当ててもよい(例えば、動作1310)。
いくつかの実施形態では、インスタンスを割り当てることは、ドメイン識別子をインスタンスマネージャサービス150に提供することを含んでもよい。図10を参照してより詳細に説明されるように、インスタンスマネージャサービス150は、セキュアシェルインスタンスとしての使用のために再構成されてもよいいくつかの利用可能なインスタンスの一部として維持される既存のインスタンスを選択し、予約してもよい。インスタンスマネージャサービス150は、セッションマネージャサービス120にインスタンス識別子(例えば、インスタンスID)を返してもよく、これは、セッションマネージャサービス120が後続の動作において、選択されたインスタンスを識別することを可能にしてもよい。いくつかの実施形態では、接続要求を実現するときにインスタンスを作成および構成するのではなく、既存のインスタンスを選択し、予約することは、接続要求を処理する際のシステムレイテンシを潜在的に低減し得る。
セッションマネージャサービス120は、構成ファイルをインストールすることに少なくとも部分的によって、選択されたインスタンスを構成してもよい(例えば、動作1312)。構成ファイルは、IaaSリソース詳細(例えば、コンパートメント、ルートコンパートメント、ドメイン識別子など)および/または使用詳細を識別して、ユーザ接続要求の完了を容易にしてもよい。委任トークンは、上記で図11を参照してより詳細に説明されるように、承認サービス(例えば、図11の承認サービス1120)によって生成されてもよい。委任トークンをセキュアシェルインスタンス1140上にインストールすることは、ユーザデバイス110が、各リソースおよび/または要求についての承認サービスへの追加の要求を伴わずに、セキュアシェルインスタンス1140を介して直接IaaSシステムリソースにアクセスすることを可能にしてもよい。
例示的なシステム1300は、図12を参照してより詳細に説明される追加の検証動作を含んでもよい。たとえば、セッションマネージャサービス120は、ノンス検証プロトコルの一部として単回使用ノンス手法を実現することの一部として、ノンストークン(たとえば、一時的JWTトークン)を生成し、署名し、ノンスおよび識別子ストア170に記憶してもよい(たとえば、動作1314)。たとえば、ノンスおよび識別子ストア170は、以下で図14を参照してより詳細に説明するように、1つ以上の検証動作を実施するときにノンストークンをセキュアシェルインスタンス1140に帰属させるための手法として、ノンストークンのリスト(例えば、ノンスが発行され有効かどうかを追跡するために使用されてもよいノンス「キー」シーケンス)を含むノンステーブルを含んでもよく、各ノンスについて、関連付けられるインスタンス識別子情報を含んでもよい。場合によっては、ノンストークンは一時的であってもよいので、ノンステーブルは、限定はしないが、発行時間、有効期間などを含むタイミング情報を含んでもよい。このようにして、接続要求を満たすことの一部として、ノンストークンが見出され、その有効性が確認されてもよい。いくつかの実施形態では、ユーザデバイス110がセキュアシェルインスタンス1140に接続された後(例えば、図12の動作1214)、対応するノンストークンは、ノンスおよび識別子ストア170内のノンステーブルから除去されてもよい。そのような場合、セッションマネージャサービス120は、ノンストークンが単回使用であることを可能にしてもよく、それは、(例えば、有効なノンストークンを使用する「スプーフィング」による)セキュアシェルインスタンス1140への不正アクセスのリスクを低減し得る。
図14は、1つ以上の実施形態による、セキュアシェルインスタンスに接続するユーザデバイスを承認するための例示的な技法1400を示す。上記で説明したシステムに関連して、1つ以上のアクセス制御動作が、ユーザデバイス110とセキュアシェルインスタンス1140との間にセキュア接続を作成することの一部として、実現されてもよい。セキュアシェルセッションを管理することに関して説明される動作は、例えば、ユーザIDログイン制御、委任トークン、および/または署名検証を伴う署名されたノンストークンを使用する、前述の図を参照して説明される動作のうちの1つ以上を含んでもよい。
いくつかの実施形態では、セッションマネージャサービス120は、ユーザデバイス110によって作成および署名される、セキュアシェルインスタンス1140を作成するための署名された要求を受信する。図11を参照してより詳細に説明されるように、要求は、要求に署名するためにユーザデバイス110によって使用される鍵ペアを生成してもよい、GUI/CLIログインサービス1120から受信されてもよい。
セッションマネージャサービス120は、図11を参照してより詳細に説明されるように、ユーザログインまたはIaaS ID認証を使用してユーザ要求を認証してもよい(たとえば、動作1410)。たとえば、ユーザのアイデンティティは、承認サービス(たとえば、承認サービス1130)によって、ユーザ名/パスワードをデータセンタ識別子または他のIaaSリソースアクセスパラメータと組み合わせて承認することに少なくとも部分的により、認証されてもよい。承認サービスは、GUI/CLIログインサービス1120によって生成された鍵ペアのユーザ公開鍵を含むログイントークンを生成してもよい。承認サービスは、承認サービスの秘密鍵でログイントークンに署名した後、ログイントークンをユーザデバイスおよび/またはGUI/CLIログインサービス1120に提供してもよい。このようにして、セッションマネージャサービス120は、承認サービスに承認サービス公開鍵を要求することによって、ユーザデバイス110からの署名された要求およびユーザアイデンティティの両方を認証してもよい。いくつかの実施形態では、セッションマネージャサービス120はまた、ログイントークンからユーザ公開鍵を抽出してもよく、ユーザ公開鍵を使用して、署名された要求上の署名を検証してもよい。
いくつかの実施形態では、セッションマネージャサービス120は、セキュアシェルインスタンス1140を承認してもよい(例えば、動作1420)。図11を参照してより詳細に説明されるように、セキュアシェルインスタンス1140を承認することは、承認サービスに委任トークンを要求することを含んでもよい。場合によっては、委任トークンは、ユーザID、インスタンス識別子、および要求が満了したかどうか(例えば、一時的鍵ペアが依然として有効である、および/または要求自体が満了しているかどうか)の組合せに少なくとも部分的に基づいて、IaaSシステムリソースへのアクセスを承認することに応答して、発行されてもよい。委任トークンを受信することは、セキュアシェルインスタンス1140とユーザデバイス110との間のセキュア接続が確立されると、セッションマネージャサービス120が、さらなる認証および/または承認を伴わずに、IaaSシステムリソース(例えば、計算リソース、コアサービス、ストレージリソースなど)にアクセスするようにセキュアシェルインスタンス1140を構成することを、可能にしてもよい。
いくつかの実施形態では、セッションマネージャサービス120は、ノンストークンを生成し、ノンストークンおよび他の情報をユーザデバイス110および/またはGUI/CLIログインサービス1120に提供してもよい。いくつかの実施形態では、セッションマネージャサービス120は、システム署名されたノンストークンをセキュアシェルルータ1150に提供する。いくつかの実施形態では、セッションマネージャサービスは、署名検証の一部として、システム署名されたノンストークンをユーザデバイス110に提供する(例えば、動作1430)。ユーザデバイス110は、システム署名されたノンスに署名し、二重署名されたノンスを生成してもよい。その際、セッションマネージャサービス120は、システム署名されたノンストークンに署名するために使用される秘密鍵にマッチする公開鍵を提供してもよい。セキュアシェルルータ1150は、ユーザデバイス110からユーザ署名されたノンストークンを受信してもよく、要求を認証するために署名を検証してもよい。いくつかの実施形態では、署名を検証することは、ユーザ署名およびシステム署名を検証するために、それぞれ、ユーザ公開鍵およびシステム公開鍵を使用して、二重に署名されたノンスを復号することを含んでもよい。検証は、復号されたノンスを、例えばノンストークンのデータベース(例えば、図10のノンスおよび識別子ストア170)に記憶されたシステム生成ノンスと比較することを含んでもよい。いくつかの実施形態では、署名を検証することは、ユーザ署名されたノンストークンおよびシステム署名されたノンストークンを復号することと、一致を確認するために、それらノンストークンに含まれるノンス文字列を比較することとを含んでもよい。
ある例では、セキュアシェルルータ1140は、セッションマネージャサービス120に接続し、ノンストークンを受信すると、ノンストークンから満了を抽出してもよい。ノンスの寿命は、設定可能であってもよい(例えば、満了時間は、5分、または任意の他の数の秒、分、もしくは時間であってもよい)。ノンストークンが満了した場合、セキュアシェルルータ1150は、セキュア接続を確立するのではなく、エラーを返してもよい。ノンストークンが満了していない場合、セキュアシェルルータ1150は、(たとえば、署名検証によって)ノンストークンを検証してもよく、無効である場合、セキュアシェルルータ1150は、同じエラーを返してもよい。いくつかの実施形態では、セキュアシェルルータ1150は、同じノンストークンの再使用を防止するために、有効なノンストークンを無効にしてもよい。3つのアクセス制御動作が成功裏に終了した後、セキュアシェルルータ1150は、(たとえば、wss接続を介して)ユーザデバイス110をセキュアシェルインスタンス1140に接続してもよい。
図15は、1つ以上の実施形態による、ユーザデバイスがセキュアシェルインスタンスに接続される例示的なデータフロー1500を示すシーケンス図を示す。ユーザデバイス110のユーザは、GUIおよび/またはCLIを通してセキュアシェルインスタンスに接続するように要求し、セッションマネージャサービス120は、IaaSリソースを調整し、インスタンスを構成し、ユーザデバイス110を検証するために使用されるノンスをセキュアシェルルータ1150に提供する。
データフロー1500では、ユーザデバイス110(これは、図10のユーザデバイス110の例であってもよい)は、セキュアシェルインスタンスに接続する要求を提出してもよい。図11を参照してより詳細に説明されるように、要求は、GUI/CLIログインサービス(例えば、図11のGUI/CLIログインサービス1110)を通して提出されてもよく、セッションマネージャサービス120によって受信されてもよい。要求は、GUI/CLIログインサービスによって生成された公開/秘密鍵ペアの秘密鍵によって署名されてもよい。鍵ペアは一時的であってもよく、鍵ペアの有効性は、上記で図14、および下記で図16を参照してより詳細に説明されるように、署名された要求の検証パラメータの1つとしての役割を果たしてもよい。
署名された要求を受信すると、セッションマネージャサービス120は、上記図を参照してより詳細に説明されるように、シェルインスタンスを構成してもよい。シェルインスタンスを構成することは、ボリュームを予約すること、セキュアシェルインスタンスを構成する目的で作成されるいくつかの利用可能なインスタンスからインスタンスを割り当てること、および割り当てられたインスタンス上に、委任トークンを含んでもよい構成ファイルをインストールすることを含むが、それらに限定されない、複数の動作を含んでもよい。以下で図16を参照してより詳細に説明するように、ユーザアイデンティティを認証し、セキュアシェルインスタンスを介したIaaSシステムリソースへのアクセスを承認するために、1つ以上の動作が含まれてもよい。
シェルインスタンスを構成することは、セッションマネージャサービス120が、インスタンスマネージャサービスからシェルインスタンス識別子(たとえば、IaaSリソース識別子)を受信することを含んでもよい。シェルインスタンス識別子を用いて、セッションマネージャサービス120は、ノンストークンを生成してもよく、セキュアシェルルータ1150(これは、図11のセキュアシェルルータ1150の例であってもよい)に対応するルータアドレスを受信してもよい。セッションマネージャサービス120は、セッションマネージャサービス120によって保持される公開/秘密鍵ペアの秘密鍵を使用してノンストークンに署名してもよい。セッションマネージャサービス120は、システム署名されたノンス、シェルインスタンス識別子、およびルータアドレスをユーザデバイス110に(例えば、GUI/CLIログインサービスを介して)提供してもよく、これは、ユーザデバイスがセキュアシェルインスタンスに接続することの一部として、セキュアシェルルータ1150をアドレス指定することを可能にしてもよい。いくつかの実施形態では、セッションマネージャサービス120は、署名されていないノンストークンをユーザデバイス110に提供してもよい。そのような場合、セッションマネージャサービス120は、システム署名されたノンストークンを生成するためにノンストークンに署名してもよい。
セッションマネージャサービス120から情報(たとえば、ノンストークン、シェルインスタンス識別子、およびルータアドレス)を受信すると、ユーザデバイス110は、(例えば、要求に署名するために使用される鍵ペアの秘密鍵を使用して)ノンストークンに署名してもよい。次いで、ユーザデバイス110は、(たとえば、ルータアドレスにおいて)セキュアシェルルータ1150に接続してもよく、ユーザ署名されたノンストークンおよびシェルインスタンス識別子を提供してもよい。いくつかの実施形態では、ユーザ署名されたノンストークンは、ユーザ署名およびシステム署名の両方を含み、それによって、単一の二重署名されたノンストークンを使用して、ユーザデバイス110およびセッションマネージャサービス120の両方の署名検証を可能にする。
ユーザデバイス110から受信された要求を検証するために、セキュアシェルルータ1150は、要求に関連付けられたシェル識別子と、システム署名されたノンスとを、セッションマネージャサービス120に要求してもよい。それに応答して、セッションマネージャサービス120は、シェルインスタンス識別子およびシステム署名されたノンスをセキュアシェルルータ1150に提供してもよい。いくつかの実施形態では、セッションマネージャサービス120がシステム署名されたノンスをユーザデバイス110に提供する場合のように、セキュアシェルルータ1150は、セッションマネージャサービス120にシステム署名されたノンスを要求しなくてもよい。
図14を参照してより詳細に説明されるように、セキュアシェルルータは、ユーザ公開鍵およびシステム公開鍵を使用して署名されたノンストークンを復号することによって署名をチェックしてもよい。検証はまた、ユーザデバイス110およびセッションマネージャサービス120の両方から受信されたシェルインスタンス識別子を比較することを含んでもよい。
署名を検証すると、セキュアシェルルータ1150は、暗号化された接続(たとえばwss接続)によってユーザデバイス110をセキュアシェルインスタンス(例えば、図11のセキュアシェルインスタンス1140)に接続してもよい。いくつかの実施形態では、セッションマネージャサービス120がノンストークンおよび対応するシェルインスタンス識別子をデータストアに記憶するときと同様に、セッションマネージャサービス120またはセキュアシェルルータ1150は、たとえば署名されたノンストークンを検証し、ユーザデバイス110をセキュアシェルインスタンスに接続した後、ノンストークンについてのエントリをデータストアから除去してもよい。
図16は、1つ以上の実施形態による、ユーザデバイスが承認サービス1130を使用してセキュアシェルインスタンスに接続される例示的なデータフロー1600を示すシーケンス図を示す。承認サービス1130は、例えば、ログイン身元証明を承認することによってIaaSリソースへのアクセスを承認するために使用されてもよい、一般的なユーザアイデンティティ承認サービスを含んでもよいが、それに限定されない。承認サービス1130の関与は、上記で図14を参照してより詳細に説明したように、1つ以上の予備アイデンティティ検証およびアクセス承認動作を含んでもよい。
データフロー1600では、セッションマネージャサービス120は、前述の図を参照して説明されるように、ユーザデバイス110から署名された要求を受信する。署名された要求を受信すると、セッションマネージャサービス120は、承認サービスに承認サービス公開鍵を要求してもよい。承認サービス公開鍵は、署名された要求とともに受信されたログイントークンを復号して(例えば、ログイントークンは、対応する公開鍵とペアにされた承認サービス秘密鍵によって署名されていてもよい)、ユーザ識別子情報(例えば、ユーザ名/パスワードの組み合わせ、要求識別子情報など)を識別するために、使用されてもよい。承認サービス1130は、公開鍵をセッションマネージャサービス120に提供してもよく、セッションマネージャサービスは、次いで、ログイントークンからの識別子情報を使用してユーザアイデンティティの認証を要求してもよい。承認サービス1130は、ユーザアイデンティティを確認してもよい。
ユーザデバイス110のアイデンティティの認証を受信すると、セッションマネージャサービス120は、承認サービス1130に委任トークンを要求してもよい。図11を参照してより詳細に説明されるように、委任トークンは、ユーザデバイスが、署名された要求を満たすように構成されたセキュアシェルインスタンスを介してIaaSシステムリソースに接続することを承認されることを示すために、セッションマネージャサービスによって使用されてもよい。セキュアシェルを介してIaaSシステムリソースに接続するためのユーザの承認は、ユーザデバイス110が要求されている特定のリソースに接続することを承認されるかどうかを承認サービス1130が判定してもよいように、署名された要求に含まれるIaaSリソース情報を提供することを含んでもよい。
ユーザデバイス110を承認すると、承認サービス1130は、委任トークンを生成し、セッションマネージャサービス120に提供してもよい。セッションマネージャサービス120は、委任トークンをセキュアシェルインスタンス(例えば、図11のセキュアシェルインスタンス1140)上にインストールしてもよい。セキュアシェルインスタンスを構成することは、上記で説明されるように、追加および/または代替動作を含んでもよい。
図15を参照して説明されるように、セッションマネージャサービス120は、ノンストークンを生成し、セッションマネージャサービス120の公開/秘密鍵ペアのシステム秘密鍵を使用してノンストークンに署名して、署名されたノンストークンを生成し、署名されたノンストークンを、シェルインスタンス識別子およびセキュアシェルルータ1150に対応するルータアドレス(たとえば、「ルータエンドポイント」)とともにユーザデバイス110に提供してもよい。ユーザデバイス110は、検証プロセスの一部として、システム署名されたノンストークンに署名し、ユーザ署名されたノンストークンを含む要求(例えば、WebSocket Secureまたは「wss」接続を確立する要求)をセキュアシェルルータに送信してもよい。セッションマネージャサービスによっても署名された、ユーザ署名されたノンスは、要求を検証するためにセキュアシェルルータ1150によって使用されてもよい。いくつかの実施形態では、図15を参照してより詳細に説明されるように、セッションマネージャサービス120は、ユーザ署名されたノンスおよびシステム署名されたノンスの両方が検証のためにセキュアシェルルータ1150に提供されるように、無署名のノンスをユーザデバイス110に送信してもよい。
セキュアシェルルータ1150は、上記で図15を参照してより詳細に説明したように、署名を検証してもよい。システム署名およびユーザ署名を検証し、ノンストークンおよびシェルインスタンス識別子を認証すると、セキュアシェルルータは、ユーザデバイスをセキュアシェルインスタンスに接続してもよい。
図17は、1つ以上の実施形態による、セキュアシェルセッションを管理するための例示的なフロー1700を示す。フローの動作は、ハードウェア回路として実現され、および/または図10のセッションマネージャサービス120などのコンピュータシステムの非一時的コンピュータ可読媒体上にコンピュータ可読命令として記憶され得る。実現されると、命令は、コンピュータシステムのプロセッサによって実行可能な回路またはコードを含むモジュールを表す。そのような命令の実行は、本明細書で説明される特定の動作を実行するようコンピュータシステムを構成する。各回路またはコードは、プロセッサと組み合わせて、それぞれの動作を実行する。動作は、ある特定の順序で示されているが、特定の順序は必要ではなく、1つ以上の動作は省略され、スキップされ、および/または並べ替えられてもよいことを理解されたい。
ある例では、フロー1700は、コンピュータシステムがユーザデバイス(例えば、図10のユーザデバイス110)をセキュアシェルインスタンス(例えば、図11のセキュアシェルインスタンス1140)に接続する要求を受信する動作1702を含む。図11および図15を参照してより詳細に説明されるように、要求は、ユーザデバイスおよび/またはログインサービス(例えば、図11のGUI/CLIログインサービス1110)によって生成され、実現のためにセッションマネージャサービスに提供される、署名された要求であってもよい。要求は、図11および図16を参照してより詳細に説明されるように、GUI/CLIログインサービスによって生成された秘密鍵によって署名されてもよく、ユーザデバイスのアイデンティティを認証するために使用されてもよい。
ある例では、フロー1700は、コンピュータシステムがユーザデバイスにセキュアシェルインスタンスへのアクセスを承認する動作1704を含む。図18を参照してより詳細に説明されるように、ユーザデバイスを承認することは、外部承認サービス(例えば、図11の承認サービス1130)を伴う1つ以上の動作を含んでもよい。承認サービスは、(例えば、ユーザ名/パスワードなどのユーザ識別子を検証することによる)ユーザの認証を提供してもよく、要求に記述されたIaaSリソースへのアクセスを承認してもよい。
ある例では、フロー1700は動作1706を含み、コンピュータシステムは、セキュアシェルインスタンスのシェル識別子によって記述されるセキュアシェルインスタンスを構成する。いくつかの実施形態では、セキュアシェルインスタンスを構成することは、ブロックボリュームを予約することと、ブロックボリュームにインスタンスを割り当てることと、インスタンス上に構成ファイルおよび委任トークンをインストールすることとを含んでもよいが、これらに限定されない。任意選択で、ブロックボリュームを予約することは、ユーザデバイスが既にブロックボリューム(例えば、図13のユーザブロックボリューム1330)に関連付けられているか、またはまだブロックボリュームに関連付けられていないかをチェックすることを含んでもよく、関連付けられていない場合、空のブロックボリューム(例えば、図13の空のブロックボリューム1340)を予約してもよい。任意選択で、インスタンスを割り当てることは、複数の利用可能なインスタンスからインスタンスを選択することを含んでもよい。例えば、構成ファイルをインストールすることによって再構成されてもよい1つ以上のデフォルト構成で、複数の利用可能なインスタンスを維持することは、セッションマネージャサービスが要求に対してより迅速に(すなわち、より低いレイテンシで)応答することを可能にしてもよい。いくつかの実施形態では、ブロックボリュームを予約し、インスタンスを割り当てることは、ボリュームマネージャサービス(例えば、図10のボリュームマネージャサービス130)およびインスタンスマネージャサービス(例えば、図10のインスタンスマネージャサービス150)と通信することを含んでもよい。
ある例では、フロー1700は、コンピュータシステムがノンストークンを生成する動作1708を含む。ノンストークンは、1つ以上のタイプの情報を含むウェブトークン(例えば、JSON Web TokenまたはJWTトークン)であってもよい。任意選択で、ノンストークンは、ノンスが使用に有効であるかどうかを追跡するために使用されてもよいキーシーケンスを含む。例えば、セッションマネージャサービスは、ノンストークンをデータストア(例えば、図10のノンスおよび識別子ストア1070)に記憶してもよい。いくつかの実施形態では、ノンストークンは、要求を検証するために使用されてもよい、文字および/または数字のランダムなシーケンス(例えば、17個の英数字)を含む。
ある例において、フロー1700は、コンピュータシステムがノンストークンに署名して、署名されたノンストークンを生成する、動作1710を含む。図12を参照してより詳細に説明するように、システムは、公開/秘密鍵ペアの秘密鍵(たとえば、非対称暗号化)を使用してノンストークンに署名してもよい。このようにして、署名されたノンストークンは、ユーザデバイス(例えば、図10のユーザデバイス1010)への送信時に暗号化されてもよい。
例えば、フロー1700は動作1712を含み、コンピュータシステムは、署名されたノンストークンと、シェル識別子と、ルータアドレスとをユーザデバイスに与える。図15を参照してより詳細に説明したように、ユーザデバイスは、セキュア接続要求(例えば、WSS接続要求)をセキュアシェルルータ(例えば、図11のセキュアシェルルータ1150)に送信してもよい。ユーザデバイスは、ノンストークンに秘密鍵(例えば、要求に署名するために使用されるのと同じ鍵)で署名してもよく、秘密鍵とペアにされた公開鍵をルータアドレスにおいてセキュアシェルルータに提供してもよい。ユーザデバイスはまた、接続要求の一部として、セキュアシェルルータにシェル識別子を提供してもよい。任意選択で、コンピュータシステムは、セキュアシェルルータによって実現される追加の検証パラメータとして、ルータアドレスにおいてセキュアシェルルータにシェル識別子を提供してもよい。
図18は、1つ以上の実施形態による、セキュアシェルインスタンスを単回使用ノンストークンとともに構成するための例示的なフロー1800を示す。フローの動作は、ハードウェア回路として実現され、および/または図10のセッションマネージャサービスシステム1020などのコンピュータシステムの非一時的コンピュータ可読媒体上にコンピュータ可読命令として記憶され得る。実現されると、命令は、コンピュータシステムのプロセッサによって実行可能な回路またはコードを含むモジュールを表す。そのような命令の実行は、本明細書で説明される特定の動作を実行するようコンピュータシステムを構成する。各回路またはコードは、プロセッサと組み合わせて、それぞれの動作を実行する。動作は、ある特定の順序で示されているが、特定の順序は必要ではなく、1つ以上の動作は省略され、スキップされ、および/または並べ替えられてもよいことを理解されたい。
ある例では、フロー1800は、図17の動作1702に続いて開始し、コンピュータシステムは、セキュアシェルインスタンスを作成する要求をユーザデバイスから受信する。具体的には、コンピュータシステム(例えば、図10のセッションマネージャサービス1020)は、セッションマネージャサービスが図17で説明される動作を進めることを可能にすることの一部として、承認サービス(例えば、図11の承認サービス1130)と通信している、要求が受信されたユーザデバイスを認証および/または承認するための1つ以上の動作を実現してもよい。
ある例において、フロー1800は、コンピュータシステムがユーザ識別子を含むログイントークンを受信する動作1804を含む。図16を参照してより詳細に説明されるように、セッションマネージャサービスは、承認サービスに対して、ユーザデバイスのアイデンティティ(たとえば、署名された要求において表されるとおり)を認証し、要求において識別されたIaaSリソースへのユーザデバイスのアクセスを承認するように、要求してもよい。ユーザアイデンティティを認証することの一部として、セッションマネージャサービスは、ユーザデバイスからログイントークンを受信してもよい。ログイントークンは、ユーザ情報(例えば、ユーザ名/パスワード、ログイン身元証明、ログインセッションの満了情報など)、ならびにユーザデバイスによって要求および/またはノンストークンに署名するために使用されるユーザ秘密鍵とペアにされたユーザ公開鍵を含んでもよい。ログイントークンは、承認サービスによって保持される秘密鍵によって署名されてもよい。
ある例において、フロー1800は、コンピュータシステムが承認サービスに公開鍵を要求する動作1806を含む。ログイントークンに署名するために使用される公開鍵は、提供してもよい。セッションマネージャサービスは、ユーザデバイスを認証することの一部として、ログイントークンを復号するために承認サービスに公開鍵を要求してもよい。例えば、ログイントークンは、ユーザデバイスを認証するために使用されるユーザ識別子情報(例えば、デバイス識別子またはセッション識別子情報)を提供してもよい。
ある例では、フロー1800は、コンピュータシステムがユーザデバイスを認証する動作1808を含む。いくつかの実施形態では、セッションマネージャサービスは、ログイントークンからユーザ識別子情報を抽出してもよく、ユーザ識別子情報を、要求とともに提供される情報と比較してもよい。
ある例において、フロー1800は、コンピュータシステムが委任トークンを要求する動作1810を含む。図11を参照してより詳細に説明されるように、委任トークンは、ユーザデバイスがセキュアシェルインスタンスに接続するためのユーザ要求において識別されるIaaSリソースにアクセスすることを承認された後に、承認サービスによって生成され、セッションマネージャサービスに提供されてもよい。たとえば、セッションマネージャサービスは、委任トークンが生成されるかどうかを承認サービスが判断してもよいことに少なくとも部分的に基づいて、ユーザ識別子情報、インスタンス識別子情報、満了情報などを提供してもよい。
ある例において、フロー1800は、コンピュータシステムが委任トークンを受信する動作1812を含む。セッションマネージャサービスは、例えば、上で図11を参照してより詳細に説明されたように、例えば、セキュアシェルインスタンスを構成することの一部として、たとえば、セキュアシェルインスタンス上に委任トークンをインストールすることによって、承認サービスによる追加の承認なしに、セキュアシェルルータがユーザデバイスにIaaSリソースへのアクセスを許可することを可能にするために、委任トークンを使用してもよい。
以下の項は、開示される実現例の実施形態を説明する:
第1項.方法であって、
セッションマネージャサービスが、ユーザデバイスをセキュアシェルインスタンスへのセキュア接続に接続する要求を受信するステップと、
セッションマネージャサービスが、ユーザデバイスを承認するステップと、
セッションマネージャサービスが、セキュアシェルインスタンスのシェル識別子によって記述されるセキュアシェルインスタンスを構成するステップと、
セッションマネージャサービスが、ノンストークンを生成するステップと、
セッションマネージャサービスが、ノンストークンに署名して、署名されたノンストークンを生成するステップと、
セッションマネージャサービスが、署名されたノンストークン、シェル識別子、およびルータアドレスをユーザデバイスに提供するステップとを含む、方法。
第2項.ユーザデバイスを承認することは、
ユーザデバイスからユーザ識別子を含むログイントークンを受信するステップと、
承認サービスに承認システム公開鍵を要求するステップと、
承認システム公開鍵を用いてログイントークンを復号することに少なくとも部分的に基づいてユーザデバイスを認証するステップと、
ユーザ識別子、要求において識別されたリソースのリソース識別子、および要求の満了期間を提供することに少なくとも部分的によって、承認サービスに委任トークンを要求するステップと、
承認サービスから委任トークンを受信するステップとを含み、承認サービスは、満了期間内において要求において識別されたリソースへのアクセスを承認すると、委任トークンを生成するよう構成される、第1項に記載の方法。
第3項.ノンストークンに署名することは、
セッションマネージャサービスによって保持される公開/秘密鍵ペアのシステム秘密鍵を使用してノンストークンに署名するステップと、
ルータアドレスにおいてセキュアシェルルータに公開/秘密鍵ペアのシステム公開鍵を提供するステップとを含む、第1項に記載の方法。
第4項.さらに、
ノンストークンをデータストアに記憶するステップを含み、ノンストークンはキーシーケンスを含み、さらに、
ノンストークンが有効であるかどうかを、データストアをキーシーケンス上で検索することに少なくとも部分的に基づいて確認するステップと、
セキュアシェルルータがユーザデバイスとセキュアシェルインスタンスとの間にセキュアな接続を確立した後に、データストアからノンストークンを除去するステップとを含む、第1項に記載の方法。
第5項.さらに、
非アクティビティ期間の後、またはユーザデバイスによるセキュア接続の終了の後に、セキュアシェルインスタンスを終了することを含む、第1項に記載の方法。
第6項.セキュアシェルインスタンスを構成するステップは、
ブロックボリュームを予約するステップと、
ブロックボリュームに対応するドメイン識別子を受信するステップと、
ドメイン識別子を使用してブロックボリュームにインスタンスを割り当てるステップとを含み、インスタンスは、複数の利用可能なインスタンスから割り当てられ、セキュアシェルインスタンスを構成するステップはさらに、
インスタンスに対応するシェル識別子を受信するステップと、
インスタンス上に構成ファイルをインストールするステップとを含み、構成ファイルは、要求に含まれる要求情報を含む、第1項に記載の方法。
第7項.セキュアシェルインスタンスは、要求がドッカーコンテナ上で端末を実行する命令を含むように、ドッカーコンテナを動作させる、第1項に記載の方法。
第8項.コンピュータシステムであって、
1つ以上のプロセッサと、
1つ以上のプロセッサと通信するメモリとを含み、メモリは、コンピュータ実行可能命令を記憶するよう構成され、コンピュータ実行可能命令を実行することは、1つ以上のプロセッサに、ステップを実行させ、前記ステップは、
セッションマネージャサービスが、ユーザデバイスをセキュアシェルインスタンスへのセキュア接続に接続する要求を受信するステップと、
セッションマネージャサービスが、ユーザデバイスを承認するステップと、
セッションマネージャサービスが、セキュアシェルインスタンスのシェル識別子によって記述されるセキュアシェルインスタンスを構成するステップと、
セッションマネージャサービスが、ノンストークンを生成するステップと、
セッションマネージャサービスが、ノンストークンに署名して、署名されたノンストークンを生成するステップと、
セッションマネージャサービスが、署名されたノンストークン、シェル識別子、およびルータアドレスをユーザデバイスに提供するステップとを含む、コンピュータシステム。
第9項.ユーザデバイスを承認することは、
ユーザデバイスからユーザ識別子を含むログイントークンを受信するステップと、
承認サービスに承認システム公開鍵を要求するステップと、
承認システム公開鍵を用いてログイントークンを復号することに少なくとも部分的に基づいてユーザデバイスを認証するステップと、
ユーザ識別子、要求において識別されたリソースのリソース識別子、および要求の満了期間を提供することに少なくとも部分的によって、承認サービスに委任トークンを要求するステップと、
承認サービスから委任トークンを受信するステップとを含み、承認サービスは、満了期間内において要求において識別されたリソースへのアクセスを承認すると、委任トークンを生成するよう構成される、第8項に記載のシステム。
第10項.ノンストークンに署名することは、
セッションマネージャサービスによって保持される公開/秘密鍵ペアのシステム秘密鍵を使用してノンストークンに署名するステップと、
ルータアドレスにおいてセキュアシェルルータに公開/秘密鍵ペアのシステム公開鍵を提供するステップとを含む、第8項に記載のシステム。
第11項.コンピュータ実行可能命令は、実行されると、さらに、コンピュータシステムの1つ以上のプロセッサに、ステップを実行させ、前記ステップは、
ノンストークンをデータストアに記憶するステップを含み、ノンストークンはキーシーケンスを含み、前記ステップはさらに、
ノンストークンが有効であるかどうかを、データストアをキーシーケンス上で検索することに少なくとも部分的に基づいて確認するステップと、
セキュアシェルルータがユーザデバイスとセキュアシェルインスタンスとの間にセキュアな接続を確立した後に、データストアからノンストークンを除去するステップとを含む、第8項に記載のシステム。
第12項.コンピュータ実行可能命令は、実行されると、さらに、コンピュータシステムの1つ以上のプロセッサに、ステップを実行させ、前記ステップは、
非アクティビティ期間の後、またはユーザデバイスによるセキュア接続の終了の後に、セキュアシェルインスタンスを終了することを含む、第8項に記載のシステム。
第13項.セキュアシェルインスタンスを構成するステップは、
ブロックボリュームを予約するステップと、
ブロックボリュームに対応するドメイン識別子を受信するステップと、
ドメイン識別子を使用してブロックボリュームにインスタンスを割り当てるステップとを含み、インスタンスは、複数の利用可能なインスタンスから割り当てられ、セキュアシェルインスタンスを構成するステップはさらに、
インスタンスに対応するシェル識別子を受信するステップと、
インスタンス上に構成ファイルおよび委任トークンをインストールするステップとを含み、構成ファイルは、要求に含まれる要求情報を含む、第8項に記載のシステム。
第14項.セキュアシェルインスタンスは、要求がドッカーコンテナ上で端末を実行する命令を含むように、ドッカーコンテナを動作させる、第8項に記載のシステム。
第15項.実行されると、コンピュータシステムの1つ以上のプロセッサに、ステップを実行させるコンピュータ実行可能命令を記憶する、非一時的コンピュータ可読記憶媒体であって、前記ステップは、
セッションマネージャサービスが、ユーザデバイスをセキュアシェルインスタンスへのセキュア接続に接続する要求を受信するステップと、
セッションマネージャサービスが、ユーザデバイスを承認するステップと、
セッションマネージャサービスが、セキュアシェルインスタンスのシェル識別子によって記述されるセキュアシェルインスタンスを構成するステップと、
セッションマネージャサービスが、ノンストークンを生成するステップと、
セッションマネージャサービスが、ノンストークンに署名して、署名されたノンストークンを生成するステップと、
セッションマネージャサービスが、署名されたノンストークン、シェル識別子、およびルータアドレスをユーザデバイスに提供するステップとを含む、非一時的コンピュータ可読記憶媒体。
第16項.ユーザデバイスを承認することは、
ユーザデバイスからユーザ識別子を含むログイントークンを受信するステップと、
承認サービスに承認システム公開鍵を要求するステップと、
承認システム公開鍵を用いてログイントークンを復号することに少なくとも部分的に基づいてユーザデバイスを認証するステップと、
ユーザ識別子、要求において識別されたリソースのリソース識別子、および要求の満了期間を提供することに少なくとも部分的によって、承認サービスに委任トークンを要求するステップと、
承認サービスから委任トークンを受信するステップとを含み、承認サービスは、満了期間内において要求において識別されたリソースへのアクセスを承認すると、委任トークンを生成するよう構成される、第15項に記載の非一時的コンピュータ可読記憶媒体。
第17項.ノンストークンに署名することは、
セッションマネージャサービスによって保持される公開/秘密鍵ペアのシステム秘密鍵を使用してノンストークンに署名するステップと、
ルータアドレスにおいてセキュアシェルルータに公開/秘密鍵ペアのシステム公開鍵を提供するステップとを含む、第15項に記載の非一時的コンピュータ可読記憶媒体。
第18項.コンピュータ実行可能命令は、実行されると、さらに、コンピュータシステムの1つ以上のプロセッサに、ステップを実行させ、前記ステップは、
ノンストークンをデータストアに記憶するステップを含み、ノンストークンはキーシーケンスを含み、前記ステップはさらに、
ノンストークンが有効であるかどうかを、データストアをキーシーケンス上で検索することに少なくとも部分的に基づいて確認するステップと、
セキュアシェルルータがユーザデバイスとセキュアシェルインスタンスとの間にセキュアな接続を確立した後に、データストアからノンストークンを除去するステップとを含む、第15項に記載の非一時的コンピュータ可読記憶媒体。
第19項.コンピュータ実行可能命令は、実行されると、さらに、コンピュータシステムの1つ以上のプロセッサに、ステップを実行させ、前記ステップは、
非アクティビティ期間の後、またはユーザデバイスによるセキュア接続の終了の後に、セキュアシェルインスタンスを終了することを含む、第15項に記載の非一時的コンピュータ可読記憶媒体。
第20項.セキュアシェルインスタンスを構成するステップは、
ブロックボリュームを予約するステップと、
ブロックボリュームに対応するドメイン識別子を受信するステップと、
ドメイン識別子を使用してブロックボリュームにインスタンスを割り当てるステップとを含み、インスタンスは、複数の利用可能なインスタンスから割り当てられ、セキュアシェルインスタンスを構成するステップはさらに、
インスタンスに対応するシェル識別子を受信するステップと、
インスタンス上に構成ファイルをインストールするステップとを含み、構成ファイルは、要求に含まれる要求情報を含む、第15項に記載の非一時的コンピュータ可読記憶媒体。
クラウドシェルのために複数のネットワークインターフェイスを利用するための技法
クラウドベースのプラットフォームは、スケーラブルで柔軟なコンピューティングリソースをユーザに提供する。そのようなクラウドベースのプラットフォームは、インフラストラクチャ・アズ・ア・サービス(IaaS)とも呼ばれ、顧客のデータの周囲のクラウドソリューションのスイート全体、例えば、変換をオーサリングし、データをロードし、データを提示するためのソリューションを提供してもよい。IaaSリソースのユーザは、(例えば、WebSocketセキュア(wss)接続を介した双方向暗号化を用いて)動作およびデータ転送がセキュアに実行され得るように、セキュアシェルインスタンス(例えば、仮想クラウドネットワーク(VCN)上で動作する仮想マシン)内にセキュア端末を作成することを要求してもよい。
セキュアな通信の態様は、セキュアシェルインスタンスとの間のネットワークトラフィックを制御することを含んでもよい。ネットワークトラフィック制御は、複数のインスタンスと通信状態にあってもよく、IaaSシステムのデータおよび計算リソースへのアクセスならびに/またはそれに対する制御を有してもよい、1つ以上のIaaSサービス(例えば、コアクラウドサービス)から、セキュアシェルインスタンスを隔離するための、1つ以上の技法ならびに/または手法を含んでもよい。ネットワークトラフィック制御は、セキュアシェルインスタンスに出入りするネットワーク通信に対する方向制限を実現することを含んでもよい。方向制限は、次いで、外部システムからのあるインバウンドトラフィックをブロックし、IaaSサービスへのアウトバウンドトラフィックをブロックしてもよい。セキュアシェルインスタンスを隔離することは、例えば、コアIaaSサービスをセキュアシェルインスタンスから隔離するよう、複数の仮想クラウドネットワークを実現することを含んでもよく、両方ともネットワーク通信サービスから隔離される。
説明のための例として、ユーザは、ユーザデバイスを介して(例えば、ブラウザのグラフィカルユーザインターフェイスおよび/またはコマンドラインインターフェイスを使用して)セキュアシェルインスタンスにコマンドを提出してもよい。セキュアシェルインスタンスは、プライマリ仮想ネットワークインターフェイスカード(vNIC)とともに構成されてもよく、1つ以上のセキュリティルールは、それを、イングレスのみ(セキュアシェルインスタンスへのインバウンドネットワークトラフィックに関して単方向)として定義してもよい。コマンドは、セキュアシェルインスタンスに出力を生成させてもよく、これは、出力を(例えば、インターネットを介して)外部アドレスに送信する命令を含んでもよい。セキュアシェルインスタンスは、プライマリvNICではなくセカンダリvNICを介して出力を送信してもよい。プライマリvNICと同様に、セカンダリvNICは、セカンダリvNICを通るネットワークトラフィックをエグレスのみ(セキュアシェルインスタンスからのアウトバウンドトラフィックに関して単方向)として制限するセキュリティルールを用いて構成されてもよい。このようにして、承認されたネットワークトラフィックは、プライマリvNICを介してセキュアシェルインスタンスに到着してもよく、セカンダリvNICを介してセキュアシェルインスタンスを離れてもよい。さらに、セキュアシェルインスタンスは、それぞれIaaSサービスおよびネットワーク通信サービスを実行してもよいサービスVCNおよびネットワーク隔離VCNの両方から隔離された計算隔離VCN上で実行されてもよい。
そのような構成は、全体としてセキュアシェルインスタンスおよびIaaSシステムの両方について改善されたセキュリティを提供し得る。部分的に、改善されたセキュリティがもたらされ得、なぜならば、セキュアシェルインスタンスは、プライマリvNICを介してサービスVCNにメッセージを送信する能力が制限され得、ネットワーク隔離VCNおよびセカンダリvNICを介して外部ネットワークからメッセージを受信する能力が制限され得るからである。このようにして、インターネット(または他のネットワーク)からの無許可のネットワークトラフィックは、セキュアシェルインスタンスにアクセスすることができない場合があり、セキュアシェルインスタンスは、承認なしにコアIaaSリソースにアクセスすることができない場合がある。
図19は、1つ以上の実施形態による、セキュアシェルインスタンスのために複数のネットワークインターフェイスを利用する例示的な技法1900を示す。仮想クラウドネットワーク間の通信の方向制御は、構成IaaSリソースの改善されたセキュリティを提供し得、セキュリティリスクがコアIaaSリソースに到達することを制限および/または防止し得る。そのために、例示的な技法1900は、分散コンピューティングシステム(たとえば、クラウドネットワーク)において仮想システムとして実現されてもよい1つ以上のシステム構成要素を使用して、システム通信の流れを制御するための複数の手法を含んでもよい。いくつかの実施形態では、それらの手法は、仮想クラウドネットワーク(VCN)上で動作する仮想マシン(VM)の例であってもよい、セキュアシェルインスタンス1950との通信の発信元および/または宛先を制御するために実現されてもよい。いくつかの実施形態では、セキュアシェルインスタンスは、以下で図20を参照してさらに詳細に説明されるように、1つ以上の仮想ネットワークインターフェイスカード(vNIC)を介して、分散コンピューティングシステムの他の構成要素(例えば、ルータ、サブネット等)と通信する。
いくつかの実施形態では、例示的な技法1900は、動作を実行するためのコマンドを受信することを含む(例えば、動作1902)。いくつかの実施形態では、コマンドは、ユーザデバイス1920から生成および/または送信される。ユーザデバイス1920は、パーソナルコンピュータ、デジタルワークステーション、タブレット、スマートフォンなど、ネットワーク(例えば、インターネットおよび/またはプライベートネットワーク)にアクセスするよう構成された任意の形態の電気デバイスを含んでもよい。コマンドは、(たとえば、IaaSプロバイダのブラウザインターフェイスを介して)ユーザデバイス1920のユーザによって生成される任意のタイプの命令を含んでもよい。たとえば、コマンドは、計算タスク、記憶タスク(例えば、入出力動作、記憶されたデータの移動、データ変換など)、構成タスク(例えば、セキュアシェルインスタンス1950の動作パラメータにアクセスするコマンド)などを含んでもよい。いくつかの実施形態では、ユーザデバイス1920は、コマンドを適切なサブシステムおよび/またはクラウドネットワークリソースに向けるシステムサービス(例えば、ブラウザインターフェイスおよび/またはコマンドラインインターフェイスサービス)と通信してもよい。そのような構成は、ネットワーク隔離および/またはネットワーク隔離を介した改善されたシステムセキュリティを提供してもよい。たとえば、以下で図20を参照してより詳細に説明するように、VCNにおいてIaaSサービスのテナンシとは異なるテナンシ上でセカンダリvNICを使用することによって、ユーザ発信ネットワークトラフィックを識別可能にしてもよい(たとえば、ソースIPアドレスは、IaaSサービスのそれとは異なるIPアドレスプールに由来してもよい)。
いくつかの実施形態では、動作1902で受信されたコマンドは、クラウドシェルルータ1930に送信される。クラウドシェルルータは、以下で図20を参照してより詳細に説明されるように、仮想クラウドネットワークに実現される仮想ルータであってもよい。クラウドシェルルータ1930は、コマンドを適切な宛先側(例えば、セキュアシェルインスタンス1950)に向けて送信してもよく(例えば、動作1904)、それは、別個の仮想クラウドネットワークに実現されてもよい。いくつかの実施形態では、例示的な技法1900の異なる動作を実行する別々のサブシステムを別々の仮想クラウドネットワークにおいて実現することは、コアクラウドリソースおよび/またはユーザデータのための改善されたセキュリティを提供し得る。いくつかの実施形態では、クラウドシェルルータ1930は、プライマリ仮想ネットワークアクセスカード1940(vNIC)を介してセキュアシェルインスタンス1950と通信してもよい。いくつかの実施形態では、プライマリvNIC1940は、セキュアシェルインスタンス1950が実現される仮想マシンのためのネットワークインターフェイス構成を表してもよい。したがって、プライマリvNIC1940は、セキュリティルールとならんで、1つ以上の動作パラメータ(たとえば、MACアドレス)とともに構成されてもよく、それは、以下で図を参照してより詳細に説明するように、プライマリvNIC1940がセキュアシェルインスタンス1950との間で通信を選択的にルーティングすることを可能にしてもよい。
いくつかの実施形態では、セキュアシェルインスタンス1950は、コマンド内に示される動作を実行してもよい(例えば、動作1906)。上記で説明したように、セキュアシェルインスタンス1950は、データベース動作、計算動作などを含む1つ以上のタイプの動作を実行するよう構成された仮想マシン(VM)であり得る。たとえば、セキュアシェルインスタンス1950は、コマンドを実行して、(例えば、あるデータセンタに記憶されたデータを別のデータセンタに移動するため、パブリックネットワークを介してデータを外部サーバに送信するためなど、)分散コンピュータシステムのコンパートメントにおいてユーザIaaSリソースおよび/またはデータの1つ以上の態様を修正してもよい。
いくつかの実施形態では、セキュアシェルインスタンス1950は、コマンドに含まれる動作を実行した結果として返信メッセージを生成してもよい(例えば、動作1908)。返信メッセージは、(例えば、パブリックネットワーク上またはプライベートネットワーク上の)コアIaaSサービスまたは外部サーバではなく、ユーザデバイス1920のユーザおよび/またはユーザデバイス1920に向けられてもよい。いくつかの実施形態では、返信メッセージは、セキュアシェルインスタンス1950によって実行される動作を参照して結果情報を提供するように生成されてもよい。例えば、セキュアシェルインスタンス1950は、動作が成功裏に完了したこと、アボートされたこと、失敗したこと、再スケジュールされたことなどを示すよう、返信メッセージを生成してもよい。返信メッセージは、ステータス情報、および返信メッセージの一部として要求される具体的なデータ(例えば、チェックビット、メモリ位置など)を含んでもよい。
いくつかの実施形態では、セキュアシェルインスタンス1950は、返信メッセージをクラウドシェルルータ1930に送信してもよい(例えば、動作1910)。セキュアシェルインスタンス1950は、プライマリvNIC1940を介して返信メッセージを送信してもよい。以下で図20を参照してより詳細に説明されるように、プライマリvNIC1940は、返信メッセージをクラウドシェルルータ1930に送信するが、セキュアシェルインスタンス1950から受信された他のタイプのメッセージを拒否するよう構成されてもよい。
いくつかの実施形態では、セキュアシェルインスタンス1950は、動作の出力を生成してもよい(例えば、動作1912)。動作の出力は、ネットワーク(例えば、パブリックネットワークおよび/またはプライベートネットワーク)を介してセキュアシェルインスタンス1950と通信する外部システムへの通信、データ、および/または命令を含んでもよいが、それらに限定されない。セキュアシェルインスタンス1950は、たとえば、ユーザデバイス1920からのコマンドに含まれる動作が外部ネットワークを介してデータを転送することを含む場合に、出力を生成するように命令されてもよい。データを転送する場合、セキュアシェルインスタンス1950は、IaaSシステムの内部ネットワークを介して、命令をIaaSシステムのデータ管理サービスに送信してもよい。
コマンドを実行することの一部として、例えば、コマンドがデータを転送するか、またはメッセージを外部サーバに送信することであるとき、セキュアシェルインスタンス1950は、動作の出力を含むメッセージの送信(例えば、動作1914)をシェルサブネット1970に対して行ってもよい。セキュアシェルインスタンス1950は、セカンダリvNIC1960を介してシェルサブネット1970と通信してもよい。プライマリvNIC1940と同様に、セカンダリvNIC1960は、セキュアシェルインスタンス1940へのデータおよびメッセージのフローを制御するために、1つ以上の動作パラメータ(たとえば、異なるMACアドレス)および入出力パラメータ(たとえば、セキュリティルール)を用いて構成されてもよい。以下で図20を参照してより詳細に説明されるように、セカンダリvNIC1960は、単方向であるように構成されて、セキュアシェルインスタンス1950からシェルサブネット1970への発信メッセージのみ(たとえば、エグレスのみの構成)を可能にしてもよい。いくつかの実施形態では、セカンダリvNIC1960についての、単方向の、エグレスのみの構成は、セキュアシェルインスタンス1950が、非ユーザデバイスによる侵入および/または不正アクセスによる干渉の外部リスクに対して改善されたセキュリティで動作することを可能にしてもよい。
いくつかの実施形態では、シェルサブネット1970は、動作の出力を外部ネットワーク1980に送信してもよい(たとえば、動作1916)。いくつかの実施形態では、外部ネットワーク1980はパブリックネットワークである。場合によっては、セキュアシェルインスタンス1950および/またはシェルサブネット1970をパブリックネットワークに接続することは、悪意のあるシステムがセキュアシェルインスタンス1950および/またはコアクラウドリソースにアクセスすることを試みる可能性に起因して、セキュリティリスクを導入し得る。例えば、セキュアシェルインスタンス1950を加えることは、コアクラウドリソースへのアクセスを提供し得、コアクラウドリソースは、次いで、クラウドサービス領域内において複数のユーザについてユーザデータへのアクセスを許可し得る。この理由で、シェルサブネット1970は、以下で図20を参照してより詳細に説明されるように、ネットワークアドレス変換(NAT)ゲートウェイを介して外部ネットワーク1980と通信してもよい。
したがって、例示的技法1900は、セキュアシェルインスタンスを外部ネットワーク1980に接続することによって呈されるセキュリティ脅威のリスクを潜在的に低減するために、ユーザデバイス1920と、セキュアシェルインスタンス1950と、外部ネットワーク1980との間の通信がどのように管理され得るかを実証する。いくつかの実施形態では、例示的技法1900は、いくつかのタイプの情報についてメッセージの単方向伝送を提供し、一方、返信メッセージがセキュアシェルインスタンス1950からユーザデバイス1920に返送されることを可能にする。そのような制御を実現することは、セキュアシェルインスタンス1950がアクセスを有する、記憶されたユーザデータのために、改善されたセキュリティを提供してもよく、セキュアシェルインスタンス1950をコアクラウドサービスから隔離してもよい。
図20は、1つ以上の実施形態による、セキュアシェルインスタンスの通信を管理するために複数のネットワークインターフェイスを利用する例示的なシステム2000を示す。上記で図19を参照して説明された様々な動作は、セキュアシェルインスタンス1950およびコアクラウドリソースのセキュリティを潜在的に改善するために1つ以上の追加の特徴を含んでもよい、例示的なシステム2000によって実現されてもよい。
いくつかの実施形態では、クラウドシェルルータ1930、セキュアシェルインスタンス1950、およびシェルサブネット1970は、別個の仮想クラウドネットワーク(VCN)内の仮想システムとして実現されてもよい。さらに、別個のVCNは、複数のルートコンパートメント(「テナンシ」とも呼ばれる)において実現されてもよい。図20に示すように、クラウドシェルルータ1930はサービスVCN2010に実現され、セキュアシェルインスタンス1950は計算隔離VCN2020に実現され、両方ともプライベートルートコンパートメント2030に実現される。対照的に、シェルサブネット1970は、パブリックルートコンパートメント2050内のネットワーク隔離VCN2040に実現されてもよい。概して、プライベートルートコンパートメント2030およびパブリックルートコンパートメント2050は、プライベートルートコンパートメント2030内のシステムリソースがパブリックルートコンパートメント2050のシステムリソースによってアクセスされ得ないように、IaaSシステムにおいて実現されるデータおよび計算リソースの、異なるおよび/または別個の論理コンテナを構成してもよい。プライベートルートコンパートメント2030およびパブリックルートコンパートメント2050は、異なる区別可能なブロックのIPアドレスに関連付けられてもよく、これは、パブリックルートコンパートメント2050またはプライベートルートコンパートメント2030からのようなIaaSシステムからのメッセージの発信元の判断を可能にしてもよい。
いくつかの実施形態では、パブリックルートコンパートメント2050およびパブリックルートコンパートメント2050内に実現される構成システム(例えば、ネットワーク隔離VCN2040内のシェルサブネット1970)は、ユーザ出力動作(例えば、図19の動作1916のメッセージ)で識別されるIPアドレスのブロックからIPアドレスを割り当てられてもよい。対照的に、プライベートルートコンパートメント2030およびプライベートルートコンパートメント内に実現される構成システム(例えば、サービスVCN2010内のクラウドシェルルータ1930)は、IaaSシステム通信動作(例えば、外部ネットワーク1980などの外部ネットワークとの通信)で識別されるIPアドレスのブロックからのIPアドレスを割り当てられてもよい。通信元がIaaSシステム自体またはIaaSシステムのユーザのいずれかに帰し得る別個のブロックのIPアドレスを使用することは、(例えば、複数のデータセンタ、領域などにわたる)IaaSネットワーク全体のセキュリティを改善し得る。たとえば、いくつかのIaaSシステムは、ある領域内の複数のデータセンタ(ドメインとも呼ばれる)において実現されてもよく、グローバルIaaSシステムは、プライベートおよび/またはパブリックネットワークを介して互いに通信している複数の領域を含んでもよい。ユーザソース通信をシステムソース通信から区別することは、コアサービスに到達することから大規模なシステムトラフィックタイプ攻撃(例えば、分散型サービス拒否、またはDDOS攻撃)のリスクを低減し得る。
説明のための例として、シェルサブネット1970からの通信は、シェルサブネット1970のIPアドレスによってユーザデバイス1920のユーザ(潜在的に匿名化されているが)に帰し得る場合がある。したがって、IaaSシステムのコアクラウドサービスから発信されたことになっているシェルサブネット1970からのメッセージは、たとえば、一致しないソースIPアドレスおよびソース識別子(たとえば、ユーザ名)に関して、受信機ポイントにおいて拒否され得る。別の例では、パブリックルートコンパートメントへの発信ユーザトラフィックを隔離することは、IaaSシステムへの侵入源を判断するための改善されたフォレンジック情報を提供してもよい。例えば、ソースのIPアドレスをパブリックルートコンパートメント2050に追跡することによって、調査は、損なわれたユーザインスタンスを識別することが可能であってもよく、コアIaaSサービスが損なわれていないことを潜在的に明らかにしてもよい。
いくつかの実施形態では、ユーザデバイス1920(例えば、セキュアシェルクライアントを実行するブラウザおよび/またはコマンドラインインターフェイス)は、クラウドシェルルータ1930と接続してもよい。ユーザデバイス1920は、外部ネットワーク1980(例えば、パブリックネットワーク)を介してクラウドシェルルータに接続してもよい。外部ネットワーク1980は、例えば、インターネット、暗号化されたネットワークなどを含んでもよい。ユーザデバイス1920は、インターネットゲートウェイ2060(たとえば、「NET」ゲートウェイ)を介してクラウドシェルルータ1930と通信してもよい。インターネットゲートウェイ2060は、サービスVCN2010と外部ネットワーク1980との間のネットワークトラフィックのための経路を提供するためにサービスVCN2010に追加される仮想ルータであり得る。
いくつかの実施形態では、サービスVCN2010はまた、セキュアシェルインスタンス1950およびその関連付けられたデータ(例えば、ブロックボリューム、オブジェクトストレージなど)の作成、管理、終了、およびクリーンアップを促進してもよい、セキュアセッションマネージャサービス、ボリュームマネージャサービス、インスタンスマネージャサービス、および/またはウェブサーバを含むが、それらに限定されない、追加のIaaSコアサービスを実現する。
いくつかの実施形態では、セキュアシェルインスタンス1950は、プライマリ仮想ネットワークインターフェイスカード(vNIC)1940を介してクラウドシェルルータ1930と通信する。vNICは、インスタンスがVCNに接続することを可能にすることができ、インスタンスがVCNの内部および外部の他のシステムとどのように接続するかを判断してもよい。上記で図19を参照して説明したように、プライマリvNIC1940は、(たとえば、セキュリティルールを使用して)クラウドシェルルータとセキュアシェルインスタンス1950との間のトラフィックを管理するよう構成されてもよい。
セキュリティルールは、プライマリvNIC1940の中または外に許可されるイングレスまたはエグレストラフィックのタイプを指定してもよい。たとえば、プライマリvNIC1940は、クラウドシェルルータ1930からセキュアシェルインスタンス1950への信号を受け入れるが、セキュアシェルインスタンス1950からの出力メッセージを拒否するよう構成されてもよい。いくつかの実施形態では、プライマリvNIC1940は、たとえば、ユーザデバイス1920からのメッセージに含まれる返信メッセージに対する要求に対する応答として、ユーザデバイス1920にアドレス指定されたセキュアシェルインスタンス1950からの返信メッセージを受け入れ得る。プライマリvNIC1940は、セキュアシェルインスタンス1950にアタッチされてもよく、セキュリティルール(たとえば、イングレス/エグレス制御)は、起動時のセキュアシェルインスタンス1950の構成の一部であってもよく、および/またはセキュアシェルインスタンス1950のデフォルト特徴であってもよい。
いくつかの実施形態では、セキュアシェルインスタンス1950は、サービスVCN2010の構成サブシステム(例えば、セッションマネージャサービス)によって提供される構成ファイルを伴ってユーザデバイス1920のユーザに特化された仮想マシン(例えば、「VM」とも呼ばれる、物理的なホストコンピュータ内で動作するフルコンピュータのソフトウェアベースのエミュレーション)であり得る。いくつかの実施形態では、セキュアシェルインスタンス1950は、デフォルトパラメータとともに構成された1つ以上の事前生成されたインスタンスを含むインスタンスプール2022から選択され得る。デフォルトパラメータは、プライマリvNIC1940のためのトラフィック管理ルールを定義するセキュリティルールを含んでもよい。
いくつかの実施形態では、セキュアシェルインスタンス1950は、セカンダリvNIC1960を含む。セカンダリvNIC1960は、インスタンスプール2022からの事前生成されたインスタンスの構成中にセキュアシェルインスタンス1950にアタッチされてもよい。代替的に、インスタンスプール2022内の事前生成されたインスタンスは、セカンダリvNIC1960を含むように事前構成されてもよい。いくつかの実施形態では、セカンダリvNICは、エグレスのみのセキュリティルール(例えば、通信をセキュアシェルインスタンス1950からシェルサブネット1970への単一の方向にのみ制限するためのトラフィックフローに対する制御)を含む。以下、図面を参照してより詳細に説明する。上述のように、このようにネットワークトラフィックを制限することは、セキュアシェルインスタンス1950およびサービスVCN2010のために追加のおよび/または改善されたセキュリティを提供し得る。
いくつかの実施形態では、シェルサブネット1970は、ネットワーク隔離VCN2040に実現された1つ以上の仮想ルータを介して外部ネットワーク1980および/またはプライベートIaaSネットワーク2082と通信するよう構成されてもよい。いくつかの実施形態では、シェルサブネット1970は、セキュアシェルインスタンス1950からセカンダリvNIC1960を介して受信された出力トラフィックを、ネットワークアドレス変換(NAT)ゲートウェイ2070を使用して外部ネットワーク1980に送信してもよい。NATゲートウェイ2070は、ネットワークアドレス変換を実行するよう構成された仮想ルータであり得る。NATゲートウェイは、パブリックIPアドレスを伴わないクラウドリソースに、それらのリソースを着信インターネット接続にさらすことなく、インターネットへのアクセスを与えてもよい。例えば、セキュアシェルインスタンス1950およびシェルサブネット1970は、悪意のある攻撃からの侵入のリスクを潜在的に低減するためのセキュリティ対策として、外部ネットワーク1980へのアクセスを欠く場合がある。そのような場合、NATゲートウェイ2070は、セキュアシェルインスタンス1950またはシェルサブネット1970で直接識別されないIPアドレス(例えば、パブリックルートコンパートメント2050に帰し得るIPアドレスのパブリックブロックからのものである)を使用してインターネットへの接続を提供してもよい。
いくつかの実施形態では、コアIaaSリソースへの要求を含むセキュアシェルインスタンス1950からの出力は、シェルサブネット1970によってサービス(SVC)ゲートウェイ2072にルーティングされてもよい。サービスゲートウェイ2072は、VCNホストまたはIaaSをパブリックインターネットに公開することなく、VCNホストがIaaSサービス(データベースリソース、オブジェクトストレージ、メタデータ管理など)にプライベートにアクセスすることを可能にし得る、ネットワーク隔離VCN2040にアタッチされた仮想ルータであり得る。したがって、サービスゲートウェイ2072は、シェルサブネット1970が、当該領域および/または他の領域においてIaaSコアサービスと通信するよう構成された内部ネットワーク2082(たとえば、「プライベートネットワーク」)を介して出力トラフィックを送信することを可能にしてもよい。
図21は、1つ以上の実施形態による、複数のネットワークインターフェイスを使用するセキュアシェルインスタンスによる単方向通信のための例示的な技法2100を示す。セキュアシェルインスタンス1950の構成は、1つ以上の追加の仮想ネットワークインターフェイスカード(vNIC)をセキュアシェルインスタンス1950に追加することを含んでもよい。vNICは、セキュアシェルインスタンス1950が、ユーザデバイス(例えば、図19のユーザデバイス1920)から命令および/またはコマンドを受信するために使用されてもよい通信経路とは別個の通信経路を介して出力メッセージを送信することを可能にしてもよい。いくつかの実施形態では、vNICは、以下でより詳細に説明されるように、セキュアシェルインスタンス1950との通信の方向制御を定義するようセキュリティルールを用いて構成されてもよい。
図20を参照してより詳細に説明されるように、プライマリvNIC1940は、セキュアシェルインスタンス1950とクラウドシェルルータ1930との間の通信を容易にするよう構成されてもよい。いくつかの実施形態では、セキュアシェルインスタンス1950は、計算隔離仮想クラウドネットワーク(VCN)で動作してもよく、クラウドシェルルータ1930は、サービスVCNで動作してもよい。いくつかの実施形態では、セキュアシェルインスタンス1950は、プライマリvNIC1940をデフォルト構成として含んでもよい。いくつかの実施形態では、プライマリvNIC1940は、セキュアシェルインスタンス1950との通信に対してイングレスのみの制限を定義するセキュリティルールを用いて構成されてもよい。イングレスのみの制限は、セキュアシェルインスタンス1950によって受信され得る通信のタイプを制限してもよく、および/または通信がセキュアシェルインスタンス1950によって受信され得るソースを制限してもよい。
いくつかの実施形態では、プライマリvNIC1940は、コアクラウドリソース(たとえば、ホワイトリストIaaSシステム構成要素)からの着信通信を可能にするよう構成されてもよい。たとえば、クラウドシェルルータ1930は、コマンドをセキュアシェルインスタンス1950に送信してもよい(たとえば、動作2110)。セキュアシェルインスタンス1950は、クラウドシェルルータ1930からの通信を許可するよう構成されてもよいプライマリvNIC1940を介してコマンドを受信してもよい(たとえば、動作2112)。セキュアシェルインスタンス1950は、次いで、コマンドに示される動作を実行してもよく、図19を参照して説明される出力を生成してもよい(例えば、動作2114)。
いくつかの実施形態では、セカンダリvNIC1960は、セキュアシェルインスタンス1950からシェルサブネット1970を介して外部ネットワーク(例えば、図19の外部ネットワーク1980)への出力の送信を容易にするよう、通信のためのエグレスポイントとして働くように構成されてもよい。図20を参照してより詳細に説明されるように、シェルサブネット1970は、外部ネットワークから生じる悪意のある攻撃による侵入のリスクを低減することによってセキュリティを潜在的に改善するために、ネットワーク隔離VCNにおいて動作してもよい。いくつかの実施形態では、セカンダリvNIC1960は、セキュアシェルインスタンスの(例えば、図20のインスタンスプール2022における)事前生成されたインスタンスとしてのセットアップ中に、構成されてもよい。いくつかの実施形態では、セカンダリvNIC1960は、(例えば、セッションマネージャサービス、インスタンスマネージャサービス、および/または他のコアクラウドリソースによるような)セキュアシェルインスタンス1950の特化中に、構成されてもよい。セカンダリvNIC1960は、たとえばシェルサブネット1970にアドレス指定された、セキュアシェルインスタンス1950からの発信メッセージを許可するよう、セキュリティルールを用いて構成されてもよい。たとえば、セキュアシェルサブネット1950は、出力をセカンダリvNIC1960を介して送信してもよく(たとえば、動作2116)、出力を含むメッセージをシェルサブネット1970に向けてもよい(たとえば、動作2118)。このようにして、例示的な技法2100は、プライマリvNIC1940をセキュアシェルインスタンス1950への通信のためのイングレスポイントとして実現することと、セカンダリvNIC1960をセキュアシェルインスタンス1950からの通信のための別個のエグレスポイントとして実現することとを含んでもよい。
図22は、1つ以上の実施形態による、セキュアシェルインスタンスとの双方向通信のために第1のネットワークインターフェイスを使用する例示的な技法2200を示す。セキュアシェルインスタンス1950は、セキュアな通信を提供し、潜在的に侵害のリスクを低減するための定義された手法に従うとしても、プライマリ仮想ネットワークアクセスカード1940(vNIC)およびセカンダリvNIC1960の両方を介してメッセージを送信するよう、(例えば、セットアップおよび/または特化中に)構成されてもよい。
いくつかの実施形態では、プライマリvNIC1940は、セキュアシェルインスタンス1950からのすべての発信メッセージに対するブランケット禁止を定義するセキュリティルールを含んでもよい(例えば、例外なしのイングレスのみのルール)。対照的に、セキュリティルールは、通信のタイプ、通信の宛先、またはセキュリティルールに対する他の例外を定義してもよい。たとえば、プライマリvNIC1940は、セキュアシェルインスタンス1950からクラウドシェルルータ1930への、ユーザデバイス(例えば、図19のユーザデバイス1920)にアドレス指定された返信メッセージの送信を可能にするよう構成されてもよい。そのような返信メッセージは、動作のステータス情報(例えば、完了、アボート、終了等)を含んでもよく、コマンドの一部としてユーザデバイスによる他の返信情報要求を含んでもよい。
説明のための例として、セキュアシェルインスタンス1950は、メッセージのタイプおよび/または宛先に応じて、2つの異なる経路によってメッセージを送信してもよい。この例では、クラウドシェルルータ1930は、コマンドをセキュアシェルルータに送信し(例えば、動作2210)、セキュアシェルインスタンス1950は、プライマリvNIC1940を介してクラウドシェルルータ1930からコマンドを受信する(例えば、動作2212)。セキュアシェルインスタンス1950は、コマンドによって示される動作を実行してもよく、出力および返信メッセージを生成してもよい(例えば、動作2214)。上記で図21を参照して説明したように、セキュアシェルインスタンス1950は、出力を、セカンダリvNIC1960を介してシェルサブネット1970にアドレス指定されたメッセージとして送信してもよい(たとえば、動作2216)。対照的に、セキュアシェルインスタンス1950は、返信メッセージを、プライマリvNIC1940を介して、異なる経路によって、クラウドシェルルータ1930に送り返してもよい(たとえば、動作2218)。
返信メッセージを許可するようにプライマリvNIC1940を構成することは、例示的な技法2200を実現するシステムに追加のセキュリティを提供してもよい。例えば、ステータス情報を含む返信メッセージが、セキュアシェルインスタンス1950によるリソース使用を追跡および管理するために、コアクラウドサービスによって使用されてもよい。さらに、セキュアシェルインスタンス1950を、シェルサブネット1970ではなく、クラウドシェルルータ1930に返信メッセージを送信するよう構成することは、シェルサブネット1970が仮に危険にさらされ、少なくとも部分的に、外部システムが、セキュアシェルインスタンス1950の所有者に取って代わることを可能にするフィードバックを受信することができない場合に、セキュアシェルインスタンスが外部システムによって勝手に使用されるリスクを潜在的に低減させ得る。
図23は、1つ以上の実施形態による、セキュアシェルインスタンスとの単方向通信のための例示的な技法2300を示す。上記で図21~図4を参照して説明されたセキュリティルールの帰結は、セキュアシェルインスタンス1950が、それが実行する動作からの出力に関して実現するよう構成されてもよい通信のタイプおよび態様において制限されてもよいことを含んでもよい。
いくつかの実施形態では、プライマリ仮想ネットワークインターフェイスカード1940(vNIC)は、セキュアシェルインスタンス1950からの出力メッセージがプライマリvNIC1940を介して送信されることを許可しないセキュリティルールを用いて構成されてもよい。これは、計算隔離仮想クラウドネットワーク(VCN)(例えば、図20の計算隔離VCN2020)上で動作してもよいセキュアシェルインスタンス1950から、サービスVCN(例えば、図20のサービスVCN2010)上で動作しているコアクラウドサービスへのアクセスを制御するよう実現されてもよい。上記で図22を参照してより詳細に説明したように、いくつかのタイプのメッセージが許可されてもよいが(たとえば返信メッセージ)、追加のおよび/または代替のタイプの出力メッセージ(例えば、実行コマンド、データ変換命令、入出力動作命令など)。したがって、プライマリvNIC1940によって許可される通信のタイプを制限することは、セキュアシェルインスタンス1950によってサービスVCNまたはコアクラウドサービスを侵害するリスクを潜在的に低減し得る。
説明のための例では、プライマリvNIC1940は、セキュアシェルインスタンス1950からの出力メッセージに関してイングレスのみであるように構成されてもよい。したがって、セキュアシェルインスタンス1950がユーザデバイス(例えば、図19のユーザデバイス1920)からのコマンドを実行し、出力を生成するとき(たとえば、動作2310)、クラウドシェルルータ1930にアドレス指定された出力の送信は、プライマリvNIC1940によって拒否されてもよい(たとえば、動作2312)。プライマリvNIC1940による拒否は、出力メッセージがクラウドシェルルータ1930および/またはサービスVCNの任意の他の構成要素システムに送信されることを防止する、任意の数の論理動作を記述してもよい。たとえば、セキュリティルールは、アドレス(たとえば、MACアドレス)によって特定の宛先をブラックリストに載せてもよい。
いくつかの実施形態では、セカンダリvNIC1960は、セキュアシェルインスタンス1950がセカンダリvNIC1960を介してネットワークトラフィックを受信することを許可しないセキュリティルールを用いて構成されてもよい。これは、インターネットと通信してもよく、したがって、外部システムによる攻撃のリスクがあり得るシェルサブネット1970によるセキュアシェルインスタンス1950へのアクセスを制御するために実現されてもよい。セカンダリvNIC1960を構成することの一部として実現されるセキュリティルールは、シェルサブネット1970または任意の他のIaaSシステムからセキュアシェルインスタンスへのすべてのインバウンド通信に対するブランケット制限を含んでもよい。代替的に、通信、ソース、または特定のメッセージのタイプが、セカンダリvNIC1960を構成すること(たとえば、ホワイトリスト化)の一部として許可されてもよい。
説明のための例では、セカンダリvNIC1960は、セキュアシェルインスタンス1950への通信に関してエグレスのみであるように構成されてもよい。この例では、外部ネットワーク要求がシェルサブネット1970において受信されてもよい(たとえば、動作2314)。外部ネットワーク要求は、シェルサブネット1970がセキュアシェルインスタンス1950にコマンドを送信する(例えば、セキュアシェルインスタンス1950にアタッチされたブロックボリュームシステムに記憶されるデータを読み出す)ための命令であってもよい。この例ではエグレスのみ用に構成されるセカンダリvNIC1960は、単方向通信に限定されてもよく、セキュアシェルインスタンス1950がセカンダリvNICを介して出力メッセージを送信することを可能にするが、シェルサブネット1970からの外部ネットワーク要求は拒否してもよい(たとえば、動作2316)。
いくつかの実施形態では、セカンダリvNIC1960は、任意の着信メッセージを、他の発信元から受信される場合であっても、同様に拒否してもよい。たとえば、セカンダリvNIC1960のMACアドレスは、セカンダリvNIC1960を直接アドレス指定しようと試み得る外部システムによって発見されるかもしれない。エグレスのみのセキュリティ構成は、セキュアシェルインスタンス1950をそのような試みから同様に保護し得る。
図24は、1つ以上の実施形態による、リージョナルクラウドシステムにおいてセキュアシェルインスタンスの通信を管理するための例示的システム2400を図示する。前の図を参照して説明された技法は、リージョナルIaaSシステムにおいて実現されてもよい。リージョナルIaaSシステムは、複数のドメイン2410を含んでもよく、ドメインは、IaaSシステムを動作させるように構成されたコンピュータハードウェア(例えば、サーバ、ネットワークインフラストラクチャ等)の物理的インストールであるデータセンタに対応するIaaS識別子であってもよい。例示的なシステム2400のいくつかの構成要素はリージョナルであってもよいが、他の構成要素はドメイン特定であってもよい。リージョナルシステムを実現することは、潜在的に、システムオーバーヘッドを低減し、複数の通信ポイント(例えば、イングレスポイントおよびエグレスポイント)の使用に起因するシステムリソースに対する需要を低減してもよい。さらに、統合された通信リソースを実現することは、セキュアシェルインスタンスおよびコアクラウドサービスへのアクセスポイントの数を制限することによって、改善されたセキュリティを提供してもよい。
いくつかの実施形態では、図20を参照してより詳細に説明されるように、例示的システム2400は、異なるブロックのIPアドレスと関連付けられる、2つ以上のルートコンパートメントを含んでもよい。例えば、プライベートルートコンパートメント2420は、リージョナルジャンプホスト仮想クラウドネットワーク(VCN)2430、リージョナルサービスVCN2440、およびリージョナル計算隔離VCN2450を含んでもよい。同様に、パブリックルートコンパートメント2460は、リージョナルネットワークアドレス変換(NAT)ゲートウェイ2480を介して外部ネットワーク(例えば、図19の外部ネットワーク1980)に接続し、リージョナルサービスゲートウェイ2482を介してコアクラウドサービスに接続するよう構成された、リージョナルネットワーク隔離VCN2470を含んでもよい。
いくつかの実施形態では、ジャンプホストVCN2430は、プライベートルートコンパートメント2420の構成ネットワークと外部ネットワーク(例えば、インターネット、プライベートユーザネットワークなど)との間のネットワークトラフィックを可能にしてもよいリージョナルネットワークゲートウェイ2432(NET)を含んでもよい。たとえば、コマンドは、リージョナルネットワークゲートウェイ2432を介してユーザデバイス1920から受信されてもよい。いくつかの実施形態では、ジャンプホストVCN2430は、リージョナルサービスVCN2440上で動作するリージョナルルータサブネット2442にコマンドを送信するよう構成されてもよい。リージョナルルータサブネット2442は、インスタンス2454のプール内で動作するセキュアシェルインスタンス(例えば、図19のセキュアシェルインスタンス1950)にアドレス指定されたプールサブネット2452にコマンドを向けることができる。いくつかの実施形態では、各ドメイン2410は、プールサブネット2452上で動作するインスタンスのプール2454を含んでもよい。プール2454は、次いで、IaaSセキュアシェルサービスのユーザのために作成されたセキュアシェルに関連付けられた複数のセキュアシェルインスタンスを含んでもよい。各セキュアシェルインスタンスは、前述の図を参照してより詳細に説明されるように、複数の仮想ネットワークインターフェイスカード(vNIC)を含んでもよい。
いくつかの実施形態では、計算隔離VCN2450内のプールサブネット2452上で動作するインスタンスからの出力メッセージは、ネットワーク隔離VCN2470上で動作するリージョナルシェルサブネット2472に向けられてもよい。対照的に、ユーザデバイスにアドレス指定された返信メッセージは、サービスVCN2440上で動作するルータサブネット2442に向けられてもよい。リージョナルサブネットは、適切なゲートウェイを介してメッセージを外部の宛先に向けてもよい。
図25は、1つ以上の実施形態による、セキュアシェルインスタンスのために複数のネットワークインターフェイスを利用するための例示的なフロー2500を示す。フローの動作は、ハードウェア回路として実現され、および/または図19のセキュアセルインスタンス1950などのコンピュータシステムの非一時的コンピュータ可読媒体上にコンピュータ可読命令として記憶され得る。実現されると、命令は、コンピュータシステムのプロセッサによって実行可能な回路またはコードを含むモジュールを表す。そのような命令の実行は、本明細書で説明される特定の動作を実行するようコンピュータシステムを構成する。各回路またはコードは、プロセッサと組み合わせて、それぞれの動作を実行する。動作は、ある特定の順序で示されているが、特定の順序は必要ではなく、1つ以上の動作は省略され、スキップされ、および/または並べ替えられてもよいことを理解されたい。
ある例では、フロー2500は、コンピュータシステムがプライマリ仮想ネットワークインターフェイスカード(vNIC)を介して動作を実行するコマンドを受信する動作2502を含む。図19および図21~図4を参照してより詳細に上述したように、プライマリvNIC(例えば、図19のプライマリvNIC1940)は、セキュリティルールを伴うセキュアクラウドインスタンス(例えば、図19のセキュアクラウドインスタンス1950)の作成および/または特化中に構成されてもよい。セキュリティルールは、プライマリvNICが1つ以上のタイプのネットワークトラフィックに関してイングレスのみであるように構成されてもよいように、セキュアシェルインスタンスへのネットワークトラフィックを制御してもよい。たとえば、プライマリvNICは、セキュアシェルインスタンスがプライマリvNICを介して着信トラフィックを受信してもよいが、プライマリvNICを介して発信トラフィックを送信し得ないように、セキュアシェルインスタンスと外部システム(例えば、コアクラウドサービス、外部ネットワークデバイスなど)との間のネットワークトラフィックを制限するよう構成されてもよい。
ある例において、フロー2500は、コンピュータシステムが動作を実行する動作2504を含む。セキュアシェルインスタンスは、上記で図20を参照してより詳細に説明されるように、仮想クラウドネットワーク(VCN)上でホストされる仮想マシン(VM)であってもよい。したがって、セキュアシェルインスタンスは、計算リソース(例えば、コア、スレッドなど)を含んでもよく、データストレージ(たとえば、ブロックボリュームなど)を含んでもよい。場合によっては、セキュアシェルインスタンスは、例えば、暗号化された接続(例えば、WebSocket Secure接続)を介して、ユーザデバイス(例えば、図19のユーザデバイス1920)のユーザをセキュアシェルインスタンスにセキュアに接続するように作成されたセキュアシェル(例えば、端末、バッシュシェル等)を介して受信されたコマンドを実行するよう構成されてもよい。
ある例において、フロー2500は、コンピュータシステムが動作の出力を生成する動作2506を含む。いくつかの実施形態では、出力は、データの移動、要求された情報の送信、および/またはセキュアシェルインスタンスからの他のタイプの出力を含んでもよい。そのような出力が機密情報を含む場合があることを考慮すると、ネットワークトラフィック制御を実現することは、出力を無許可の宛先に誤って向けるリスクを潜在的に低減し得る。
一例では、フロー2500は、コンピュータシステムが、動作の出力を含むメッセージを、セカンダリ仮想ネットワークインターフェイスカード(例えば、図19の第2のvNIC1960)を介してシェルサブネットに送信する動作2508を含む。セカンダリvNICは、たとえば、セキュアシェルインスタンスからシェルサブネット(たとえば、シェルサブネット1970)に出力を送信することについて、ネットワークトラフィックに対する単方向制限を定義するセキュリティルールを用いて構成されてもよい。図20を参照してより詳細に説明されるように、シェルサブネットおよびセキュアシェルインスタンスは、互いに隔離された異なるVCNにおいて動作してもよく、これは、通信セキュリティを潜在的に改善し得る。
図26は、1つ以上の実施形態による、ネットワークインターフェイスを使用してセキュアシェルインスタンスと双方向通信するための例示的なフロー2600を示す。フローの動作は、ハードウェア回路として実現され、および/または図19のセキュアセルインスタンス1950などのコンピュータシステムの非一時的コンピュータ可読媒体上にコンピュータ可読命令として記憶され得る。実現されると、命令は、コンピュータシステムのプロセッサによって実行可能な回路またはコードを含むモジュールを表す。そのような命令の実行は、本明細書で説明される特定の動作を実行するようコンピュータシステムを構成する。各回路またはコードは、プロセッサと組み合わせて、それぞれの動作を実行する。動作は、ある特定の順序で示されているが、特定の順序は必要ではなく、1つ以上の動作は省略され、スキップされ、および/または並べ替えられてもよいことを理解されたい。
ある例において、フロー2600は、図25の動作2504に続いて開始し、コンピュータシステムは動作を実行する。特に、コンピュータシステム(例えば、図19のセキュアシェルインスタンス1950)は、図26で説明した動作を参照して説明される動作出力の通信に関連付けられる1つ以上の動作を実現してもよい。
ある例では、フロー2600は、コンピュータシステムがユーザデバイスのために返信メッセージを生成する動作2602を含む。図19および図22を参照してより詳細に説明されるようにセキュアシェルインスタンスは、動作を実行することの一部として、返信メッセージを生成してもよい。返信メッセージは、ユーザデバイス(例えば、図19のユーザデバイス1920)に対するメッセージであってもよい。たとえば、返信メッセージは、ユーザデバイスから受信されたコマンドの一部として含まれてもよい、確認、ステータス、またはチェックビットであってもよい。
一例では、フロー2600は、コンピュータシステムがプライマリ仮想ネットワークインターフェイスカード(例えば、図19のプライマリvNIC1940)を介してルータに返信メッセージを送信する動作2604を含む。図22を参照してより詳細に説明されるように、プライマリvNICは、単方向ネットワークトラフィックのために構成されてもよく、インバウンドトラフィックがセキュアシェルインスタンスに到達することを可能にするが、セキュアシェルインスタンスからIaaSサービス(例えば、図19のクラウドシェルルータ1930)へのアウトバウンドトラフィックは可能にしない。いくつかの実施形態では、プライマリvNICは、返信メッセージが、サービスVCN(例えば、図20のサービスVCN2010)内で動作する1つ以上の要素を介してユーザデバイスに送信されるよう、クラウドシェルルータに送信されることを可能にするよう構成されてもよい。
図27は、1つ以上の実施形態による、ネットワークインターフェイスを使用してセキュアシェルインスタンスと双方向通信するための例示的なフロー2700を示す。フローの動作は、ハードウェア回路として実現され、および/または図19のセキュアセルインスタンス1950などのコンピュータシステムの非一時的コンピュータ可読媒体上にコンピュータ可読命令として記憶され得る。実現されると、命令は、コンピュータシステムのプロセッサによって実行可能な回路またはコードを含むモジュールを表す。そのような命令の実行は、本明細書で説明される特定の動作を実行するようコンピュータシステムを構成する。各回路またはコードは、プロセッサと組み合わせて、それぞれの動作を実行する。動作は、ある特定の順序で示されているが、特定の順序は必要ではなく、1つ以上の動作は省略され、スキップされ、および/または並べ替えられてもよいことを理解されたい。
ある例において、フロー2700は、コンピュータシステムがセカンダリ仮想ネットワークインターフェイスカード(vNIC)を介して外部ネットワーク要求を受信する動作2702を含む。前述の段落を参照してより詳細に説明されるように、セカンダリvNIC(例えば、図19のセカンダリvNIC1960)は、(例えば、セキュアシェルインスタンスのセットアップ中のセキュリティルールの構成を介して)セキュアシェルインスタンスからの単方向ネットワークトラフィックのために構成されてもよい。したがって、外部ネットワーク要求がセカンダリvNICに到達する場合、その要求は不正であるか、またはセカンダリvNICに誤ってアドレス指定された可能性がある。
ある例において、フロー2700は、コンピュータシステムが外部ネットワーク要求を拒否する動作2704を含む。セカンダリvNICは、場合によっては、着信ネットワーク要求を拒否するよう構成されてもよい。たとえば、セカンダリvNICの構成に含まれるセキュリティルールは、セカンダリvNICを例外なく単方向として定義してもよい。
ある例において、フロー2700は、コンピュータシステムがエラーメッセージを返す動作2706を含む。いくつかの実施形態では、エラーメッセージを返すことは、IaaSセキュリティサービスによる潜在的な使用のために外部ネットワーク要求を記述する識別子情報(例えば、ユーザ名、ログイン身元証明、IPアドレスなど)を記憶することを伴ってもよい。たとえば、無許可のインバウンドネットワークトラフィックの監査は、1つ以上のIaaSサービスおよび/またはユーザインスタンスが損なわれている可能性があるかどうかを識別するのに役立ち得る。いくつかの実施形態では、エラーメッセージは、たとえば、無許可のインバウンド要求が(エグレスのみである)セカンダリvNICにおいて受信されたという通知として、IaaSセキュリティサービスに直接向けられてもよい。
以下の項は、開示される実現例の実施形態を説明する:
第1項.方法であって、
コンピュータシステムが、プライマリ仮想ネットワークインターフェイスカード(vNIC)を介してルータから受信される、コンピュータシステムによって動作を実行するためのコマンドを受信するステップと、
コンピュータシステムが、動作を実行するステップと、
コンピュータシステムが、動作の出力を生成するステップと、
コンピュータシステムが、セカンダリ仮想ネットワークインターフェイスカードを介してシェルサブネットに動作の出力を含むメッセージを送信するステップとを含み、セカンダリ仮想ネットワークインターフェイスカードは、コンピュータシステムからシェルサブネットへの単方向送信のために構成され、
シェルサブネットは、動作の出力をネットワークゲートウェイを介して外部ネットワークに送信するよう構成される、方法。
第2項.動作は、ユーザデバイスのユーザによって要求され、動作の出力を生成するステップは、
ユーザデバイスのために返信メッセージを生成するステップと、
プライマリ仮想ネットワークインターフェイスカードを介してルータに返信メッセージを送信するステップとを含み、プライマリ仮想ネットワークインターフェイスカードは、
ユーザデバイスに対する返信メッセージを受け入れるよう構成され、
動作の出力を含むメッセージを拒否するよう構成される、第1項に記載の方法。
第3項.前記コンピュータシステムは、第1の仮想クラウドネットワーク内の仮想マシンであり、第1の仮想クラウドネットワークは、プライベートルートコンパートメント内に構成される、第1項に記載の方法。
第4項.ルータは、第2の仮想クラウドネットワーク内にあり、第2の仮想クラウドネットワークは、第1の仮想クラウドネットワークとは異なり、プライベートルートコンパートメント内に構成される、第3項に記載の方法。
第5項.シェルサブネットは、第3の仮想クラウドネットワーク内にあり、第3の仮想クラウドネットワークは、第1の仮想クラウドネットワークとは異なり、パブリックルートコンパートメント内に構成される、第3項に記載の方法。
第6項.プライベートルートコンパートメントは、プライベートルートコンパートメントからのネットワークトラフィックに帰され得る第1のブロックのIPアドレスに関連付けられ、
パブリックルートコンパートメントは、第2のブロックのIPアドレスに関連付けられ、第2のブロックのIPアドレスは、第1のブロックのIPアドレスとは異なり、
第2のブロックのIPアドレスは、コンピュータシステムの1人以上のユーザからのネットワークトラフィックに帰され得る、第5項に記載の方法。
第7項.ネットワークゲートウェイは、ネットワークアドレス変換(NAT)ゲートウェイであり、コンピュータシステムの1人以上のユーザからのネットワークトラフィックに帰され得るIPアドレスのブロックのIPアドレスを使用してメッセージを送信するよう構成される、第1項に記載の方法。
第8項.コンピュータシステムであって、
1つ以上のプロセッサと、
1つ以上のプロセッサと通信するメモリとを含み、メモリは、コンピュータ実行可能命令を記憶するよう構成され、コンピュータ実行可能命令を実行することは、1つ以上のプロセッサに、ステップを実行させ、前記ステップは、
コンピュータシステムが、プライマリ仮想ネットワークインターフェイスカード(vNIC)を介してルータから受信される、コンピュータシステムによって動作を実行するためのコマンドを受信するステップと、
コンピュータシステムが、動作を実行するステップと、
コンピュータシステムが、動作の出力を生成するステップと、
コンピュータシステムが、セカンダリ仮想ネットワークインターフェイスカードを介してシェルサブネットに動作の出力を含むメッセージを送信するステップとを含み、セカンダリ仮想ネットワークインターフェイスカードは、コンピュータシステムからシェルサブネットへの単方向送信のために構成され、
シェルサブネットは、動作の出力をネットワークゲートウェイを介して外部ネットワークに送信するよう構成される、コンピュータシステム。
第9項.動作は、ユーザデバイスのユーザによって要求され、動作の出力を生成するステップは、
ユーザデバイスのために返信メッセージを生成するステップと、
プライマリ仮想ネットワークインターフェイスカードを介してルータに返信メッセージを送信するステップとを含み、プライマリ仮想ネットワークインターフェイスカードは、
ユーザデバイスに対する返信メッセージを受け入れるよう構成され、
動作の出力を含むメッセージを拒否するよう構成される、第8項に記載のシステム。
第10項.前記コンピュータシステムは、第1の仮想クラウドネットワーク内の仮想マシンであり、第1の仮想クラウドネットワークは、プライベートルートコンパートメント内に構成される、第8項に記載のシステム。
第11項.ルータは、第2の仮想クラウドネットワーク内にあり、第2の仮想クラウドネットワークは、第1の仮想クラウドネットワークとは異なり、プライベートルートコンパートメント内に構成される、第10項に記載のシステム。
第12項.シェルサブネットは、第3の仮想クラウドネットワーク内にあり、第3の仮想クラウドネットワークは、第1の仮想クラウドネットワークとは異なり、パブリックルートコンパートメント内に構成される、第10項に記載のシステム。
第13項.プライベートルートコンパートメントは、プライベートルートコンパートメントからのネットワークトラフィックに帰され得る第1のブロックのIPアドレスに関連付けられ、
パブリックルートコンパートメントは、第2のブロックのIPアドレスに関連付けられ、第2のブロックのIPアドレスは、第1のブロックのIPアドレスとは異なり、
第2のブロックのIPアドレスは、コンピュータシステムの1人以上のユーザからのネットワークトラフィックに帰され得る、第12項に記載のシステム。
第14項.ネットワークゲートウェイは、ネットワークアドレス変換(NAT)ゲートウェイであり、コンピュータシステムの1人以上のユーザからのネットワークトラフィックに帰され得るIPアドレスのブロックのIPアドレスを使用してメッセージを送信するよう構成される、第8項に記載のシステム。
第15項.実行されると、コンピュータシステムの1つ以上のプロセッサにステップを実行させるコンピュータ実行可能命令を記憶する、コンピュータ可読記憶媒体であって、前記ステップは、
コンピュータシステムが、プライマリ仮想ネットワークインターフェイスカード(vNIC)を介してルータから受信される、コンピュータシステムによって動作を実行するためのコマンドを受信するステップと、
コンピュータシステムが、動作を実行するステップと、
コンピュータシステムが、動作の出力を生成するステップと、
コンピュータシステムが、セカンダリ仮想ネットワークインターフェイスカードを介してシェルサブネットに動作の出力を含むメッセージを送信するステップとを含み、セカンダリ仮想ネットワークインターフェイスカードは、コンピュータシステムからシェルサブネットへの単方向送信のために構成され、
シェルサブネットは、動作の出力をネットワークゲートウェイを介して外部ネットワークに送信するよう構成される、コンピュータ可読記憶媒体。
第16項.動作は、ユーザデバイスのユーザによって要求され、動作の出力を生成するステップは、
ユーザデバイスのために返信メッセージを生成するステップと、
プライマリ仮想ネットワークインターフェイスカードを介してルータに返信メッセージを送信するステップとを含み、プライマリ仮想ネットワークインターフェイスカードは、
ユーザデバイスに対する返信メッセージを受け入れるよう構成され、
動作の出力を含むメッセージを拒否するよう構成される、第15項に記載のコンピュータ可読記憶媒体。
第17項.前記コンピュータシステムは、第1の仮想クラウドネットワーク内の仮想マシンであり、第1の仮想クラウドネットワークは、プライベートルートコンパートメント内に構成される、第15項に記載のコンピュータ可読記憶媒体。
第18項.ルータは、第2の仮想クラウドネットワーク内にあり、第2の仮想クラウドネットワークは、第1の仮想クラウドネットワークとは異なり、プライベートルートコンパートメント内に構成される、第17項に記載のコンピュータ可読記憶媒体。
第19項.シェルサブネットは、第3の仮想クラウドネットワーク内にあり、第3の仮想クラウドネットワークは、第1の仮想クラウドネットワークとは異なり、パブリックルートコンパートメント内に構成される、第17項に記載のコンピュータ可読記憶媒体。
第20項.プライベートルートコンパートメントは、プライベートルートコンパートメントからのネットワークトラフィックに帰され得る第1のブロックのIPアドレスに関連付けられ、
パブリックルートコンパートメントは、第2のブロックのIPアドレスに関連付けられ、第2のブロックのIPアドレスは、第1のブロックのIPアドレスとは異なり、
第2のブロックのIPアドレスは、コンピュータシステムの1人以上のユーザからのネットワークトラフィックに帰され得る、第19項のコンピュータ可読記憶媒体。
上述のように、サービスとしてのインフラストラクチャ(IaaS)は、1つの特定のタイプのクラウドコンピューティングである。IaaSは、パブリックネットワーク(たとえば、インターネット)を介して、仮想化されたコンピューティングリソースを提供するよう構成され得る。IaaSモデルでは、クラウドコンピューティングプロバイダは、インフラストラクチャ構成要素(例えば、サーバ、ストレージデバイス、ネットワークノード(例えば、ハードウェア)、展開ソフトウェア、プラットフォーム仮想化(例えば、ハイパーバイザ層)など)をホストし得る。場合によっては、IaaSプロバイダはまた、それらのインフラストラクチャ構成要素に付随するよう、様々なサービス(例えば、課金、監視、ロギング、セキュリティ、負荷分散およびクラスタリングなど)を供給してもよい。したがって、これらのサービスはポリシー駆動型であってもよいので、IaaSユーザは、アプリケーションの可用性および性能を維持するために負荷分散を駆動するためにポリシーを実現することが可能であってもよい。
いくつかの事例では、IaaS顧客は、インターネット等のワイドエリアネットワーク(WAN)を通してリソースおよびサービスにアクセスしてもよく、クラウドプロバイダのサービスを使用して、アプリケーションスタックの残りの要素をインストールしてもよい。たとえば、ユーザは、IaaSプラットフォームにログインして、仮想マシン(VM)を作成し、各VMにオペレーティングシステム(OS)をインストールし、データベースなどのミドルウェアを展開し、ワークロードおよびバックアップのためにストレージバケットを作成し、さらには企業ソフトウェアをそのVMにインストールし得る。次いで、顧客は、プロバイダのサービスを使用して、ネットワークトラフィックの均衡化、アプリケーション問題のトラブルシューティング、パフォーマンスの監視、災害復旧の管理などを含む様々な機能を実行し得る。
ほとんどの場合、クラウドコンピューティングモデルは、クラウドプロバイダの参加を必要とすることになる。クラウドプロバイダは、IaaSの提供(例えば、申し出、レンタル、販売)に特化した第三者サービスであってもよいが、その必要はない。エンティティも、プライベートクラウドを展開することを選択し、インフラストラクチャサービスの独自のプロバイダになるかもしれない。
いくつかの例では、IaaS展開は、新たなアプリケーションまたはアプリケーションの新たなバージョンを準備されたアプリケーションサーバなどに置くプロセスである。それはまた、サーバを準備する(例えば、ライブラリ、デーモンなどをインストールする)プロセスも、含んでもよい。これは、多くの場合、クラウドプロバイダによって、ハイパーバイザ層(例えば、サーバ、ストレージ、ネットワークハードウェア、および仮想化)の下で管理される。したがって、顧客は、(たとえば、(たとえば、オンデマンドで起動されてもよい)セルフサービス仮想マシン上での)ハンドリング(OS)、ミドルウェア、および/またはアプリケーション展開などを担ってもよい。
いくつかの例では、IaaSプロビジョニングは、使用のためにコンピュータまたは仮想ホストを取得すること、および必要とされるライブラリまたはサービスをそれらにインストールすることさえも指してもよい。ほとんどの場合、展開はプロビジョニングを含まず、プロビジョニングは最初に実行される必要があってもよい。
場合によっては、IaaSプロビジョニングには2つの異なる問題がある。第1に、何かが動作する前にインフラストラクチャの初期セットをプロビジョニングするという最初の課題がある。第2に、あらゆるものがプロビジョニングされると、既存のインフラストラクチャを発展させる(例えば、新たなサービスの追加、サービスの変更、サービスの削除など)という課題がある。場合によっては、これらの2つの課題は、インフラストラクチャの構成が宣言的に定義されることを可能にすることによって対処されてもよい。言い換えれば、インフラストラクチャ(例えば、どのような構成要素が必要とされるか、およびそれらがどのように対話するか)は、1つ以上の構成ファイルによって定義され得る。したがって、インフラストラクチャの全体的なトポロジー(例えば、どのようなリソースがどのリソースに依存するか、およびそれらが各々どのように協働するか)は、宣言的に記述され得る。いくつかの例では、トポロジーが定義されると、構成ファイルに記述される異なる構成要素を作成および/または管理するワークフローを生成し得る。
いくつかの例では、インフラストラクチャは、多くの相互接続された要素を有してもよい。たとえば、コアネットワークとしても知られている1つ以上の仮想プライベートクラウド(VPC)(例えば、構成可能および/または共有されるコンピューティングリソースの、潜在的にオンデマンドのプール)があり得る。いくつかの例では、ネットワークのセキュリティがどのようにセットアップされるかを定義するためにプロビジョニングされる1つ以上のセキュリティグループルール、および1つ以上の仮想マシン(VM)も、あり得る。ロードバランサ、データベースなどの他のインフラストラクチャ要素もプロビジョニングされてもよい。ますます多くのインフラストラクチャ要素が所望および/または追加されるにつれて、インフラストラクチャは漸進的に進化し得る。
いくつかの例では、様々な仮想コンピューティング環境にわたるインフラストラクチャコードの展開を可能にするために、連続展開技法が採用されてもよい。加えて、説明される技法は、これらの環境内でインフラストラクチャ管理を可能にし得る。いくつかの例では、サービスチームが、1つ以上の、ただし多くの場合、多くの、異なる生産環境(例えば、時として世界全体に及ぶ、種々の異なる地理的場所にわたる)に展開されることが望まれるコードを書き込み得る。しかしながら、いくつかの例では、コードが展開されるインフラストラクチャは、最初にセットアップされなければならない。いくつかの事例では、プロビジョニングは、手動で行われ得、プロビジョニングツールを利用してリソースをプロビジョニングしてもよく、および/または、インフラストラクチャがプロビジョニングされると、展開ツールを利用してコードを展開してもよい。
図28は、少なくとも1つの実施形態による、IaaSアーキテクチャの例示的なパターンを示すブロック図2800である。サービスオペレータ2802は、仮想クラウドネットワーク(VCN)2806およびセキュアホストサブネット2808を含み得るセキュアホストテナンシ2804に通信可能に結合され得る。いくつかの例では、サービスオペレータ2802は、1つ以上のクライアントコンピューティングデバイスを用いていてもよく、それらは、ポータブルハンドヘルドデバイス(たとえば、iPhone(登録商標)、セルラー電話、iPad(登録商標)、コンピューティングタブレット、携帯情報端末(PDA))またはウェアラブルデバイス(たとえばGoogle Glass(登録商標)頭部装着型ディスプレイ)であってもよく、Microsoft Windows Mobile(登録商標)などのソフトウェア、および/もしくは、iOS、Windows Phone、 Android、BlackBerry 8、Palm OSなどのさまざまなモバイルオペレーティングシステムを実行し、インターネット、電子メール、ショートメッセージサービス(SMS)、Blackberry(登録商標)、または他のイネーブルにされた通信プロトコルである。代替的に、クライアントコンピューティングデバイスは、例として、様々なバージョンのMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)、および/もしくはLinux (登録商標)オペレーティングシステムを実行するパーソナルコンピュータならびに/またはラップトップコンピュータを含む汎用パーソナルコンピュータとし得る。クライアントコンピューティングデバイスは、例えばGoogle(登録商標) Chrome OSなどの様々GNU/Linuxオペレーティングシステムを含むがこれに限定されない、様々な市販のUNIX(登録商標)またはUNIXのようなオペレーティングシステムのいずれかを実行するワークステーションコンピュータとし得る。代替として、または加えて、クライアントコンピューティングデバイスは、VCN2806および/またはインターネットにアクセスし得るネットワークを介して通信することが可能な、シンクライアントコンピュータ、インターネット対応ゲームシステム(例えば、Kinect(登録商標)ジェスチャー入力装置を有するかまたは有さないMicrosoft Xboxゲームコンソール)、および/またはパーソナルメッセージングデバイス等の任意の他の電子デバイスであってもよい。
VCN2806はローカルピアリングゲートウェイ(LPG)2810を含み得、それは、SSH VCN2812に含まれるLPG2810を介してセキュアシェル(SSH)VCN2812に通信可能に結合され得る。SSH VCN2812は、SSHサブネット2814を含み得、SSH VCN2812は、制御プレーンVCN2816に含まれるLPG2810を介して制御プレーンVCN2816に通信可能に結合され得る。また、SSH VCN2812は、LPG2810を介してデータプレーンVCN2818に通信可能に結合され得る。制御プレーンVCN2816およびデータプレーンVCN2818は、IaaSプロバイダによって所有および/または運用され得るサービステナンシ2819に含まれ得る。
制御プレーンVCN2816は、周辺ネットワーク(例えば、企業イントラネットと外部ネットワークとの間の企業ネットワークの部分)として機能する制御プレーンデミリタライズドゾーン(DMZ)層2820を含み得る。DMZベースのサーバは、制限された責任を有し、セキュリティ侵害が含まれるように保つのを助けてもよい。さらに、DMZ層2820は、1つ以上のロードバランサ(LB)サブネット2822と、アプリサブネット2826を含み得る制御プレーンアプリ層2824と、データベース(DB)サブネット2830(例えば、フロントエンドDBサブネットおよび/またはバックエンドDBサブネット)を含み得る制御プレーンデータ層2828とを含み得る。制御プレーンDMZ層2820に含まれるLBサブネット2822は、制御プレーンアプリ層2824に含まれるアプリサブネット2826と、制御プレーンVCN2816に含まれ得るインターネットゲートウェイ2834とに通信可能に結合され得、アプリサブネット2826は、制御プレーンデータ層2828に含まれるDBサブネット2830と、サービスゲートウェイ2836と、ネットワークアドレス変換(NAT)ゲートウェイ2838とに通信可能に結合され得る。制御プレーンVCN2816は、サービスゲートウェイ2836およびNATゲートウェイ2838を含み得る。
制御プレーンVCN2816は、アプリサブネット2826を含み得るデータプレーンミラーアプリ層2840を含み得る。データプレーンミラーアプリ層2840に含まれるアプリサブネット2826は、計算インスタンス2844を実行し得る仮想ネットワークインターフェイスコントローラ(VNIC)2842を含み得る。計算インスタンス2844は、データプレーンミラーアプリ層2840のアプリサブネット2826を、データプレーンアプリ層2846に含まれ得るアプリサブネット2826に、通信可能に結合し得る。
データプレーンVCN2818は、データプレーンアプリ層2846と、データプレーンDMZ層2848と、データプレーンデータ層2850とを含み得る。データプレーンDMZ層2848は、データプレーンアプリ層2846のアプリサブネット2826およびデータプレーンVCN2818のインターネットゲートウェイ2834に通信可能に結合され得るLBサブネット2822を含み得る。アプリサブネット2826は、データプレーンVCN2818のサービスゲートウェイ2836およびデータプレーンVCN2818のNATゲートウェイ2838に通信可能に結合され得る。データプレーンデータ層2850も、データプレーンアプリ層2846のアプリサブネット2826に通信可能に結合され得るDBサブネット2830を含み得る。
制御プレーンVCN2816およびデータプレーンVCN2818のインターネットゲートウェイ2834は、パブリックインターネット2854に通信可能に結合され得るメタデータ管理サービス2852に通信可能に結合され得る。パブリックインターネット2854は、制御プレーンVCN2816およびデータプレーンVCN2818のNATゲートウェイ2838に通信可能に結合され得る。制御プレーンVCN2816およびデータプレーンVCN2818のサービスゲートウェイ2836は、クラウドサービス2856に通信可能に結合され得る。
いくつかの例では、制御プレーンVCN2816またはデータプランVCN2818のサービスゲートウェイ2836は、パブリックインターネット2854を通過することなくクラウドサービス2856にアプリケーションプログラミングインターフェイス(API)呼び出しを行い得る。サービスゲートウェイ2836からのクラウドサービス2856へのAPI呼び出しは、一方向であり得、サービスゲートウェイ2836は、クラウドサービス2856にAPI呼び出しを行い得、クラウドサービス2856は、要求されたデータをサービスゲートウェイ2836に送信し得る。しかし、クラウドサービス2856は、サービスゲートウェイ2836へのAPI呼び出しを開始しなくてもよい。
いくつかの例では、セキュアホストテナンシ2804は、サービステナンシ2819に直接接続することができ、サービステナンシは、そうでなければ隔離されてもよい。セキュアホストサブネット2808は、他の態様では隔離されたシステムを介して双方向通信を可能にしてもよいLPG2810を通じてSSHサブネット2814と通信し得る。セキュアホストサブネット2808をSSHサブネット2814に接続することは、セキュアホストサブネット2808にサービステナンシ2819内の他のエンティティへのアクセスを与えてもよい。
制御プレーンVCN2816は、サービステナンシ2819のユーザが所望のリソースをセットアップまたは別様にプロビジョニングすることを可能にしてもよい。制御プレーンVCN2816内でプロビジョニングされる所望のリソースは、データプレーンVCN2818内で展開または別様に使用されてもよい。いくつかの例では、制御プレーンVCN2816は、データプレーンVCN2818から隔離され得、制御プレーンVCN2816のデータプレーンミラーアプリ層2840は、データプレーンミラーアプリ層2840およびデータプレーンアプリ層2846に含まれ得るVNIC2842を介して、データプレーンVCN2818のデータプレーンアプリ層2846と通信し得る。
いくつかの例では、システムのユーザまたは顧客は、メタデータ管理サービス2852に要求を通信し得るパブリックインターネット2854を介して、要求、例えば、作成、読出、更新、または削除(CRUD)動作を行い得る。メタデータ管理サービス2852は、インターネットゲートウェイ2834を介して制御プレーンVCN2816に要求を通信し得る。この要求は、制御プレーンDMZ層2820に含まれるLBサブネット2822によって受信され得る。LBサブネット2822は、要求が有効であると判断してもよく、この判断に応答して、LBサブネット2822は、制御プレーンアプリ層2824に含まれるアプリサブネット2826に要求を送信し得る。要求が検証され、パブリックインターネット2854への呼び出しを必要とする場合、パブリックインターネット2854への呼び出しは、パブリックインターネット2854への呼び出しを行い得るNATゲートウェイ2838に送信されてもよい。要求によって記憶されることが望まれ得るメモリは、DBサブネット2830に記憶され得る。
いくつかの例では、データプレーンミラーアプリ層2840は、制御プレーンVCN2816とデータプレーンVCN2818との間の直接通信を容易にし得る。たとえば、構成の変更、更新、または他の適切な修正が、データプレーンVCN2818に含まれるリソースに適用されることが望まれる場合がある。VNIC2842を介して、制御プレーンVCN2816は、データプレーンVCN2818に含まれるリソースと直接通信し得、それによって、構成に対する変更、更新、または他の好適な修正を実行し得る。
いくつかの実施形態では、制御プレーンVCN2816およびデータプレーンVCN2818は、サービステナンシ2819に含まれ得る。この場合、システムのユーザまたは顧客は、制御プレーンVCN2816またはデータプレーンVCN2818のいずれかを所有または操作しなくてもよい。代わりに、IaaSプロバイダは、制御プレーンVCN2816およびデータプレーンVCN2818を所有または動作させてもよく、それらの両方はサービステナンシ2819に含まれてもよい。この実施形態は、ユーザまたは顧客が他のユーザまたは他の顧客のリソースと対話することを防止し得るネットワークの隔離を可能にし得る。また、この実施形態は、システムのユーザまたは顧客が、記憶のために、所望のレベルのセキュリティを有さない場合があるパブリックインターネット2854に依存する必要なく、データベースをプライベートに記憶することを可能にしてもよい。
他の実施形態では、制御プレーンVCN2816に含まれるLBサブネット2822は、サービスゲートウェイ2836から信号を受信するよう構成され得る。この実施形態では、制御プレーンVCN2816およびデータプレーンVCN2818は、パブリックインターネット2854を呼び出すことなく、IaaSプロバイダの顧客によって呼び出されるように構成されてもよい。IaaSプロバイダの顧客は、顧客が使用するデータベースがIaaSプロバイダによって制御されてもよく、パブリックインターネット2854から隔離されてもよいサービステナンシ2819上に記憶されてもよいため、この実施形態を所望し得る。
図29は、少なくとも1つの実施形態による、IaaSアーキテクチャの別の例示的なパターンを示すブロック図2900である。サービスオペレータ2902(例えば、図28のサービスオペレータ2802)は、仮想クラウドネットワーク(VCN)2906(例えば、図28のVCN2806)およびセキュアホストサブネット2908(たとえば、図28のセキュアホストサブネット2808)を含み得るセキュアホストテナンシ2904(例えば、図28のセキュアホストテナンシ2804)に通信可能に結合され得る。VCN2906は、SSH VCN2912に含まれるLPG2810を介してセキュアシェル(SSH)VCN2912(例えば、図28のSSH VCN2812)に通信可能に結合され得るローカルピアリングゲートウェイ(LPG)2910(例えば、図28のLPG2810)を含み得る。SSH VCN2912は、SSHサブネット2914(たとえば、図28のSSHサブネット2814)を含み得、SSH VCN2912は、制御プレーンVCN2916に含まれるLPG2910を介して制御プレーンVCN2916(例えば、図28の制御プレーンVCN2816)に通信可能に結合され得る。制御プレーンVCN2916は、サービステナンシ2919(例えば、図28のサービステナンシ2819)に含まれ得、データプレーンVCN2918(例えば、図28のデータプレーンVCN2818)は、システムのユーザまたは顧客によって所有または運用されてもよい顧客テナンシ2921に含まれ得る。
制御プレーンVCN2916は、LBサブネット2922(たとえば、図28のLBサブネット2822)を含み得る制御プレーンDMZ層2920(例えば、図28の制御プレーンDMZ層2820)と、アプリサブネット2926(例えば、図28のアプリサブネット2826)を含み得る制御プレーンアプリ層2924(例えば、図28の制御プレーンアプリ層2824)と、(たとえば、図28のDBサブネット2830に類似した)データベース(DB)サブネット2930を含み得る制御プレーンデータ層2928(例えば、図28の制御プレーンデータ層2828)とを含み得る。制御プレーンDMZ層2920に含まれるLBサブネット2922は、制御プレーンアプリ層2924に含まれるアプリサブネット2926と、制御プレーンVCN2916に含まれ得るインターネットゲートウェイ2934(例えば、図28のインターネットゲートウェイ2834)とに通信可能に結合され得、アプリサブネット2926は、制御プレーンデータ層2928に含まれるDBサブネット2930と、サービスゲートウェイ2936(例えば、図28のサービスゲートウェイ)と、ネットワークアドレス変換(NAT)ゲートウェイ2938(例えば、図28のNATゲートウェイ2838)とに通信可能に結合され得る。制御プレーンVCN2916は、サービスゲートウェイ2936およびNATゲートウェイ2938を含み得る。
制御プレーンVCN2916は、アプリサブネット2926を含み得るデータプレーンミラーアプリ層2940(例えば、図28のデータプレーンミラーアプリ層2840)を含み得る。データプレーンミラーアプリ層2940に含まれるアプリサブネット2926は、計算インスタンス2944(例えば、図28の計算インスタンス2844と同様)を実行し得る仮想ネットワークインターフェイスコントローラ(VNIC)2942(例えば、2842のVNIC)を含み得る。計算インスタンス2944は、データプレーンミラーアプリ層2940に含まれるVNIC2942とデータプレーンアプリ層2946に含まれるVNIC2942とを介して、データプレーンミラーアプリ層2940のアプリサブネット2926と、データプレーンアプリ層2946(例えば、図28のデータプレーンアプリ層2846)に含まれ得るアプリサブネット2926との間の通信を容易にし得る。
制御プレーンVCN2916に含まれるインターネットゲートウェイ2934は、パブリックインターネット2954(例えば、図28のパブリックインターネット2854)に通信可能に結合され得るメタデータ管理サービス2952(例えば、図28のメタデータ管理サービス2852)に通信可能に結合され得る。パブリックインターネット2954は、制御プレーンVCN2916に含まれるNATゲートウェイ2938に通信可能に結合され得る。制御プレーンVCN2916に含まれるサービスゲートウェイ2936は、クラウドサービス2956(例えば、図28のクラウドサービス2856)に通信可能に結合され得る。
いくつかの例では、データプレーンVCN2918は、顧客テナンシ2921に含まれ得る。この場合、IaaSプロバイダは、顧客ごとに制御プレーンVCN2916を提供してもよく、IaaSプロバイダは、顧客ごとに、サービステナンシ2919に含まれる固有の計算インスタンス2944をセットアップしてもよい。各計算インスタンス2944は、サービステナンシ2919に含まれる制御プレーンVCN2916と顧客テナンシ2921に含まれるデータプレーンVCN2918との間の通信を可能にしてもよい。計算インスタンス2944は、サービステナンシ2919に含まれる制御プレーンVCN2916においてプロビジョニングされるリソースが、顧客テナンシ2921に含まれるデータプレーンVCN2918において展開されるかまたは別様に使用されることを可能にしてもよい。
他の例では、IaaSプロバイダの顧客は、顧客テナンシ2921に在住するデータベースを有してもよい。この例では、制御プレーンVCN2916は、アプリサブネット2926を含み得るデータプレーンミラーアプリ層2940を含み得る。データプレーンミラーアプリケーション層2940は、データプレーンVCN2918内に存在し得るが、データプレーンミラーアプリケーション層2940は、データプレーンVCN2918内に在住しなくてもよい。すなわち、データプレーンミラーアプリケーション層2940は、顧客テナンシ2921へのアクセスを有してもよいが、データプレーンミラーアプリケーション層2940は、データプレーンVCN2918内に存在しなくてもよく、またはIaaSプロバイダの顧客によって所有もしくは運用されなくてもよい。データプレーンミラーアプリケーション層2940は、データプレーンVCN2918への呼び出しを行うように構成されてもよいが、制御プレーンVCN2916に含まれる任意のエンティティへの呼び出しを行うように構成されなくてもよい。顧客は、制御プレーンVCN2916内にプロビジョニングされるデータプレーンVCN2918内のリソースを展開または別様に使用することを所望してもよく、データプレーンミラーアプリケーション層2940は、顧客のリソースの所望の展開または他の使用を容易にし得る。
いくつかの実施形態では、IaaSプロバイダの顧客は、フィルタをデータプレーンVCN2918に適用し得る。この実施形態では、顧客は、データプレーンVCN2918が何にアクセスできるかを判断し得、顧客は、データプレーンVCN2918からパブリックインターネット2954へのアクセスを制限してもよい。IaaSプロバイダは、データプレーンVCN2918の任意の外部ネットワークもしくはデータベースへのアクセスをフィルタ処理するかまたは別様に制御することができなくてもよい。顧客テナンシ2921に含まれるデータプレーンVCN2918上に顧客によってフィルタおよび制御を適用することは、データプレーンVCN2918を他の顧客およびパブリックインターネット2954から隔離するのを助けることができる。
いくつかの実施形態では、クラウドサービス2956は、パブリックインターネット2954上、制御プレーンVCN2916上、またはデータプレーンVCN2918上に存在しない場合があるサービスにアクセスするために、サービスゲートウェイ2936によって呼び出され得る。クラウドサービス2956と制御プレーンVCN2916またはデータプレーンVCN2918との間の接続は、ライブまたは連続的でなくてもよい。クラウドサービス2956は、IaaSプロバイダによって所有または運営される異なるネットワーク上に存在してもよい。クラウドサービス2956は、サービスゲートウェイ2936から呼び出しを受信するよう構成されてもよく、パブリックインターネット2954から呼び出しを受信しないように構成されてもよい。いくつかのクラウドサービス2956は、他のクラウドサービス2956から隔離されてもよく、制御プレーンVCN2916は、制御プレーンVCN2916と同じ領域にない場合があるクラウドサービス2956から隔離されてもよい。たとえば、制御プレーンVCN2916は「領域1」に位置してもよく、クラウドサービス「展開28」は領域1および「領域2」に位置してもよい。展開28への呼び出しが、領域1に位置する制御プレーンVCN2916に含まれるサービスゲートウェイ2936によって行われる場合、その呼び出しは、領域1内の展開28に伝送されてもよい。この例では、制御プレーンVCN2916、または領域1の展開28は、領域2の展開28に通信可能に結合されなくてもよく、またはそうでなければ通信していなくてもよい。
図30は、少なくとも1つの実施形態による、IaaSアーキテクチャの別の例示的なパターンを示すブロック図3000である。サービスオペレータ3002(例えば、図28のサービスオペレータ2802)は、仮想クラウドネットワーク(VCN)3006(例えば、図28のVCN2806)およびセキュアホストサブネット3008(たとえば、図28のセキュアホストサブネット2808)を含み得るセキュアホストテナンシ3004(例えば、図28のセキュアホストテナンシ2804)に通信可能に結合され得る。VCN3006は、LPG3010(例えば、図28のLPG2810)を含み得、それは、SSH VCN3012(例えば、図28のSSH VCN2812)に含まれるLPG3010を介してSSH VCN3012に通信可能に結合され得る。SSH VCN3012は、SSHサブネット3014(たとえば、図28のSSHサブネット2814)を含み得、SSH VCN3012は、制御プレーンVCN3016(例えば、図28の制御プレーンVCN2816)に含まれるLPG3010を介して制御プレーンVCN3016に通信可能に結合され得、データプレーンVCN3018(例えば、図28のデータプレーン2818)に含まれるLPG3010を介してデータプレーンVCN3018通信可能に結合され得る。制御プレーンVCN3016およびデータプレーンVCN3018は、サービステナンシ3019(例えば、図28のサービステナンシ2819)に含まれ得る。
制御プレーンVCN3016は、ロードバランサ(LB)サブネット3022(たとえば、図28のLBサブネット2822)を含み得る制御プレーンDMZ層3020(例えば、図28の制御プレーンDMZ層2820)と、(たとえば、図28のアプリサブネット2826に類似している)アプリサブネット3026を含み得る制御プレーンアプリ層3024(例えば、図28の制御プレーンアプリ層2824)と、DBサブネット3030を含み得る制御プレーンデータ層3028(例えば、図28の制御プレーンデータ層2828)とを含み得る。制御プレーンDMZ層3020に含まれるLBサブネット3022は、制御プレーンアプリ層3024に含まれるアプリサブネット3026と、制御プレーンVCN3016に含まれ得るインターネットゲートウェイ3034(例えば、図28のインターネットゲートウェイ2834)とに通信可能に結合され得、アプリサブネット3026は、制御プレーンデータ層3028に含まれるDBサブネット3030に、ならびにサービスゲートウェイ3036(例えば、図28のサービスゲートウェイ)およびネットワークアドレス変換(NAT)ゲートウェイ3038(例えば、図28のNATゲートウェイ2838)に通信可能に結合され得る。制御プレーンVCN3016は、サービスゲートウェイ3036およびNATゲートウェイ3038を含み得る。
データプレーンVCN3018は、データプレーンアプリ層3046(例えば、図28のデータプレーンアプリ層2846)、データプレーンDMZ層3048(例えば、図28のデータプレーンDMZ層2848)、およびデータプレーンデータ層3050(例えば、図28のデータプレーンデータ層2850)を含み得る。データプレーンDMZ層3048は、データプレーンアプリ層3046の信頼できるアプリサブネット3060および信頼できないアプリサブネット3062と、データプレーンVCN3018に含まれるインターネットゲートウェイ3034とに通信可能に結合され得るLBサブネット3022を含み得る。信頼できるアプリサブネット3060は、データプレーンVCN3018に含まれるサービスゲートウェイ3036と、データプレーンVCN3018に含まれるNATゲートウェイ3038と、データプレーンデータ層3050に含まれるDBサブネット3030とに通信可能に結合され得る。信頼できないアプリサブネット3062は、データプレーンVCN3018に含まれるサービスゲートウェイ3036と、データプレーンデータ層3050に含まれるDBサブネット3030とに通信可能に結合され得る。データプレーンデータ層3050は、データプレーンVCN3018に含まれるサービスゲートウェイ3036に通信可能に結合され得るDBサブネット3030を含み得る。
信頼できないアプリサブネット3062は、テナント仮想マシン(VM)3066(1)~(N)に通信可能に結合され得る1つ以上のプライマリVNIC3064(1)~(N)を含み得る。各テナントVM3066(1)~(N)は、それぞれの顧客テナンシ3070(1)~(N)に含まれ得るそれぞれのコンテナエグレスVCN3068(1)~(N)に含まれ得るそれぞれのアプリサブネット3067(1)~(N)に通信可能に結合され得る。それぞれのセカンダリVNIC3072(1)~(N)は、データプレーンVCN3018に含まれる信頼できないアプリサブネット3062とコンテナエグレスVCN3068(1)~(N)に含まれるアプリサブネットとの間の通信を容易にし得る。各コンテナエグレスVCN3068(1)~(N)は、パブリックインターネット3054(例えば、図28のパブリックインターネット2854)に通信可能に結合され得るNATゲートウェイ3038を含み得る。
制御プレーンVCN3016に含まれ、データプレーンVCN3018に含まれるインターネットゲートウェイ3034は、パブリックインターネット3054に通信可能に結合され得るメタデータ管理サービス3052(例えば、図28のメタデータ管理システム2852)に通信可能に結合され得る。パブリックインターネット3054は、制御プレーンVCN3016に含まれ、データプレーンVCN3018に含まれるNATゲートウェイ3038に通信可能に結合され得る。制御プレーンVCN3016に含まれ、データプレーンVCN3018に含まれるサービスゲートウェイ3036は、クラウドサービス3056に通信可能に結合され得る。
いくつかの実施形態では、データプレーンVCN3018は、顧客テナンシ3070と統合され得る。この統合は、コードを実行するときにサポートを望む場合がある場合などのいくつかの場合において、IaaSプロバイダの顧客にとって有用または望ましくあり得る。顧客は、破壊的である場合があるか、他の顧客リソースと通信する場合があるか、またはそうでなければ望ましくない影響を引き起こす場合がある、実行すべきコードを与える場合がある。これに応答して、IaaSプロバイダは、顧客によってIaaSプロバイダに与えられたコードを実行するかどうかを判断してもよい。
いくつかの例では、IaaSプロバイダの顧客は、IaaSプロバイダへの一時的なネットワークアクセスを許可し、ある機能がデータプレーン層アプリ3046にアタッチされるよう要求する場合がある。機能を実行するためのコードは、VM3066(1)~(N)において実行されてもよく、データプレーンVCN3018上の他のどこかで動作するように構成されなくてもよい。各VM3066(1)~(N)は、1つの顧客テナンシ3070に接続されてもよい。VM3066(1)~(N)に含まれるそれぞれのコンテナ3071(1)~(N)は、コードを実行するよう構成されてもよい。この場合、二重隔離があり得(例えば、コンテナ3071(1)~(N)は、コードを実行し、コンテナ3071(1)~(N)は、信頼できないアプリサブネット3062に含まれる少なくともVM3066(1)~(N)に含まれてもよい)、これは、正しくないかまたはそうでなければ望ましくないコードが、IaaSプロバイダのネットワークを損傷すること、または異なる顧客のネットワークを損傷することを防ぐのを助けてもよい。コンテナ3071(1)~(N)は、顧客テナンシ3070に通信可能に結合されてもよく、顧客テナンシ3070との間でデータを送信または受信するよう構成されてもよい。コンテナ3071(1)~(N)は、データプレーンVCN3018内の任意の他のエンティティとの間でデータを送信または受信するよう構成されなくてもよい。コードの実行が完了すると、IaaSプロバイダは、コンテナ3071(1)~(N)をキルするかまたは別様に廃棄してもよい。
いくつかの実施形態では、信頼できるアプリサブネット3060は、IaaSプロバイダによって所有または操作されてもよいコードを実行してもよい。この実施形態では、信頼できるアプリサブネット3060は、DBサブネット3030に通信可能に結合されてもよく、DBサブネット3030内でCRUD動作を実行するよう構成されてもよい。信頼できないアプリサブネット3062は、DBサブネット3030に通信可能に結合されてもよいが、この実施形態では、信頼できないアプリサブネットは、DBサブネット3030内で読出動作を実行するよう構成されてもよい。各顧客のVM3066(1)~(N)に含まれ得、その顧客からのコードを実行してもよいコンテナ3071(1)~(N)は、DBサブネット3030と通信可能に結合されなくてもよい。
他の実施形態では、制御プレーンVCN3016およびデータプレーンVCN3018は、直接通信可能に結合されなくてもよい。この実施形態では、制御プレーンVCN3016とデータプレーンVCN3018との間に直接通信がなくてもよい。しかしながら、通信は、少なくとも1つの方法を通して間接的に起こり得る。制御プレーンVCN3016とデータプレーンVCN3018との間の通信を容易にし得るLPG3010が、IaaSプロバイダによって確立されてもよい。別の例では、制御プレーンVCN3016またはデータプレーンVCN3018は、サービスゲートウェイ3036を介してクラウドサービス3056に呼び出しを行い得る。例えば、制御プレーンVCN3016からのクラウドサービス3056への呼び出しは、データプレーンVCN3018と通信し得るサービスの要求を含み得る。
図31は、少なくとも1つの実施形態による、IaaSアーキテクチャの別の例示的なパターンを示すブロック図3100である。サービスオペレータ3102(例えば、図28のサービスオペレータ2802)は、仮想クラウドネットワーク(VCN)3106(例えば、図28のVCN2806)およびセキュアホストサブネット3108(たとえば、図28のセキュアホストサブネット2808)を含み得るセキュアホストテナンシ3104(例えば、図28のセキュアホストテナンシ2804)に通信可能に結合され得る。VCN3106は、LPG3110(例えば、図28のLPG2810)を含み得、それは、SSH VCN3112(例えば、図28のSSH VCN2812)に含まれるLPG3110を介してSSH VCN3112に通信可能に結合され得る。SSH VCN3112は、SSHサブネット3114(たとえば、図28のSSHサブネット2814)を含み得、SSH VCN3112は、制御プレーンVCN3116(例えば、図28の制御プレーンVCN2816)に含まれるLPG3110を介して制御プレーンVCN3116に通信可能に結合され得、データプレーンVCN3118(例えば、図28のデータプレーン2818)に含まれるLPG3110を介してデータプレーンVCN3118に通信可能に結合され得る。制御プレーンVCN3116およびデータプレーンVCN3118は、サービステナンシ3119(例えば、図28のサービステナンシ2819)に含まれ得る。
制御プレーンVCN3116は、LBサブネット3122(たとえば、図28のLBサブネット2822)を含み得る制御プレーンDMZ層3120(例えば、図28の制御プレーンDMZ層2820)と、アプリサブネット3126(例えば、図28のアプリサブネット2826)を含み得る制御プレーンアプリ層3124(例えば、図28の制御プレーンアプリ層2824)と、DBサブネット3130(例えば、図30のDBサブネット3030)を含み得る制御プレーンデータ層3128(例えば、図28の制御プレーンデータ層2828)とを含み得る。制御プレーンDMZ層3120に含まれるLBサブネット3122は、制御プレーンアプリ層3124に含まれるアプリサブネット3126と、制御プレーンVCN3116に含まれ得るインターネットゲートウェイ3134(例えば、図28のインターネットゲートウェイ2834)とに通信可能に結合され得、アプリサブネット3126は、制御プレーンデータ層3128に含まれるDBサブネット3130と、サービスゲートウェイ3136(例えば、図28のサービスゲートウェイ)およびネットワークアドレス変換(NAT)ゲートウェイ3138(例えば、図28のNATゲートウェイ2838)とに通信可能に結合され得る。制御プレーンVCN3116は、サービスゲートウェイ3136およびNATゲートウェイ3138を含み得る。
データプレーンVCN3118は、データプレーンアプリ層3146(例えば、図28のデータプレーンアプリ層2846)、データプレーンDMZ層3148(例えば、図28のデータプレーンDMZ層2848)、およびデータプレーンデータ層3150(例えば、図28のデータプレーンデータ層2850)を含み得る。データプレーンDMZ層3148は、データプレーンアプリ層3146の信頼できるアプリサブネット3160(例えば、図30の信頼できるアプリサブネット3060)および信頼できないアプリサブネット3162(例えば、図30の信頼できないアプリサブネット3062)と、データプレーンVCN3118に含まれるインターネットゲートウェイ3134とに通信可能に結合され得るLBサブネット3122を含み得る。信頼できるアプリサブネット3160は、データプレーンVCN3118に含まれるサービスゲートウェイ3136と、データプレーンVCN3118に含まれるNATゲートウェイ3138と、データプレーンデータ層3150に含まれるDBサブネット3130とに通信可能に結合され得る。信頼できないアプリサブネット3162は、データプレーンVCN3118に含まれるサービスゲートウェイ3136と、データプレーンデータ層3150に含まれるDBサブネット3130とに通信可能に結合され得る。データプレーンデータ層3150は、データプレーンVCN3118に含まれるサービスゲートウェイ3136に通信可能に結合され得るDBサブネット3130を含み得る。
信頼できないアプリサブネット3162は、信頼できないアプリサブネット3162内に常駐するテナント仮想マシン(VM)3166(1)~(N)に通信可能に結合され得るプライマリVNIC3164(1)~(N)を含み得る。各テナントVM3166(1)~(N)は、それぞれのコンテナ3167(1)~(N)においてコードを実行し得、コンテナエグレスVCN3168に含まれ得るデータプレーンアプリ層3146に含まれ得るアプリサブネット3126に通信可能に結合され得る。それぞれのセカンダリVNIC3172(1)~(N)は、データプレーンVCN3118に含まれる信頼できないアプリサブネット3162とコンテナエグレスVCN3168に含まれるアプリサブネットとの間の通信を容易にし得る。コンテナエグレスVCNは、パブリックインターネット3154(例えば、図28のパブリックインターネット2854)に通信可能に結合され得るNATゲートウェイ3138を含み得る。
制御プレーンVCN3116に含まれ、データプレーンVCN3118に含まれるインターネットゲートウェイ3134は、パブリックインターネット3154に通信可能に結合され得るメタデータ管理サービス3152(例えば、図28のメタデータ管理システム2852)に通信可能に結合され得る。パブリックインターネット3154は、制御プレーンVCN3116に含まれ、データプレーンVCN3118に含まれるNATゲートウェイ3138に通信可能に結合され得る。制御プレーンVCN3116に含まれ、データプレーンVCN3118に含まれるサービスゲートウェイ3136は、クラウドサービス3156に通信可能に結合され得る。
いくつかの例では、図31のブロック図3100のアーキテクチャによって示されるパターンは、図30のブロック図3000のアーキテクチャによって示されるパターンの例外と見なされてもよく、IaaSプロバイダが顧客と直接通信することができない場合(たとえば切断された領域)、それは、IaaSプロバイダの顧客にとって望ましい場合がある。各顧客についてVM3166(1)~(N)に含まれるそれぞれのコンテナ3167(1)~(N)は、顧客によってリアルタイムでアクセスされ得る。コンテナ3167(1)~(N)は、コンテナエグレスVCN3168に含まれ得るデータプレーンアプリ層3146のアプリサブネット3126に含まれるそれぞれのセカンダリVNIC3172(1)~(N)への呼び出しを行うように構成されてもよい。セカンダリVNIC3172(1)~(N)はNATゲートウェイ3138に呼び出しを送信し得、NATゲートウェイ3138はパブリックインターネット3154に呼び出しを送信してもよい。この例では、顧客によってリアルタイムでアクセスされ得るコンテナ3167(1)~(N)は、制御プレーンVCN3116から隔離され得、データプレーンVCN3118に含まれる他のエンティティから隔離され得る。コンテナ3167(1)~(N)はまた、他の顧客からのリソースからも隔離されてもよい。
他の例では、顧客は、コンテナ3167(1)~(N)を使用してクラウドサービス3156を呼び出し得る。この例では、顧客は、コンテナ3167(1)~(N)内において、クラウドサービス3156にサービスを要求するコードを実行してもよい。コンテナ3167(1)~(N)はこの要求をセカンダリVNIC3172(1)~(N)に送信し得、セカンダリVNIC3172(1)~(N)はその要求をNATゲートウェイに送信し、NATゲートウェイはその要求をパブリックインターネット3154に送信し得る。パブリックインターネット3154は、インターネットゲートウェイ3134を介して、制御プレーンVCN3116に含まれるLBサブネット3122に要求を送信し得る。要求が有効であると判定することに応答して、LBサブネットはその要求をアプリサブネット3126に送信し得、アプリサブネット3126はその要求をサービスゲートウェイ3136を介してクラウドサービス3156に送信し得る。
図示されるIaaSアーキテクチャ2800、2900、3000、3100は、図示される以外の構成要素を有してもよいことを諒解されたい。さらに、図示される実施形態は、本開示の実施形態を組み込んでもよいクラウドインフラストラクチャシステムのいくつかの例にすぎない。いくつかの他の実施形態では、IaaSシステムは、図示されるよりも多いまたは少ない構成要素を有してもよく、2つ以上の構成要素を組み合わせてもよく、または構成要素の異なる構成または配置を有してもよい。
ある実施形態では、本明細書に説明されるIaaSシステムは、セルフサービスであり、サブスクリプションベースであり、弾性的にスケーラブルであり、信頼性があり、高い可用性があり、セキュアな態様で顧客に配信される、アプリケーション、ミドルウェア、およびデータベースサービス提供の一式を含んでもよい。そのようなIaaSシステムの例は、本譲受人によって提供されるOracle Cloud Infrastructure(OCI)である。
図32は、本開示の様々な実施形態が実現されてもよい例示的なコンピュータシステム3200を示す。システム3200は、上記で説明されるコンピュータシステムのうちのいずれかを実現するために使用されてもよい。図に示されるように、コンピュータシステム3200は、バスサブシステム3202を介していくつかの周辺サブシステムと通信する処理ユニット3204を含む。これらの周辺サブシステムは、処理加速ユニット3206、I/Oサブシステム3208、ストレージサブシステム3218、および通信サブシステム3224を含んでもよい。ストレージサブシステム3218は、有形のコンピュータ可読記憶媒体3222およびシステムメモリ3210を含む。
バスサブシステム3202は、コンピュータシステム3200のさまざまなコンポーネントおよびサブシステムに、意図されるように互いに通信させるための機構を提供する。バスサブシステム3202は、単一のバスとして概略的に示されるが、バスサブシステムの代替実施形態は、複数のバスを利用してもよい。バスサブシステム3202は、さまざまなバスアーキテクチャのうちのいずれかを用いるメモリバスまたはメモリコントローラ、周辺バスおよびローカルバスを含むいくつかのタイプのバス構造のうちのいずれかであってもよい。たとえば、そのようなアーキテクチャは、業界標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA)ローカルバス、およびIEEE P1386.1規格に従って製造される中二階バスとして実現され得る周辺コンポーネントインターコネクト(PCI)バスを含んでもよい。
処理ユニット3204は、1つ以上の集積回路(例えば、従来のマイクロプロセッサまたはマイクロコントローラ)として実現することができ、コンピュータシステム3200の動作を制御する。1つ以上のプロセッサが処理ユニット3204に含まれてもよい。これらのプロセッサは、シングルコアプロセッサまたはマルチコアプロセッサを含んでもよい。特定の実施形態では、処理ユニット3204は、シングルコアプロセッサもしくはマルチコアプロセッサが各処理ユニットに含まれる1つ以上の独立した処理ユニット3232および/または3234として実現されてもよい。他の実施形態では、処理ユニット3204はまた、2つのデュアルコアプロセッサを単一のチップに統合することによって形成されるクワッドコア処理ユニットとして実現されてもよい。
様々な実施形態では、処理ユニット3204は、プログラムコードに応答して様々なプログラムを実行することができ、複数の同時に実行されるプログラムまたはプロセスを維持することができる。任意の所与の時間に、実行されるべきプログラムコードの一部またはすべてが、プロセッサ3204、および/またはストレージサブシステム3218に常駐することができる。好適なプログラミングを通して、プロセッサ3204は、上記で説明される種々の機能性を提供することができる。コンピュータシステム3200は、デジタル信号プロセッサ(DSP)、特殊目的プロセッサなどを含み得る処理加速ユニット3206をさらに含んでもよい。
I/Oサブシステム3208は、ユーザインターフェイス入力デバイスおよびユーザインターフェイス出力デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、キーボード、マウスまたはトラックボールなどのポインティングデバイス、ディスプレイに組み込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを伴う音声入力デバイス、マイクロフォン、および他のタイプの入力デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、例えば、ユーザが、ジェスチャおよび発話コマンドを使用して、ナチュラルユーザインターフェイスを通して、Microsoft Xbox(登録商標)360ゲームコントローラ等の入力デバイスを制御し、それと相互作用することを可能にする、Microsoft Kinect(登録商標)モーションセンサ等のモーション感知および/またはジェスチャ認識デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、ユーザから目の動き(たとえば、写真を撮っている間および/またはメニュー選択を行なっている間の「まばたき」)を検出し、アイジェスチャを入力デバイス(たとえばGoogle Glass(登録商標))への入力として変換するGoogle Glass(登録商標)瞬き検出器などのアイジェスチャ認識デバイスも含んでもよい。加えて、ユーザインターフェイス入力デバイスは、ユーザが音声コマンドを介して音声認識システム(たとえばSiri(登録商標)ナビゲータ)と対話することを可能にする音声認識感知デバイスを含んでもよい。
ユーザインターフェイス入力デバイスは、三次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびにスピーカ、デジタルカメラ、デジタルカムコーダ、ポータブルメディアプレーヤ、ウェブカム、画像スキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザレンジファインダ、および視線追跡デバイスなどの聴覚/視覚デバイスも含んでもよいが、それらに限定されるものではない。加えて、ユーザインターフェイス入力デバイスは、例えば、コンピュータ断層撮影、磁気共鳴撮像、ポジトロン断層撮影、医療用超音波検査装置等の医療用撮像入力デバイスを含んでもよい。ユーザインターフェイス入力デバイスはまた、例えば、MIDIキーボード、デジタル楽器等の音声入力デバイスを含んでもよい。
ユーザインターフェイス出力デバイスは、ディスプレイサブシステム、インジケータライト、または音声出力デバイス等の非視覚的ディスプレイを含んでもよい。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)またはプラズマディスプレイを使用するものなどのフラットパネルデバイス、投影デバイス、タッチスクリーンなどであってもよい。一般に、「出力デバイス」という語の使用は、コンピュータシステム3200からユーザまたは他のコンピュータに情報を出力するためのすべての考えられ得るタイプのデバイスおよび機構を含むよう意図される。たとえば、ユーザインターフェイス出力デバイスは、モニタ、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、プロッタ、音声出力デバイスおよびモデムなどの、テキスト、グラフィックスならびに音声/映像情報を視覚的に伝えるさまざまな表示デバイスを含んでもよいが、それらに限定されるものではない。
コンピュータシステム3200は、現在のところシステムメモリ3210内に位置しているものとして示されているソフトウェア要素を含むストレージサブシステム3218を備えてもよい。システムメモリ3210は、処理ユニット3204上でロード可能および実行可能なプログラム命令、ならびにこれらのプログラムの実行中に生成されるデータを記憶してもよい。
コンピュータシステム3200の構成およびタイプに応じて、システムメモリ3210は、揮発性(ランダムアクセスメモリ(RAM)など)および/または不揮発性(読み出し専用メモリ(ROM)、フラッシュメモリなど)であってもよい。RAMは、典型的には、処理ユニット3204に即座にアクセス可能である、ならびに/もしくは処理ユニット3204によって現在操作および実行されている、データならびに/またはプログラムモジュールを含む。いくつかの実現例では、システムメモリ3210は、スタティックランダムアクセスメモリ(SRAM)またはダイナミックランダムアクセスメモリ(DRAM)など、複数の異なるタイプのメモリを含んでもよい。いくつかの実現例では、起動中などにコンピュータシステム3200内の要素間で情報を転送するのに役立つ基本的なルーチンを含むベーシックインプット/アウトプットシステム(BIOS)が、典型的には、ROMに記憶されてもよい。限定ではなく例として、システムメモリ3210はまた、クライアントアプリケーション、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(RDBMS)などを含んでもよいアプリケーションプログラム3212、プログラムデータ3214、およびオペレーティングシステム3216も示す。例として、オペレーティングシステム3216は、様々なバージョンのMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)、および/もしくはLinux(登録商標)オペレーティングシステム、様々な市販のUNIX(登録商標)もしくはUNIX様オペレーティングシステム(様々なGNU/Linuxオペレーティングシステム、Google Chrome(登録商標)OSなどを含むが、これらに限定されない)、ならびに/またはiOS, Windows(登録商標)Phone, Android(登録商標)OS、BlackBerry(登録商標)10OS、およびPalm(登録商標)OSオペレーティングシステムなどのモバイルオペレーティングシステムを含んでもよい。
記憶サブシステム3218はまた、いくつかの実施形態の機能性を提供する基本的なプログラミングおよびデータ構造を記憶するための有形のコンピュータ可読記憶媒体も提供してもよい。プロセッサによって実行されると上述の機能を提供するソフトウェア(プログラム、コードモジュール、命令)が、ストレージサブシステム3218に格納されてもよい。これらのソフトウェアモジュールまたは命令は、処理ユニット3204によって実行されてもよい。ストレージサブシステム3218はまた、本開示に従って使用されるデータを記憶するためのリポジトリを提供してもよい。
ストレージサブシステム3200はまた、コンピュータ可読記憶媒体3222にさらに接続され得るコンピュータ可読記憶媒体リーダ3220を含み得る。システムメモリ3210とともに、およびオプションとして、システムメモリ3210と組み合わせて、コンピュータ可読記憶媒体3222は、コンピュータ可読情報を、一時的および/またはより恒久的に収容、記憶、伝送、および検索するために、遠隔の、ローカルな、固定された、および/またはリムーバブルなストレージデバイスに記憶媒体を加えたものを包括的に表してもよい。
コードまたはコードの一部を含むコンピュータ可読記憶媒体3222はまた、限定はしないが、情報の記憶および/または伝送のための任意の方法または技術で実現される揮発性および不揮発性の、リムーバブルおよび非リムーバブル媒体などの、記憶媒体ならびに通信媒体を含む、当該技術において公知であるかまたは用いられる任意の適切な媒体を含むことができる。これは、RAM、ROM、電子的に消去可能プログラマブルROM(EEPROM)、フラッシュメモリもしくは他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD)、または他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、または他の有形のコンピュータ可読媒体等の有形のコンピュータ可読記憶媒体を含んでもよい。これはまた、データ信号、データ伝送、または所望の情報を伝送するために使用することができ、コンピューティングシステム3200によってアクセスすることができる、任意の他の媒体等の非有形のコンピュータ可読媒体を含むことができる。
例として、コンピュータ可読記憶媒体3222は、非リムーバブル不揮発性磁気媒体に対して読み書きするハードディスクドライブ、リムーバブル不揮発性磁気ディスクに対して読み書きする磁気ディスクドライブ、CD ROM、DVDおよびBlu-Ray(登録商標)ディスクなどの、リムーバブル不揮発性光ディスクに対して読み書きする光ディスクドライブ、または他の光学媒体を含んでもよい。コンピュータ可読記憶媒体3222は、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB)フラッシュドライブ、セキュアデジタル(SD)カード、DVDディスク、デジタルビデオテープなどを含んでもよいが、これらに限定されない。コンピュータ可読記憶媒体3222はまた、フラッシュメモリベースのSSD、エンタープライズフラッシュドライブ、ソリッドステートROMなどの不揮発性メモリに基づくソリッドステートドライブ(SSD)、ソリッドステートRAM、ダイナミックRAM、スタティックRAMなどの揮発性メモリに基づくSSD、DRAMベースのSSD、磁気抵抗RAM(MRAM)SSD、およびDRAMとフラッシュメモリベースのSSDとの組み合わせを使用するハイブリッドSSDも含んでもよい。ディスクドライブおよびそれらに関連付けられるコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、および他のデータの不揮発性記憶をコンピュータシステム3200に提供してもよい。
通信サブシステム3224は、他のコンピュータシステムおよびネットワークに対するインターフェイスを提供する。通信サブシステム3224は、他のシステムとコンピュータシステム3200との間のデータの送受のためのインターフェイスとして働く。例えば、通信サブシステム3224は、コンピュータシステム3200がインターネットを介して1つ以上のデバイスに接続することを可能にしてもよい。いくつかの実施形態では、通信サブシステム3224は、(たとえば、セルラー電話技術、3G、4GもしくはEDGE(グローバル進化のための高速データレート)などの先進データネットワーク技術、WiFi(IEEE802.11ファミリー規格、もしくは他のモバイル通信技術、またはそれらのいずれかの組み合わせを用いて)無線音声および/もしくはデータネットワークにアクセスするための無線周波数(RF)送受信機コンポーネント、グローバルポジショニングシステム(GPS)受信機コンポーネント、ならびに/または他のコンポーネントを含んでもよい。いくつかの実施形態では、通信サブシステム3224は、無線インターフェイスに加えて、またはその代わりに、有線ネットワーク接続性(例えば、イーサネット(登録商標))を提供することができる。
いくつかの実施形態では、通信サブシステム3224はまた、コンピュータシステム3200を使用してもよい1人以上のユーザの代わりに、構造化されたおよび/または構造化されていないデータフィード3226、イベントストリーム3228、イベント更新3230等の形式で入力通信を受信してもよい。
例として、通信サブシステム3224は、Twitter(登録商標)フィード、Facebook(登録商標)更新、Rich Site Summary(RSS)フィードなどのウェブフィード、および/もしくは1つ以上の第三者情報源からのリアルタイム更新などの、ソーシャルネットワークならびに/または他の通信サービスのユーザからリアルタイムでデータフィード3226を受信するよう構成されてもよい。
加えて、通信サブシステム3224はまた、連続データストリームの形式でデータを受信するよう構成されてもよく、これは、明示的な終端を伴わない、本質的に連続的または無限であってもよい、リアルタイムイベントのイベントストリーム3228および/またはイベント更新3230を含んでもよい。連続データを生成するアプリケーションの例としては、たとえば、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール(たとえば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通監視などが含まれてもよい。
通信サブシステム3224はまた、構造化されたおよび/または構造化されていないデータフィード3226、イベントストリーム3228、イベント更新3230などを、コンピュータシステム3200に結合される1つ以上のストリーミングデータソースコンピュータと通信してもよい1つ以上のデータベースに出力するよう構成されてもよい。
コンピュータシステム3200は、ハンドヘルドポータブルデバイス(例えば、iPhone(登録商標)携帯電話、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブルデバイス(例えば、Google Glass(登録商標)ヘッドマウントディスプレイ)、PC、ワークステーション、メインフレーム、キオスク、サーバラック、または任意の他のデータ処理システムを含む、種々のタイプの1つとすることができる。
常に変化するコンピュータおよびネットワークの性質のため、図に示されるコンピュータシステム3200の記載は、単に具体的な例として意図される。図に描写されるシステムより多いまたは少ないコンポーネントを有する、多くの他の構成が可能である。たとえば、カスタマイズされたハードウェアも使用されるかもしれず、および/または、特定の要素が、ハードウェア、ファームウェア、ソフトウェア(アプレットを含む)、または組み合わせで実現されるかもしれない。さらに、ネットワーク入力/出力デバイス等の他のコンピューティングデバイスへの接続が採用されてもよい。本明細書に提供される開示および教示に基づいて、当業者は、種々の実施形態を実現するために、他の態様および/または方法を理解するであろう。
本開示の特定の実施形態について説明してきたが、様々な修正、変更、代替構成、および均等物も本開示の範囲内に包含される。本開示の実施形態は、ある特定のデータ処理環境内での動作に限定されず、複数のデータ処理環境内で自由に動作することができる。加えて、本開示の実施形態は、特定の一連のトランザクションおよびステップを使用して説明されているが、本開示の範囲は、説明された一連のトランザクションおよびステップに限定されないことが、当業者に明白となるはずである。上述した実施形態のさまざまな特徴および局面は、個別にまたはともに用いられてもよい。
さらに、本開示の実施形態は、ハードウェアおよびソフトウェアの特定の組み合わせを使用して説明されたが、ハードウェアおよびソフトウェアの他の組み合わせも本開示の範囲内であることを認識されたい。本開示の実施形態は、ハードウェアのみで、またはソフトウェアのみで、またはそれらの組合せを使用して実現されてもよい。本明細書に記載されたさまざまなプロセスは、同じプロセッサまたは任意の組み合わせの異なるプロセッサ上で実現され得る。したがって、構成要素またはモジュールが特定の動作を実行するように構成されるとして記載されている場合、そのような構成は、たとえば、動作を実行する電子回路を設計すること、プログラミング可能な電子回路(マイクロプロセッサなど)をプログラミングして動作を実行すること、またはそれらの任意の組み合わせによって達成され得る。プロセスは、プロセス間通信のための従来の技術を含むがこれに限定されないさまざまな技術を用いて通信することができ、異なる対のプロセスが異なる技術を用いてもよく、同じ対のプロセスが異なる時間に異なる技術を用いてもよい。
したがって、明細書および図面は、限定的な意味ではなく例示的な意味で見なされるべきである。しかしながら、特許請求の範囲に記載された、より広範な精神および範囲から逸脱することなく、追加、削減、削除、ならびに他の修正および変更がなされ得ることは明らかであろう。したがって、特定の開示の実施形態を説明してきたが、これらは限定を意図するものではない。さまざまな修正および均等物が、特許請求の範囲内にある。
開示された実施形態を説明する文脈における(特に特許請求の範囲の文脈における)文言「ある(a)」および「ある(an)」および「その(the)」ならびに同様の指示対象の使用は、本明細書において別段の指示がない限り、または文脈によって明らかに矛盾しない限り、単数形および複数形の両方を包含すると解釈されるべきである。文言「備える(comprising)」、「有する(having)」、「含む(including)」、および「含有する(containing)」は、特に断らない限り、非限定的な文言(すなわち、「~を含むがそれに限定されない」を意味する)として解釈されるべきである。「接続される」という文言は、何かが介在する場合であっても、部分的または全体的に内部に含まれる、取り付けられる、または共に合わせられるものとして解釈されるべきである。本明細書における値の範囲の記載は、本明細書において別段の指示がない限り、単に、その範囲内に入る各別個の値を個々に言及する簡潔な方法としての役割を果たすことを意図しており、各別個の値は、あたかもそれが本明細書において個々に記載されているかのように本明細書に組み込まれる。本明細書に記載されるすべての方法は、本明細書に別段の指示がない限り、または文脈によって明らかに矛盾しない限り、任意の好適な順序で実施され得る。本明細書で提供される任意のおよびすべての例、または例示的な言葉(例えば、「など」)の使用は、単に、本開示の実施形態をよりよく説明することを意図するものであり、別段の請求がない限り、本開示の範囲を限定するものではない。本明細書におけるいかなる文言も、任意の請求されていない要素を本開示の実施に不可欠であることを示すものとして解釈されるべきではない。
句「X、Y、またはZの少なくとも1つ」などの離接的文言は、特に別段の記載がない限り、項目、用語などがX、Y、もしくはZ、またはそれらの任意の組合せ(例えば、X、Y、および/またはZ)のいずれかであってもよいことを提示するために一般に使用される文脈内で理解されることが意図される。したがって、そのような離接的文言は、概して、ある実施形態が、Xの少なくとも1つ、Yの少なくとも1つ、またはZの少なくとも1つが各々存在することを必要とすることを包含するよう意図せず、および包含するべきではない。
本開示を実施するために公知の最良の形態を含む、本開示の好ましい実施形態が本明細書に記載されている。これらの好ましい実施形態の変形例は、前述の説明を読めば当業者には明らかになるであろう。当業者は、適宜、そのような変形例を採用することができるはずであり、本開示は、本明細書に具体的に説明されるものとは別様に実践されてもよい。したがって、本開示は、適用可能な法によって許可されるように、特許請求の範囲に記載される主題のすべての修正物および均等物を含む。さらに、そのすべての可能な変形物における上記の要素の任意の組み合わせは、本明細書において別段の指示がない限り、本開示によって包含される。
本明細書に引用される刊行物、特許出願、および特許を含むすべての引用文献は、あたかも各引用文献が個々にかつ具体的に引用により援用されるよう示され、その全体がここに記載されるのと同程度に、ここに引用により援用される。
上記の明細書では、本開示の局面についてその具体的な実施形態を参照して説明しているが、本開示はそれに限定されるものではないということを当業者は認識するであろう。上記の開示のさまざまな特徴および局面は、個々にまたは一緒に用いられてもよい。さらに、実施形態は、本明細書の、より広い精神および範囲から逸脱することなく、本明細書に説明されるものを超えて、任意の数の環境および用途において利用され得る。したがって、明細書および図面は、限定的ではなく例示的であると見なされるべきである。

Claims (20)

  1. 方法であって、
    コンピュータシステムが、ブロックボリュームを予約する要求を受信することを含み、前記要求はセッションマネージャサービスから受信され、前記方法はさらに、
    前記コンピュータシステムが、前記ブロックボリュームを予約することと、
    前記コンピュータシステムが、前記ブロックボリュームのデータセンタ識別子を識別することと、
    前記コンピュータシステムが、前記ブロックボリュームの前記データセンタ識別子を前記セッションマネージャサービスに返すことと、
    前記コンピュータシステムが、前記ブロックボリュームをアタッチすることと、
    前記コンピュータシステムが、前記ブロックボリュームを解放する命令を前記セッションマネージャサービスから受信することと、
    前記コンピュータシステムが、前記ブロックボリュームに記憶されたデータを含む前記ブロックボリュームのバックアップを作成することと、
    前記コンピュータシステムが、前記ブロックボリュームを解放することとを含む、方法。
  2. 前記要求はユーザ識別子を含み、前記ブロックボリュームを予約することは、
    前記ユーザ識別子に対応するユーザに、登録されたブロックボリュームが割り当てられているか否かを判定することと、
    登録されたブロックボリュームが前記ユーザに割り当てられていることに応じて、前記登録されたブロックボリュームを予約することと、
    登録されたブロックボリュームが前記ユーザ識別子に対応するユーザに割り当てられていないことに応じて、空のボリュームのプールから空のボリュームを予約することとを含み、前記空のボリュームはセキュアクラウドシェルとドッキングするように予めフォーマットされる、請求項1に記載の方法。
  3. 前記方法はさらに、
    前記セッションマネージャサービスから、前記ブロックボリュームを復元する要求を受信することと、
    前記ブロックボリュームの前記バックアップを用いて復元ボリュームを作成することとを含み、前記復元ボリュームは、前記ブロックボリュームに記憶されたデータを含み、前記方法はさらに、
    前記復元ボリュームのデータセンタ識別子を前記セッションマネージャサービスに返すことを含む、請求項1に記載の方法。
  4. 前記ブロックボリュームの前記バックアップは、前記バックアップの識別子をさらに含み、前記復元ボリュームを作成することは、
    空のボリュームのプールから空のブロックボリュームを予約することを含み、前記空のブロックボリュームはセキュアクラウドシェルとドッキングするように予めフォーマットされ、前記復元ボリュームを作成することはさらに、
    前記バックアップの前記識別子を用いて前記ブロックボリュームの前記バックアップを検索することと、
    前記空のブロックボリューム上に前記ブロックボリュームの前記バックアップをロードすることに少なくとも部分的によって、前記空のブロックボリュームをプロビジョニングすることと、
    前記空のブロックボリュームの前記データセンタ識別子を前記復元ボリュームの前記データセンタ識別子として識別することとを含む、請求項3に記載の方法。
  5. 保持期間中に前記ブロックボリュームを保持することをさらに含む、請求項1に記載の方法。
  6. 前記ブロックボリュームの前記バックアップを作成することは、前記ブロックボリュームのディスクイメージを作成することを含む、請求項1に記載の方法。
  7. 前記ブロックボリュームの前記バックアップを作成することは、
    前記ブロックボリュームのデータをオブジェクトデータに変換することと、
    前記オブジェクトデータをオブジェクトストレージシステムに記憶することとを含む、請求項1に記載の方法。
  8. コンピュータシステムであって、
    1つ以上のプロセッサと、
    前記1つ以上のプロセッサと通信するメモリとを含み、前記メモリは、コンピュータ実行可能命令を記憶するよう構成され、前記コンピュータ実行可能命令を実行することは、前記1つ以上のプロセッサに、ステップを実行させ、前記ステップは、
    コンピュータシステムが、ブロックボリュームを予約する要求を受信することを含み、前記要求はセッションマネージャサービスから受信され、前記ステップはさらに、
    前記コンピュータシステムが、前記ブロックボリュームを予約することと、
    前記コンピュータシステムが、前記ブロックボリュームのデータセンタ識別子を識別することと、
    前記コンピュータシステムが、前記ブロックボリュームの前記データセンタ識別子を前記セッションマネージャサービスに返すことと、
    前記コンピュータシステムが、前記ブロックボリュームをアタッチすることと、
    前記コンピュータシステムが、前記ブロックボリュームを解放する命令を前記セッションマネージャサービスから受信することと、
    前記コンピュータシステムが、前記ブロックボリュームに記憶されたデータを含む前記ブロックボリュームのバックアップを作成することと、
    前記コンピュータシステムが、前記ブロックボリュームを解放することとを含む、コンピュータシステム。
  9. 前記要求はユーザ識別子を含み、前記ブロックボリュームを予約することは、
    前記ユーザ識別子に対応するユーザに、登録されたブロックボリュームが割り当てられているか否かを判定することと、
    登録されたブロックボリュームが前記ユーザに割り当てられていることに応じて、前記登録されたブロックボリュームを予約することと、
    登録されたブロックボリュームが前記ユーザ識別子に対応するユーザに割り当てられていないことに応じて、空のボリュームのプールから空のボリュームを予約することとを含み、前記空のボリュームはセキュアクラウドシェルとドッキングするように予めフォーマットされる、請求項8に記載のコンピュータシステム。
  10. 前記コンピュータ実行可能命令を実行することは、さらに、前記1つ以上のプロセッサにステップを実行させ、前記ステップは、
    前記セッションマネージャサービスから、前記ブロックボリュームを復元する要求を受信することと、
    前記ブロックボリュームの前記バックアップを用いて復元ボリュームを作成することとを含み、前記復元ボリュームは、前記ブロックボリュームに記憶されたデータを含み、前記ステップはさらに、
    前記復元ボリュームのデータセンタ識別子を前記セッションマネージャサービスに返すことを含む、請求項8に記載のコンピュータシステム。
  11. 前記ブロックボリュームの前記バックアップは、前記バックアップの識別子をさらに含み、前記復元ボリュームを作成することは、
    空のボリュームのプールから空のブロックボリュームを予約することを含み、前記空のブロックボリュームはセキュアクラウドシェルとドッキングするように予めフォーマットされ、前記復元ボリュームを作成することはさらに、
    前記バックアップの前記識別子を用いて前記ブロックボリュームの前記バックアップを検索することと、
    前記空のブロックボリューム上に前記ブロックボリュームの前記バックアップをロードすることに少なくとも部分的によって、前記空のブロックボリュームをプロビジョニングすることと、
    前記空のブロックボリュームの前記データセンタ識別子を前記復元ボリュームの前記データセンタ識別子として識別することとを含む、請求項10に記載のコンピュータシステム。
  12. 前記コンピュータ実行可能命令を実行することはさらに、前記1つ以上のプロセッサに、保持期間中に前記ブロックボリュームを保持することを含むステップを実行させる、請求項8に記載のコンピュータシステム。
  13. 前記ブロックボリュームの前記バックアップを作成することは、前記ブロックボリュームのディスクイメージを作成することを含む、請求項8に記載のコンピュータシステム。
  14. 前記ブロックボリュームの前記バックアップを作成することは、
    前記ブロックボリュームのデータをオブジェクトデータに変換することと、
    前記オブジェクトデータをオブジェクトストレージシステムに記憶することとを含む、請求項8に記載のコンピュータシステム。
  15. 実行されると、コンピュータシステムの1つ以上のプロセッサにステップを実行させるコンピュータ実行可能命令を記憶する、コンピュータ可読記憶媒体であって、前記ステップは、
    コンピュータシステムが、ブロックボリュームを予約する要求を受信することを含み、前記要求はセッションマネージャサービスから受信され、前記ステップはさらに、
    前記コンピュータシステムが、前記ブロックボリュームを予約することと、
    前記コンピュータシステムが、前記ブロックボリュームのデータセンタ識別子を識別することと、
    前記コンピュータシステムが、前記ブロックボリュームの前記データセンタ識別子を前記セッションマネージャサービスに返すことと、
    前記コンピュータシステムが、前記ブロックボリュームをアタッチすることと、
    前記コンピュータシステムが、前記ブロックボリュームを解放する命令を前記セッションマネージャサービスから受信することと、
    前記コンピュータシステムが、前記ブロックボリュームに記憶されたデータを含む前記ブロックボリュームのバックアップを作成することと、
    前記コンピュータシステムが、前記ブロックボリュームを解放することとを含む、コンピュータ可読記憶媒体。
  16. 前記要求はユーザ識別子を含み、前記ブロックボリュームを予約することは、
    前記ユーザ識別子に対応するユーザに、登録されたブロックボリュームが割り当てられているか否かを判定することと、
    登録されたブロックボリュームが前記ユーザに割り当てられていることに応じて、前記登録されたブロックボリュームを予約することと、
    登録されたブロックボリュームが前記ユーザ識別子に対応するユーザに割り当てられていないことに応じて、空のボリュームのプールから空のボリュームを予約することとを含み、前記空のボリュームはセキュアクラウドシェルとドッキングするように予めフォーマットされる、請求項15に記載のコンピュータ可読記憶媒体。
  17. 前記コンピュータ実行可能命令を実行することは、さらに、前記1つ以上のプロセッサにステップを実行させ、前記ステップは、
    前記セッションマネージャサービスから、前記ブロックボリュームを復元する要求を受信することと、
    前記ブロックボリュームの前記バックアップを用いて復元ボリュームを作成することとを含み、前記復元ボリュームは、前記ブロックボリュームに記憶されたデータを含み、前記ステップはさらに、
    前記復元ボリュームのデータセンタ識別子を前記セッションマネージャサービスに返すことを含む、請求項15に記載のコンピュータ可読記憶媒体。
  18. 前記ブロックボリュームの前記バックアップは、前記バックアップの識別子をさらに含み、前記復元ボリュームを作成することは、
    空のボリュームのプールから空のブロックボリュームを予約することを含み、前記空のブロックボリュームはセキュアクラウドシェルとドッキングするように予めフォーマットされ、前記復元ボリュームを作成することはさらに、
    前記バックアップの前記識別子を用いて前記ブロックボリュームの前記バックアップを検索することと、
    前記空のブロックボリューム上に前記ブロックボリュームの前記バックアップをロードすることに少なくとも部分的によって、前記空のブロックボリュームをプロビジョニングすることと、
    前記空のブロックボリュームの前記データセンタ識別子を前記復元ボリュームの前記データセンタ識別子として識別することとを含む、請求項17に記載のコンピュータ可読記憶媒体。
  19. 前記コンピュータ実行可能命令を実行することはさらに、前記1つ以上のプロセッサに、保持期間中に前記ブロックボリュームを保持することを含むステップを実行させる、請求項15に記載のコンピュータ可読記憶媒体。
  20. 前記ブロックボリュームの前記バックアップを作成することは、
    前記ブロックボリュームのデータをオブジェクトデータに変換することと、
    前記オブジェクトデータをオブジェクトストレージシステムに記憶することとを含む、請求項15に記載のコンピュータ可読記憶媒体。
JP2023510338A 2020-08-14 2021-08-12 クラウドシェルのインスタンスにわたってデータを永続化するための技法 Pending JP2023538870A (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US16/993,973 US11374792B2 (en) 2020-08-14 2020-08-14 Techniques for utilizing multiple network interfaces for a cloud shell
US16/993,970 US11368306B2 (en) 2020-08-14 2020-08-14 Techniques for using signed nonces to secure cloud shells
US16/993,973 2020-08-14
US16/993,970 2020-08-14
US17/078,835 2020-10-23
US17/078,835 US11327673B1 (en) 2020-10-23 2020-10-23 Techniques for persisting data across instances of a cloud shell
PCT/US2021/045797 WO2022036134A1 (en) 2020-08-14 2021-08-12 Techniques for persisting data across instances of a cloud shell

Publications (2)

Publication Number Publication Date
JP2023538870A true JP2023538870A (ja) 2023-09-12
JPWO2022036134A5 JPWO2022036134A5 (ja) 2024-04-12

Family

ID=77595665

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023510338A Pending JP2023538870A (ja) 2020-08-14 2021-08-12 クラウドシェルのインスタンスにわたってデータを永続化するための技法

Country Status (4)

Country Link
EP (1) EP4196899A1 (ja)
JP (1) JP2023538870A (ja)
CN (2) CN116018580B (ja)
WO (1) WO2022036134A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114491652A (zh) * 2022-04-19 2022-05-13 广州市保伦电子有限公司 一种数据库数据加密备份及解密还原的方法及处理终端

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4224077B2 (ja) * 2006-04-04 2009-02-12 株式会社東芝 ストレージシステム
US9304867B2 (en) * 2010-09-28 2016-04-05 Amazon Technologies, Inc. System and method for providing flexible storage and retrieval of snapshot archives
CN103034453B (zh) * 2011-09-30 2015-11-25 国际商业机器公司 管理虚拟机实例中预安装应用的持久数据的方法和装置
US9003141B2 (en) * 2011-11-14 2015-04-07 Ca, Inc. Enhanced software application platform
US9219648B1 (en) * 2012-05-23 2015-12-22 Amazon Technologies, Inc. Best practice analysis, automatic remediation
US10331374B2 (en) * 2017-06-30 2019-06-25 Oracle International Corporation High-performance writable snapshots in data storage systems
US10866888B2 (en) * 2018-01-11 2020-12-15 Intel Corporation Reservation architecture for overcommitted memory
CN110070182B (zh) * 2019-04-01 2021-08-24 京微齐力(北京)科技有限公司 适合人工智能的平台芯片及其制造和设计方法

Also Published As

Publication number Publication date
CN116018580B (zh) 2023-12-29
CN116018580A (zh) 2023-04-25
CN117931515A (zh) 2024-04-26
EP4196899A1 (en) 2023-06-21
WO2022036134A1 (en) 2022-02-17

Similar Documents

Publication Publication Date Title
US11764961B2 (en) Techniques for using signed nonces to secure cloud shells
US11757636B2 (en) Access control for short-lived resource principals
US11789627B2 (en) Techniques for persisting data across instances of a cloud shell
US11711241B2 (en) Techniques for utilizing multiple network interfaces for a cloud shell
US11418343B2 (en) Access control for long-lived resource principals
US20220294788A1 (en) Customizing authentication and handling pre and post authentication in identity cloud service
US11811679B2 (en) Stacked identities for resource principals
US11818113B2 (en) Techniques for simultaneously accessing multiple isolated systems while maintaining security boundaries
CN116018580B (zh) 用于跨云壳层的实例持久化数据的技术
US20230224146A1 (en) Quorum-based authorization
US20230100200A1 (en) Token exchange between bearer and pop tokens
US20230103886A1 (en) Single sign-on between 2 independent states
US20230171233A1 (en) Secure transfer of workloads across security regions
US20230132934A1 (en) Techniques for dynamically assigning client credentials to an application
US20240187232A1 (en) Secured bootstrap with dynamic authorization
US20230113325A1 (en) External identity provider as a domain resource
US20240119133A1 (en) Authorization between integrated cloud products using association
WO2023055734A1 (en) Applications as resource principals or service principals
CN118077173A (zh) 应用作为资源主体或服务主体
WO2023056009A1 (en) Single logout
WO2023055997A1 (en) Combined authorization for entities within a domain

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240401

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240401