IP Library › Granted Patent US 12,153,698
Granted Patent B2
US 12,153,698 · App. 18/104,275 · Granted Nov 26, 2024

Secure shared data application access

Inventors: Damien Carru (Rhinebeck, NY); Jeremy Yujui Chen (Newark, CA); Mohamad Raja Gani Mohamad Abdul (Fremont, CA); William A. Pugh (Seattle, WA)
Assignee: Snowflake Inc.
G06F21/6218G06F21/629
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 12,153,698
App. No.
18/104,275
Granted
Nov 26, 2024
Kind
B2
Abstract

A data platform for developing and deploying a data application. The data platform receives from a first user the data application and provider granted privileges including a consumer usage privilege and a consumer access to data privilege. The data platform authorizes the second user to access the data platform based on one or more consumer account privileges included in a set of account privileges. The data platform authorizes the second user to execute the data application based on the consumer usage privilege. During execution, the data platform authorizes the data application to access the provider database object based on the consumer access to data privilege, and authorizes the data application to access the consumer database object based on a provider access to data privilege provided by the second user.

Claims (68)

1. A computer-implemented method comprising:

receiving, by a data platform, from a consumer user, a request to use a data application of the data platform, the data application provided by a provider user of the data platform, the data application imported into a consumer account of the consumer user and executed on the data platform;

executing, by the data platform, the data application imported into the consumer account;

authorizing, by the data platform, the data application to access and edit a provider database object provided by the provider user based on a consumer access to data privilege and a consumer modify privilege granted by the provider user to the consumer user;

authorizing, by the data platform, the data application to access and store data to a consumer database object provided by the consumer user based on a provider access to data privilege granted by the consumer user to the provider user;

generating, by the data application, results using the consumer database object and the provider database object; and

storing, by the data application, the results into the consumer database object.

2. The computer-implemented method of claim 1 , wherein the data application includes an application identification having a Universally Unique Identifier (UUID) that uniquely identifies the data application and does not change with a change in a name of the data application.

3. The computer-implemented method of claim 1 , wherein the data application includes one or more roles used to restrict the roles that a running data application can perform.

4. The computer-implemented method of claim 1 , wherein the data application includes an identification of an execution environment that determines how to run the data application.

5. The computer-implemented method of claim 1 , wherein the data platform receives from the consumer user the consumer granted privileges when the consumer user purchases a consumer usage privilege to the data application.

6. The computer-implemented method of claim 1 , wherein authorizing, by the data platform, the consumer user to use the data application further comprises:

establishing a Web socket connection by a data application browser to the data platform based on consumer account privileges of the consumer user.

7. The computer-implemented method of claim 6 , wherein authorizing, by the data platform, the consumer user to use the data application further comprises:

attaching a session of the consumer user to the Web socket connection to evaluate a context used to process a request to use the data application in a sandboxed execution environment.

8. The computer-implemented method of claim 7 , wherein the execution of the data application by the data platform in response to the request from the consumer user further comprises:

executing the data application in the sandboxed execution environment wherein the data application executes in the context of one or more provider account privileges associated with the provider user.

9. The computer-implemented method of claim 8 , wherein executing the data application in the sandboxed execution environment further comprises:

generating one or more results based on data obtained by accessing the provider database object and the consumer database object; and

authorizing storing of the one or more results to the consumer database object based on the consumer granted privileges.

10. The computer-implemented method of claim 9 , wherein executing the data application in the sandboxed execution environment further comprises:

authorizing communication of the one or more results to the data application browser used by the consumer user to access the data platform, the authorizing based on the consumer account privileges associated with the consumer user.

11. A data platform comprising:

one or more processors; and

at least one memory storing instructions that, when executed by the one or more processors, cause the data platform to perform operations comprising:

receiving, from a consumer user, a request to use a data application of the data platform, the data application provided by a provider user of the data platform, the data application imported into a consumer account of the consumer user and executed on the data platform;

authorizing, by the data platform, the data application to access and edit a provider database object provided by the provider user based on a consumer access to data privilege and a consumer modify privilege granted by the provider user to the consumer user;

authorizing, by the data platform, the data application to access and store data to a consumer database object provided by the consumer user based on a provider access to data privilege granted by the consumer user to the provider user; and

executing, by the data platform, the data application imported into the user account, the data application performing operations comprising:

generating results using the consumer database object and the provider database object; and

storing the results into the consumer database object.

12. The data platform of claim 11 , wherein the data application includes an application identification having a Universally Unique Identifier (UUID) that uniquely identifies the data application and does not change with a change in a name of the data application.

