IP Library › Granted Patent US 11,841,967
Granted Patent B2
US 11,841,967 · App. 17/562,387 · Granted Dec 12, 2023

Systems and methods of database encryption in a multitenant database management system

Inventors: Terry Chong (Pleasanton, CA); Jameison Bear Martin (Oakland, CA); Thomas Fanghaenel (Oakland, CA); Andrew Tucker (Bellevue, WA); Nathaniel Wyatt (San Francisco, CA); Raghavendran Hanumantharau (Fremont, CA); Assaf Ben Gur (Livermore, CA); William Charles Mortimore, Jr. (San Francisco, CA)
Assignee: Salesforce, Inc.
G06F21/6218G06F16/24552G06F21/604H04L9/08
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,841,967
App. No.
17/562,387
Granted
Dec 12, 2023
Kind
B2
Abstract

System and methods of the disclosed subject matter provide segregating, at a memory storage coupled to a multitenant database system, first tenant data of a first tenant from at least second tenant data of a second tenant, based on a first tenant identifier. A first encryption key associated with the first tenant may be retrieved from a key cache memory based on the first tenant identifier, to encrypt one or more fragments of the first tenant data. The fragments of the first tenant data may be encrypted based on the retrieved encryption key. Non-encrypted header information may be generated for each of the encrypted fragments of the first tenant data, where the header information may have metadata including the first tenant identifier. The encrypted fragments of the first tenant data and the corresponding non-encrypted header information may be stored in the immutable storage.

Claims (59)

1. A method comprising:

encrypting, at a multitenant database system having first tenant data of a first tenant and second tenant data of a second tenant, one or more fragments of the first tenant data based on a first encryption key associated with the first tenant;

encrypting, at the multitenant database system, cross-tenant data using a system encryption key that is different from the first encryption key and a second encryption key associated with the second tenant, wherein the cross-tenant data is data for the first tenant and the second tenant and includes at least block indices and transaction logs;

generating, at the multitenant database system, non-encrypted header information for each of the encrypted one or more fragments of the first tenant data, wherein the header information has metadata including a first tenant identifier; and

storing, in an immutable storage of the multitenant database system, the encrypted one or more fragments of the first tenant data and the corresponding non-encrypted header information, and storing the encrypted cross-tenant data.

2. The method of claim 1 , wherein the encrypting the one or more fragments of the first tenant data further comprises:

segregating, at a memory storage coupled to the multitenant database system, the first tenant data of the first tenant from at least the second tenant data of the second tenant, based on the first tenant identifier.

3. The method of claim 1 , wherein the encrypting the one or more fragments of the first tenant data further comprises:

retrieving, from a key cache memory based on the first tenant identifier, the first encryption key to encrypt one or more fragments of the first tenant data, wherein the first encryption key is different from the second encryption key.

4. The method of claim 1 , wherein the first tenant data is for a committed transaction.

5. The method of claim 1 , further comprising:

granting access to the first encryption key associated with the first tenant when a requestor is authenticated.

6. The method of claim 1 , further comprising:

receiving, at the multitenant database system, a request for the one or more fragments of the first tenant data;

determining, at the multitenant database system, whether a block cache memory communicatively coupled to the multitenant database system includes the requested one or more fragments of the first tenant data; and

providing, to the multitenant database system, the requested one or more fragments of the first tenant data when it is determined to be in the block cache memory.

7. The method of claim 6 , further comprising:

when the requested one or more fragments of the first tenant data are determined to not be present in the block cache memory, identifying the requested one or more fragments of the first tenant data that are encrypted by using the metadata of the non-encrypted header information for the one or more fragments of the first tenant data;

retrieving the first encryption key from a key cache memory or a key management system (KMS) to decrypt the one or more fragments of the first tenant data based on the metadata of the non-encrypted header information;

decrypting the one or more fragments of the first tenant data using the retrieved first encryption key; and

providing the decrypted one or more fragments of the first tenant data to the block cache memory.

8. The method of claim 7 , further comprising:

granting access, at the key cache memory, to the first encryption key associated with the first tenant when a requestor is authenticated.

9. The method of claim 7 , wherein the first encryption key is retrieved by the KMS when the first encryption key is not available in the key cache memory.

10. The method of claim 6 , further comprising:

performing, at the multitenant database system, at least one of the operations selected from the group consisting of: filtering, sorting, and indexing the one or more fragments of the first tenant data in the block cache memory.

11. The method of claim 1 , further comprising:

changing, at the multitenant database system, the first encryption key at a predetermined period of time or when a key change request is received; and

storing, in the immutable storage of the multitenant database system, the first tenant data as a new version in the based on the changed key.

12. The method of claim 1 , further comprising:

creating, at the multitenant database system, a sandbox tenant by associating a sandbox tenant identifier with a virtual snapshot of the first tenant data and with sandbox tenant data created by the sandbox tenant subsequent to the sandbox creation point in time,

wherein the sandbox tenant data is encrypted with the first encryption key.

13. The method of claim 12 , further comprising:

selecting, at the multitenant database system, a new key for the sandbox tenant after the sandbox tenant is created.

