IP Library Granted Patent US 10,853,511
Granted Patent B2
US 10,853,511 · App. 15/924,840 · Granted Dec 1, 2020

Securely accessing and processing data in a multi-tenant data store

Inventors: Kit Pang Szeto (Sunnyvale, CA); Christopher James Wu (Fremont, CA); Ming-Yang Chen (Palo Alto, CA); Karl Ryszard Skucha (Sunnyvale, CA); Eli Levine (San Francisco, CA); Ka Chun Au (Millbrae, CA); Bilong Chen (Cupertino, CA); Johnson Liu (Santa Clara, CA)
Assignee: salesforce.com, inc.
G06F21/6218H04L63/08H04L63/102H04L63/105H04L63/108
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 10,853,511
App. No.
15/924,840
Granted
Dec 1, 2020
Kind
B2
Abstract

Methods, systems, and devices for data access and processing are described. To set up secure environments for data processing (e.g., including machine learning), an access control system may first receive approval from an authorized user (e.g., an approver) granting access to data objects in a multi-tenant data store. The system may determine tenant-specific paths for retrieving the data objects from the data store, and may initialize a number of virtual computing engines for accessing the data. Each computing engine may be tenant-specific based on the path(s) used by that computing engine, and each may include an access role defining the data objects or data object types accessible by that computing engine. By accessing the requested data objects according to the tenant-specific path prefixes and access roles, the virtual computing engines may securely maintain separate environments for different tenants and may only allow user access to approved tenant data.

Claims (61)

1. A method for accessing data in a multi-tenant data store, comprising:

receiving, from one or more approval users, an approval message that indicates granted access to data objects that are stored in the multi-tenant data store and owned by at least one tenant;

querying the multi-tenant data store for tenant-specific paths that are associated with accessing the data objects indicated in the approval message;

initializing one or more virtual computing engines for accessing the data objects indicated in the approval message, wherein each virtual computing engine of the one or more virtual computing engines corresponds to one or more tenant-specific paths for a single tenant of the at least one tenant, and wherein each virtual computing engine of the one or more virtual computing engines is associated with an access role that limits access to the data objects indicated in the approval message for the corresponding one or more tenant-specific paths;

accessing, via the one or more virtual computing engines, the data objects indicated in the approval message to provide access to a requesting user according to the access role for each of the one or more virtual computing engines; and

retrieving, by the one or more virtual computing engines, copies of the data objects from the multi-tenant data store based at least in part on the tenant-specific paths, wherein each virtual computing engine retrieves respective tenant-specific copies of the data objects corresponding to the single tenant.

2. The method of claim 1 , further comprising:

identifying a number of tenants of the at least one tenant, wherein initializing the one or more virtual computing engines further comprises:

initializing a number of virtual computing engines for accessing the data objects indicated in the approval message, wherein the number of virtual computing engines is equal to the identified number of tenants.

3. The method of claim 1 , further comprising:

hosting, at the one or more virtual computing engines, the retrieved tenant-specific copies of the data objects, wherein each virtual computing engine separately hosts the respective tenant-specific copies of the data objects corresponding to the single tenant.

4. The method of claim 3 , further comprising:

processing the copies of the data objects at the one or more virtual computing engines without modifying the data objects that are stored in the multi-tenant data store.

5. The method of claim 3 , further comprising:

running the one or more virtual computing engines on a shared computing cluster.

6. The method of claim 3 , wherein the retrieved copies of the data objects correspond to one or more particular data types based at least in part on the access role for each of the one or more virtual computing engines.

7. The method of claim 1 , further comprising:

determining one or more approval users associated with data objects for the at least one tenant, wherein the approval message is received from one or more user devices corresponding to the one or more approval users.

8. The method of claim 7 , further comprising:

receiving, from a user device corresponding to the requesting user, an initial access request message comprising an indication of the data objects, an indication of the at least one tenant, or both; and

transmitting, to the one or more user devices corresponding to the one or more approval users, an indication of the initial access request message, wherein receiving the approval message is based at least in part on the initial access request message.

9. The method of claim 8 , further comprising:

authenticating the user device, the requesting user, or both using a username, a password, a personal identification number (PIN), a biometric input, a multi-factor authentication, or a combination thereof.

10. The method of claim 1 , further comprising:

generating a temporary user profile based at least in part on the approval message, wherein the temporary user profile has access to one or more tenants of the at least one tenant; and

