IP Library Granted Patent US 11,470,121
Granted Patent B1
US 11,470,121 · App. 16/446,514 · Granted Oct 11, 2022

Deducing policies for authorizing an API

Inventors: Andrew Curtis (San Mateo, CA); Mikol Graves (San Francisco, CA); Bryan J. Fulton (San Francisco, CA); Timothy L. Hinrichs (Los Altos, CA); Marco Sanvido (Belmont, CA); Teemu Koponen (San Francisco, CA)
Assignee: STYRA, INC.
H04L63/20H04L63/101H04L63/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 11,470,121
App. No.
16/446,514
Granted
Oct 11, 2022
Kind
B1
Abstract

Some embodiments provide a method for gaining insight into applicability of policies that authorize access to at least one service through application programming interface (API) calls by multiple users. The method receives at least one authorization policy that defines access to the service by the users, where the service includes multiple resources. Based on an analysis of the received policy, the method identifies a set of two or more access rules, each access rule associating at least one user to at least one resource. The method receives a query regarding access to a particular resource from a particular set of one or more users, and uses the identified access rules to provide a response to the query that describes access to the particular resource for the particular user set.

Claims (32)

1. A method for gaining insight into applicability of policies that authorize access to at least one service through application programming interface (API) calls by a plurality of users, the method comprising:

receiving at least one authorization policy that defines access to the service by the users, said service comprising a plurality of resources, wherein the received policy is an aggregate policy generated by receiving and combining two or more individual policies that each define access to the service by the users, wherein the two or more policies define access to the service by at least two different groups of the users, said combining comprising (i) expressing each received policy as a code in a general policy language and (ii) representing the expressed policies as a single unified policy in the general policy language;

based on an analysis of the received policy, identifying a set of two or more access rules defined in the authorization policy, each access rule associating at least one user in the plurality of users to at least one resource in the plurality of resources;

after identifying the set of two or more access rules, receiving a query regarding access to a particular resource from a particular set of one or more users; and

using the previously identified access rules to provide a response to the query that defines access to the particular resource for the particular user set.

2. The method of claim 1 further comprising generating a permissions graph from the identified access rules, said graph comprising (i) nodes corresponding to the service, the resources, and the users and (ii) connections between the nodes corresponding to the identified access rules, wherein the received query comprises a selection of a node in the graph, wherein the response to the comprises a modification of the nodes and connections displayed in the graph.

3. The method of claim 1 further comprising receiving contextual data associated with the service, wherein identifying the set of access rules is further based on an analysis of the contextual data.

4. The method of claim 3 , wherein the contextual data is received from a system that provides the service.

5. The method of claim 3 , wherein the contextual data is generated by a software process that performs the method.

6. The method of claim 3 , wherein the contextual data comprises usage data from service logs generated from previous API calls to the resources by one or more of the users.

7. The method of claim 1 , wherein at least one policy comprises an access control list (ACL).

8. A method for gaining insight into applicability of policies that authorize access to at least one service through application programming interface (API) calls by a plurality of users, the method comprising:

receiving at least one authorization policy that defines access to the service by the users, said service comprising a plurality of resources, wherein the received policy is an aggregate policy generated by receiving and combining two or more individual policies that each define access to the service by the users, wherein the two or more policies define access to the service by at least two different groups of the users;

based on an analysis of the received policy, identifying a set of two or more access rules defined in the authorization policy, each access rule associating at least one user in the plurality of users to at least one resource in the plurality of resources;

after identifying the set of two or more access rules, receiving a query regarding access to a particular resource from a particular set of one or more users, wherein the particular user set comprises members of both a first group and a second group, wherein if the particular user set (i) is authorized to access the particular resource according to a first received policy that defines access to the first group and (ii) is authorized to access the particular resource according to a second received policy that defines access to the second group, then the particular user set is not authorized to access the particular resource according to the aggregate policy; and

using the previously identified access rules to provide a response to the query that defines access to the particular resource for the particular user set.