14. The method of claim 1 , further comprising:

transmitting metadata of the first tenant to be migrated from a source database instance to a destination database instance, wherein the destination database instance is located on a physical server or virtualized server different from the source database instance; and

modifying, at the destination database instance, the metadata of the first tenant so that the destination database instance has information to point to groupings of data in storage for a destination database to access the first tenant data.

15. A system comprising:

one or more servers of a multitenant database system having first tenant data of a first tenant and second tenant data of a second tenant to encrypt at least one of one or more fragments of the first tenant data based on a retrieved first encryption key associated with the first tenant, to encrypt cross-tenant data using a system encryption key that is different from the first encryption key and a second encryption key associated with the second tenant, wherein the cross-tenant data is data for the first tenant and the second tenant and includes at least block indices and transaction logs, and generate non-encrypted header information for each of the encrypted one or more fragments of the first tenant data, wherein the header information has metadata including a first tenant identifier,

wherein the encrypted one or more fragments of the first tenant data and the corresponding non-encrypted header information, and the encrypted cross-tenant data are stored in an immutable storage of the multitenant database system.

16. The system of claim 15 , wherein the one or more fragments of the first tenant data is encrypted by segregating, at a memory storage coupled to the multitenant database system, the first tenant data of the first tenant from at least second tenant data of the second tenant, based on the first tenant identifier.

17. The system of claim 15 , wherein the encrypting the one or more fragments of the first tenant data further comprises:

retrieving, from a key cache memory based on the first tenant identifier, the first encryption key to encrypt one or more fragments of the first tenant data, wherein the first encryption key is different from the second encryption key.

18. The system of claim 15 , wherein the first tenant data is for a committed transaction.

19. The system of claim 15 , wherein the one or more servers of the multitenant database system grants access to the first encryption key associated with the first tenant when a requestor is authenticated.

20. The system of claim 15 , further comprising:

a block cache memory communicatively coupled to the one or more servers of the multitenant database system multitenant database system,

wherein the one or more servers of the multitenant database system receives a request for the one or more fragments of the first tenant data, and determines whether the block cache memory includes the requested one or more fragments of the first tenant data, and

wherein the block cache memory provides, to the multitenant database system, the requested one or more fragments of the first tenant data when it is determined to be in the block cache memory.

21. The system of claim 20 , wherein the one or more servers of the multitenant database system identifies the requested one or more fragments of the first tenant data that are encrypted by using the metadata of the non-encrypted header information for the one or more fragments of the first tenant data when the requested one or more fragments of the first tenant data are determined to not be present in the block cache memory, retrieves the first encryption key from a key cache memory or a key management system (KMS) to decrypt the one or more fragments of the first tenant data based on the metadata of the non-encrypted header information, decrypts the one or more fragments of the first tenant data using the retrieved first encryption key, and provides the decrypted one or more fragments of the first tenant data to the block cache memory.

22. The system of claim 21 , wherein the key cache memory grants access to the first encryption key associated with the first tenant when a requestor is authenticated.

23. The system of claim 21 , wherein the first encryption key is retrieved by the KMS when the first encryption key is not available in the key cache memory.

24. The system of claim 20 , wherein the one or more servers of the multitenant database system perform at least one of the operations selected from the group consisting of: filtering, sorting, and indexing the one or more fragments of the first tenant data in the block cache memory.

25. The system of claim 15 , wherein the one or more servers of the multitenant database system changes the first encryption key at a predetermined period of time or when a key change request is received, and

wherein the immutable storage of the multitenant database system stores the first tenant data as a new version based on the changed key.

26. The system of claim 15 , wherein the one or more servers of the multitenant database system creates a sandbox tenant by associating a sandbox tenant identifier with a virtual snapshot of the first tenant data and with sandbox tenant data created by the sandbox tenant subsequent to the sandbox creation point in time,

wherein the sandbox tenant data is encrypted with the first encryption key.

27. The system of claim 26 , wherein the one or more servers of the multitenant database system select a new key for the sandbox tenant after the sandbox tenant is created.

28. The system of claim 15 , wherein the one or more servers of the multitenant database system transmits metadata of the first tenant to be migrated from a source database instance to a destination database instance, wherein the destination database instance is located on a physical server or virtualized server different from the source database instance, and modifies, at the destination database instance, the metadata of the first tenant so that the destination database instance has information to point to groupings of data in storage for a destination database to access the first tenant data.

Assignments (2)
CHANGE OF NAME Recorded Oct 30, 2023
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 065387/0857 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 27, 2021
From: CHONG, TERRY; TUCKER, ANDREW; FANGHAENEL, THOMAS; MARTIN, JAMEISON BEAR; WYATT, NATHANIEL; HANUMANTHARAU, RAGHAVENDRAN; BEN GUR, ASSAF; MORTIMORE, JR., WILLIAM CHARLES
To: SALESFORCE.COM, INC.
Reel/Frame 058481/0806 →
Continuity (2)
Continuation 16263751 · Jan 31, 2019
Related Publication 20220121766A1 · Apr 21, 2022