This application claims priority to Indian Provisional Patent Application No. 202041018581, filed Apr. 30, 2020, the entirety of which is incorporated by reference herein.
Cloud computing is a type of Internet-based computing that provides shared computer processing resources and data to computers and other devices on demand. It is a model for enabling ubiquitous, on-demand access to a shared pool of configurable computing resources (e.g., computer networks, servers, storage) and applications and services built thereon, which can be rapidly provisioned and released with minimal management effort. Cloud computing and storage solutions provide users and enterprises with various capabilities to store and process their data in third-party data centers that may be located far from the user—ranging in distance from across a city to across the world. Like a utility (e.g., an electrical grid), cloud computing relies on the sharing of resources to achieve coherence and economy of scale.
As organizations both big and small are extending their information technology (IT) capabilities, they are adopting cloud environments for hosting their line-of-business applications to take advantage of the scalability, flexibility and economies of scale that the cloud offers. With this change, these organizations are faced with challenges of limited cloud-based skills for managing their IT estates in the cloud, while their volume of business-critical applications is increasing. This introduces complexity and the need for more automation. Managed service providers (managing partners) and application builder independent software vendors (ISVs) help organizations address these challenges by managing the organization's IT estate on their behalf. Enabling authorization for service providers or central IT governance users within an enterprise to operate an organization's resources is fundamental for management of applications at scale with automation scenarios.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.
Methods, systems, apparatuses, and computer program products are described herein that enable a service provider to manage cloud resources deployed to different customer environments in different cloud tenants of a cloud services platform using a single access token. The service provider publishes one or more management templates that each specify service provider permissions with respect to cloud resource deployments. Customers authorize the service provider to manage the customers' cloud resources by deploying a management template. When the management template is deployed by a particular customer, a cloud resource manager associates the customer's environment with the service provider's environment, along with the various permissions granted to the service provider for that customer's environment residing in a different cloud tenant from that of the service provider. When the service provider logs into his/her service provider environment, the access token granted to the service provider is provided to the cloud resource manager. The cloud resource manager obtains the identifier of the service provider from the access token and determines the customer environments (and permissions therefor) that are associated with the service provider. Subsequently, the cloud resource manager logically projects to the service provider's environment each of the customers' cloud resources that the service provider is permitted to manage (i.e., the cloud resource manager allows cross-tenant access). Such techniques enable the service provider to use a single secure token to sign-in to their own environment or interface to obtain access to all the assets managed thereby together in a single, aggregated and centralized view, allowing them to perform tasks or operations in a cross-tenant fashion) at scale without having to individually log in to each customer environment residing in a different cloud tenant.
Further features and advantages of embodiments, as well as the structure and operation of various embodiments, are described in detail below with reference to the accompanying drawings. It is noted that the methods and systems are not limited to the specific embodiments described herein. Such embodiments are presented herein for illustrative purposes only. Additional embodiments will be apparent to persons skilled in the relevant art(s) based on the teachings contained herein.
The accompanying drawings, which are incorporated herein and form part of the specification, illustrate embodiments of the application and, together with the description, further explain the principles of the embodiments and to enable a person skilled in the relevant art(s) to make and use the embodiments.
The features and advantages of the embodiments described herein will become more apparent from the detailed description set forth below when taken in conjunction with the drawings, in which like reference characters identify corresponding elements throughout. In the drawings, like reference numbers generally indicate identical, functionally similar, and/or structurally similar elements. The drawing in which an element first appears is indicated by the leftmost digit(s) in the corresponding reference number.
The following detailed description discloses numerous example embodiments. The scope of the present patent application is not limited to the disclosed embodiments, but also encompasses combinations of the disclosed embodiments, as well as modifications to the disclosed embodiments.
References in the specification to “one embodiment,” “an embodiment,” “an example embodiment,” or the like, indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Furthermore, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is submitted that it is within the knowledge of persons skilled in the relevant art(s) to implement such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described.
In the discussion, unless otherwise stated, adjectives such as “substantially” and “about” modifying a condition or relationship characteristic of a feature or features of an embodiment of the disclosure, are understood to mean that the condition or characteristic is defined to within tolerances that are acceptable for operation of the embodiment for an application for which it is intended.
Numerous exemplary embodiments are described as follows. It is noted that any section/subsection headings provided herein are not intended to be limiting. Embodiments are described throughout this document, and any type of embodiment may be included under any section/subsection. Furthermore, embodiments disclosed in any section/subsection may be combined with any other embodiments described in the same section/subsection and/or a different section/subsection in any manner.
Embodiments described herein are directed to enabling a service provider to manage cloud resources deployed to different customer environments in different cloud tenants of a cloud services platform using a single access token. Each of the multiple customer environments and the service provider environment are managed in a different environment of the cloud services platform (e.g., they are managed as different tenants). The service provider publishes one or more management templates that each specify service provider permissions with respect to cloud resource deployments. Customers authorize the service provider to manage the customers' cloud resources by deploying a management template. When the management template is deployed by a particular customer, a cloud resource manager associates the customer's environment with the service provider's environment, along with the various permissions granted to the service provider for that customer's environment residing in a different cloud tenant from that of the service provider. When the service provider logs into his/her service provider environment, the access token granted to the service provider is provided to the cloud resource manager. The cloud resource manager obtains the identifier of the service provider from the access token and determines the customer environments (and permissions therefor) that are associated with the service provider. Subsequently, the cloud resource manager logically projects to the service provider's environment each of the customers' cloud resources that the service provider is permitted to manage (i.e., the cloud resource manager allows cross-tenant access). Such techniques enable the service provider to use a single secure token to sign-in to their own environment or interface to obtain access to all the assets managed thereby together in a single, aggregated and centralized view, allowing them to perform tasks or operations in a cross-tenant fashion) at scale without having to individually log in to each customer environment.
Today, service providers are challenged with the back-and-forth nature of discovery, negotiation and setup of least-privilege roles and authorization in the IT environments of the organizations they manage. Service providers require a consistent and sufficiently precise identity access approach that removes friction and enables them to perform operations on behalf of organizations they manage with precise access settings, thereby reducing the security, governance, and audit risk of both the service provider and the end-user organization, while meeting compliance and governance requirements of both the parties.
Traditionally, service providers obtain access to the environments of these organizations through multiple ways depending on the organization's unique identity requirements. One model for providing access is by the organization explicitly issuing user credentials for access to their environment for the service provider. Another model for providing access is by the organization adding the service provider directly as a user to the organization's IT environment with full access permissions (i.e., either all or nothing).
Both models have scale limitations and do not enable concurrent cross-environment (e.g., cross-tenant) management capabilities in the scenarios in which service providers manage the IT estates of multiple organizations or environments of multiple business functions. As service providers operate hundreds, if not thousands, of organizations' IT environments and need to perform common management scenarios (such as performance, security, monitoring or patch management) across these environments, performing these operations becomes very cumbersome, as these operations are performed one-by-one per IT environment.
The techniques described herein address the needs of the growing community of service providers. In this model, organizations can explicitly grant a service provider precise access to their cloud resources, such as servers, networks, Internet-of-Things (IoT) edge devices, etc., for specific roles or functions such as creating, updating, and deleting logical assets, or simply viewing and monitoring the health of the assets, the governance and compliance or security posture across all the organizations' IT assets. The resources of multiple organizations are logically projected into the environment of the managing service provider, which enables management-at-scale for service providers, from a single control and command interface, which simplifies and makes automatable both the access specifications and granting permissions aspect of authorization. With logical resource projection, a single managing user can access the assets of all IT environments of the organizations they manage via a single access token. In addition, service providers can take one action across all environments across all their end-customers, in a one-to-many fashion using that single token.
Traditionally, service providers needed to be explicitly added to each environment being managed, introducing complexity in managing credentials of these providers on an on-going basis. This approach introduces security risks in the scenario where a user leaving the service provider organization could continue to retain access to a managed organization's environment (with potential access to their data as well), if the service provider inadvertently neglects to remove access from one or more of the multiple environments they typically manage at a time. Furthermore, it requires logging into each of the environments at a time (i.e., the use of multiple tokens or sign-ins to access and perform on-going tasks in these environments). This also requires service providers to manage authentication credentials. As such, the complexity grows with growth of the IT environments being managed, thereby introducing complexity on operations for service providers on top of their core business skills. As described herein, the logical resource projection techniques provide the ability to perform operations, such as monitoring the health of servers or running an automation script to patch servers across all the environments through a single operation, across many resources of many end-users, instead of performing them individually in each environment.
Moreover, the logical projection techniques described herein enable an organization providing access to their environment to a service provider to have complete control of the explicit granular access granted for an asset scope and role type, such as read and/or write access. These permissions can be provided by a service provider via a management template published on a public marketplace for organizations to accept and start consuming. This provides service providers the advantage of expanding their market and essentially makes it a one-click operation for organizations to approve authorization, thereby eliminating cumbersome on-boarding processes that are conventionally used.
Cloud resource manager 102 comprises a collection (or “framework”) of software-based tools and/or services that can be invoked programmatically or by a user to deploy, update, or delete resources that are themselves utilized to support a cloud service deployment. As used herein the term “cloud service deployment” generally refers to any application or service that is deployed on or otherwise implemented by a cloud infrastructure and includes but is not limited to both Platform as a Service (PaaS) applications and Software as a Service (SaaS) applications. In
As further shown in
In cloud services platform 100, the resources that are used to support a given cloud service deployment are programmatically allocated or provided by a corresponding resource provider. The resource provider may also facilitate monitoring and management of a resource after it is allocated. For example, as will be described below, the resources may be enabled to be managed by a service provider. As used herein, the term “service provider” is used to broadly refer to any entity that is capable of managing cloud resources on behalf a customer which can be divisions or subsidiaries of a single organization residing on different cloud tenants. The service provider may comprise any number of personnel, systems and/or devices, each having particular roles and/or permissions with respect to cloud resources associated with particular customer. A service provider may be the same entity that provides cloud services platform 100, may be employed by or affiliated with such entity, or may be a different entity entirely (e.g., a third party) with respect thereto.
In the example shown in
Cloud resource manager 102 comprises several features that further facilitate the deployment, management and monitoring of resources for cloud service deployments. For example, as shown in
Cloud resource manager 102 also includes management tools 124. Management tools 124 may include a variety of user interfaces (UIs) that an administrator or other user may interact with to deploy, manage and monitor resources via cloud resource manager 102. For example, each of these UIs may be configured to interact with APIs 122 to invoke various features thereof. For example, such UIs may include but are not limited to a Web-based portal (e.g., Microsoft® Azure® Portal), a command line interface (CLI), an interactive command environment with scripting features (e.g., Microsoft® PowerShell®), and a development tool (e.g., Microsoft® Visual Studio®). As will be discussed below with respect to
Cloud resource manager 102 also includes resource group functionality 126. Resource group functionality 126 is configured to enable resources for a cloud service to be grouped together for the purposes of deployment, management and monitoring. A resource group can be defined to include all the resources allocated to a given cloud service deployment for a customer environment or only a subset of such resources that a user wishes to manage as a group. Examples of an environment include, but are not limited to, an account associated with a user with respect to cloud services platform 100, a subscription associated with a user with respect to cloud service platform, etc.
Cloud resource manager 102 still further includes role-based access control (RBAC) functionality 128. RBAC functionality 128 may be used to ensure that only persons assigned to certain roles within an organization are able to manage resources or resource groups associated with a given cloud service deployment for a customer environment. Thus, for example, only certain roles may be enabled to interact with cloud resource manager 102 for the purposes of adding, deleting, modifying, configuring, or managing certain resources or resource groups associated with a given cloud service deployment for a customer environment.
With respect to the foregoing description of cloud services platform 100, it is to be understood that each of cloud resource manager 102, resource provider A 104, resource provider B 106, and resource provider C 108 may represent software executing on a computer or on one or more interconnected computers. For example, and without limitation, each of these components may be running as software on a collection of networked physical or virtual machines within one or more data centers that comprise cloud services platform 100. Furthermore, with respect to cloud service deployment 110, cloud service 112 may comprise software and resource A 114, resource B 116 and resource C 118 may comprise computing resources used to support the execution of such software (e.g., a virtual machine, a storage account, a Web application, a database, or a virtual network).
As shown in
Template 2121 includes information necessary to deploy a vendor's cloud service offering within the customer's environment. For example, if the vendor's cloud service is a PaaS or SaaS application, template 2121 may declare that a certain number of virtual machines, storage accounts, databases, network connections, and/or the like, each having a specified configuration, must first be allocated within the customer's environment by customer services platform 100 before deploying the PaaS/SaaS application. Template 2121 may further declare that after such resources have been allocated, that certain specified code comprising the PaaS/SaaS application should be downloaded and installed on one or more of the resources (e.g., one or more virtual machines). Thus, templates may provide for a staged deployment of the cloud service, with certain deployment steps being dependent on the successful execution of certain previous deployment steps.
A template, such as template 2121 may also declare that certain information, such as resource deployment settings, cloud service deployment settings, or the like, should be obtained from the customer during the deployment process. Accordingly, a deployment service that is utilized to manage the deployment process may present a UI for obtaining such information from the customer as part of the deployment process. Content of the UI and/or the information to be obtained via the UI may be specified by the vendor via a file (or other suitable container) that may be published along with a template and packaged therewith.
As shown in the example of
In response to this initiation step, a marketplace service (which may comprise, for example, part of online marketplace 202) will deploy template 2121, thereby causing an instance of the vendor's cloud service and the resources utilized thereby to be deployed within customer environment 222. In
When a customer signs up for cloud services from a provider of cloud services platform 100, the customer is provided access to a customer environment (e.g., a customer account, a customer subscription, etc.). The customer environment may be associated with a tenant. A tenant is a dedicated and trusted instance of a cloud-based identity and access management service 226. An example of such a service is Microsoft® Azure® Active Directory, although this is only an example and is not intended to be limiting. Cloud-based identity and access management service 226 is configured to assist users of customer environment 222 to sign-in to customer environment 222 and access resources allocated for cloud service deployment 224. The customer is assigned an access token that is provided to the customer upon a successful login to their environment. The access token identifies the customer (e.g., identifies the customer's tenant identifier). When the customer attempts to access a particular resource group and/or resource, RBAC functionality 128 determines the roles of the customer and/or determines the resource group(s) and/or resource(s) to which the customer has access based on the access token. The access token may be a JSON web token (JWT), although this is only an example and is not intended to be limiting.
Thus, as can be seen from the foregoing description, cloud services deployment system 200 enables vendors of SaaS and PaaS applications to publish templates in an online marketplace (e.g., the Microsoft® Azure® Marketplace), and for customers to deploy such applications into their environments. This can facilitate the creation of an ecosystem of self-service multi-resource applications. Through the above-described publication of templates, vendors can share best-practice configurations of complex PaaS and SaaS offerings, and customers can provision them in minutes. While the foregoing enables customers to use applications that previously would have required application-specific expertise and time-consuming set up, cloud services deployment system 200 still does not address certain issues and shortcomings associated with the deployment of a vendor's cloud service by a customer.
The following Section will describe a collection of features, provided by a cloud resource manager (e.g., a modified version of cloud resource manager 102 of
Cloud resource manager 302 is substantially similar to cloud resource manager 102 as described above with respect to
The features of cloud resource manager 302 can be invoked programmatically or by a user to deploy, update, or delete resources that are themselves utilized to support a cloud service deployment. In
In an embodiment, cloud resource manager 302 may be configured to treat cloud service deployment 310 differently than cloud service deployment 110 as described above with respect to
Also, as will be discussed below in more detail with respect to
With respect to the foregoing description of cloud services platform 300, it is to be understood that each of cloud resource manager 302, resource provider A 304, resource provider B 306, and resource provider C 308 may represent software executing on a computer or on one or more interconnected computers. For example, and without limitation, each of these components may be running as software on a collection of networked physical or virtual machines within one or more data centers that comprise cloud services platform 300. Furthermore, with respect to appliance deployment 310, cloud service 312 may comprise software and resource A 314, resource B 316, resource C 318 and appliance management resource 320 may comprise computing resources used to support and/or manage the execution of such software.
As shown in
Other information may be packaged or otherwise included with the template to facilitate the management of resources for a particular customer. For example, such other information may also include identification information for the service provider (e.g., an identifications of the service provider's tenant), a listing of resources that the service provider is permitted to manage and/or the actions that service provider may take with respect to the customer environment and/or its resources. Examples of actions include, but are not limited to, creating a resource, updating a resource, reading a resource, and/or deleting a resource. Other actions include, but are not limited to, viewing and monitoring the health of resources, enabling/disabling security measures with respect to a resource, etc.
Management template(s) 4121-412n may comprise a default set of permissions for a given service provider and/or customer. Each of management template(s) 4121-412n may be modified (e.g., by the service provider and/or customer) to customize the permissions granted for the service provider before deployment thereof. In accordance with an embodiment, each of management template(s) 4121-412n may be modified to enable just-in-time access for the service provider, in which the service provider is enabled to perform an action with respect a particular resource allocated for the customer for a limited duration of time. The duration of time may be specified by the customer in the management template. Just-in-time access enables a more secure and restrictive access mechanism to meet compliance needs and avert security breaches.
Each of management template(s) 4121-412n may also specify security rules for allowing a service provider to access a customer's resources. For example, the customer can specify that a service provider is only allowed to access particular customer resources only after the service provider logs into his/her account using multi-factor authentication. This gives customers security controls that they can technically and automatically impose versus relying on manual or contractual enforcement.
As shown in the example of
As also shown in the example of
As further shown in
As also shown in
Cross-tenant RBAC 436 may be used to ensure that only persons assigned to certain roles within the service provider's organization are able to manage resources or resource groups associated with cloud service deployments for customer environments associated with different tenants. Thus, for example, only certain roles may be enabled to interact with cloud resource manager 410 for the purposes of adding, deleting, modifying, configuring, or managing certain resources or resource groups associated with a given cloud service deployment for a customer environment.
Cross-tenant RBAC 436 maintains an association between the service provider's tenant identifier and the permissions granted for each group and user of the service provider with respect to customer environments 422 and 424. Upon deployment of a management template 4121, cross-tenant RBAC 436 associates the permissions granted to the service provider with respect to customer environment 422 to the service provider's tenant identifier. Upon deployment of management template 412n, cross-tenant RBAC 436 associates the permissions granted to the service provider with respect to customer environment 424 to the service provider's tenant identifier.
When the service provider logs into service provider environment 430, identity and management service 432 provides the access token (that identifies the service provider's tenant) to cross-tenant RBAC 436 of cloud resource manager 410. Cross-tenant RBAC 436 determines the service provider's tenant identifier from the access token and retrieves the permissions associated with the service provider's tenant identifier. Cloud resource manager 410 logically projects the customer environments (and associated resource groups and/or resource(s)) into service provider environment 430 in accordance with the retrieved permissions.
As shown in
When a service provider desires to perform an action with respect to a resource being managed, the service provider may issue a request specifying the action. The request comprises the service provider's access token. The request is received by cross-tenant RBAC 436, which determines the service provider's tenant identifier from the access token. Using the service provider's tenant identifier, cross-tenant RBAC 436 determines the permissions granted therefor and determines whether the requested action is permissible by the service provider. If the action is permissible, the action is performed with respect to the resource. Otherwise, the action is denied. Any request received by cross-tenant RBAC 436 that does include the access token of the service provider that is authorized to manage customer environments 422 and/or 424 do not cause any action to be performed with respect to such customer environments 422 and/or 424.
Flowchart 500 of
In step 504, responsive to determining that the first customer of the cloud services platform has deployed the first template, an identifier of the service provider is associated with the first cloud resource, the associating indicating that the first customer has allowed the service provider to manage the first cloud resource. For example, with reference to
In step 506, a first request to perform an action with respect to the first cloud resource is received. The first request comprises an access token that comprises the identifier of the service provider. For example, with reference to
In accordance with an embodiment, the access token is provided to the service provider responsive to the service provider logging into a service provider environment associated with the service provider. For example, with reference to
In step 508, a determination is made as to whether the service provider identified by the access token is associated with the first service provider permissions. If a determination is made that the service provider is associated with the first service provider permissions, flow continues to step 510. Otherwise, flow continues to step 512. For example, with reference to
In step 510, responsive to determining that the service provider identified by the access token is associated with the first service provider permissions, the action is permitted to be completed with respect to the first cloud resource. For example, with reference to
In accordance with one or more embodiments, the service provider is provided a limited duration of time to perform the action, the limited duration of time being specified by the first customer via the first template. For example, with reference to
In step 512, the action is not permitted to be completed with respect to the first cloud resource. For example, with reference to
In accordance with one or more embodiments, the action is logged in an activity log that is accessible to both the service provider and the first customer. For example, with reference to
Flowchart 700 of
In step 704, responsive to determining that the second customer of the cloud services platform has deployed the second template, an identifier of the service provider is associated with the second cloud resource, the associating indicating that the second customer has allowed the service provider to manage the second cloud resource. For example, with reference to
In step 706, a second request to perform an action with respect to the second cloud resource is received. The second request comprises the access token that comprises the identifier of the service provider. For example, with reference to
In step 708, a determination is made as to whether the service provider identified by the access token is associated with the second service provider permissions. If a determination is made that the service provider is associated with the second service provider permissions, flow continues to step 510. Otherwise flow continues to step 712. For example, with reference to
In step 710, responsive to determining that the service provider identified by the access token is associated with the second service provider permissions, the action is permitted to be completed with respect to the second cloud resource. For example, with reference to
In step 712, the action is not permitted to be completed with respect to the second cloud resource. For example, with reference to
In accordance with one or more embodiments, the service provider is associated with a first tenant of the cloud services platform, the first customer is associated with a second tenant of the cloud services platform, and the second customer is associated with a third tenant of the cloud services platform. For example, with reference to
In accordance with one or more embodiments, the first template and the second template are published to an online marketplace by the service provider and are selectable for deployment by at least one of the first customer or the second customer. For example, with reference to
In accordance with one or more embodiment, at least one of the first cloud resource or the second cloud resource comprise one or more of a virtual machine, a Platform-as-a-Service (PaaS) application, a Software-as-a-Service (SaaS) application, a storage account, a Web application, a database, or a virtual network.
As demonstrated above, a single access token of a service provider is utilized to provide access to multiple customer environments. This advantageously enables the customer environments to be logically projected into the service provider's environment upon the service provider logging into his environment. Moreover, the service provider is enabled to manage various resources of multiple customer environments at scale.
For example,
Using UI screen 800, the service provider is enabled to select any of resources 816A, 816B, 820A, and/or 820B and perform one or more actions with respect thereto. The same action(s) may be performed at scale, across various resources allocated for different customer environments and tenants. For example, in the example shown in
Flowchart 900 of
In step 904, an input is received from the service provider via the user interface that causes a same action to be performed with respect to the first cloud resource and the second cloud resource. For example, with reference to
Referring again to
As shown in
System 1000 also has one or more of the following drives: a hard disk drive 1014 for reading from and writing to a hard disk, a magnetic disk drive 1016 for reading from or writing to a removable magnetic disk 1018, and an optical disk drive 1020 for reading from or writing to a removable optical disk 1022 such as a CD ROM, DVD ROM, BLU-RAY™ disk or other optical media. Hard disk drive 1014, magnetic disk drive 1016, and optical disk drive 1020 are connected to bus 1006 by a hard disk drive interface 1024, a magnetic disk drive interface 1026, and an optical drive interface 1028, respectively. The drives and their associated computer-readable media provide nonvolatile storage of computer-readable instructions, data structures, program modules and other data for the computer. Although a hard disk, a removable magnetic disk and a removable optical disk are described, other types of computer-readable memory devices and storage structures can be used to store data, such as flash memory cards, digital video disks, random access memories (RAMs), read only memories (ROM), and the like.
A number of program modules may be stored on the hard disk, magnetic disk, optical disk, ROM, or RAM. These program modules include an operating system 1030, one or more application programs 1032, other program modules 1034, and program data 1036. In accordance with various embodiments, the program modules may include computer program logic that is executable by processing unit 1002 to implement any of the embodiments described in Section II above and with respect to
A user may enter commands and information into system 1000 through input devices such as a keyboard 1038 and a pointing device 1040 (e.g., a mouse). Other input devices (not shown) may include a microphone, joystick, game controller, scanner, or the like. In one embodiment, a touch screen is provided in conjunction with a display 1044 to allow a user to provide user input via the application of a touch (as by a finger or stylus for example) to one or more points on the touch screen. These and other input devices are often connected to processing unit 1002 through a serial port interface 1042 that is coupled to bus 1006, but may be connected by other interfaces, such as a parallel port, game port, or a universal serial bus (USB). Such interfaces may be wired or wireless interfaces.
Display 1044 is connected to bus 1006 via an interface, such as a video adapter 1046. In addition to display 1044, system 1000 may include other peripheral output devices (not shown) such as speakers and printers.
System 1000 is connected to a network 1048 (e.g., a local area network or wide area network such as the Internet) through a network interface 1050, a modem 1052, or other suitable means for establishing communications over the network. Modem 1052, which may be internal or external, is connected to bus 1006 via serial port interface 1042.
As used herein, the terms “computer program medium,” “computer-readable medium,” and “computer-readable storage medium” are used to generally refer to memory devices or storage structures such as the hard disk associated with hard disk drive 1014, removable magnetic disk 1018, removable optical disk 1022, as well as other memory devices or storage structures such as flash memory cards, digital video disks, random access memories (RAMs), read only memories (ROM), and the like. Such computer-readable storage media are distinguished from and non-overlapping with communication media (do not include communication media). Communication media typically embodies computer-readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wireless media such as acoustic, RF, infrared and other wireless media. Embodiments are also directed to such communication media.
As noted above, computer programs and modules (including application programs 1032 and other program modules 1034) may be stored on the hard disk, magnetic disk, optical disk, ROM, or RAM. Such computer programs may also be received via network interface 1050, serial port interface 1042, or any other interface type. Such computer programs, when executed or loaded by an application, enable system 1000 to implement features of embodiments discussed herein. Accordingly, such computer programs represent controllers of the system 1000.
Embodiments are also directed to computer program products comprising software stored on any computer useable medium. Such software, when executed in one or more data processing devices, causes a data processing device(s) to operate as described herein. Embodiments may employ any computer-useable or computer-readable medium, known now or in the future. Examples of computer-readable mediums include, but are not limited to memory devices and storage structures such as RAM, hard drives, floppy disks, CD ROMs, DVD ROMs, zip disks, tapes, magnetic storage devices, optical storage devices, MEMs, nanotechnology-based storage devices, and the like.
A method implemented by a cloud services platform is described herein. The method includes: determining that a first customer of the cloud services platform has deployed a first template published by a service provider to an environment of the first customer, the first template specifying first service provider permissions for a first cloud resource allocated to the environment of the first customer; responsive to determining that the first customer of the cloud services platform has deployed the first template, associating an identifier of the service provider with the first cloud resource, the associating indicating that the first customer has allowed the service provider to manage the first cloud resource; receiving a first request to perform an action with respect to the first cloud resource, the first request comprising an access token that comprises the identifier of the service provider; determining whether the service provider identified by the access token is associated with the first service provider permissions; and responsive to determining that the service provider identified by the access token is associated with the first service provider permissions, permitting the action to be completed with respect to the first cloud resource.
In one embodiment of the foregoing method, the method further comprises: determining that a second customer of the cloud services platform has deployed a second template published by the service provider to an environment of the second customer, the second template specifying second service provider permissions for a second cloud resource allocated to the environment of the second customer; responsive to determining that the second customer of the cloud services platform has deployed the second template, associating the identifier of the service provider with the second cloud resource, the associating indicating that the second customer has allowed the service provider to manage the second cloud resource; receiving a second request to perform an action with respect to the second cloud resource, the second request comprising the access token that comprises the identifier of the service provider; determining whether the service provider identified by the access token is associated with the second service provider permissions; and responsive to determining that the service provider identified by the access token is associated with the second service provider permissions, permitting the action to be completed with respect to the second cloud resource.
In another embodiment of the foregoing method, the service provider is associated with a first tenant of the cloud services platform, wherein the first customer is associated with a second tenant of the cloud services platform, and wherein the second customer is associated with a third tenant of the cloud services platform.
In a further embodiment of the foregoing method, the first template and the second template are published to an online marketplace by the service provider and are selectable for deployment by at least one of the first customer or the second customer
In yet another embodiment of the foregoing method, the method further comprises: providing a user interface via which the service provider is enabled to manage the first cloud resource allocated to the environment of the first customer and the second cloud resource allocated to the environment of the second customer; and receiving an input from the service provider via the user interface that causes a same action to be performed with respect to the first cloud resource and the second cloud resource.
In still another embodiment of the foregoing method, at least the first cloud resource or the second cloud resource comprises one or more of: a virtual machine; a Platform-as-a-Service (PaaS) application; a Software-as-a-Service (SaaS) application; a storage account; a Web application, a database; or a virtual network.
In a further embodiment of the foregoing method, the method further comprises: providing the service provider a limited duration of time to perform the action, the limited duration of time being specified by the first customer via the first template.
In still another embodiment of the foregoing method, the access token is provided to the service provider responsive to the service provider logging into an environment associated with the service provider.
In a further embodiment of the foregoing method, the method further comprises: logging the action in an activity log that is accessible to both the service provider and the first customer.
A system comprising at least one processing circuit and at least one memory that stores program code configured to be executed by the at least one processor circuit is described herein. The program code comprises: a cloud resource manager of a cloud services platform configured to: determine that a first customer of the cloud services platform has deployed a first template published by a service provider to an environment of the first customer, the first template specifying first service provider permissions for a first cloud resource allocated to the environment of the first customer; responsive to determining that the first customer of the cloud services platform has deployed the first template, associate an identifier of the service provider with the first cloud resource, the association indicating that the first customer has allowed the service provider to manage the first cloud resource; receive a first request to perform an action with respect to the first cloud resource, the first request comprising an access token that comprises the identifier of the service provider; determine whether the service provider identified by the access token is associated with the first service provider permissions; and responsive to determining that the service provider identified by the access token is associated with the first service provider permissions, permit the action to be completed with respect to the first cloud resource.
In one embodiment of the foregoing system, the cloud resource manager is further configured to: determine that a second customer of the cloud services platform has deployed a second template published by the service provider to an environment of the second customer, the second template specifying second service provider permissions for a second cloud resource allocated to the environment of the second customer; responsive to determining that the second customer of the cloud services platform has deployed the second template, associate the identifier of the service provider with the second cloud resource, the association indicating that the second customer has allowed the service provider to manage the second cloud resource; receive a second request to perform an action with respect to the second cloud resource, the second request comprising the access token that comprises the identifier of the service provider; determine whether the service provider identified by the access token is associated with the second service provider permissions; and responsive to determining that the service provider identified by the access token is associated with the second service provider permissions, permit the action to be completed with respect to the second cloud resource.
In another embodiment of the foregoing system, the service provider is associated with a first tenant of the cloud services platform, wherein the first customer is associated with a second tenant of the cloud services platform, and wherein the second customer is associated with a third tenant of the cloud services platform.
In yet another embodiment of the foregoing system, the first template and the second template are published to an online marketplace by the service provider and are selectable for deployment by at least one of the first customer or the second customer.
In still another embodiment of the foregoing system, the cloud resource manager is further configured to provide a user interface via which the service provider is enabled to manage the first cloud resource allocated to the environment of the first customer and the second cloud resource allocated to the environment of the second customer; and receive an input from the service provider via the user interface that causes a same action to be performed with respect to the first cloud resource and the second cloud resource.
In a further embodiment of the foregoing system, at least the first cloud resource or the second cloud resource comprises one or more of: a virtual machine; a Platform-as-a-Service (PaaS) application; a Software-as-a-Service (SaaS) application; a storage account; a Web application, a database; or a virtual network.
In still another embodiment of the foregoing system, the cloud resource manager is further configured to: provide the service provider a limited duration of time to perform the action, the limited duration of time being specified by the first customer via the first template.
In a further embodiment of the foregoing system, the access token is provided to the service provider responsive to the service provider logging into an environment associated with the service provider.
In still another embodiment of the foregoing system, the cloud resource manager is further configured to: log the action in an activity log that is accessible to both the service provider and the first customer.
A computer-implemented system for managing cloud resources of a cloud services platform is further described herein. The computer-implemented system comprises: a first user interface (UI) that enables a first customer to deploy a first template published by a service provider, the deployment of the first template causing a first cloud resource deployed to an environment of the first customer to be manageable by the service provider; a second UI that enables a second customer to deploy a second template published by the service provider, the deployment of the second template causing a second cloud resource deployed to an environment of the second customer to be manageable by the service provider; and a third UI that enables the service provider to take actions with respect to both the first cloud resource and the second cloud resource via a single input.
In one embodiment of the foregoing computer-implemented, the actions comprise one or more of: updating the first cloud resource and the second cloud resource; reading the first cloud resource and the second cloud resource; deleting the first cloud resource and the second cloud resource; performing a security-related task with respect to the first cloud resource and the second cloud resource; or performing a maintenance-related task with respect to the first cloud resource and the second cloud resource.
While various embodiments have been described above, it should be understood that they have been presented by way of example only, and not limitation. It will be understood by those skilled in the relevant art(s) that various changes in form and details may be made therein without departing from the spirit and scope of the described embodiments as defined in the appended claims. Accordingly, the breadth and scope of the present embodiments should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents.
Number | Date | Country | Kind |
---|---|---|---|
202041018581 | Apr 2020 | IN | national |