13. The data platform of claim 11 , wherein the data application includes one or more roles used to restrict the roles that a running data application can perform.

14. The data platform of claim 11 , wherein the data application includes an identification of an execution environment that determines how to run the data application.

15. The data platform of claim 11 , wherein the data platform receives from the consumer user the consumer granted privileges when the consumer user purchases a consumer usage privilege to the data application.

16. The data platform of claim 11 , wherein authorizing, by the data platform, the consumer user to use the data application further comprises:

establishing a Web socket connection by a data application browser to the data platform based on consumer account privileges of the consumer user.

17. The data platform of claim 16 , wherein authorizing, by the data platform, the provider user to use the data application further comprises:

attaching a session of the consumer user to the Web socket connection to evaluate a context used to process a request to use the data application in a sandboxed execution environment.

18. The data platform of claim 17 , wherein the execution of the data application by the data platform in response to the request from the consumer user further comprises:

executing the data application in the sandboxed execution environment wherein the data application executes in the context of one or more provider account privileges associated with the provider user.

19. The data platform of claim 18 , wherein executing the data application in the sandboxed execution environment further comprises:

generating one or more results based on data obtained by accessing the provider database object and the consumer database object; and

authorizing storing of the one or more results to the consumer database object based on the consumer granted privileges.

20. The data platform of claim 19 , wherein executing the data application in the sandboxed execution environment further comprises:

authorizing communication of the one or more results to the data application browser used by the consumer user to access the data platform, the authorizing based on the consumer account privileges associated with the consumer user.

21. A computer-storage medium comprising instructions that, when executed by one or more processors of a data platform, cause the data platform to perform operations comprising:

receiving, from a consumer user, a request to use a data application of the data platform, the data application provided by a provider user of the data platform, the data application imported into a consumer account of the consumer user and executed on the data platform;

authorizing, by the data platform, the data application to access and edit a provider database object provided by the provider user based on a consumer access to data privilege and a consumer modify privilege granted by the provider user to the consumer user;

authorizing, by the data platform, the data application to access and store data to a consumer database object provided by the consumer user based on a provider access to data privilege granted by the consumer user to the provider user; and

executing, by the data platform, the data application imported into the user account, the data application performing operations comprising:

generating results using the consumer database object and the provider database object; and

storing the results into the consumer database object.

22. The computer-storage medium of claim 21 , wherein the data application includes an application identification having a Universally Unique Identifier (UUID) that uniquely identifies the data application and does not change with a change in a name of the data application.

23. The computer-storage medium of claim 21 , wherein the data application includes one or more roles used to restrict the roles that a running data application can perform.

24. The computer-storage medium of claim 21 , wherein the data application includes an identification of an execution environment that determines how to run the data application.

25. The computer-storage medium of claim 21 , wherein the data platform receives from the consumer user the consumer granted privileges when the consumer user purchases a consumer usage privilege to the data application.

26. The computer-storage medium of claim 21 , wherein authorizing, by the data platform, the consumer user to use the data application further comprises:

establishing a Web socket connection by a data application browser to the data platform based on consumer account privileges of the consumer user.

27. The computer-storage medium of claim 26 , wherein authorizing, by the data platform, the consumer user to use the data application further comprises:

attaching a session of the provider user to the Web socket connection to evaluate a context used to process a request to use the data application in a sandboxed execution environment.

28. The computer-storage medium of claim 27 , wherein the execution of the data application by the data platform in response to the request from the provider user further comprises:

executing the data application in the sandboxed execution environment wherein the data application executes in the context of one or more provider account privileges associated with the provider user.

29. The computer-storage medium of claim 28 , wherein executing the data application in the sandboxed execution environment further comprises:

generating one or more results based on data obtained by accessing the provider database object and the consumer database object; and

authorizing storing of the one or more results to the consumer database object based on the consumer granted privileges.

30. The computer-storage medium of claim 29 , wherein executing the data application in the sandboxed execution environment further comprises:

authorizing communication of the one or more results to the data application browser used by the consumer user to access the data platform, the authorizing based on the consumer account privileges associated with the consumer user.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 25, 2023
From: CARRU, DAMIEN; CHEN, JEREMY YUJUI; MOHAMAD ABDUL, MOHAMAD RAJA GANI; PUGH, WILLIAM A.
To: SNOWFLAKE INC.
Reel/Frame 063757/0559 →
Continuity (3)
Continuation 18060476 · Nov 30, 2022
Provisional Application 63366280 · Jun 13, 2022
Related Publication 20230409724A1 · Dec 21, 2023
Cited By (3)
US 12,316,681 US 12,445,499 US 12,711,262