IP Library Granted Patent US 12,411,971
Granted Patent B2
US 12,411,971 · App. 18/482,407 · Granted Sep 9, 2025

Authenticating accesses to a shared datastore of a multi-tenant computer system

Inventors: Helen Kwong (Danville, CA); Benjamin Busjaeger (San Carlos, CA)
Assignee: Salesforce, Inc.
G06F21/6218G06F21/602G06F21/604H04L63/104
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,411,971
App. No.
18/482,407
Granted
Sep 9, 2025
Kind
B2
Abstract

A multi-tenant computer system authenticates access to a shared datastore by a shared service running on the multi-tenant computer system. The shared service is operable to access the shared datastore to execute requests from a plurality of multi-tenant cloud computing services. The requests include an indication of a particular tenant and a particular tenant grouping indicator. Requests are authenticated by cryptographically verifying the request and verifying that the particular tenant is associated with the particular tenant grouping indicator. In response to authenticating a request, the shared service accesses the shared datastore to execute the first request.

Claims (59)

1. A method of authenticating accesses to a shared datastore, the method comprising:

running, at a computer system, a shared service operable to access the shared datastore to execute requests from a plurality of multi-tenant cloud computing services including a first multi-tenant cloud computing service;

storing, at the computer system, a tenant grouping indicator that is indicative of a grouping of a first tenant of the first multi-tenant cloud computing service with one or more tenants of other ones of the plurality of multi-tenant cloud computing services that are permitted to access a set of resources managed by the shared service, wherein the first tenant is the only tenant associated with the tenant grouping indicator that is allowed to request that additional tenants of the plurality of multi-tenant cloud computing services be associated with the tenant grouping indicator;

receiving, at the computer system from the first multi-tenant cloud computing service, a first request to the shared service, wherein the first request includes a first token that includes a first indication of the first tenant and the tenant grouping indicator;

in response to verifying that the first tenant is associated with the tenant grouping indicator, accessing, by the shared service, the shared datastore to execute the first request, wherein the accessing includes sending, to the shared datastore, a second token that includes an indication of the shared service and the first token; and

wherein the second token is usable by the shared datastore to authenticate the first request, authenticate the accessing by the shared service, and verify that the first tenant is associated with the tenant grouping indicator.

2. The method of claim 1 , wherein the first token includes an indication of a primary tenant associated with the tenant grouping indicator and an indication of the shared service, and wherein the second token includes an indication that the second token is a proxy token and targets the shared datastore.

3. The method of claim 1 , further comprising:

determining, by the computer system, that the first request is authorized using a hierarchy of data protection scopes that includes a shared service tenant group data protection scope that corresponds to the tenant grouping indicator.

4. The method of claim 1 , further comprising:

storing, at the computer system, a second indication of a second tenant of a second multi-tenant cloud computing service of the plurality of multi-tenant cloud computing services, wherein the second tenant is associated with the tenant grouping indicator; and

based on authenticating a second request from the second multi-tenant cloud computing service, accessing, by the shared service running on the computer system, the shared datastore to execute the second request;

wherein the first tenant and the second tenant correspond to the same entity; and wherein the accessing of the shared datastore to execute the first request includes writing a value to the shared datastore and the accessing of the shared datastore to execute the second request includes reading the value from the shared datastore.

5. The method of claim 1 , further comprising:

storing, at the computer system, a second indication of a second tenant of a second multi-tenant cloud computing service of the plurality of multi-tenant cloud computing services, wherein the second tenant is associated with the tenant grouping indicator; and

wherein tenancy in the first multi-tenant cloud computing service is defined by a first set of parameters and tenancy in the second multi-tenant cloud computing service is defined by a second set of parameters.

6. The method of claim 1 , wherein the accessing of the shared datastore to execute the first request includes accessing a particular directory of the shared datastore corresponding to the shared service and the tenant group indicator and updating a value stored in the particular directory, wherein the particular directory is logically isolated from other directories corresponding to other tenant group indicators.

7. The method of claim 1 , further comprising:

running, at the computer system, a second shared service operable to:

access the shared datastore to execute requests from the plurality of multi-tenant cloud computing services; and

