# US 2019/0379672 A1 · Controlling user access to command execution

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2019/0379672 A1
- Document ID: US20190379672A1
- Status: Published application
- Kind: A1
- Application number: 16/549,284
- Filed: 2019-08-23
- Published: 2019-12-12
- Earliest claimed: 2015-06-25
- Assignees: Amazon Technologies, Inc.
- Applicants: Amazon Technologies, Inc.
- Inventors: Omer Hashmi; Katherine Yichen Chung
- Web page: https://patentgrep.com/patent/US20190379672A1

## CPC

- H04L 63/102: {Entity profiles}
- G06F 9/45512: {Command shells}
- G06F 9/45533: {Hypervisors; Virtual machine monitors}
- G06F 9/468: {Specific access rights for resources, e.g. using capability register}
- G06F 9/5072: {Grid computing}
- H04L 67/10: in which an application is distributed across nodes in the network (software deployment G06F8/60; multiprogramming arrangements G06F9/46)
- H04L 67/306: User profiles
- H04L 63/10: {for controlling access to devices or network resources}
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Techniques are described for providing users with access to perform commands on network-accessible computing resources. In some situations, permissions are established for user(s) to execute command(s) on computing node(s) provided by an online service, such as by maintaining various permission information externally to those provided computing nodes for use in controlling users' ability to access, use, and/or modify the provided computing nodes. An interface component may use such external permissions information to determine if a particular user is authorized to execute one or more particular commands on one or more particular computing nodes, and to initiate simultaneous and independent execution of the command(s) on the computing node(s) when authorized. The interface component may further aggregate results from each computing node that executed the command(s), prior to providing the results to the user.

## Claims

### Claim at position 1

-22. (canceled)

### Claim 23

A computer-implemented method comprising:
performing, by a shell aggregator executing on one or more computing systems:
receiving a request from a user to execute a command by a plurality of computing nodes provided for the user by a network-accessible service;
determining, based at least in part on permissions information stored externally to the plurality of computing nodes, that the user is authorized to execute the command on a first computing node of the plurality of computing nodes but not authorized to execute the command on a second computing node of the plurality of computing nodes; and
in response to the determining:
causing the first computing node to execute the command; and
denying execution of the command by the second computing node.

### Claim 24 (depends on 23)

The computer-implemented method of claim 23, wherein the determining that the user is authorized to execute the command on a first computing node comprises:
querying a permission broker external to the plurality of computing nodes to obtain permissions information specific to the user; and
comparing the obtained permissions information with the command to determine that the command is an authorized command for the user.

### Claim 25 (depends on 24)

The computer-implemented method of claim 24 wherein the comparing of the obtained permissions information with the command comprises matching the command to one or more regular expressions in the obtained permissions information.

### Claim 26 (depends on 24)

The computer-implemented method of claim 24 wherein the comparing of the obtained permissions information with the command comprises matching the command to one or more access control expressions in the obtained permissions information.

### Claim 27 (depends on 23)

The computer-implemented method of claim 23,
wherein the receiving of the request comprises receiving an indication of a group of computing nodes on which to execute the command; and
further comprising, causing, by the shell aggregator, the command to be executed on multiple computing nodes in the group that are authorized to execute the command for the user.

### Claim 28 (depends on 27)

The computer-implemented method of claim 27 further comprising:
performing, by the shell aggregator:
receiving multiple results from execution of the command by the multiple computing nodes of the group; and
aggregating the received multiple results and returning the aggregated results to the user.

### Claim 29 (depends on 28)

The computer-implemented method of claim 28 wherein the aggregating of the received multiple results comprises generating one or more of a sequential listing, a summary, an accumulation, or a comparison of respective values in the multiple results.

### Claim 30 (depends on 27)

The computer-implemented method of claim 27 wherein the causing of the first computing node to execute the command comprises:
establishing multiple secure connections via a shell transport layer to respective ones of the multiple computing node; and
providing the command via the multiple established secure connection to the multiple computing nodes.

### Claim 31 (depends on 27)

