IP Library Granted Patent US 11,449,596
Granted Patent B2
US 11,449,596 · App. 15/808,425 · Granted Sep 20, 2022

Event-based user state synchronization in a local cloud of a cloud storage system

Inventors: Shishir Sharma (Mountain View, CA); Debjit Bhattacharjee (Sunnyvale, CA); Amrit Jassal (Morgan Hill, CA); Kalpesh Patel (Flower Mound, TX); Deepak Mehta (Surat, IN); Przemek Grzedzielski (Poznan, PL); Sachin Shetty (Mumbai, IN); Krzysztof Gardo (Poznan, PL); Daniil Iaitskov (Poznan, PL); Harikesavan Krishnan (San Jose, CA); Manish Marathe (San Jose, CA)
Assignee: Egnyte, Inc.
G06F21/45G06F16/27
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,449,596
App. No.
15/808,425
Granted
Sep 20, 2022
Kind
B2
Abstract

Cloud storage systems and methods provide event-based user state synchronization among the various cloud elements. A global user directory is maintained on a remote cloud storage system. The global user directory includes a plurality of global user definitions associated with a plurality of user accounts, where each of the user accounts has access to one of a remote file system (RFS) hosted by the remote cloud storage system and a local file system (LFS) hosted by a local cloud storage system. As global user definition are altered on the remote cloud storage system, user events are generated and communicated to the local cloud storage system, where they are applied to synchronize the local user definitions with the global user definitions. The invention facilitates centralized control of user definitions, near real-time event delivery to local cloud storage systems, and separation of authentication processes from customers' active directory services.

Claims (89)

1. A method for synchronizing local user definitions of a local file storage system with global user definitions of a remote file storage system, said method comprising:

maintaining a plurality of local user definitions associated with a plurality of local user accounts having access to a local file system (LFS) hosted by said local file storage system, each of said local user definitions including a user identifier uniquely identifying a particular user and a first permission definition identifying a first subset of a plurality of data objects of said LFS accessible to said particular user and other data objects of said LFS inaccessible to said particular user, said first subset including a plurality of data objects;

capturing a local user state snapshot indicative of said local user definitions;

communicating with said remote file storage system, said remote file storage system maintaining a global user directory comprising a plurality of global user definitions associated with a plurality of global user accounts, each of said global user accounts having access to at least one of a remote file system (RFS) hosted by said remote file storage system and said LFS, each of said local user definitions corresponding to one of said global user definitions;

receiving a remote user state snapshot indicative of said global user definitions;

comparing said local user state snapshot and said remote user state snapshot to identify differences between said local user definitions and said global user definitions;

generating update information based at least in part on said differences;

providing said update information to said remote file storage system to facilitate synchronization of said global user definitions with said local user definitions as of a first time;

receiving a user event including information indicative of a change made to an altered global user definition after said first time, said change including replacing a first global permission definition of said altered global user definition that identifies said first subset of said plurality of data objects of said LFS with a second global permission definition that identifies a second subset of said plurality of data objects of said LFS accessible to said particular user; and

altering a corresponding one of said local user definitions based on said user event to synchronize said corresponding local user definition and said altered global user definition; and wherein

said step of altering a corresponding one of said local user definitions includes replacing said first permission definition with a second permission definition that identifies said second subset of said plurality of data objects of said LFS, said second subset being different from said first subset and including a plurality of data objects;

said information indicative of said change made to said altered global user definition includes an identifier associated with said user identifier and uniquely associating said particular user with said change; and

said information indicative of said change made to said altered global user definition includes data indicative of a particular change made to said altered global user definition with respect to said uniquely associated particular user.

2. The method of claim 1 , wherein said plurality of local user accounts comprises a subset of said global user accounts.

3. The method of claim 1 , further comprising:

reading at least some headquarter (HQ) user definitions from a subscriber directory service maintained by a subscriber associated with said local file storage system; and

providing at least some of said HQ user definitions to said remote file storage system; and wherein

each of said local user definitions and at least some of said global user definitions correspond to ones of said HQ user definitions.

4. The method of claim 3 , wherein said step of providing at least some of said HQ user definitions to said remote file storage system includes mapping said at least some of said HQ user definitions to a data structure associated with said global user definitions.

5. The method of claim 1 , wherein said user event originates at said remote file storage system.

6. The method of claim 5 , wherein said step of receiving said user event comprises:

establishing a persistent connection with a real time event delivery (RED) service; and

receiving said user event from said RED service.

7. The method of claim 6 , further comprising:

generating a reply message responsive to receiving said user event; and

providing said reply message to said RED service.

8. The method of claim 1 , further comprising:

receiving each of said local user definitions from said remote file storage system; and

storing said local user definitions on said local file storage system.

9. The method of claim 1 , further comprising receiving a second user event, said second user event being indicative of:

a new global user definition being created in said global user directory;

a user account associated with an existing global user definition being deactivated; or

a password associated with one of said global user definitions being changed.

10. The method of claim 1 , wherein said remote file storage system is configured to:

provide an administrative user associated with said local file storage system access to said global user directory, said administrative user having sufficient credentials to alter said global user definitions;

allow said administrative user to alter one of said global user definitions stored on said remote file storage system to define said altered global user definition;

generate said user event responsive to said altered global user definition; and

provide said user event to a real time event delivery (RED) service configured to deliver said user event to said local file storage system.

11. A local file storage system configured to synchronize local user definitions of said local file storage system with global user definitions of a remote file storage system, said local file storage system comprising:

a hardware processor configured to execute code, said code including a set of predefined instructions for causing said hardware processor to perform an associated set of operations;

a wide area network (WAN) adapter; and

memory for storing data and said code, said data and said code including

a local user directory configured to maintain a plurality of local user definitions associated with a plurality of local user accounts having access to a local file system (LFS) hosted by said local file storage system, a first local user definition of said plurality of local user definitions including a user identifier uniquely identifying a particular user and a first permission definition identifying a first subset of a plurality of data objects of said LFS accessible to said particular user and other data objects of said LFS inaccessible to said particular user, said first subset including a plurality of data objects,

a local user state synchronizer including

a first subset of said set of predefined instructions configured to capture a local user state snapshot indicative of said local user definitions,

a second subset of said set of predefined instructions configured to communicate with said remote file storage system, said remote file storage system maintaining a global user directory comprising a plurality of global user definitions associated with a plurality of global user accounts having access to at least one of a remote file system (RFS) hosted by said remote file storage system and said LFS, each of said local user definitions corresponding to one of said global user definitions,

a third subset of said set of predefined instructions configured to receive a remote user state snapshot indicative of said global user definitions,

a fourth subset of said set of predefined instructions configured to compare said local user state snapshot and said remote user state snapshot to identify differences between said local user definitions and said global user definitions,

a fifth subset of said set of predefined instructions configured to generate update information based at least in part on said differences, and

a sixth subset of said set of predefined instructions configured to provide said update information to said remote file storage system to facilitate synchronization of said global user definitions with said local user definitions as of a first time, and

an event delivery interface configured to receive a user event including information indicative of a change made to an altered global user definition after said first time, said change including replacing a first global permission definition of said altered global user definition that identifies said first subset of said plurality of data objects of said LFS with a second global permission definition that identifies a second subset of said plurality of data objects of said LFS accessible to said particular user; and wherein

said local user state synchronizer is further configured to alter a corresponding one of said local user definitions based on said user event to synchronize said corresponding local user definition and said altered global user definition after said first time, said change including replacing said first permission definition with a second permission definition that identifies said second subset of said plurality of data objects of said LFS, said second subset being different from said first subset and including a plurality of data objects;

said information indicative of said change made to said altered global user definition includes an identifier associated with said user identifier and uniquely associating said particular user with said change; and

said information indicative of said change made to said altered global user definition includes data indicative of a type of said change made to said altered global user definition with respect to said uniquely associated particular user.

12. The system of claim 11 , wherein said plurality of local user accounts comprises a subset of said global user accounts.

13. The system of claim 12 , wherein at least some of said global user accounts correspond to a second plurality of local user accounts corresponding to a second local file storage system remote from said local file storage system.

14. The system of claim 13 , wherein at least one of said plurality of local user accounts and at least one of said second plurality of local user accounts correspond to a same one of said plurality of global user accounts.

15. The system of claim 13 , wherein said event delivery interface is configured to:

establish a Web Socket connection with a real time event delivery (RED) service; and

receive said user event from said RED service.

16. The system of claim 15 , wherein said local user state synchronizer is further configured to generate a reply message responsive to applying said user event to said corresponding local user definition.

17. The system of claim 11 , further comprising a headquarter (HQ) user directory exporter configured to:

read at least some HQ user definitions from a subscriber directory service maintained by a subscriber associated with said local file storage system; and

provide at least some of said HQ user definitions to said remote file storage system; and wherein

each of said local user definitions and at least some of said global user definitions correspond to ones of said HQ user definitions.