authenticate requests made to the second shared service from the plurality of multi-tenant cloud computing systems using the tenant grouping indicator;

wherein tenant grouping is the only representation of trust relationships between tenants of the plurality of multi-tenant cloud computing services used by the shared service and the second shared service to authenticate requests.

8. A non-transitory computer-readable storage medium storing program instructions that are capable of being executed by a computer system to perform operations comprising:

running a shared service operable to access a shared datastore to execute requests from a plurality of multi-tenant cloud computing services including a first multi-tenant cloud computing service;

storing a tenant grouping indicator that is indicative of a grouping of a first tenant of the first multi-tenant cloud computing service with one or more tenants of other ones of the plurality of multi-tenant cloud computing services that are permitted to access a set of resources managed by the shared service;

receiving, from the first multi-tenant cloud computing service, a first request to the shared service, wherein the first request includes a first token that includes an indication of the first tenant and the tenant grouping indicator;

determining that the first request is authorized using a hierarchy of data protection scopes that includes a shared service tenant group data protection scope that corresponds to the tenant grouping indicator;

in response to verifying that the first tenant is associated with the tenant grouping indicator, accessing the shared datastore to execute the first request, wherein the accessing includes sending, to the shared datastore, a second token that includes an indication of the shared service and the first token; and

wherein the second token is usable by the shared datastore to authenticate the first request, authenticate the accessing by the shared service, and verify that the first tenant is associated with the tenant grouping indicator.

9. The non-transitory computer-readable storage medium of claim 8 ,

wherein the first token includes an indication of a primary tenant associated with the tenant grouping indicator and an indication of the shared service, and wherein the second token includes an indication that the second token is a proxy token and targets the shared datastore.

10. The non-transitory computer-readable storage medium of claim 8 ,

wherein the first tenant is the only tenant associated with the tenant grouping indicator that is allowed to request that additional tenants of the plurality of multi-tenant cloud computing services be associated with the tenant grouping indicator.

11. The non-transitory computer-readable storage medium of claim 8 ,

wherein the operations further comprise:

storing a second indication of a second tenant of a second multi-tenant cloud computing service of the plurality of multi-tenant cloud computing services, wherein the second tenant is associated with the tenant grouping indicator; and

based on authenticating a second request from the second multi-tenant cloud computing service, accessing the shared datastore to execute the second request;

wherein the first tenant and the second tenant correspond to the same entity; and wherein the accessing of the shared datastore to execute the first request includes writing a value to the shared datastore and the accessing of the shared datastore to execute the second request includes reading the value from the shared datastore.

12. The non-transitory computer-readable storage medium of claim 8 , wherein the operations further comprise:

storing a second indication of a second tenant of a second multi-tenant cloud computing service of the plurality of multi-tenant cloud computing services, wherein the second tenant is associated with the tenant grouping indicator; and

wherein tenancy in the first multi-tenant cloud computing service is defined by a first set of parameters and tenancy in the second multi-tenant cloud computing service is defined by second set of parameters.

13. The non-transitory computer-readable storage medium of claim 8 , wherein the operations further comprise:

running a second shared service operable to access the shared datastore to execute requests from the plurality of multi-tenant cloud computing services, wherein the second shared service is operable to authenticate requests made to the second shared service from the plurality of multi-tenant cloud computing services using the tenant grouping indicator;

wherein tenant grouping is the only representation of trust relationships between tenants of the plurality of multi-tenant cloud computing services used by the shared service and the second shared service to authenticate requests.

14. A system, comprising:

at least one processor; and

memory having program instructions stored thereon that are executable by the at least one processor to perform operations comprising:

running a shared service operable to access a shared datastore to execute requests from a plurality of multi-tenant cloud computing services including a first multi-tenant cloud computing service;

storing a tenant grouping indicator that is indicative of a grouping of a first tenant of the first multi-tenant cloud computing service with one or more tenants of other ones of the plurality of multi-tenant cloud computing services that are permitted to access a set of resources managed by the shared service;

receiving, from the first multi-tenant cloud computing service, a first request to the shared service, wherein the first request includes a first token that includes an indication of the first tenant and the tenant grouping indicator;