The computer-implemented method of claim 27,
wherein the execution of the command causes current status information of the multiple computing nodes to be obtained; and
further comprising providing, by the shell aggregator, the current status information of the multiple computing nodes to the user.

### Claim 32 (depends on 27)

The computer-implemented method of claim 27, wherein the execution of the command modifies ongoing operations on the multiple computing nodes.

### Claim 33 (depends on 23)

The computer-implemented method of claim 23,
wherein the receiving of the request includes receiving a directive that specifies a plurality of commands including the command; and
further comprising causing, by the shell aggregator, the plurality of commands to be executed by the first computing node.

### Claim 34 (depends on 23)

The computer-implemented method of claim 23, further comprising:
performing, by the shell aggregator:
receiving another request from the user indicating a directive to execute plurality of commands on the plurality of computing nodes;
in response to a determination, based at least in part on permissions information stored externally to the plurality of computing nodes, that the user is authorized to execute a first of the plurality of commands on a particular computing node but not a second of the plurality of commands on the particular computing node:
causing the particular computing node to execute the first command but not the second command.

### Claim 35 (depends on 23)

The computer-implemented method of claim 23, further comprising:
performing, by the shell aggregator:
receiving another request from the user indicating a directive to execute plurality of commands on the plurality of computing nodes;
in response to a determination, based at least in part on permissions information stored externally to the plurality of computing nodes, that the user is authorized to execute a first of the plurality of commands on a particular computing node but not a second of the plurality of commands on the particular computing node:
denying execution of all commands in the directive by the particular computing node.

### Claim 36 (depends on 23)

The computer-implemented method of claim 23, wherein the determining that the user is not authorized to execute the command on a second computing node of the plurality of computing nodes comprises:
querying a permission broker external to the plurality of computing nodes to obtain permissions information specific to the user and the second computing node; and
wherein the obtained permissions information indicates that an access control rule that denies permission to execute the command for the user on the second computing node.

### Claim 37 (depends on 23)

The computer-implemented method of claim 23, further comprising:
performing, by a computing resource service executing on one or more computing systems:
receiving configuration information for the plurality of computing nodes to be provided for the user;
providing a plurality of virtual machines hosted by respective physical hosts as the plurality of computing nodes provided for the user, according to the configuration information.

### Claim 38 (depends on 35)

The computer-implemented method of claim 35, further comprising:
performing, by the computing resource service executing on one or more computing systems:
determining the permissions information for the plurality of computing nodes from the configuration information; and
storing the permission information in a permission repository external to the plurality of computing nodes.

### Claim 39 (depends on 35)

The computer-implemented method of claim 35, wherein receiving the request from the user to execute the command comprises receiving the request via a graphical user interface of the provided by the network-accessible service.

### Claim 40

One or more non-transitory computer-readable media having stored instructions that when executed on or across one or more processors cause the one or more processors to implement a shell aggregator and to:
receive a request from a user to execute a command by a plurality of computing nodes provided for the user by a network-accessible service;
determine, based at least in part on permissions information stored externally to the plurality of computing nodes, that the user is authorized to execute the command on a first computing node of the plurality of computing nodes but not authorized to execute the command on a second computing node of the plurality of computing nodes; and
in response to the determining:
cause the first computing node to execute the command; and
deny execution of the command by the second computing node.

### Claim 41 (depends on 40)

The one or more non-transitory computer-readable media of claim 40, wherein the stored instructions when executed cause the shell aggregator to:
cause the command to be executed on multiple computing nodes in the plurality of computing nodes that are authorized to execute the command for the user;
receive multiple results from execution of the command by the multiple computing nodes; and
aggregate the received multiple results and return the aggregated results to the user.

### Claim 42 (depends on 40)

The one or more non-transitory computer-readable media of claim 40, wherein to determine that the user is authorized to execute the command on THE first computing node, the stored instructions when executed cause the shell aggregator to:
query a permission broker external to the plurality of computing nodes to obtain permissions information specific to the user; and
match the command to one or more access control expressions in the obtained permissions information to determine that the command is authorized for the user on the first computing node.