18. The system of claim 17 , wherein said HQ user directory exporter is additionally configured to map said at least some of said HQ user definitions to a data structure associated with said global user definitions.

19. The system of claim 11 , wherein said user event originates at said remote file storage system.

20. The system of claim 11 , wherein said local user state synchronizer is configured to generate said local user definitions responsive to receiving user events from said remote file storage system.

21. The system of claim 11 , wherein said plurality of local user definitions comprises:

a user definitions file including a list of said local user definitions; and

a shadow file including a list of encrypted passwords, each of said encrypted passwords corresponding to one of said local user definitions contained in said user definitions file.

22. The system of claim 11 , wherein said event delivery interface is configured to receive a second user event, and said second user event is indicative of:

a new global user definition being created in said global user directory;

a user account associated with an existing global user definition being deactivated; or

a password associated with one of said global user definitions being changed.

23. A local file storage system configured to synchronize local user definitions of said local file storage system with global user definitions of a remote file storage system, said local file storage system comprising:

a hardware processor configured to execute code, said code including a set of predefined instructions for causing said hardware processor to perform an associated set of operations;

a wide area network (WAN) adapter; and

memory for storing data and said code, said data and said code including

a local user directory configured to maintain a plurality of local user definitions associated with a plurality of local user accounts having access to a local file system (LFS) hosted by said local file storage system, a first local user definition of said plurality of local user definitions including a user identifier uniquely identifying a particular user and a first permission definition identifying a first subset of a plurality of data objects of said LFS accessible to said particular user and other data objects of said LFS inaccessible to said particular user, said first subset including a plurality of data objects, means for

capturing a local user state snapshot indicative of said local user definitions,

communicating with said remote file storage system, said remote file storage system maintaining a global user directory comprising a plurality of global user definitions associated with a plurality of global user accounts having access to at least one of a remote file system (RFS) hosted by said remote file storage system and said LFS, each of said local user definitions corresponding to one of said global user definitions,

receiving a remote user state snapshot indicative of said global user definitions, comparing said local user state snapshot and said remote user state snapshot to identify differences between said local user definitions and said global user definitions,

generating update information based at least in part on said differences, and

providing said update information to said remote file storage system to facilitate synchronization of said global user definitions with said local user definitions as of a first time,

means for receiving a user event including information indicative of a change made to an altered global user definition after said first time, said change including replacing a first global permission definition of said altered global user definition that identifies said first subset of said plurality of data objects of said LFS with a second global permission definition that identifies a second subset of said plurality of data objects of said LFS accessible to said particular user, and

means for altering a corresponding one of said local user definitions based on said user event to synchronize said corresponding local user definition and said altered global user definition after said first time, said change including replacing said first permission definition with a second permission definition that identifies said second subset of said plurality of data objects of said LFS, said second subset being different from said first subset and including a plurality of data objects; and wherein

said information indicative of said change made to said altered global user definition includes an associated with said user identifier and identifier uniquely associating said particular user with said change; and

said information indicative of said change made to said altered global user definition includes data indicative of a type of said change made to said altered global user definition with respect to said uniquely associated particular user.

Assignments (6)
SECURITY INTEREST Recorded Mar 25, 2025
From: EGNYTE, INC.
To: TCG SENIOR FUNDING, L.L.C., AS COLLATERAL AGENT
Reel/Frame 070614/0319 →
RELEASE OF SECURITY INTEREST Recorded Mar 14, 2025
From: JPMORGAN CHASE BANK, N.A.
To: EGNYTE, INC.
Reel/Frame 070519/0129 →
RELEASE OF SECURITY INTEREST Recorded Mar 14, 2025
From: JPMORGAN CHASE BANK, N.A.
To: EGNYTE, INC.
Reel/Frame 070518/0898 →
SECURITY INTEREST Recorded Apr 1, 2022
From: EGNYTE, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 059568/0653 →
CORRECTIVE ASSIGNMENT TO CORRECT THE RECEIVING PARTY ADDRESS PREVIOUSLY RECORDED AT REEL: 55441 FRAME: 199. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Apr 13, 2021
From: EGNYTE, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 057210/0629 →
SECURITY INTEREST Recorded Mar 1, 2021
From: EGNYTE, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 055441/0199 →
Continuity (3)
Division 15388038 · Dec 22, 2016
Provisional Application 62271133 · Dec 22, 2015
Related Publication 20180068112A1 · Mar 8, 2018
Cited By (2)
US 12,360,956 US 12,688,158