in response to verifying that the first tenant is associated with the tenant grouping indicator, accessing the shared datastore to execute the first request, wherein the accessing includes sending, to the shared datastore, a second token that includes an indication of the shared service and the first token; and

wherein the second token is usable by the shared datastore to authenticate the first request, authenticate the accessing by the shared service, and verify that the first tenant is associated with the tenant grouping indicator, and

wherein the accessing of the shared datastore to execute the first request includes accessing a particular directory of the shared datastore corresponding to the shared service and the tenant group indicator and updating a value stored in the particular directory, wherein the particular directory is logically isolated from other directories corresponding to other tenant group indicators.

15. The system of claim 14 , wherein the operations further comprise:

running a second shared service operable to access the shared datastore to execute requests from the plurality of multi-tenant cloud computing services, wherein the second shared service is operable to authenticate requests made to the second shared service from the plurality of multi-tenant cloud computing services using the tenant grouping indicator;

wherein tenant grouping is the only representation of trust relationships between tenants of the plurality of multi-tenant cloud computing services used by the shared service and the second shared service to authenticate requests.

16. The system of claim 14 , wherein the first tenant is the only tenant associated with the tenant grouping indicator that is allowed to request that additional tenants of the plurality of multi-tenant cloud computing services be associated with the tenant grouping indicator.

17. The system of claim 14 , wherein the operations further comprise:

determining, using a hierarchy of data protection scopes including a shared service tenant group data protection scope that corresponds to the tenant grouping indicator, that the first request is authorized.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 6, 2023
From: KWONG, HELEN; BUSJAEGER, BENJAMIN
To: SALESFORCE.COM, INC.
Reel/Frame 065148/0700 →
CHANGE OF NAME Recorded Oct 6, 2023
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 065180/0142 →
Continuity (2)
Continuation 17338437 · Jun 3, 2021
Related Publication 20240037267A1 · Feb 1, 2024
References Cited (24)
US 9003502B2 · Zhang et al. · 2015 [cited by applicant]
US 9043458B2 · Balaji et al. · 2015 [cited by applicant]
US 9361468B2 · Peddada · 2016 [cited by applicant]
US 10313261B1 · Walton, III · 2019 [cited by applicant]
US 10484382B2 · Wilson et al. · 2019 [cited by applicant]
US 10846390B2 · Subramanian et al. · 2020 [cited by applicant]
US 11323454B1 · Li · 2022 [cited by examiner]
US 20120096525A1 · Bolgert · 2012 [cited by examiner]
US 20130031136A1 · Shah · 2013 [cited by applicant]
US 20130066940A1 · Shao · 2013 [cited by applicant]
US 20150007273A1 · Lin · 2015 [cited by applicant]
US 20150172222A1 · Liao · 2015 [cited by applicant]
US 20170063836A1 · Cui · 2017 [cited by examiner]
US 20190109852A1 · Ranganathan et al. · 2019 [cited by applicant]
US 20210099301A1 · Busjaeger et al. · 2021 [cited by applicant]
US 20210119992A1 · Johnson · 2021 [cited by examiner]
US 20210141930A1 · Aziz et al. · 2021 [cited by applicant]
A Authentication and Access Authorization Mechanism on the PaaS Platform. Xu. IEEE. (Year: 2019). [cited by examiner]
A Cross Tenant Access Control (CTAC) Model for Cloud Computing: Formal Specification and Verification. Alam. IEEE. (Year: 2017). [cited by examiner]
Multi-tenants Data Duplication Secure Storage in SaaS. Li. IEEE. (Year: 2015). [cited by examiner]
A Software as a Service with Multi-tenancy Support for an Electronic Contract Management Application. Kwok. IEEE. (Year: 2008). [cited by applicant]
Multi-tenant attribute-based access control for cloud infrastructure services. Ngo. Elsevier. (Year: 2016). [cited by applicant]
Resource Accounting of Shared IT Resources in Multi-Tenant Clouds. Tak. IEEE. (Year: 2017). [cited by applicant]
Secure Information and Resource Sharing in Cloud Infrastructure as a Service. Zhang. ACM. (Year: 2014). [cited by applicant]