Benefit is claimed under 35 U.S.C. 119(a)-(d) to Foreign Application Serial No. 201741024642 filed in India entitled “ROLE-BASED ACCESS CONTROL WITH FEATURE-LEVEL GRANULARITY”, on Jul. 12, 2017, by NICIRA, INC., which is herein incorporated in its entirety by reference for all purposes.
Unless otherwise indicated herein, the approaches described in this section are not admitted to be prior art by inclusion in this section.
In computer system security, authentication refers generally to the process of validating a user's identity based on the user's credentials (e.g., username and password). After authentication is performed, access control is used as an approach to restrict system access to authenticated users. Role-based access control is a particular approach where roles are created for various job functions within an organization. A user may be assigned with one or more roles, through which the user acquires permissions to perform certain system operations. Since users are not assigned permissions directly, but only acquire them through their role or roles, management of individual rights becomes a matter of appropriate role assignment. However, in practice, conventional implementation of role-based access control may lack flexibility.
In the following detailed description, reference is made to the accompanying drawings, which form a part hereof. In the drawings, similar symbols typically identify similar components, unless context dictates otherwise. The illustrative embodiments described in the detailed description, drawings, and claims are not meant to be limiting. Other embodiments may be utilized, and other changes may be made, without departing from the spirit or scope of the subject matter presented here. It will be readily understood that the aspects of the present disclosure, as generally described herein, and illustrated in the drawings, can be arranged, substituted, combined, and designed in a wide variety of different configurations, all of which are explicitly contemplated herein.
Challenges relating to access control will now be explained in more detail using
It should be understood that, depending on the desired implementation, network environment 100 may include additional and/or alternative components than that shown in
In the example in
Hypervisor 114 maintains a mapping between underlying hardware 112 and virtual resources allocated to virtual machines 130, 140. For example, hardware 112 includes processor(s) 120, physical memory 122 (e.g., random access memory (RAM)), physical network interface controller(s) or NIC(s) 124 to provide access to physical network 102, and storage disk(s) 128 (e.g., solid state drive, hard disk drive) accessible via storage controller 126, etc. In practice, hypervisor 114 may also be a “type 2” or hosted hypervisor that runs on top of a conventional operating system (OS) on host 110. Hypervisor 114 also implements virtual switch 116 and logical distributed router (DR) instance 118 to handle egress packets from, and ingress packets to, virtual machine 130/140. Depending on the desired implementation, virtual switch 116 and DR instance 118 may be configured to implement logical switches (e.g., using a forwarding table) and/or logical routers (e.g., using a routing table) that each span multiple hosts 110.
VM1130 and VM2140 each represent a software implementation of a physical machine. Virtual resources are allocated to virtual machine 130/140 to support guest OS 134/144, and application(s) 132/142, etc. Corresponding to hardware 112, the virtual resources may include virtual CPU, virtual memory, virtual disk, virtual network interface controller (vNIC), etc. Hardware resources may be emulated using virtual machine monitor (VMM) 136/146 implemented by hypervisor 114. In practice, VMM 136/146 may be considered as part of virtual machine 130/140, or alternatively, separated from the virtual machine.
Although examples of the present disclosure refer to virtual machines, it should be understood that a “virtual machine” running on host 110A is merely one example of a “virtualized computing instance” or “workload.” A virtualized computing instance may represent an addressable data compute node or isolated user space instance. In practice, any suitable technology may be used to provide isolated user space instances, not just hardware virtualization. Other virtualized computing instances may include containers (e.g., running within a VM or on top of a host OS without the need for a hypervisor or separate OS or implemented as an OS level virtualization), virtual private servers, client computers, etc. Such container technology is available from, among others, Docker, Inc. The virtual machines may also be complete computational environments, containing virtual equivalents of the hardware and software components of a physical computing system.
Through software-defined networking (SDN), benefits similar to server virtualization may be derived for networking services. SDN manager 150 and SDN controller 160 are example network management entities that facilitate implementation of various virtualization technologies (e.g., logical overlay networks, logical switches, logical routers, etc.) in network environment 100. One example of an SDN controller is the NSX controller component of VMware NSX® (available from VMware, Inc.) that operates on a central control plane. SDN controller 160 may be a member of a controller cluster (not shown) that is configurable using SDN manager 150 operating on a management plane. Network management entity 150/160 may be implemented using physical machine(s), virtual machine(s), or both. SDN controller 160 implements central control plane module 162 to interact with local control plane agent 119 on host 110 for collecting and disseminating control information, etc.
In the example in
SDN manager 150 also performs access control (e.g., using access control module 156) to restrict access to web application 152. Conventionally, role-based access control may be implemented to assign user 180/182 with a set of permissions through role assignment. For example, user 180 may be assigned with a role that grants user 180 with a read permission across all features 154 of web application 152. Another user 182 may be assigned a different role that grants a read-write permission to access each and every feature 154 of web application 152. In practice, however, this lacks flexibility because the read permission assigned to user 180 may be inadequate, and a higher permission is required for some of features 154.
Role-Based Access Control with Feature-Level Granularity
According to examples of the present disclosure, role-based access control may be implemented with feature-level granularity by associating a role with a set of feature-level permissions. In more detail,
Throughout the present disclosure, various examples will be explained using SDN manager 150 as an example “computer system” and device 170/172 as an example “client device.” In this case, example process 200 may be implemented using SDN manager 150, such as using access control module 156, etc. Although
At 210 in
The features may associate the role with respective feature-level permissions. For example, the first feature may associate role=‘network operations’ with a first feature-level permission=‘read.’ In contrast, the second feature may associate the same role with a different second feature-level permission=‘execute.’ This way, instead of necessitating the role to have the same permission (e.g., read only) across different features, the same role may be assigned with different feature-level permissions for accessing different features. This provides greater control and flexibility over which roles (and therefore users) are allowed to access which features 154 of web application 152, and the level of access allowed.
As used herein, the term “role” may refer generally to a job function (or any suitable title) that describes the authority and responsibility conferred on a user assigned with the role within an organization, etc. The term “user” may refer to a human user or non-human user (e.g., bot) who interacts with a computer system through a client device. The term “feature” may refer generally to a collection of one or more functionalities, routines, operations, services, actions, processes, etc. In practice, a feature may be implemented using a set of APIs. Each API may define a set of rule(s) and specification(s) to perform an action or operation associated with a feature.
The term “feature-level permission” may refer generally to a particular mode of access to, or type of interaction a user may have with, a particular feature 154 of web application 152. In practice, any suitable permission may be configured, such as create, read, update and delete (CRUD), execute (E), read (R), none (N), etc. For example, ‘CRUD’ grants full access, while ‘NI’ grants no access. Depending on the desired implementation, permissions may be defined based on a “permission hierarchy” that orders the permissions according to priority or access level, such as CRUD>E>R>N. This way, assigning a higher level of permission (e.g., ‘E’) automatically assigns a lower level of permission (e.g., ‘R’), i.e., without having to assign the permissions separately. In practice, write (W) permission may be included in the hierarchy, such as before execute.
In the following, various examples will be discussed using
Detailed Process
At 305 in
At 310 in
At 315 in
Similarly, different permissions may be required to invoke different APIs associated with the second feature=troubleshooting (see 420). For example, ‘traceflow( )’ requires permission=‘CRUD’ (see 426) to inject of a packet at a virtual port associated with virtual machine 130/140 for identifying a path the packet traverses via various virtual entities (e.g., logical switches, logical routers, etc.). In contrast, ‘download_log( )’ only requires permission=‘R’ (see 428) to download log information.
At 320 in
At 325 in
At 330 in
At 340 to 375 in
In a first example, user=X (see 430) sends a request to invoke API=‘connect( )’ (see 416). During access control, it is determined that the API is associated with first feature=‘networking’ (see 410) and user=X is assigned with multiple roles. Since first feature=‘networking’ associates first role=‘enterprise administrator’ with feature-level permission=‘CRUD’ (see 412) and second role=‘network operations’ with ‘R’ (see 414), it is determined that the user's (highest) feature-level permission=‘CRUD’ (i.e., ‘R’<‘CRUD’). Further, since the invocation of API=‘connect( )’ requires permission=‘CRUD’ (see 416), the API call is allowed (see 432). Similarly, the invocation of ‘disconnect( )’ and ‘download_table( )’ will be allowed (see 434 and 436).
In a second example, user=Y (see 440) also sends a request to invoke API=‘connect( )’ (see 416) associated with first feature=‘networking’ (see 410). The user is assigned with role=‘network operations.’ Since first feature=‘networking’ associates role=‘network operations’ with feature-level permission=‘R’ (see 414) that is less than the required permission=‘CRUD’ (see 416), the invocation of ‘connect( )’ is denied (see 442). For the same reason, the invocation of ‘disconnect( )’ will be denied (see 444). In contrast, the invocation of ‘download_table( )’ will be allowed because of its lower required permission=‘R’ (see 446).
In a third example, user=X (see 450) sends a request to invoke API=‘traceflow( )’ (see 426). Since second feature=‘troubleshooting’ (see 420) associates role=‘enterprise administrator’ with feature-level permission=‘CRUD’ (see 422) that satisfies the required permission=‘CRUD’ (see 426), the API invocation is allowed (see 452). For the same reason, user=X will be allowed to invoke API=‘download_log( ),’ which has a lower required permission=‘R’ (see 454).
In a fourth example, user=Y (see 460) sends a request to invoke API=‘download_log( )’ (see 428). Since second feature=‘troubleshooting’ (see 420) associates role=‘network operations’ with feature-level permission=‘E’ (see 424) that is greater than the required permission=‘R’ (see 428), the API invocation is allowed (see 464). In contrast, the same role does not allow the user to invoke API=‘traceflow( )’ with the required permission=‘CRUD’ (see 462), i.e., ‘E’<‘CRUD’.
From the above examples, it can be seen that feature-level permissions may be (indirectly) assigned to a role through respective features of web application 152. In practice, the configuration according to blocks 305-320 may be performed based on configuration information from any suitable user(s), such as a developer of web application 152, enterprise administrator, etc. SDN manager 150 may receive the configuration information via any suitable interface, such as graphical UI, CLI, API, etc. The configuration information may be stored in any suitable format, such as eXtensible Markup Language (XML), etc. For example, a feature-level permission may be defined as follows: <feature name=“networking”><role name=“enterprise administrator”><permission>CRUD</permission></role></feature>.
Some additional examples are shown in
To facilitate role assignment in practice, multiple roles may be selected via an interface provided by SDN manager 150 to compare their respective feature-level permission sets. For example, first set=(CRUD, CRUD, CRUD, CRUD) associated with first role=‘network administrator’ (see 510) may be compared against second set=(CRUD, CRUD, CRUD, R) associated with second role=‘network engineer’ (see 514). For each feature, a set of APIs invocable by each role may also be presented for comparison purposes. New custom roles that have a desired set of feature-level permissions may also be created.
Permission Object
In the example implementation in
In more detail,
At 605 and 610 in
At 625 in
At 640 and 645, a permission object specifying the set of feature-level permissions is generated and sent to client device 170/172. In practice, the permission object may also be fetched by client device 170/172 using a pull approach, such as via an API call that specifies the corresponding user's role.
At 650 and 655, the permission object generated and sent by SDN manager 150 causes client device 170/172 to perform access control based on the set of feature-level permissions. For example, an invocation of an API through a UI or CLI may be allowed or denied, or a UI element associated with the API may be enabled or disabled on the UI. Examples of UI elements include windows, buttons, menus, text boxes, lists, application icons, menu bars, scroll bars, title bars, status bars, size grips, toolbars, dropdown lists, etc. A UI element that is disabled may be hidden or grey-out on a graphical UI. Some examples will be described below using
In a first example, user=Z1 is assigned with role=‘security engineer’ (see 516 in
In a second example, user=Z2 is associated with role=‘auditor.’ Based on the user's role (see 519 in
Computer System
The above examples can be implemented by hardware (including hardware logic circuitry), software or firmware or a combination thereof.
Processor 710 is to perform processes described herein with reference to the drawings. Computer-readable storage medium 720 may store any suitable data 722, such as configuration information relating to roles, features, feature-level permissions, APIs and corresponding required permissions, etc. Computer-readable storage medium 720 may further store computer-readable instructions 724 (“program code”) that, in response to execution by processor 710, cause processor 710 to perform processes described herein with reference to
The techniques introduced above can be implemented in special-purpose hardwired circuitry, in software and/or firmware in conjunction with programmable circuitry, or in a combination thereof. Special-purpose hardwired circuitry may be in the form of, for example, one or more application-specific integrated circuits (ASICs), programmable logic devices (PLDs), field-programmable gate arrays (FPGAs), and others. The term ‘processor’ is to be interpreted broadly to include a processing unit, ASIC, logic unit, or programmable gate array etc.
The foregoing detailed description has set forth various embodiments of the devices and/or processes via the use of block diagrams, flowcharts, and/or examples. Insofar as such block diagrams, flowcharts, and/or examples contain one or more functions and/or operations, it will be understood by those within the art that each function and/or operation within such block diagrams, flowcharts, or examples can be implemented, individually and/or collectively, by a wide range of hardware, software, firmware, or any combination thereof.
Those skilled in the art will recognize that some aspects of the embodiments disclosed herein, in whole or in part, can be equivalently implemented in integrated circuits, as one or more computer programs running on one or more computers (e.g., as one or more programs running on one or more computer systems), as one or more programs running on one or more processors (e.g., as one or more programs running on one or more microprocessors), as firmware, or as virtually any combination thereof, and that designing the circuitry and/or writing the code for the software and or firmware would be well within the skill of one of skill in the art in light of this disclosure.
Software and/or to implement the techniques introduced here may be stored on a non-transitory computer-readable storage medium and may be executed by one or more general-purpose or special-purpose programmable microprocessors. A “computer-readable storage medium”, as the term is used herein, includes any mechanism that provides (i.e., stores and/or transmits) information in a form accessible by a machine (e.g., a computer, network device, personal digital assistant (PDA), mobile device, manufacturing tool, any device with a set of one or more processors, etc.). A computer-readable storage medium may include recordable/non recordable media (e.g., read-only memory (ROM), random access memory (RAM), magnetic disk or optical storage media, flash memory devices, etc.).
The drawings are only illustrations of an example, wherein the units or procedure shown in the drawings are not necessarily essential for implementing the present disclosure. Those skilled in the art will understand that the units in the device in the examples can be arranged in the device in the examples as described, or can be alternatively located in one or more devices different from that in the examples. The units in the examples described can be combined into one module or further divided into a plurality of sub-units.
Number | Date | Country | Kind |
---|---|---|---|
201741024642 | Jul 2017 | IN | national |