9. The method of claim 8 , wherein at least one of the different groups of users is one of an organization, a department, a team, and a role.

10. A non-transitory machine readable medium storing a program which when executed by at least one processing unit provides insight into applicability of policies that authorize access to at least one service through application programming interface (API) calls by a plurality of users, the program comprising sets of instructions for:

receiving at least one authorization policy that defines access to the service by the users, said service comprising a plurality of resources, wherein the received policy is an aggregate policy generated by receiving and combining two or more individual policies that each define access to the service by the users, wherein the two or more policies define access to the service by at least two different groups of the users, said combining comprising (i) expressing each received policy as a code in a general policy language and (ii) representing the expressed policies as a single unified policy in the general policy language;

based on an analysis of the received policy, identifying a set of two or more access rules defined in the authorization policy, each access rule associating at least one user in the plurality of users to at least one resource in the plurality of resources;

identifying the set of two or more access rules, receiving a query regarding access to a particular resource from a particular set of one or more users; and

using the identified access rules to provide a response to the query that defines access to the particular resource for the particular user set.

11. The machine readable medium of claim 10 , the program further comprising a set of instructions for generating a permissions graph from the identified access rules, said graph comprising (i) nodes corresponding to the service, the resources, and the users and (ii) connections between the nodes corresponding to the identified access rules, wherein the received query comprises a selection of a node in the graph, wherein the response to the query comprises a modification of the nodes and connections displayed in the graph.

12. The machine readable medium of claim 10 , the program further comprising a set of instructions for receiving contextual data associated with the service, wherein the set of instructions for identifying the set of access rules is further based on an analysis of the contextual data.

13. The machine readable medium of claim 12 , wherein the contextual data is received from a system that provides the service.

14. The machine readable medium of claim 12 , the program further comprising a set of instructions for generating the contextual data.

15. The machine readable medium of claim 12 , wherein the contextual data comprises usage data from service logs generated from previous API calls to the resources by one or more of the users.

16. A non-transitory machine readable medium storing a program which when executed by at least one processing unit gains insight into applicability of policies that authorize access to at least one service through application programming interface (API) calls by a plurality of users, the program comprising sets of instructions for:

receiving at least one authorization policy that defines access to the service by the users, said service comprising a plurality of resources, wherein the received policy is an aggregate policy generated by receiving and combining two or more individual policies that each define access to the service by the users, wherein the two or more policies define access to the service by at least two different groups of the users;

based on an analysis of the received policy, identifying a set of two or more access rules defined in the authorization policy, each access rule associating at least one user in the plurality of users to at least one resource in the plurality of resources;

after identifying the set of two or more access rules, receiving a query regarding access to a particular resource from a particular set of one or more users, wherein the particular user set comprises members of both a first group and a second group, wherein if the particular user set (i) is not authorized to access the particular resource according to a first received policy that defines access to the first group and (ii) is authorized to access the particular resource according to a second received policy that defines access to the second group, then the particular user set is not authorized to access the particular resource according to the aggregate policy; and

using the previously identified access rules to provide a response to the query that defines access to the particular resource for the particular user set.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 5, 2025
From: STYRA, INC.
To: APPLE INC.
Reel/Frame 072818/0489 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 19, 2025
From: STYRA, INC.
To: APPLE INC.
Reel/Frame 072522/0568 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 6, 2019
From: CURTIS, ANDREW; GRAVES, MIKOL; FULTON, BRYAN J.; HINRICHS, TIMOTHY L.; SANVIDO, MARCO; KOPONEN, TEEMU
To: STYRA, INC.
Reel/Frame 050294/0369 →
Continuity (3)
Provisional Application 62839487 · Apr 26, 2019
Provisional Application 62785656 · Dec 27, 2018
Provisional Application 62746500 · Oct 16, 2018
Cited By (5)
US 12,348,525 US 12,353,877 US 12,401,694 US 12,407,647 US 12,693,839