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

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

▶ セールスフォース ドット コム インコーポレイティッドの特許一覧

特許7193615マルチテナントデータベース管理システムにおけるデータベース暗号化のシステム及び方法
<>
  • 特許-マルチテナントデータベース管理システムにおけるデータベース暗号化のシステム及び方法 図1
  • 特許-マルチテナントデータベース管理システムにおけるデータベース暗号化のシステム及び方法 図2A
  • 特許-マルチテナントデータベース管理システムにおけるデータベース暗号化のシステム及び方法 図2B
  • 特許-マルチテナントデータベース管理システムにおけるデータベース暗号化のシステム及び方法 図3
  • 特許-マルチテナントデータベース管理システムにおけるデータベース暗号化のシステム及び方法 図4
  • 特許-マルチテナントデータベース管理システムにおけるデータベース暗号化のシステム及び方法 図5
  • 特許-マルチテナントデータベース管理システムにおけるデータベース暗号化のシステム及び方法 図6
  • 特許-マルチテナントデータベース管理システムにおけるデータベース暗号化のシステム及び方法 図7
  • 特許-マルチテナントデータベース管理システムにおけるデータベース暗号化のシステム及び方法 図8
  • 特許-マルチテナントデータベース管理システムにおけるデータベース暗号化のシステム及び方法 図9
  • 特許-マルチテナントデータベース管理システムにおけるデータベース暗号化のシステム及び方法 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-12-12
(45)【発行日】2022-12-20
(54)【発明の名称】マルチテナントデータベース管理システムにおけるデータベース暗号化のシステム及び方法
(51)【国際特許分類】
   H04L 9/14 20060101AFI20221213BHJP
   G06F 21/60 20130101ALI20221213BHJP
   G06F 21/62 20130101ALI20221213BHJP