transmitting, to a user device corresponding to the requesting user, a temporary token associated with the temporary user profile, wherein the user device may use the temporary token to access one or more data objects stored in the multi-tenant data store and owned by the one or more tenants.

11. The method of claim 10 , further comprising:

identifying an indication to revoke the granted access to the data objects;

revoking, from the user device corresponding to the requesting user, the temporary token associated with the temporary user profile; and

deleting the temporary user profile.

12. The method of claim 1 , further comprising:

identifying an indication to revoke the granted access to the data objects;

terminating the one or more virtual computing engines for accessing the data objects; and

revoking access to the data objects indicated in the approval message according to the access role.

13. The method of claim 1 , further comprising:

identifying an expiration timestamp for accessing the data objects;

determining that a current timestamp exceeds the identified expiration timestamp; and

revoking access to the data objects indicated in the approval message based at least in part on the determining.

14. The method of claim 1 , wherein querying the multi-tenant data store for the tenant-specific paths comprises:

transmitting a query message comprising tenant identifiers for the at least one tenant to a data lake associated with the multi-tenant data store, a metadata database associated with the multi-tenant data store, or a combination thereof.

15. The method of claim 1 , wherein:

the approval message indicates one or more data object types corresponding to the data objects; and

the tenant-specific paths are based at least in part on the one or more data object types.

16. The method of claim 1 , wherein the data objects are accessed using read-only permissions according to the access role for each of the one or more virtual computing engines.

17. The method of claim 1 , wherein the access role comprises an identity and access management (IAM) role.

18. The method of claim 1 , wherein the tenant-specific paths comprise tenant-specific path prefixes.

19. An apparatus for accessing data in a multi-tenant data store, comprising:

a processor;

memory in electronic communication with the processor; and

instructions stored in the memory and executable by the processor to cause the apparatus to:

receive, from one or more approval users, an approval message that indicates granted access to data objects that are stored in the multi-tenant data store and owned by at least one tenant;

query the multi-tenant data store for tenant-specific paths that are associated with accessing the data objects indicated in the approval message;

initialize one or more virtual computing engines for accessing the data objects indicated in the approval message, wherein each virtual computing engine of the one or more virtual computing engines corresponds to one or more tenant-specific paths for a single tenant of the at least one tenant, and wherein each virtual computing engine of the one or more virtual computing engines is associated with an access role that limits access to the data objects indicated in the approval message for the corresponding one or more tenant-specific paths;

access, via the one or more virtual computing engines, the data objects indicated in the approval message to provide access to a requesting user according to the access role for each of the one or more virtual computing engines; and

retrieve, by the one or more virtual computing engines, copies of the data objects from the multi-tenant data store based at least in part on the tenant-specific paths, wherein each virtual computing engine retrieves respective tenant-specific copies of the data objects corresponding to the single tenant.

20. A non-transitory computer-readable medium storing code for accessing data in a multi-tenant data store, the code comprising instructions executable by a processor to:

receive, from one or more approval users, an approval message that indicates granted access to data objects that are stored in the multi-tenant data store and owned by at least one tenant;

query the multi-tenant data store for tenant-specific paths that are associated with accessing the data objects indicated in the approval message;

initialize one or more virtual computing engines for accessing the data objects indicated in the approval message, wherein each virtual computing engine of the one or more virtual computing engines corresponds to one or more tenant-specific paths for a single tenant of the at least one tenant, and wherein each virtual computing engine of the one or more virtual computing engines is associated with an access role that limits access to the data objects indicated in the approval message to provide access to a requesting user for the corresponding one or more tenant-specific paths;

access, via the one or more virtual computing engines, the data objects indicated in the approval message according to the access role for each of the one or more virtual computing engines; and

retrieve, by the one or more virtual computing engines, copies of the data objects from the multi-tenant data store based at least in part on the tenant-specific paths, wherein each virtual computing engine retrieves respective tenant-specific copies of the data objects corresponding to the single tenant.

Assignments (2)
CHANGE OF NAME Recorded Dec 18, 2024
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 069717/0333 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 19, 2018
From: SZETO, KIT PANG; WU, CHRISTOPHER JAMES; CHEN, MING-YANG; SKUCHA, KARL RYSZARD; LEVINE, ELI; AU, KA CHUN; CHEN, BILONG; LIU, JOHNSON
To: SALESFORCE.COM, INC.
Reel/Frame 045274/0450 →