【FI】
H04L9/14
G06F21/60 320
G06F21/62 318
【請求項の数】 24
(21)【出願番号】P 2021504785
(86)(22)【出願日】2020-01-10
(65)【公表番号】
(43)【公表日】2021-12-02
(86)【国際出願番号】 US2020013169
(87)【国際公開番号】W WO2020159694
(87)【国際公開日】2020-08-06
【審査請求日】2021-02-08
(31)【優先権主張番号】16/263,751
(32)【優先日】2019-01-31
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】506332063
【氏名又は名称】セールスフォース ドット コム インコーポレイティッド
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】チョン テリー
(72)【発明者】
【氏名】マーティン ジャメイソン ベア
(72)【発明者】
【氏名】ファンハエネル トーマス
(72)【発明者】
【氏名】トゥッカー アンドリュー
(72)【発明者】
【氏名】ワイアット ナタニエル
(72)【発明者】
【氏名】ハヌマンタラウ ラガヴェンドラン
(72)【発明者】
【氏名】ベン-グア,アサッフ
(72)【発明者】
【氏名】モーティモレ ウィリアム チャールズ
【審査官】中里 裕正
(56)【参考文献】
【文献】米国特許出願公開第2010/0257351(US,A1)
【文献】米国特許出願公開第2018/0373741(US,A1)
【文献】特開2017-162242(JP,A)
【文献】特表2013-528872(JP,A)
【文献】特開2012-104121(JP,A)
【文献】特開2018-010576(JP,A)
【文献】特表2016-511610(JP,A)
【文献】国際公開第2017/090142(WO,A1)
【文献】米国特許出願公開第2014/0050317(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/14
G06F 21/60
G06F 21/62
(57)【特許請求の範囲】
【請求項1】
第1テナントの第1テナントデータと第2テナントの第2テナントデータとを少なくとも記憶するマルチテナントデータベースシステムの前記第1テナントの前記第1テナントデータの少なくとも一部のセキュリティを管理するコンピュータ化された方法であって、前記第1テナントの前記第1テナントデータは、第1テナント識別子に関連づけられた前記マルチテナントデータベースシステムの不変ストレージに記憶され、前記第2テナントの第2テナントデータは、第2テナント識別子に関連づけられた前記マルチテナントデータベースシステムの前記不変ストレージに記憶され、前記第1テナントデータ及び前記第2テナントデータの任意の部分が、前記マルチテナントデータベースシステム内の同じデータベースオブジェクトの少なくとも1つに論理的に属し、当該方法は、
前記マルチテナントデータベースシステムに結合されたメモリストレージで、前記第1テナント識別子に基づいて、前記第1テナントの前記第1テナントデータを少なくとも前記第2テナントの前記第2テナントデータから分離するステップと、
前記第1テナント識別子に基づいて、鍵キャッシュメモリから、前記第1テナントデータの1つ以上のフラグメントを暗号化するための前記第1テナントに関連づけられた第1暗号化鍵を取り出すステップであり、前記第1暗号化鍵は、前記第2テナントに関連づけられた第2暗号化鍵と異なる、ステップと、
前記マルチテナントデータベースシステムで、前記取り出された第1暗号化鍵に基づいて前記第1テナントデータの前記1つ以上のフラグメントのうち少なくとも1つを暗号化するステップと、
前記マルチテナントデータベースシステムで、前記第1暗号化鍵及び前記第2暗号化鍵と異なるシステム暗号化鍵を使用してテナント間データを暗号化するステップであり、前記テナント間データは前記第1テナント及び前記第2テナントに関するデータであり、ブロックインデックスとトランザクションログとを含む群から選択された少なくとも1つである、ステップと、
前記マルチテナントデータベースシステムで、前記第1テナントデータの前記暗号化された1つ以上のフラグメントの各々について非暗号化ヘッダ情報を生成するステップであり、前記ヘッダ情報は前記第1テナント識別子を含むメタデータを有する、ステップと、
前記不変ストレージに、前記第1テナントデータの前記暗号化された1つ以上のフラグメント及び対応する非暗号化ヘッダ情報を記憶するステップと、前記暗号化されたテナント間データを記憶するステップと
を含む方法。
【請求項2】
前記第1テナントデータは、コミットされたトランザクションに関する、請求項1に記載の方法。
【請求項3】
要求元が認証されたとき、前記第1テナントに関連づけられた前記第1暗号化鍵へのアクセスを許可するステップ
をさらに含む請求項1に記載の方法。
【請求項4】
前記マルチテナントデータベースシステムで、前記第1テナントデータの前記1つ以上のフラグメントの要求を受信するステップと、
前記マルチテナントデータベースシステムで、前記マルチテナントデータベースシステムに通信上結合されたブロックキャッシュメモリが前記第1テナントデータの前記要求された1つ以上のフラグメントを含むかどうかを判定するステップと、
前記ブロックキャッシュメモリ内にあると判定されたとき前記第1テナントデータの前記要求された1つ以上のフラグメントを前記マルチテナントデータベースシステムに提供するステップと、
をさらに含む請求項1に記載の方法。
【請求項5】
前記第1テナントデータの前記要求された1つ以上のフラグメントが前記ブロックキャッシュメモリ内に存在しないと判定されたとき、前記第1テナントデータの前記1つ以上のフラグメントについての前記非暗号化ヘッダ情報の前記メタデータを使用することにより、暗号化された前記第1テナントデータの前記要求された1つ以上のフラグメントを識別するステップと、
前記非暗号化ヘッダ情報の前記メタデータに基づいて、前記第1テナントデータの前記1つ以上のフラグメントを復号するために、前記鍵キャッシュメモリ又は鍵管理システム(KMS)から前記第1暗号化鍵を取り出すステップと、
前記取り出された第1暗号化鍵を使用して前記第1テナントデータの前記1つ以上のフラグメントを復号するステップと、
前記第1テナントデータの前記復号された1つ以上のフラグメントを前記ブロックキャッシュメモリに提供するステップと、
さらに含む請求項4に記載の方法。
【請求項6】
要求元が認証されたとき、前記鍵キャッシュメモリで、前記第1テナントに関連づけられた前記第1暗号化鍵へのアクセスを許可するステップ
をさらに含む請求項5に記載の方法。
【請求項7】
前記第1暗号化鍵は、前記第1暗号化鍵が前記鍵キャッシュメモリで入手できないとき、前記KMSから取り出される、請求項5に記載の方法。
【請求項8】
前記マルチテナントデータベースシステムで、前記ブロックキャッシュメモリにおいて前記第1テナントデータの前記1つ以上のフラグメントをフィルタリングすること、ソートすること、及びインデキシングすることを含む群から選択された動作のうち少なくとも1つを実行するステップ
をさらに含む請求項4に記載の方法。
【請求項9】
前記マルチテナントデータベースシステムで、所定の期間で、又は鍵変更要求を受信したとき、前記第1暗号化鍵を変更するステップと、
前記マルチテナントデータベースシステムの前記不変ストレージに、前記第1テナントデータを前記変更された鍵に基づいて新しいバージョンとして記憶するステップと、
をさらに含む請求項1に記載の方法。
【請求項10】
前記マルチテナントデータベースシステムで、サンドボックステナントを、サンドボックステナント識別子を前記第1テナントデータの仮想スナップショットに、及びサンドボックス作成時点の後に前記サンドボックステナントにより作成されたサンドボックステナントデータに関連づけることにより、作成するステップ
をさらに含み、
前記サンドボックステナントデータは、前記第1暗号化鍵で暗号化される、請求項1に記載の方法。
【請求項11】
前記マルチテナントデータベースシステムで、前記サンドボックステナントが作成された後、前記サンドボックステナントに対して新しい鍵を選択するステップ
をさらに含む請求項1に記載の方法。
【請求項12】
ソースデータベースインスタンスから移行されるべき前記第1テナントのメタデータを宛先データベースインスタンスに送信するステップであり、前記宛先データベースインスタンスは、前記ソースデータベースインスタンスと異なる物理的サーバ又は仮想化サーバに位置する、ステップと、
前記宛先データベースインスタンスで、前記第1テナントの前記メタデータを、前記宛先データベースインスタンスが前記第1テナントデータにアクセスするための宛先データベースのストレージ内のデータのグルーピングを指し示す情報を有するように、修正するステップと、
をさらに含む請求項1に記載の方法。
【請求項13】
第1テナントの第1テナントデータと第2テナントの第2テナントデータとを少なくとも記憶するマルチテナントデータベースシステムの前記第1テナントの前記第1テナントデータの少なくとも一部のセキュリティを管理するシステムであって、前記第1テナントの前記第1テナントデータは、第1テナント識別子に関連づけられた前記マルチテナントデータベースシステムの不変ストレージに記憶され、前記第2テナントの前記第2テナントデータは、第2テナント識別子に関連づけられた前記マルチテナントデータベースシステムの前記不変ストレージに記憶され、前記第1テナントデータ及び前記第2テナントデータの任意の部分が、同じデータベースオブジェクトの少なくとも1つに論理的に属し、当該システムは、
前記マルチテナントデータベースシステムに結合されたメモリストレージで、前記第1テナント識別子に基づいて、前記第1テナントの前記第1テナントデータを少なくとも前記第2テナントの前記第2テナントデータから分離するメモリストレージと、
前記第1テナント識別子に基づいて、前記第1テナントデータの1つ以上のフラグメントを暗号化するための前記第1テナントに関連づけられた第1暗号化鍵を記憶する鍵キャッシュメモリであり、前記第1暗号化鍵は、前記第2テナントに関連づけられた第2暗号化鍵と異なる、鍵キャッシュメモリと、
前記マルチテナントデータベースシステムの1つ以上のサーバであり、前記メモリストレージ及び前記鍵キャッシュメモリに通信上結合され、取り出された第1暗号化鍵に基づいて前記第1テナントデータの前記1つ以上のフラグメントのうち少なくとも1つを暗号化し、前記第1暗号化鍵及び前記第2暗号化鍵と異なるシステム暗号化鍵を使用してテナント間データを暗号化することであって、前記テナント間データは前記第1テナント及び前記第2テナントに関するデータであり、ブロックインデックスとトランザクションログとを含む群から選択された少なくとも1つであり、前記第1テナントデータの前記暗号化された1つ以上のフラグメントの各々について非暗号化ヘッダ情報を生成することであって、前記ヘッダ情報は前記第1テナント識別子を含むメタデータを有する、前記マルチテナントデータベースシステムの1つ以上のサーバと、
を備え、
記第1テナントデータの前記暗号化された1つ以上のフラグメント及び対応する非暗号化ヘッダ情報、並びに前記暗号化されたテナント間データは、前記不変ストレージに記憶される、システム。
【請求項14】
前記第1テナントデータは、コミットされたトランザクションに関する、請求項1に記載のシステム。
【請求項15】
前記マルチテナントデータベースシステムの前記1つ以上のサーバは、要求元が認証されたとき、前記第1テナントに関連づけられた前記第1暗号化鍵へのアクセスを許可する、請求項1に記載のシステム。
【請求項16】
前記マルチテナントデータベースシステムの前記1つ以上のサーバに通信上結合されたブロックキャッシュメモリ、をさらに備え、
前記マルチテナントデータベースシステムの前記1つ以上のサーバは、前記第1テナントデータの前記1つ以上のフラグメントの要求を受信し、前記ブロックキャッシュメモリが前記第1テナントデータの前記要求された1つ以上のフラグメントを含むかどうかを判定し、
前記ブロックキャッシュメモリは、前記ブロックキャッシュメモリ内にあると判定されたとき前記第1テナントデータの前記要求された1つ以上のフラグメントを前記マルチテナントデータベースシステムに提供する、請求項1に記載のシステム。
【請求項17】
前記マルチテナントデータベースシステムの前記1つ以上のサーバは、前記第1テナントデータの前記要求された1つ以上のフラグメントが前記ブロックキャッシュメモリ内に存在しないと判定されたとき、前記第1テナントデータの前記1つ以上のフラグメントについての前記非暗号化ヘッダ情報の前記メタデータを使用することにより、暗号化された前記第1テナントデータの前記要求された1つ以上のフラグメントを識別し、前記非暗号化ヘッダ情報の前記メタデータに基づいて、前記第1テナントデータの前記1つ以上のフラグメントを復号するために、前記鍵キャッシュメモリ又は鍵管理システム(KMS)から前記第1暗号化鍵を取り出し、前記取り出された第1暗号化鍵を使用して前記第1テナントデータの前記1つ以上のフラグメントを復号し、前記第1テナントデータの前記復号された1つ以上のフラグメントを前記ブロックキャッシュメモリに提供する、請求項1に記載のシステム。
【請求項18】
前記鍵キャッシュメモリは、要求元が認証されたとき、前記第1テナントに関連づけられた前記第1暗号化鍵へのアクセスを許可する、請求項1に記載のシステム。
【請求項19】
前記第1暗号化鍵は、前記第1暗号化鍵が前記鍵キャッシュメモリで入手できないとき、前記KMSから取り出される、請求項1に記載のシステム。
【請求項20】
前記マルチテナントデータベースシステムの前記1つ以上のサーバは、前記ブロックキャッシュメモリにおいて前記第1テナントデータの前記1つ以上のフラグメントをフィルタリングすること、ソートすること、及びインデキシングすることを含む群から選択された動作のうち少なくとも1つを実行する、請求項1に記載のシステム。
【請求項21】
前記マルチテナントデータベースシステムの前記1つ以上のサーバは、所定の期間で、又は鍵変更要求を受信したとき、前記第1暗号化鍵を変更し、
前記マルチテナントデータベースシステムの前記不変ストレージは、前記第1テナントデータを前記変更された鍵に基づいて新しいバージョンとして記憶する、請求項1に記載のシステム。
【請求項22】
前記マルチテナントデータベースシステムの前記1つ以上のサーバは、サンドボックステナントを、サンドボックステナント識別子を前記第1テナントデータの仮想スナップショットに、及びサンドボックス作成時点の後に前記サンドボックステナントにより作成されたサンドボックステナントデータに関連づけることにより、作成し、
前記サンドボックステナントデータは、前記第1暗号化鍵で暗号化される、請求項1に記載のシステム。
【請求項23】
前記マルチテナントデータベースシステムの前記1つ以上のサーバは、前記サンドボックステナントが作成された後、前記サンドボックステナントに対して新しい鍵を選択する、請求項2に記載のシステム。
【請求項24】
前記マルチテナントデータベースシステムの前記1つ以上のサーバは、ソースデータベースインスタンスから移行されるべき前記第1テナントのメタデータを宛先データベースインスタンスに送信することであって、前記宛先データベースインスタンスは、前記ソースデータベースインスタンスと異なる物理的サーバ又は仮想化サーバに位置し、前記宛先データベースインスタンスで、前記第1テナントの前記メタデータを、前記宛先データベースインスタンスが前記第1テナントデータにアクセスするための宛先データベースのストレージ内のデータのグルーピングを指し示す情報を有するように、修正する、請求項1に記載のシステム。
【発明の詳細な説明】
【背景技術】
【0001】
いくつかの現在のマルチテナントデータベースシステムは、テナントデータの暗号化を提供することがある。しかしながら、このような暗号化は、データベースとは別個のアプリケーションにより実行される。すなわち、アプリケーションがテナントデータを暗号化し、暗号化されたテナントデータが記憶のためにデータベースに送信される。この構成では、フィルタリング、ソート、インデキシングなどの典型的なデータベース機能は、暗号化されたデータに対して実行することができない。すなわち、現在のマルチテナントデータベースシステムでは、マルチテナントデータベース内の特定のデータの暗号化は、データベースの使用に制限を課すことになる。いくつかの例において、暗号化されたデータを用いて典型的なデータベース機能を実行する試みは、使用されているアプリケーションの機能を壊すことになる。従来のシングルテナントデータベースシステムは、テナントデータの暗号化を可能にし得るが、異なるテナントに対して異なる暗号化を取り扱うことはできない。いくつかのデータベースシステムは、テナント暗号化を提供するが、テナントデータが異なるデータベース、表領域などに論理的に分けられる必要がある。
【図面の簡単な説明】
【0002】
開示される主題事項のさらなる理解を提供するために含まれる添付の図面は、本明細書に組み込まれ、本明細書の一部を構成する。図面はまた、開示される主題事項の実装を例示し、詳細な説明と共に、開示される主題事項の実装の原理を説明するのに役立つ。開示される主題事項及びそれが実施され得る様々な方法の基本的理解のために必要であり得る以上に詳細な構造的詳細を示す試みは行われない。
図1】開示される主題事項の一実装による、第1及び第2のテナントデータを分離し、第1テナントデータの1つ以上のフラグメントを暗号化する一例示的な方法を示す。
図2A】開示される主題事項の一実装による、データベースクエリ要求に応答して第1テナントデータの非暗号化フラグメントを取り出す一例示的な方法を示す。
図2B】開示される主題事項の一実装による、要求されたフラグメントがブロックキャッシュメモリに存在しないときにデータベースクエリに応答して第1テナントデータのフラグメントを取り出して復号する一例示的な方法を示す。
図3】開示される主題事項の一実装による、第1テナントデータに関連づけられた第1暗号化鍵を変更し、変更された鍵に基づいて第1テナントデータを新しいバージョンとして不変ストレージに記憶する一例示的な方法を示す。
図4】開示される主題事項の一実装による、第1テナントの第1テナントデータからの少なくとも1つの新しいサンドボックステナントデータのための少なくとも1つの新しいサンドボックスを作成し、サンドボックステナントデータを暗号化する一例示的な方法を示す。
図5】開示される主題事項の一実装による、第1テナントデータのメタデータを使用してソースデータベースインスタンスから宛先データベースインスタンスに第1テナントデータを移行する一例示的な方法を示す。
図6】開示される主題事項の実装による、図1図5に示す例示的な方法の分離に関連して使用され得るシステムアーキテクチャの一例を示す。
図7】開示される主題事項の一実装による、図4に示す例示的な方法を使用して第1テナントデータの異なるフラグメントに対して異なるサンドボックスを作成する一例示的なアーキテクチャを示す。
図8】開示される主題事項の実装による、鍵管理のための一例示的なアーキテクチャを示す。
図9】開示される主題事項の一実装によるコンピュータを示す。
図10】開示される主題事項の一実装によるネットワーク構成を示す。
【発明を実施するための形態】
【0003】
開示される主題事項の実装は、暗号化された形式で記憶されるテナントデータのフィルタリング、ソート、及びインデキシングなどのデータベース動作がサポートされる、マルチテナントデータベースシステムの暗号化を提供する。テナントデータの暗号化は、アプリケーションサーバでなくマルチテナントデータベースシステムにより実行することができ、それにより、データベース動作(例えば、フィルタリング、ソートなど)を利用することができる。マルチテナントデータベースシステムの各テナントは、各テナントがその独自のテナント識別子と暗号化鍵を有する場合、別個に暗号化されてもよい。マルチテナントデータベースシステムにおいて、異なるテナントデータの部分は、同じデータベースオブジェクトの少なくとも1つに論理的に属することができる。
【0004】
特に、特定のテナントのテナントデータのレコードを含むフラグメント(fragments)を暗号化することができる。フラグメントは、開示される主題事項のマルチテナントデータベースシステムにおける基本データ単位であり得、複数のフラグメントがエクステント(extent)を構成する。データエクステントは、テナントデータの1つ以上のフラグメント及びブロックインデックスを含むことができる。フラグメントは、テナント識別子に基づいて分離することができ、分離されたフラグメントは、そのフラグメントのテナントの暗号化鍵を使用して個々に暗号化することができる。
【0005】
開示される主題事項の実装は、テナント暗号化がアプリケーションレベルで(すなわち、アプリケーションサーバで)実行される現在のマルチテナントデータベースシステムを向上させる。すなわち、このようなシステムにおいて、テナントデータの暗号化は、テナントデータが別個のデータベースシステムに記憶される前にアプリケーションにより実行される。アプリケーションでデータを暗号化することの欠点は、フィルタリング、ソート、インデキシングなどのデータベース動作を典型的に実行できないことである。アプリケーションは、テナントデータがアプリケーションにより符号化されてマルチテナントデータベースに記憶されているときにデータベース動作(例えば、フィルタリング、ソート等)を試みたとき、失敗及び/又はエラーを経験する可能性がある。すなわち、現在のマルチテナントデータベースシステムでは、マルチテナントデータベース内の特定のデータの暗号化は、データベースの使用に制限を課すことになる。いくつかの従来のシングルテナントデータベースシステムは、テナントデータの暗号化を可能にする場合があるが、異なるテナントに対して異なる暗号化を取り扱うことはできない。
【0006】
開示される主題事項の実装において、開示される主題事項のマルチテナントデータベースシステムのメモリストレージ(memory storage)は、マルチテナントデータベース内に永続化するように(to persistence)書き込まれていないコミットされたトランザクション及びコミットされていないトランザクションの双方を含み得る。コミットされたトランザクションは、マルチテナントデータベースシステムの不変ストレージ(immutable storage)に永続化するように書き込まれる前に、暗号化することができる。いくつかの実装において、マルチテナントデータベースシステムは、デーモンを使用して、コミットされるべきトランザクションのテナントデータの、フラグメントへの分離を管理する。すなわち、異なるテナント(すなわち、異なるテナント識別子を有するテナント)を分離することができる。鍵キャッシュは、各テナントの暗号化鍵を記憶することができる。鍵キャッシュに暗号化鍵のコピーを保持することで、鍵管理システム(Key Management System、KMS)から暗号化鍵を取り出すことの時間オーバーヘッドを低減させることができる。
【0007】
マルチテナントデータベースシステムのデーモンは、特定のテナントのデータのフラグメントの暗号化を管理するために、テナントの暗号化鍵を取り出すことができる。非暗号化ヘッダが、テナントデータの暗号化されたフラグメントの各々に生成され、関連づけられてもよく、このヘッダは、(認可されたとき、テナントの暗号化鍵を取り出すために使用され得る)テナント識別子を有するメタデータを含むことができる。デーモンは、マルチテナントデータベースシステムの不変ストレージにおいて永続化するようにテナントデータの暗号化されたフラグメント及び読取可能なヘッダの書き込みを管理することができる。
【0008】
特定のテナントデータに関してマルチテナントデータベースシステムによりクエリを受信したとき、マルチテナントデータベースシステムのクエリエンジンによりブロックキャッシュが最初にチェックされて、データが暗号化されておらず入手できるかどうかを判定する。これは、それをデータベースから取り出すよりも速いためである。マルチテナントデータベースシステムのクエリエンジンは、ブロックキャッシュ内のデータが暗号化されていない(すなわち、データが平文であり、暗号文でない)とき、テナントデータを取り出すように動作することができる。データがブロックキャッシュで入手できない場合、要求されたテナントデータは、それが暗号化された形式で記憶されている不変ストレージから取り出すことができる。テナントデータは、復号し、ブロックキャッシュに提供することができ、それにより、それをクエリエンジンにより使用してデータベース動作(例えば、フィルタ、ソート等)を実行することができる。特に、マルチテナントデータベースシステムは、クエリエンジンにより識別されたテナントデータのデータフラグメントのヘッダからテナント識別子を有するメタデータを取り出すことができ、鍵キャッシュ又はKMSから暗号化鍵を取り出して、取り出されたメタデータに基づいてデータフラグメントを復号することができる。要求元は、それが鍵キャッシュ又はKMSから特定のテナントの暗号化鍵を取り出し得る前に、(例えば、証明書を介して)認証されてもよい。(暗号文から平文に復号されている)復号されたデータフラグメントは、データベース動作を行うためにブロックキャッシュに提供することができる。
【0009】
すなわち、開示される主題事項の実装は、各テナントに特有の暗号化鍵でテナントデータを暗号化することができる。テナントデータのフラグメントは、暗号化され、マルチテナントデータベースシステムの不変ストレージに記憶することができる。暗号化されたテナントデータは、非暗号化ヘッダ内のメタデータに基づいて不変ストレージから取り出すことができる。取り出された暗号化されたデータは、鍵キャッシュ又はKMSから取り出された鍵を使用して復号することができ、復号されたデータは、ブロックキャッシュに提供することができ、そこでは、データベース動作を実行することができる。テナント間(Cross-tenant)データ(例えば、1つ以上のテナントを含むブロックインデックス、トランザクションログなど)は、テナント暗号化鍵のいずれとも異なるシステム暗号化鍵を使用して暗号化及び復号することができる。開示される主題事項の実装は、個々のテナントデータの暗号化を提供し、フィルタリング、ソートなどのデータベース動作を、典型的には標準的なマルチテナントデータベースシステムに関連づけられるエラー又は失敗なしにマルチテナントデータベースシステムにより実行することを可能にする。
【0010】
開示される主題事項の実装は、テナント暗号化のための鍵管理、例えば、マルチテナントデータベースシステムにより管理される鍵のローテーションなどを提供することができる。鍵管理には、テナント暗号化鍵、テナント間データを暗号化するシステム暗号化鍵の管理、及び/又は暗号化鍵の作成と削除を含むことができる。いくつかの実装において、暗号化鍵(例えば、テナント暗号化鍵及び/又はシステム暗号化鍵)は、セキュリティを維持するために、所定の頻度でローテートされ(rotated)(すなわち、変更され)てもよい。いくつかの実装において、ユーザは、(セキュリティ目的のために)鍵のローテーションを要求することができ、データは、別個のデータエクステントに新しい鍵を用いて新しいバージョンとして再書き込みすることができる。
【0011】
開示される主題事項の実装は、1つ以上のサンドボックステナントのためのデータの暗号化を提供することができる。サンドボックス化されたデータがオリジナルテナントの物理的データに裏打ちされるとき、サンドボックスとオリジナルテナントは同じ暗号化鍵を共有することができる。作成後、サンドボックスに対して異なる鍵が選択されてもよい。1つ以上のサンドボックステナントは、オリジナルテナントデータから、又は別のサンドボックステナントデータから形成することができる。
【0012】
開示される主題事項の実装は、暗号化されたテナントデータをあるマルチテナントデータベースインスタンスから異なるマルチテナントデータベースインスタンスに転送することができる、テナント移行(migration)のための暗号化を提供することができる。データの暗号化は、暗号化鍵複製を提供することにより維持することができる。すなわち、移行されるテナントの暗号化鍵も移行することができる。
【0013】
図1は、開示される主題事項の一実装による、マルチテナントデータベースシステムにおいて第1及び第2のテナントデータを分離し、第1テナントデータの1つ以上のフラグメントを暗号化する一例示的な方法10を示す。方法10は、第1テナントの第1テナントデータと第2テナントの第2テナントデータを少なくとも記憶することができるマルチテナントデータベースシステム(例えば、図6に示すマルチテナントデータベースシステム100、図8に示すマルチテナントデータベースシステム200、及び図9に示す中央コンポーネント700及び/又は第2コンピュータ800、及び/又は図10に示すデータベースシステム1200a~1200d)の第1テナントの第1テナントデータの少なくとも一部のセキュリティを管理することができる。
【0014】
第1テナントの第1テナントデータは、典型的には、第1テナント識別子に関連づけられたマルチテナントデータベースシステムの不変ストレージ(例えば、図6及び図8に示す不変ストレージ108)に記憶することができ、第2テナントの第2テナントデータは、典型的には、第2テナント識別子に関連づけられたマルチテナントデータベースシステムの不変ストレージに記憶することができる。いくつかの実装において、第1テナントデータ及び第2テナントデータは、図6に示すメモリストレージ102及び/又はブロックキャッシュ118、図8に示すデータベースサーバ208、210、図9に示す固定ストレージ630、メモリ670、リムーバブル媒体650、中央コンポーネント700、及び/又はストレージ810、及び/又は図10に示すデータベースシステム1200a~1200dに記憶することができる。
【0015】
コミットされたトランザクション及び/又はコミットされていないトランザクションの双方のための第1テナントデータ及び/又は第2テナントデータが、マルチテナントデータベースシステムに結合されたメモリストレージ(例えば、図6に示すメモリストレージ102)に記憶され得る。動作12において、少なくとも第2テナントの第2テナントデータから第1テナントの第1テナントデータが、第1テナント識別子に基づいて、マルチテナントデータベースシステムに結合されたメモリストレージにおいて分離され得る。第1テナントデータのコミットされたトランザクションは、コミットされた及び/又はコミットされていない可能性のある第1テナント及び/又は第2テナントデータのコミットされていないトランザクションデータから分離することができる。
【0016】
いくつかの実装において、第1テナントデータのコミットされたトランザクションは、不変ストレージで永続化するように書き込まれる前に暗号化されてもよい。マルチテナントデータベースシステムのデーモンが、第1テナントデータの第2テナントデータからの分離と、第1テナントデータの1つ以上のフラグメントの形成を管理することができる。デーモンは、図6に示すマルチテナントデータベースシステム100、図8に示すマルチテナントデータベースシステム200のデータベースサーバ208、210、図9に示す中央コンポーネント700及び/又は第2コンピュータ800、及び/又は図10に示すデータベースシステム1200a~1200dにより実行されてもよい。
【0017】
図1に示す動作14において、第1テナントに関連づけられた第1暗号化鍵が、第1テナント識別子に基づいて、鍵キャッシュメモリ(例えば、図8に示す鍵キャッシュ208、212)から取り出され得る。取り出された第1暗号化鍵は、第1テナントデータの1つ以上のフラグメントを暗号化するために使用することができる。第1テナントに関連づけられた第1暗号化鍵は、第2テナントに関連づけられた第2暗号化鍵とは異なり得る。鍵キャッシュ内に暗号化鍵のコピーを保持することで、鍵管理システム(KMS)(例えば、図6及び図8に示すKMS128)から鍵を取り出すことの時間オーバーヘッドを低減させることができる。デーモンは、第1テナントデータのフラグメントの暗号化を管理するために、第1テナントのための暗号化鍵を取り出すことができる。
【0018】
いくつかの実装において、キャッシュメモリから第1暗号化鍵を取り出すために、第1テナントに関連づけられた第1暗号化鍵の要求元にアクセスが許可される必要があり得る。要求元は、例えば、図8に示すアプリケーションサーバ202、204、及び/又は図9に示すコンピュータ600でもよい。例えば、要求元は、認証されるべき証明書又は他の識別情報を提供することができる。要求元が認証されたとき、要求元は、第1テナントデータの1つ以上のフラグメントを暗号化するための第1暗号化鍵を受け取ることができる。いくつかの実装において、図8に示すデータベースサーバ208、210、図9に示す中央コンポーネント700及び/又は第2コンピュータ800、及び/又は図10に示すデータベースシステム1200a~1200dが、要求元を認証してもよい。
【0019】
動作16において、マルチテナントデータベースシステムが、取り出された暗号化鍵に基づいて、第1テナントデータの1つ以上のフラグメントのうち1つを暗号化し得る。いくつかの実装において、デーモンが、取り出された第1暗号化鍵を使用する第1テナントデータの1つ以上のフラグメントの暗号化を管理してもよい。
【0020】
動作18において、第1テナントデータの暗号化された1つ以上のフラグメントの各々についての非暗号化ヘッダ情報が、マルチテナントデータベースシステムにおいて生成され得る。第1テナントのヘッダ情報は、第1テナント識別子を含むメタデータを有し得る。各々の生成された非暗号化ヘッダ情報は、第1テナントデータの各フラグメントに関連づけることができる。動作20において、第1テナントデータの暗号化された1つ以上のフラグメント及び対応する非暗号化ヘッダ情報が、不変ストレージ(例えば、図6及び図8に示す不変ストレージ、図9に示す第2コンピュータ800のストレージ810、図10のデータベースシステム1200a~dなど)に記憶され得る。いくつかの実装において、動作20は、(例えば、図6に示すフラッシャ106による)「フラッシュ」動作の一部でもよく、これにおいて、メモリストレージ(例えば、図6に示すメモリストレージ102)における利用可能な記憶領域を増加させるために、第1テナントデータのコミットされたトランザクションが識別され、暗号化され、マルチテナントデータベースシステムの不変ストレージに記憶される。
【0021】
図2Aは、開示される主題事項の一実装による、データベースクエリ要求に応答して第1テナントデータの非暗号化フラグメントを取り出す一例示的な方法30を示す。動作32において、マルチテナントデータベースシステム(図6に示すマルチテナントデータベースシステム100、図8に示すマルチテナントデータベースシステム200、及び図9に示す中央コンポーネント700及び/又は第2コンピュータ800、及び/又は図10に示すデータベースシステム1200a~1200d)が、第1テナントデータの1つ以上のフラグメントの要求を受信し得る。要求は、図8に示すアプリケーションサーバ202、204、及び/又は図9に示すコンピュータ600からでもよく、図6に示すクエリ126により受信されてもよい。動作34において、マルチテナントデータベースシステムが、マルチテナントデータベースシステムに通信上結合されたブロックキャッシュメモリ(例えば、図6に示すブロックキャッシュ122)が第1テナントデータの要求された1つ以上のフラグメントを含むかどうかを判定し得る。動作36において、ブロックキャッシュメモリが、第1テナントデータの要求された1つ以上のフラグメントを、ブロックキャッシュメモリ内にあると判定されたとき、マルチテナントデータベースシステムに提供し得る。開示される主題事項の実装において、ブロックキャッシュメモリの内容は、暗号化されていなくてもよい(すなわち、暗号文でなく、平文であり得る)。第1テナントデータの1つ以上のフラグメントがブロックキャッシュ内に存在するとき、データベース動作が第1テナントデータのフラグメントに対して実行されてもよく、復号が実行される必要はない。ブロックキャッシュからの1つ以上のフラグメントの取り出しは、不変ストレージにおいて暗号化された1つ以上のフラグメントの位置を特定し、第1テナントの暗号化鍵を取り出し、1つ以上のフラグメントを復号し、復号されたフラグメントをブロックキャッシュに提供するより速いという利点を有し得る。
【0022】
図2Bは、開示される主題事項の一実装による、要求されたフラグメントがブロックキャッシュメモリに存在しないときにデータベースクエリに応答して第1テナントデータのフラグメントを取り出して復号する一例示的な方法40を示す。第1テナントデータの要求された1つ以上のフラグメントがブロックキャッシュメモリに存在しないと判定されたとき(例えば、図2Aに示す例示的な方法30が、キャッシュメモリにおいて第1テナントデータの暗号化されていないフラグメントを見つけることができないとき)、動作42において、暗号化された第1テナントデータの要求された1つ以上のフラグメントが、第1テナントデータの1つ以上のフラグメントについての非暗号化ヘッダ情報のメタデータを使用することにより不変ストレージ(例えば、図6及び図8に示す不変ストレージ108)において識別され得る。
【0023】
動作44において、第1暗号化鍵が、非暗号化ヘッダ情報のメタデータに基づいて、第1テナントデータの1つ以上のフラグメントを復号するために鍵キャッシュメモリ(例えば、図8に示す鍵キャッシュ)又は鍵管理システム(KMS)(例えば、図6に示すKMS)から取り出され得る。いくつかの実装において、鍵キャッシュメモリ(例えば、図8に示す鍵キャッシュ208、212)からの第1暗号化鍵の取り出しを試みることができる。第1暗号化鍵は、鍵キャッシュメモリに存在しないとき、KMS(例えば、図6及び図8に示すKMS128)から取り出されてもよい。鍵キャッシュメモリ又はKMSは、要求元が認証されたとき、第1テナントに関連づけられた第1暗号化鍵へのアクセスを許可することができる。例えば、要求元は、認証されるべき証明書又は他の識別情報を提供してもよい。要求元が認証されたとき、要求元は、第1テナントデータの1つ以上のフラグメントを復号するための第1暗号化鍵を受け取ることができる。
【0024】
動作46において、第1テナントデータの1つ以上のフラグメントが、鍵キャッシュメモリ又はKMSから取り出された第1暗号化鍵を使用して復号され得る。動作48において、第1テナントデータの復号された1つ以上のフラグメントが、ブロックキャッシュメモリ(例えば、図6に示すブロックキャッシュ118)に提供され得る。
【0025】
1つ以上のフラグメントが復号され(例えば、データは平文形式である)、ブロックキャッシュメモリに存在するとき、フィルタリング、ソート、及び/又はインデキシングなどの1つ以上のデータベース動作が、マルチテナントデータベースシステムにより第1テナントデータの1つ以上のフラグメントに対して実行され得る。すなわち、開示される主題事項の実装は、テナントデータが暗号化されるときにデータベース動作が制限されるか又は利用できない可能性のあるいくつかの従来のマルチテナントシステムと異なり、マルチテナントデータベースシステム内のテナントデータを暗号化し、データベース動作を実行することができる。いくつかの従来のデータベースは、テナントの暗号化をサポートし得るが、テナントが異なるデータベース又は表領域(tablespaces)に論理的に分けられることを要する。開示される主題事項のマルチテナントデータベースシステムにおいて、テナントは、同じデータベース内にコロケートされ(collocated)てもよく、あるいは(例えば、同じテーブル及び/又はインデックス内に)データベースオブジェクトとしてコロケートされてもよく、暗号化された形式で記憶され得るデータに対してデータベース動作を実行してもよい。
【0026】
いくつかの実装において、マルチテナントデータベースシステムは、第1暗号化鍵及び第2暗号化鍵とは別個であって第1テナント及び第2テナントに関連づけられていないシステム鍵を使用して、マルチテナントデータベースのインデックス(例えば、図6に示すデータエクステント110のブロックインデックス114及び/又はブロックキャッシュ118のブロックインデックス122)及び/又はトランザクションログ(例えば、図6に示すトランザクションログ104)のうち1つ以上を暗号化することができる。以下に詳細に論じるように、図6に示すストレージカタログ116及び一時スピル124も、テナント暗号化鍵とは別個のシステム鍵を使用して暗号化されてもよい。
【0027】
図3は、開示される主題事項の一実装による、第1テナントデータに関連づけられた第1暗号化鍵を変更し、変更された鍵に基づいて第1テナントデータを新しいバージョンとして不変ストレージに記憶する一例示的な方法50を示す。動作52において、マルチテナントデータベースシステム(例えば、図6に示すマルチテナントデータベースシステム100、図8に示すマルチテナントデータベースシステム200、及び図9に示す中央コンポーネント700及び/又は第2コンピュータ800、及び/又は図10に示すデータベースシステム1200a~1200d)が、所定の期間で、又は鍵変更要求を受信したとき、第1暗号化鍵を変更し得る。動作54において、マルチテナントデータベースシステムの不変ストレージ(例えば、図6及び図8に示す不変ストレージ108)が、変更された鍵に基いて第1テナントデータを新しいバージョンとして記憶し得る。暗号化されたテナントデータのセキュリティを維持するために、暗号化鍵の定期的な変更が用いられてもよい。
【0028】
開示される主題事項の実装において、サンドボックステナントが、既存の非サンドボックステナントデータに基づいて、例えば米国特許公開第2018/0129585号に開示されているように作成されてもよく、該特許公開の開示は、その全体を参照により組み込まれる。いくつかの実装において、1つ以上の新しいサンドボックスが、オリジナルサンドボックスから、例えば米国特許出願第16/133,106号に開示されているように作成されてもよく、該特許出願の開示は、その全体を参照により組み込まれる。例えば、オリジナルサンドボックスは、オリジナルテナントのオリジナルテナントデータから作成されるサンドボックスでもよい。オリジナルサンドボックスは、少なくとも1つのデータソースからのコード、スキーマ、レコード、及びテストデータのうち1つ以上を含むようにテンプレートから形成されてもよい。コード及び/又はテストデータの検証テストが、サンドボックスの複製前に実行されてもよい。1つ以上の複製サンドボックスが、同じ内容を有して作成されてもよい。
【0029】
記載される主題事項の実装において、ハードウェア及びソフトウェアの組み合わせが、特定のサンドボックステナント識別子とオリジナルテナント識別子との間の対応を作成して、サンドボックステナントに、オリジナルテナントに関連づけられた時点データへの読み取りアクセスを提供することができる。このように、サンドボックステナントは、オリジナルテナントデータをサンドボックステナントの名前空間(namespace)にコピーする必要なく、オリジナルテナントデータを利用することができる。同様に、1つ以上の新しいサンドボックステナント識別子とオリジナルサンドボックステナント識別子との間の対応は、新しいサンドボックステナントに、オリジナルサンドボックステナントに関連づけられた時点データへの読み取りアクセスを提供することができる。
【0030】
サンドボックステナントにより生成された新しいトランザクションデータは、オリジナルテナントがアクセスできないサンドボックステナント名前空間に書き込むことができる。オリジナルテナントにより生成された新しいトランザクションデータは、サンドボックステナントがアクセスできないオリジナルテナント名前空間に書き込むことができる。このように、新しいサンドボックステナントデータは、オリジナルテナントデータを破壊せず、新しいオリジナルテナントデータ(例えば、これは、後の不変オリジナルテナントデータと呼ばれることがある)は、アプリケーションをテストするためにサンドボックスにより読み書きされるテストデータを破壊しない。同様に、少なくとも1つのサンドボックステナントにより生成された新しいトランザクションデータは、オリジナルサンドボックステナントがアクセスできない少なくとも1つのサンドボックステナント名前空間に書き込むことができる。オリジナルサンドボックステナントにより生成された新しいトランザクションデータは、少なくとも1つの新しいサンドボックステナントがアクセスできないオリジナルサンドボックステナント名前空間に書き込むことができる。少なくとも1つの新しいサンドボックステナントデータは、オリジナルサンドボックステナントデータを破壊せず、新しいオリジナルサンドボックステナントデータは、アプリケーションをテストするために少なくとも1つの新しいサンドボックスにより読み書きされるテストデータを破壊しない。これらの実装は、レコードの永続的な内容を例えばログ構造マージ(Log Structured Merge、LSM)ツリーに記憶する関係データベースと共に使用することができる。
【0031】
図4は、開示される主題事項の一実装による、第1テナントの第1テナントデータから少なくとも1つの新しいサンドボックステナントデータのための少なくとも1つの新しいサンドボックスを作成し、サンドボックステナントデータを暗号化する一例示的な方法60を示す。動作62において、マルチテナントデータベースシステム(例えば、図6に示すマルチテナントデータベースシステム100、図8に示すマルチテナントデータベースシステム200、及び図9に示す中央コンポーネント700及び/又は第2コンピュータ800、及び/又は図10に示すデータベースシステム1200a~1200d)が、サンドボックステナントを、サンドボックステナント識別子を第1テナントデータの仮想スナップショットに、及びサンドボックス作成時点の後にサンドボックステナントにより作成されたサンドボックステナントデータに関連づけることにより、作成し得る。動作64において、サンドボックステナントデータが、第1暗号化鍵で暗号化され得る。サンドボックステナント及び/又は暗号化されたサンドボックステナントデータは、不変ストレージ(例えば、図6及び図8に示す不変ストレージ108)に記憶することができる。いくつかの実装において、マルチテナントデータベースシステムは、サンドボックステナントが作成された後、サンドボックステナントのための新しい鍵を選択してもよい。
【0032】
図5は、第1テナントデータのメタデータを使用してソースデータベースインスタンスから宛先データベースインスタンスに第1テナントデータを移行する一例示的な方法を示す。開示される主題事項の実装は、マルチテナントデータベースシステムのテナントをソースデータベースインスタンスから宛先データベースインスタンスへ、行ごとのデータコピー、本番(production)データの複製、又は複製された本番データに対する操作を要することなく移行させることができる。この移行は、従来のテナント移行手法より速く、プロセッサリソース、データ記憶及び永続リソース、及び/又はデータパス(例えば、通信ネットワーク)リソースの観点でより低コストで完了することができる。多くの場合、移行されたデータに関して一貫性チェック又は他の修正措置が行われる必要はなく、それにより、さらなる時間及びシステムリソースを節約する。ソースデータベースインスタンスから宛先データベースへのテナントデータの移行は、例えば米国特許公開第2018/0373708号で詳細に説明され得、該特許公開の開示は、その全体を参照により組み込まれる。
【0033】
図5に示す動作72において、ソースデータベースインスタンス(例えば、図8に示すデータベースサーバ208)から移行されるべき第1テナントのメタデータが、宛先データベースインスタンス(例えば、図8に示すデータベースサーバ210)に送信され得る。宛先データベースインスタンスは、ソースデータベースインスタンスと異なる物理的サーバ又は仮想化サーバ上に位置してもよい。動作74において、宛先データベースインスタンスにおける第1テナントのメタデータが、宛先データベースインスタンスが第1テナントデータにアクセスするための宛先データベースのストレージ内のデータのグルーピングを指し示す情報を有するように、修正され得る。移行テナントデータは、その暗号化を保持することができ、暗号化鍵は、テナントデータと共に移行することができる。移行テナントデータは、不変ストレージ(例えば、図8に示す不変ストレージ108)に記憶されてもよい。いくつかの実装において、マルチテナントデータベースシステムは、データが移行された後、移行されたテナントデータのための新しい鍵を選択してもよい。
【0034】
図6は、開示される主題事項の実装による、図1図5に示す例示的な方法の分離に関連して使用され得るマルチテナントデータベースシステム100のシステムアーキテクチャの一例を示す。
【0035】
マルチテナントデータベースシステム100は、データベースシステム、サーバシステム、クラウドサーバシステムなどでもよい。メモリストレージ(memory storage)102は、第1テナント及び/又は第2テナントのコミットされた及び/又はコミットされていないトランザクションデータ(例えば、第1テナントデータ及び/又は第2テナントデータ)を記憶するためのシステム100のハードウェア及びソフトウェアの任意の適切な組み合わせであり得る。いくつかの実装において、メモリストレージ102は、半導体メモリ、ソリッドステートドライブ(SSD)、ハードディスクドライブ、光学メモリ、光学記憶デバイス、又は任意の他の適切な物理的データ記憶媒体、又はこれらの何らかの組み合わせでもよい。メモリストレージ102に記憶されたテナントデータは、暗号化されていないデータであり得る。
【0036】
トランザクションログ104は、データベースシステムに対する任意の動作及び/又は変更(例えば、データの取り出し、トランザクションのコミット、データのフラッシュ、データの記憶など)を記憶するためのシステム100のハードウェア及びソフトウェアの任意の適切な組み合わせであり得る。メモリストレージ102内のテナントデータに対して実行される各トランザクションは、トランザクションログ104に記憶され得る。トランザクションログ104は、いかなる特定テナントにも属し得ないシステム暗号化鍵を使用して暗号化されてもよい。
【0037】
フラッシャ(Flusher)106は、メモリストレージ102に記憶されたコミットされたトランザクションを不変ストレージ(immutable storage)108に対してデータエクステント(例えば、データエクステント110)に記憶するためのシステム100のハードウェア及びソフトウェアの任意の適切な組み合わせであり得る。不変ストレージ108は、物理的データストレージ、例えば半導体メモリ、ソリッドステートドライブ(SSD)、ハードディスクドライブ、光学メモリ、光学記憶デバイス、又は任意の他の適切な物理的データ記憶媒体、又はこれらの何らかの組み合わせなどでもよい。
【0038】
メモリストレージ102に記憶されたコミットされたテナントデータ(例えば、第1テナントデータ)が、不変ストレージ108に記憶されるべきとき、フラッシャ106は、データを暗号化し、それを不変ストレージ108のデータエクステント(例えば、データエクステント110)に記憶するために、鍵キャッシュ(例えば、図8に示す鍵キャッシュ)又は鍵管理システム128から暗号化鍵(例えば、第1暗号化鍵)を取り出すことができる。いくつかの実装において、テナントデータは、暗号化されて不変ストレージ118に記憶される前に、圧縮されてもよい。
【0039】
データエクステント(data extent)110は、テナントデータのフラグメント111、112、及び113を含み得る。図6に示すように、テナントデータのフラグメント111及びテナントデータのフラグメント112は、第1テナント(例えば、テナントA)に関してもよく、テナントデータのフラグメント113は、第2テナント(例えば、テナントB)に関してもよい。テナントデータのフラグメント111、112、及び113の各々は、単一のテナントのレコードのみを含んでもよい。第1テナントのテナントデータのフラグメント111及び112は、第1暗号化鍵で暗号化されてもよく、第2テナントのテナントデータのフラグメント113は、第2暗号化鍵で暗号化されてもよい。ブロックインデックス114は、テナントデータのフラグメント111、112、及び113の不変ストレージ108内のデータベーステーブルのインデックス番号を含み、データベーステーブルにおけるそれらの位置を示し得る。ブロックインデックス114は、いかなる特定テナントにも属し得ないシステム暗号化鍵で暗号化されてもよい。
【0040】
ストレージカタログ(storage catalog)116は、不変ストレージに通信上結合され得、データエクステント(データエクステント110など)及びエクステント参照(extent references)を記憶するためのシステム100のハードウェア及びソフトウェアの任意の適切な組み合わせであり得る。例えば、ストレージカタログは、メモリストレージ102は、半導体メモリ、ソリッドステートドライブ(SSD)、ハードディスクドライブ、光学メモリ、光学記憶デバイス、又は任意の他の適切な物理的データ記憶媒体、又はこれらの何らかの組み合わせでもよい。エクステント参照は、物理的ストレージ(例えば、記憶デバイス)に記憶された物理的エクステントへの論理的参照として使用することができ、物理的ストレージへのアクセスを仮想化するために使用することができる。データエクステントは、テナントデータの1つ以上のフラグメント(例えば、テナントデータのフラグメント111、112、113など)及びブロックインデックスを含み得る。ストレージカタログ116は、いかなる特定テナントにも属し得ないシステム暗号化鍵を使用して暗号化されてもよい。
【0041】
ブロックキャッシュ118は、半導体メモリ、ソリッドステートドライブ(SSD)、ハードディスクドライブ、光学メモリ、光学記憶デバイス、又は任意の他の適切な物理的データ記憶媒体、又はこれらの何らかの組み合わせであり得る。ブロックキャッシュ118は、テナントデータのフラグメント119、120、及び121を含むことができる。テナントデータのフラグメント119、120、及び121の各々は、単一のテナントのレコードのみを含んでもよい。テナントデータのフラグメント119、120、及び121は、暗号化されていなくてもよい(すなわち、平文でもよい)。ブロックインデックス122は、テナントデータのフラグメント119、120、及び120のインデックス番号を含み、テーブル内のそれらの位置を示し得る。ブロックインデックス122は、暗号化されていなくてもよい。図1図2Bに関連して上述したように、フィルタリング、ソート、インデキシングなどのデータベース動作は、ブロックキャッシュ118内の非暗号化データに対して実行され得る。
【0042】
一時スピル(Temp spills)124は、ブロックキャッシュ118に記憶されたデータのオーバーフローを取り扱うための半導体メモリ、ソリッドステートドライブ(SSD)、ハードディスクドライブ、光学メモリ、光学記憶デバイス、又は任意の他の適切な物理的データ記憶媒体、又はこれらの何らかの組み合わせであり得る。すなわち、テナントデータのフラグメント119、120、及び121、及び/又はブロックインデックス122のデータサイズが、ブロックキャッシュ118のデータキャパシティを超えるとき、一時スピル124は、オーバーフローデータ(例えば、データキャパシティを超える可能性があるためブロックキャッシュ118に適合しないデータ)を記憶することができる。ブロックキャッシュ118のデータキャパシティは、トランザクションがメモリストレージ102に書き込まれるとき(ここで、コミットされたトランザクションは不変ストレージ108にフラッシュされ得る)、増加されてもよい。一時スピルに記憶されたテナントデータのフラグメント及び/又はブロックインデックスデータは、暗号化されていなくてもよい。
【0043】
クエリ126は、マルチテナントデータベースシステム100により、例えば、1つ以上のアプリケーション及び/又はアプリケーションサーバ(例えば、図8に示すアプリケーションサーバ202及び/又はアプリケーションサーバ204)により受信することができ、メモリストレージ102及び/又はブロックキャッシュ118内に暗号化されていないテナントデータとして記憶され得る及び/又は不変ストレージ108内に暗号化されたテナントデータとして記憶され得るテナントデータを要求する。いくつかの実装において、マルチテナントデータベースシステム100のデーモンが、要求されたテナントデータがブロックキャッシュ118に存在するかどうかを判定することができる。要求されたテナントデータがブロックキャッシュ118に存在せず、暗号化されて不変ストレージ118に記憶されている場合、図2A図2Bに関連して上述したように、テナントデータを復号し、それをブロックキャッシュ118に提供するために、暗号化鍵(例えば、第1データの第1暗号化鍵)が鍵キャッシュ(例えば、図8に示す鍵キャッシュ)から、又は鍵管理システム128から取り出され得る。
【0044】
マージ器(Merger)130は、既存のレコードを更新し(かつ、それらを新しいレコードとして書き込み)、かつ/あるいはマルチテナントデータベースシステム100において新しいレコードを生成し得る。
【0045】
図7は、開示される主題事項の一実装による、図4に示す例示的な方法を使用して第1テナントデータの異なるフラグメントに対して異なるサンドボックスを作成する一例示的なアーキテクチャを示す。いくつかの実装において、図4に示す動作62において、マルチテナントデータベースシステム100は、サンドボックステナントを、サンドボックステナント識別子を第1テナントデータ(例えば、図7に示す第1テナントデータのフラグメント111)の仮想スナップショットに、及びサンドボックス作成時点の後にサンドボックステナント(例えば、サンドボックステナント1a1a)により作成されたサンドボックステナントデータ(第1テナントの第1サンドボックス111aのサンドボックステナントデータ)に関連づけることにより、作成することができる。サンドボックステナント111aのサンドボックステナントデータは、図4の動作64において、第1暗号化鍵(例えば、第1テナントのテナントデータのフラグメント111を暗号化するために使用されるのと同じ暗号化鍵)で暗号化されてもよい。
【0046】
いくつかの実装において、マルチテナントデータベースシステムは、サンドボックステナントが作成された後、サンドボックステナント(例えば、サンドボックステナント111a)に対して新しい鍵を選択することができる。マルチテナントデータベースシステム100は、新しい暗号化鍵を使用してサンドボックステナント111aのサンドボックステナントデータを暗号化してもよく、再暗号化されたデータは、不変ストレージ108内のデータエクステントに記憶されてもよい。新たに暗号化されたデータは、サンドボックスが開始した際のデータのテナントデータと、サンドボックス作成時点の後に生成された任意のサンドボックスデータを含み得る。
【0047】
いくつかの実装において、第1テナントデータのフラグメント111から複数のサンドボックスを作成することができる。他の実装において、マルチテナントデータベースシステム100は、同じテナント(例えば、第1テナント)の異なるデータフラグメントに対して異なるサンドボックスを作成することができる。図7に示すように、第1テナントデータのフラグメント111を使用して、サンドボックステナント111aを作成してもよく、第1テナントの異なるフラグメント112を使用して、サンドボックステナント112aを作成してもよい。
【0048】
図8は、開示される主題事項の実装による、鍵管理を備えた一例示的なマルチテナントデータベースシステム200を示す。システム200は、アプリケーションサーバ202及び/又はアプリケーションサーバ204などの1つ以上のアプリケーションサーバを含むことができる。アプリケーションサーバ202及び/又はアプリケーションサーバ204は、物理的サーバ、仮想化サーバ、及び/又はクラウドサーバシステムでもよい。
【0049】
アプリケーションサーバ202、204は、1つ以上のアプリケーションを実行し、データベースサーバ206及び/又はデータベースサーバ210などの1つ以上のデータベースサーバに対してクエリ及び/又は書き込み要求を発行することができる。データベースサーバ206、210は、物理的サーバ、仮想化サーバ、及び/又はクラウドサーバシステムでもよい。いくつかの実装において、データベースサーバ206、210は、上述した図6に示すシステム100のメモリストレージ102、トランザクションログ104、フラッシャ106、ブロックキャッシュ118、及び/又は一時スピル124のうち1つ以上を含むことができる。
【0050】
データベースサーバ206は鍵キャッシュ208を含んでもよく、データベースサーバ210は鍵キャッシュ212を含んでもよい。上述のように、鍵キャッシュ208、212は、テナントデータを暗号化及び/又は復号するための1つ以上の暗号化鍵を記憶することができる。データベースサーバ206、210は、図6に関連して詳細に上述した不変ストレージ108に通信上結合することができる。
【0051】
KMS128は、テナントデータを暗号化及び/又は復号するための暗号化鍵を生成し、割り当て、記憶し、管理し、及び/又は取り出すためのハードウェア及びソフトウェアの任意の適切な組み合わせであり得る。例えば、KMS128は、第1テナントに関連づけられた第1暗号化鍵又は第2テナントに関連づけられた第2暗号化鍵などの暗号化鍵を生成し、割り当て、記憶し、及び/又は取り出すことができる。KMS128は、テナント暗号化鍵及び/又はシステム暗号化鍵(すなわち、インスタンス鍵)を管理することができ、該システム暗号化鍵は、テナント間データを暗号化するために使用され得る(例えば、トランザクションログ104、一時スピル124、ストレージカタログ116、及び/又はブロックインデックス114を暗号化するために使用される暗号化鍵)。いくつかの実装において、第1暗号化鍵及び/又は第2暗号化鍵などの暗号化鍵は、KMS128に記憶することができ、KMS128は、半導体メモリ、ソリッドステートドライブ(SSD)、ハードディスクドライブ、光学メモリ、光学記憶デバイス、又は任意の他の適切な物理的データ記憶媒体、又はこれらの何らかの組み合わせを含み、かつ/あるいはこれらに通信上結合され得る。KMS128は、鍵のローテーション、鍵の削除、鍵の使用監視などの鍵ライフサイクル管理を提供することができる。KMS128は、アプリケーションサーバ202、204により提供され得る1つ以上のテナントに対して独自鍵持ち込み(bring-your-own-key、BYOK)をサポートしてもよい。
【0052】
本開示の主題事項の実装は、様々なコンポーネント及びネットワークアーキテクチャにおいて実装され、それらと共に使用され得る。いくつかの実装において、図6及び図8に示すシステムアーキテクチャは、上述のように、図9図10に示すコンポーネント及びネットワークアーキテクチャを使用して実装することができる。
【0053】
図9は、本開示の主題事項の実装を実施するのに適した一例示的なコンピュータ600である。本明細書でさらに詳細に論じるように、コンピュータ600は、複数のコンピュータのネットワーク内の単一のコンピュータでもよい。図9に示すように、コンピュータ600は、中央又は分散コンポーネント700(例えば、サーバ、クラウドサーバ、データベース、クラスタ、アプリケーションサーバなど)と通信することができる。中央コンポーネント700は、第2コンピュータ800などの1つ以上の他のコンピュータと通信することができ、第2コンピュータ800は、ストレージ810を含み得る。第2コンピュータ800は、サーバ、クラウドサーバなどでもよい。ストレージ810は、例えば、ハードディスクドライブ、ソリッドステートドライブ、光学媒体、フラッシュメモリ、テープドライブ、レジスタ、及びランダムアクセスメモリ等、又はこれらの任意の組み合わせを含む、任意の適切な揮発性及び不揮発性物理記憶媒体の任意の適切な組み合わせを使用することができる。
【0054】
データは、任意の適切なファイルシステム又は記憶スキーム又は階層を使用して、任意の適切なフォーマットで、例えばストレージ810に記憶することができる。例えば、ストレージ810は、複数のレベルを有するログ構造マージ(LSM)ツリーを使用してデータを記憶することができる。さらに、図9図10に示すシステムがマルチテナントシステムである場合、ストレージは、テナントのためのデータベースの各インスタンスについて別個のログ構造マージツリーに編成することができる。あるいは、特定のサーバ又はシステム上の全てのレコードの内容が、単一のログ構造マージツリー内に記憶されてもよく、その場合、レコードのバージョンに関連づけられた一意のテナント識別子を、本明細書に開示されるように、各テナントのデータを区別するために使用することができる。例えば、ある一意テナント識別子が第1テナントに関連づけられてもよく、異なる識別子が第2テナントに関連づけられてもよい。より最近のトランザクションは、ツリーの最も高いレベル又は上位レベルに記憶することができ、より古いトランザクションは、ツリーのより低いレベルに記憶することができる。あるいは、各レコードの最も最近のトランザクション又はバージョン(すなわち、各レコードの内容)が、ツリーの最も高いレベルに記憶され、前のバージョン又は前のトランザクションが、ツリーのより低いレベルに記憶されてもよい。
【0055】
中央コンポーネント700に対して、及び/又は中央コンポーネント700から得られる情報は、コンピュータ600がコンピュータ800と情報を共有し得ないように、各コンピュータについて分離することができる。あるいは又はさらに、コンピュータ600は、第2コンピュータ800と直接通信してもよい。
【0056】
コンピュータ(例えば、ユーザコンピュータ、エンタープライズコンピュータ等)600は、中央プロセッサ640、メモリ670(典型的にはRAMだが、ROM、フラッシュRAM等も含むことができる)、入力/出力コントローラ680、ディスプレイ又はタッチスクリーンなどのユーザディスプレイ620、ユーザ入力インターフェース660などのコンピュータ600の主要コンポーネントを相互接続するバス610を含み、ユーザ入力インターフェース660は、1つ以上のコントローラと、キーボード、マウス、WiFi/セルラ無線機、タッチスクリーン、マイクロフォン/スピーカなどの関連するユーザ入力又は装置を含み得、I/Oコントローラ680と、ハードドライブ、フラッシュストレージ、ファイバチャネルネットワーク、SAN装置、SCSI装置などの固定ストレージ630と、光ディスク、フラッシュドライブ等を制御し及び受けるように動作するリムーバブル媒体コンポーネント650に密に結合され得る。
【0057】
バス610は、前述したように、中央プロセッサ640とメモリ670との間のデータ通信を可能にし、メモリ670には、読取専用メモリ(ROM)又はフラッシュメモリ(いずれも図示せず)、及びランダムアクセスメモリ(RAM)(図示せず)を含んでもよい。RAMは、オペレーティングシステム及びアプリケーションプログラムがロードされるメインメモリを含むことができる。ROM又はフラッシュメモリは、他のコードの中でも、周辺コンポーネントとの相互作用などの基本的なハードウェア動作を制御する基本入出力システム(BIOS)を含むことができる。コンピュータ600に存在するアプリケーションは、ハードディスクドライブ(例えば、固定ストレージ630)、光学ドライブ、フロッピーディスク、又は他の記憶媒体650などのコンピュータ読取可能媒体に記憶され、これを介してアクセスすることができる。
【0058】
固定ストレージ630は、コンピュータ600と一体的でもよく、あるいは別個で、他のインターフェースを通じてアクセスされてもよい。ネットワークインターフェース690は、インターネットサービスプロバイダ(ISP)を介したインターネットへの電話リンクを介したリモートサーバへの直接接続、又はPOP(プレゼンスポイント(point of presence))又は他の手法を介したインターネットへの直接ネットワークリンクを介したリモートサーバへの直接接続を提供することができる。ネットワークインターフェース690は、デジタルセルラー電話接続、セルラーデジタルパケットデータ(CDPD)接続、デジタル衛星データ接続などを含む無線技術を使用して、そのような接続を提供することができる。例えば、ネットワークインターフェース690は、図10に示すように、コンピュータが1つ以上のローカル、ワイドエリア、又は他のネットワークを介して他のコンピュータと通信することを可能にし得る。
【0059】
多くの他のデバイス又はコンポーネント(図示せず)を、同様の方法で接続することができる(例えば、データキャッシュシステム、アプリケーションサーバ、通信ネットワークスイッチ、ファイアウォールデバイス、認証及び/又は認可サーバ、コンピュータ及び/又はネットワークセキュリティシステムなど)。反対に、本開示を実施するために、図10に示されるコンポーネントの全てが存在する必要はない。コンポーネントは、図示のものと異なる方法で相互接続することができる。図9図10に示すようなコンピュータの動作は、当該分野で容易にわかり、本出願では詳細に論じない。本開示を実装するためのコードは、メモリ670、固定ストレージ630、リムーバブル媒体650のうち1つ以上などのコンピュータ読取可能記憶媒体に、又はリモートのストレージ位置に記憶することができる。
【0060】
図10は、開示される主題事項の一実装による一例示的なネットワーク構成を示す。クラウド1202により表されるネットワーク内の異なるノードにおける4つの別個のデータベースシステム1200a~dは、ネットワークリンク1204を通じて互いに、及びユーザ(図示せず)と通信する。データベースシステム1200の各々は、データベースの複数のインスタンスをホストするように動作可能であり得、各インスタンスは、特定のテナント(例えば、第1テナント、第2テナントなど)に関連づけられたユーザのみがアクセス可能である。データベースシステムの各々は、ストレージエリアネットワーク(図示せず)、ロードバランサ、及びバックアップサーバと共に、ファイアウォール、他のセキュリティシステム、及び認証システムと共に、コンピュータのクラスタを構成することができる。システム1200のうちいずれかのインスタンスのうちいくつかが、データを取り込んでインスタンス内のストレージに提供するために、ユーザから、又はコンピューティング要素(図示せず)から受け取ったトランザクションを処理及びコミットするライブ又は本番インスタンスでもよい。
【0061】
さらに、マルチテナントシステムは、各ノードにコンピューティングシステムを有するネットワーク全体に分散されたサーバシステム上に様々なテナントインスタンスを有することができる。各テナントのライブ又は本番データベースインスタンスは、そのトランザクションを1つのコンピュータシステムでのみ処理させてもよい。そのインスタンスのトランザクションを処理するコンピューティングシステムは、他のテナントのための他のインスタンスのトランザクションをさらに処理してもよい。
【0062】
より一般的には、本開示の主題事項の様々な実装は、コンピュータにより実装されたプロセス及びこれらのプロセスを実施する装置の形態を含んでもよく、あるいは該形態で実装されてもよい。また、実装は、フロッピーディスケット、CD-ROM、ハードドライブ、USB(ユニバーサルシリアルバス)ドライブ、又は任意の他のマシン読取可能記憶媒体などの非一時的及び/又は有形媒体に実装された命令を含むコンピュータプログラムコードを有するコンピュータプログラムプロダクトの形態で実施されてもよく、コンピュータプログラムコードがコンピュータにロードされ、コンピュータにより実行されたとき、コンピュータは、開示される主題事項の実装を実施する装置になる。また、実装は、例えば、記憶媒体に記憶され、コンピュータにロードされ、及び/又はコンピュータにより実行されるか、あるいは電気配線若しくはケーブル接続を通じて、光ファイバを通じて、又は電磁放射を介してなどで何らかの伝送媒体を通じて伝送されるかにかかわらず、コンピュータプログラムコードの形態で実施されてもよく、コンピュータプログラムコードがコンピュータにロードされ、コンピュータにより実行されたとき、コンピュータは、開示される主題事項の実装を実施する装置になる。汎用マイクロプロセッサ上に実装されたとき、コンピュータプログラムコードセグメントが、特定の論理回路を作り出すようにマイクロプロセッサを構成する。いくつかの構成において、コンピュータ読取可能記憶媒体に記憶されたコンピュータ読取可能命令のセットは、汎用プロセッサにより実施されてもよく、これは、汎用プロセッサ又は汎用プロセッサを含むデバイスを、命令を実施又は実行するように構成された専用デバイスに変換することができる。実装は、ハードウェア及び/又はファームウェアにおける開示される主題事項の実装による手法の全部又は一部を実施する汎用マイクロプロセッサ及び/又は特定用途向け集積回路(ASIC)などの、プロセッサを含み得るハードウェアを使用して実施されてもよい。プロセッサは、RAM、ROM、フラッシュメモリ、ハードディスク、又は電子情報を記憶することができる任意の他のデバイスなどのメモリに結合されてもよい。メモリは、開示される主題事項の実装による手法を実行するために、プロセッサにより実行されるように適合された命令を記憶することができる。
【0063】
上述の記載は、説明の目的で、特定の実装を参照して記載された。しかしながら、上記の例示的な議論は、網羅的であること、又は開示される主題事項の実装を開示された正確な形態に限定することを意図したものではない。上記の教示を考慮し、多くの修正及びバリエーションが可能である。実装は、開示される主題事項の実装の原理及びそれらの実際の適用を説明し、それにより、当業者がそれらの実装と企図された特定の用途に適し得る様々な修正を備えた様々な実装を利用できるように選択され、記載されている。
図1
図2A
図2B
図3
図4
図5
図6
図7
図8
図9
図10