Example implementations can involve a system, which can involve a server configured to distribute role decision condition expressions created based on user input to one or more storage devices; and the one or more storage devices, which can involve a processor, configured to, for receipt of a request, determine user identification information, request source environment information and requested contents from the request; determine a role from the role decision condition expressions based on the user identification information and request source environment information; and determine whether or not the request can be executed based on the role.
|
8. A method for a system comprising a server configured to distribute role decision condition expressions created based on user input to one or more storage devices; and
the one or more storage devices, the method comprising:
for receipt of a request:
determining user identification information, request source environment information and requested contents from the request;
determining a role from the role decision condition expressions based on the user identification information and the request source environment information;
determining whether or not the request can be executed based on the role, and
for an update to storage contract information of the one or more storage devices or to an application programming interface (API) list, regenerating and redistributing the role decision condition expressions to the one or more storage devices from the server to regenerate a conditional judgment file and roles when the storage contract information or device API information is updated to enable storage administrators to control access by the user identification information and by the request source environment information.
1. A system, comprising:
a server configured to distribute role decision condition expressions created based on user input to one or more storage devices; and
the one or more storage devices, each of the one or more storage devices comprising:
a processor, configured to, for receipt of a request:
determine user identification information, request source environment information and requested contents from the request;
determine a role from the role decision condition expressions based on the user identification information and the request source environment information; and
determine whether or not the request can be executed based on the role,
wherein, for an update to storage contract information of the one or more storage devices or to an application programming interface (API) list, the server is configured to regenerate and redistribute the role decision condition expressions to the one or more storage devices to regenerate a conditional judgment file and roles when the storage contract information or device API information is updated to enable storage administrators to control access by the user identification information and by request source environment information.
2. The system of
wherein the processor is configured to:
reference the label mapping table to determine the labels from the request source environment information;
determine the role from the role decision condition expressions based on the user identification information and the labels.
3. The system of
4. The system of
not assign the new storage device to the storage domain group; and
for receipt of a configuration to assign the new storage device to the storage domain group, distribute the role decision condition expressions to the new storage device based on the user input.
5. The system of
a memory configured to manage an application table; and
another processor configured to:
access one or more applications based on the application table to generates user list for the one or more applications;
access the one or more storage devices to generate the API list; and
generate the role condition distribution expressions based on the user list and the API list.
6. The system of
wherein the processor is configured to determine whether or not the request can be executed based on the role by:
determining the user from the user identification information and the source environment from the source environment information;
executing the logic expressions to determine a corresponding one of the role names from a combination of the determined user and determined source environment; and
referencing the corresponding one of the role names in role configuration information to determine permissions for the request.
7. The system of
9. The method of
distributing, from the server, a label mapping table which maps the request source environment information to labels;
referencing the label mapping table to determine the labels from the request source environment information; and
determining the role from the role decision condition expressions based on the user identification information and the labels.
10. The method of
managing, by the server, a storage domain group table and distributing the role decision condition expressions which belongs to a storage domain group to only ones of the one or more storage devices belonging to the storage domain group.
11. The method of
for installation of a new storage device to the one or more storage devices:
not assigning, by the server, the new storage device to the storage domain group; and
for receipt of a configuration to assign the new storage device to the storage domain group, distributing, by the server, the role decision condition expressions to the new storage device based on the user input.
12. The method of
accessing, by the server, one or more applications based on the application table to generates user list for the one or more applications;
accessing, by the server, the one or more storage devices to generate the API list; and
generating the role condition distribution expressions based on the user list and the API list.
13. The method of
wherein the method further comprises determining whether or not the request can be executed based on the role by:
determining the user from the user identification information and the source environment from the source environment information;
executing the logic expressions to determine a corresponding one of the role names from a combination of the determined user and determined source environment; and
referencing the corresponding one of the role names in role configuration information to determine permissions for the request.
14. The method of
|
The present disclosure is generally directed to Information Technology (IT) systems, and more specifically, for security management for storage device application programming interfaces (API) on storage devices.
IT systems can include storage devices and applications. Applications run on servers. Servers are connected to storage devices. Storage devices have API to facilitate remote management. API request can involve operation requests such as data creation or data deletion in the storage devices.
In the related art, the storage device API is requested not by humans, but rather software-like applications on behalf of humans. Due to frequent API access, security has become more important. For example, spoofing attack may destroy data in storage devices by calling an API improperly, as illustrated in the left portion of
For security, both authentication and authorization are required. Authentication is used to identify the requester of the API. For example, some authentication system enforces users to use a special token which is issued for each requester when accessing an API, as illustrated in the center portion of
Storage administrators managing responsibility over such IT systems need to maintain the security level with appropriate configurations for authentication and authorization. They also need to keep the IT system updated, even when delivering timely authorization configurations without any impact on the user.
In the related art, there are systems and methods that involve providing authorization and authentication in a cloud for a user of a storage array. In such implementations, the authentication server is an independent service from storage devices. User request access can be transferred toward the authentication server. Authentication server can publish tokens including authorization information.
Aspects of the present disclosure can involve a system, which can involve a server configured to distribute role decision condition expressions created based on user input to one or more storage devices; and the one or more storage devices, each of the one or more storage devices involving a processor, configured to, for receipt of a request, determine user identification information, request source environment information and requested contents from the request; determine a role from the role decision condition expressions based on the user identification information and request source environment information; and determine whether or not the request can be executed based on the role.
Aspects of the present disclosure can involve a system, which can involve a server configured to distribute role decision condition expressions created based on user input to one or more storage devices; and the one or more storage devices, each of the one or more storage devices involving, for receipt of a request, means for determining user identification information, request source environment information and requested contents from the request; means for determining a role from the role decision condition expressions based on the user identification information and request source environment information; and means for determining whether or not the request can be executed based on the role.
Aspects of the present disclosure can involve a method for a system having a server configured to distribute role decision condition expressions created based on user input to one or more storage devices; and the one or more storage devices, the method involving for receipt of a request, determining user identification information, request source environment information and requested contents from the request; determining a role from the role decision condition expressions based on the user identification information and request source environment information; and determining whether or not the request can be executed based on the role.
The following detailed description provides details of the figures and example implementations of the present application. Reference numerals and descriptions of redundant elements between figures are omitted for clarity. Terms used throughout the description are provided as examples and are not intended to be limiting. For example, the use of the term “automatic” may involve fully automatic or semi-automatic implementations involving user or administrator control over certain aspects of the implementation, depending on the desired implementation of one of ordinary skill in the art practicing implementations of the present application. Selection can be conducted by a user through a user interface or other input means, or can be implemented through a desired algorithm. Example implementations as described herein can be utilized either singularly or in combination and the functionality of the example implementations can be implemented through any means according to the desired implementations.
Related art implementations assume that each user only has one associated authorization information. Authorization checks thereby only require user identification (ID), and it does not depend on the environment (servers) or timing.
However, such related art implementations encounter problems in systems for which authorization depends not only on user ID, but environments and timing as well. An IT system frequently has multiple environments as illustrated in
These environments must have different authorization settings. User A shown in example execution 200 of
When an application of user A accesses a storage device device1 from the production environment, device1 returns an OK for the authorization. On the other hand, when another application of user A accesses the storage device API from the test environment, device1 returns a rejection in response to the same request. The kind of authorization often comes from business requirements in order to save the critical data.
Further these authorization settings can change dynamically. For example, in the example execution 201, suppose the storage administrator wants User B in
Related art authorization implementations have the following issues. Firstly, they cannot handle multiple environments requiring different authorization information. The authorization method in prior art has the following two issues. Related art techniques applied to
When the storage admin wants User B in example execution 201 of
The example implementation described herein involves a role decision system to address the above issues. In this system, storage devices have a role decision unit that can receive the user identifier and source environment information as input, interpret condition expressions, and decide a role based on this information. With this role decision condition expression, the storage administrator can set up different authorization for different environments. Further, the systems described herein involves a distribution server that distributes said condition expressions to many storage devices. With this distribution server, the storage administrator can change authorization and reflect it to many storage devices in timely manner.
The role decision system includes authorization policy distribution server 300, storage device 301, and servers 302. Authorization policy distribution server 300 and storage devices 301 can communicate each other on network 398. Storage devices 301 and servers 302 can communicate each other on network 399. Authorization policy distribution server 300 has distribution server user interface 303, storage domain table 304, domain condition tables 305, role decision condition expressions 306, role configuration 307, label mapping tables 308 and condition distribution function 309. Server 302 includes request sending unit 310. Storage devices 301 include request receiving unit 311, role decision unit 312, role enforcement unit 313, domain condition table 315, role decision condition expressions 316, role configurations 317, and label mapping table 318. Domain condition tables 315, role decision condition expressions 316, role configurations 317, and label mapping table 318 are respectively subset of domain condition tables 305, role decision condition expressions 306, role configurations 307, and label mapping table 308 in authorization policy distribution server 300.
Storage administrator terminal 319, authorization policy update server 320, storage device management service 323, and subscription management service 325 are connected to authorization policy distribution server 300 and storage devices 301 and can communicate with each other. Authorization policy update server 320 includes update check user interface (UI) 321 and role update unit 322. Storage device management service 323 includes storage device application programming interface (API) list 324. Subscription management service 325 includes subscription list 326. In this system, storage administrator can use access to authorization policy distribution server 300 and authorization policy update server 320 via storage administrator terminal 319. Further each user can access servers 302 via user terminals 327.
Role decision unit 312 can be located outside management module of storage device 301. In this case, 312 role decision unit can connect to network 399, and each component in storage device 301 can communicate with role decision unit 312 over the network 399.
In step 413 a management module in storage device 301 receives the API request from server 302. Request receiving unit 311 in the management module parses the API request and gets the user ID and requests source environment information.
In step 414 role decision unit 312 in the management module loads and interprets role decision condition expression 316 by substituting the user ID and the request source environment information. As a result, role decision unit 312 gets a role name. For example, when user ID is “u1” and request source environment information is “xxx.yyy . . . ”, role decision condition expression “role1or2” can be interpreted that a result role is going to be “RoleWeak”. Then, role decision unit 312 gets “RoleWeak” as a result (details described in
In step 415 based on the decided role name, role enforcement unit 313 judges whether the original API request sent by user 327 should be executed or not based on role configuration 317. Each of role configuration 317 describes permitted actions and target resources. If the role configuration says that “RoleWeak” is accessible to requested resource in storage device, the response will be “Result==success”. Otherwise, the response will be “Result==error”.
Parsed information 402 is created by request receiving unit 311 in storage device 301. Parsed information 402 contains user ID and request source information originally attached to the request 401. Then role decision unit 312 use parsed information 402 and identifies a condition expression name in user-condition table 315. 315 Domain condition table 305 includes columns such as user ID and condition expression name. Using this condition expression name, role decision unit 312 loads a specified role decision condition expression 316. Role decision unit 312 interprets this content using the previously parsed user ID and request source information and gets the result of the role 403. For example, role decision condition expression 316 can indicate that if user ID is “u1” and the request source information is “Test”, then this storage device should treat the user as a role named “Role1”. Result of the role 403 can include one or more role names.
Using the result of the role 403, role enforcement unit 313 judges whether the original request can be done or not. Result of the role 403 points to role configuration 317. Role configurations 317 can describe what actions are permitted for the role and the permitted scope of the actions. For example, role enforcement unit 313 checks whether the original request such like “delete volume” can be permitted for role “Role1”. If this result is true, role enforcement unit 313 can execute the original request to internal storage device functions to accomplish the request. Finally, role enforcement unit 313 creates an API response describing whether the API was done or not and return it to request sending unit 310.
Role decision unit 312 can use label mapping table 318 to identify labels which is assigned to the request source information. For example, a request source can be assigned a label “act-stb: standby”.
Storage domain table 304 includes columns for storage domain group name, devices, and domain conditions. Storage domain group is a group including multiple storage devices. So the column of devices contains an array of storage device ID. The column of domain conditions contains an ID specifying one of the role decision condition expressions 316.
In this implementation, role configuration 307 and role decision condition expressions 316 can describe a rule utilizing additional request message information other than request source environment information. For example, role decision condition expressions 316 can use target tenant information (“Tenant”, “Namespace” etc). It is supposed that one storage device can keep multiple tenants dedicated for different business usages from users 327. User 327 can create a resource such as a volume in a tenant “tenantA” inside a device “device1” and, at the same time, this user can create another resource in a different tenant “tenantB” in the same device “device1”. So user 327 can specify the target tenant in API request 401. If so, request receiving unit 311 can parse the request and get the target tenant name. Then role decision unit 312 can use this target tenant name during interpreting role decision condition expression 316. This method allows storage admins to govern fine-grained role assignment and tenant isolation in one device.
In another user interface example 303b, a condition expression list is illustrated in one view. This view contains a list including columns for request source environment information, user ID and output roles. Each row of the list shows a condition expression. This UI can also implement a filter function to select records in a condition user specifies.
As illustrated in
As
In step 701-1 and 701-2, authorization policy distribution server 300 has label mapping table 308, which is the same as label mapping table 318 shown in
In step 703 of API request process flow, role decision unit 312 additionally loads label mapping table 318 and gets labels assigned to request source environment. In step 704, role decision unit 312 also interprets role decision condition expression 316 by substituting the user ID and the labels for environment. As a result, role decision unit 312 gets a role name. For example, when user ID is “u1” and request source environment label is “act-stb: standby”, role decision condition expression “role1or2” can be interpreted that a result role is going to be “RoleWeak”. Then role decision unit 312 gets “RoleWeak” as a result.
In step 705, based on the decided role name, role enforcement unit 313 judges whether the original API request sent by user 327 should be done or not. This result will be changed after the label changes.
In this example procedure, authorization policy distribution server 300 can distribute role configurations 307 to a storage domain table as shown at 900. Each role decision condition expression 316 can include all result role candidates. For example, role decision condition expression “condition1” can be included.
In this example procedure, the interface 303b has a list of configuration files from
As illustrated in
Storage device management service 323 can include storage device API list 324. First, storage device management service 323 watches storage device API list 324 and detects an update of the list at 1000. Storage device management service 323 notifies authorization policy update server 320. Role update unit 322 in authorization policy update server 320 fetches the update event 1001, and finds the difference in the API list. For example, the difference is like “add compression in deviceNew1”. Role update unit 322 saves it as a role update information for later usage at 1002.
Next, role update unit 322 extracts a condition expression name related with the update at 1003. When update includes “deviceNew1”, role update unit 322 searches storage domain table 304 for “deviceNew1” and finds storage domain condition table name “DGr2”. Role update unit 322 also lists up all condition expressions in the found domain condition table name “DGr2”. Role update unit 322 looks into all condition expressions.
Next, role update unit 322 creates user-env-role list based on role condition expressions at 1004. For example, a condition expression “condition3” includes some conditional rule as follows,
This conditional rule means that user “u1” can be treated as the role “RoleWeak” for the request from request source “Env1”. In the other case, user “u1” can be treated as the role “RoleStrong about the request from request source “Env2”. These conditional rules can be translated into a list of all combinations of input of user/source environment and output candidate of the role. In
Next, as an optional process, role update unit 322 can show update check UI 321 to storage administrator 319 in order for storage administrator 319 to select executable update candidates explicitly at 1005. Update check UI 321 can modify values of the column “update required” in user-env-role list.
Then, role update unit 322 gets all role configurations that are specified as “update required: true” in user-env-role list at 1006. Role update unit 322 reflects the difference of the role update information onto all role configurations marked “update required” at 1007. If the role “RoleStrong” is marked as “update required”, the description of “compression” will be added into “permittedAction” field of the role configuration. This means that a user with this role can now have permission to use new API “compression”. After all required role configurations are updated, role update unit 322 sends them to distribution server at 1008.
Authorization policy distribution server 300 distributes updated role configurations to servers 302 in the way as described herein at 1009.
Computer device 1205 can be communicatively coupled to input/user interface 1235 and output device/interface 1240. Either one or both of input/user interface 1235 and output device/interface 1240 can be a wired or wireless interface and can be detachable. Input/user interface 1235 may include any device, component, sensor, or interface, physical or virtual, that can be used to provide input (e.g., buttons, touch-screen interface, keyboard, a pointing/cursor control, microphone, camera, braille, motion sensor, optical reader, and/or the like). Output device/interface 1240 may include a display, television, monitor, printer, speaker, braille, or the like. In some example implementations, input/user interface 1235 and output device/interface 1240 can be embedded with or physically coupled to the computer device 1205. In other example implementations, other computer devices may function as or provide the functions of input/user interface 1235 and output device/interface 1240 for a computer device 1205.
Examples of computer device 1205 may include, but are not limited to, highly mobile devices (e.g., smartphones, devices in vehicles and other machines, devices carried by humans and animals, and the like), mobile devices (e.g., tablets, notebooks, laptops, personal computers, portable televisions, radios, and the like), and devices not designed for mobility (e.g., desktop computers, other computers, information kiosks, televisions with one or more processors embedded therein and/or coupled thereto, radios, and the like).
Computer device 1205 can be communicatively coupled (e.g., via I/O interface 1225) to external storage 1245 and network 1250 for communicating with any number of networked components, devices, and systems, including one or more computer devices of the same or different configuration. Computer device 1205 or any connected computer device can be functioning as, providing services of, or referred to as a server, client, thin server, general machine, special-purpose machine, or another label.
I/O interface 1225 can include, but is not limited to, wired and/or wireless interfaces using any communication or I/O protocols or standards (e.g., Ethernet, 802.11x, Universal System Bus, WiMax, modem, a cellular network protocol, and the like) for communicating information to and/or from at least all the connected components, devices, and network in computing environment 1200. Network 1250 can be any network or combination of networks (e.g., the Internet, local area network, wide area network, a telephonic network, a cellular network, satellite network, and the like).
Computer device 1205 can use and/or communicate using computer-usable or computer-readable media, including transitory media and non-transitory media. Transitory media include transmission media (e.g., metal cables, fiber optics), signals, carrier waves, and the like. Non-transitory media include magnetic media (e.g., disks and tapes), optical media (e.g., CD ROM, digital video disks, Blu-ray disks), solid state media (e.g., RAM, ROM, flash memory, solid-state storage), and other non-volatile storage or memory.
Computer device 1205 can be used to implement techniques, methods, applications, processes, or computer-executable instructions in some example computing environments. Computer-executable instructions can be retrieved from transitory media, and stored on and retrieved from non-transitory media. The executable instructions can originate from one or more of any programming, scripting, and machine languages (e.g., C, C++, C#, Java, Visual Basic, Python, Perl, JavaScript, and others).
Processor(s) 1210 can execute under any operating system (OS) (not shown), in a native or virtual environment. One or more applications can be deployed that include logic unit 1260, application programming interface (API) unit 1265, input unit 1270, output unit 1275, and inter-unit communication mechanism 1295 for the different units to communicate with each other, with the OS, and with other applications (not shown). The described units and elements can be varied in design, function, configuration, or implementation and are not limited to the descriptions provided. Processor(s) 1210 can be in the form of hardware processors such as central processing units (CPUs) or in a combination of hardware and software units.
In some example implementations, when information or an execution instruction is received by API unit 1265, it may be communicated to one or more other units (e.g., logic unit 1260, input unit 1270, output unit 1275). In some instances, logic unit 1260 may be configured to control the information flow among the units and direct the services provided by API unit 1265, input unit 1270, output unit 1275, in some example implementations described above. For example, the flow of one or more processes or implementations may be controlled by logic unit 1260 alone or in conjunction with API unit 1265. The input unit 1270 may be configured to obtain input for the calculations described in the example implementations, and the output unit 1275 may be configured to provide output based on the calculations described in example implementations.
In example implementations as described in
In example implementations as described in
In example implementations as described in
In example implementations as described in
In example implementations as illustrated in
As illustrated in
In example implementations as illustrated in
In example implementations as illustrated in
Through the example implementations described herein, storage administrators can control access by not only user ID but also request source information. Such example implementations allow storage administrators to configure fine-grained and dynamic access control depending on both various environments and timing. The example implementations described herein reduce management cost by unifying access control plane into one distribution server. The example implementations described herein further enhances security by consistent configuration without user's manual labor, such as manual reauthentication and token refreshment.
Some portions of the detailed description are presented in terms of algorithms and symbolic representations of operations within a computer. These algorithmic descriptions and symbolic representations are the means used by those skilled in the data processing arts to convey the essence of their innovations to others skilled in the art. An algorithm is a series of defined steps leading to a desired end state or result. In example implementations, the steps carried out require physical manipulations of tangible quantities for achieving a tangible result.
Unless specifically stated otherwise, as apparent from the discussion, it is appreciated that throughout the description, discussions utilizing terms such as “processing,” “computing,” “calculating,” “determining,” “displaying,” or the like, can include the actions and processes of a computer system or other information processing device that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system's memories or registers or other information storage, transmission or display devices.
Example implementations may also relate to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may include one or more general-purpose computers selectively activated or reconfigured by one or more computer programs. Such computer programs may be stored in a computer readable medium, such as a computer-readable storage medium or a computer-readable signal medium. A computer-readable storage medium may involve tangible mediums such as, but not limited to optical disks, magnetic disks, read-only memories, random access memories, solid state devices and drives, or any other types of tangible or non-transitory media suitable for storing electronic information. A computer readable signal medium may include mediums such as carrier waves. The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Computer programs can involve pure software implementations that involve instructions that perform the operations of the desired implementation.
Various general-purpose systems may be used with programs and modules in accordance with the examples herein, or it may prove convenient to construct a more specialized apparatus to perform desired method steps. In addition, the example implementations are not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the techniques of the example implementations as described herein. The instructions of the programming language(s) may be executed by one or more processing devices, e.g., central processing units (CPUs), processors, or controllers.
As is known in the art, the operations described above can be performed by hardware, software, or some combination of software and hardware. Various aspects of the example implementations may be implemented using circuits and logic devices (hardware), while other aspects may be implemented using instructions stored on a machine-readable medium (software), which if executed by a processor, would cause the processor to perform a method to carry out implementations of the present application. Further, some example implementations of the present application may be performed solely in hardware, whereas other example implementations may be performed solely in software. Moreover, the various functions described can be performed in a single unit, or can be spread across a number of components in any number of ways. When performed by software, the methods may be executed by a processor, such as a general purpose computer, based on instructions stored on a computer-readable medium. If desired, the instructions can be stored on the medium in a compressed and/or encrypted format.
Moreover, other implementations of the present application will be apparent to those skilled in the art from consideration of the specification and practice of the techniques of the present application. Various aspects and/or components of the described example implementations may be used singly or in any combination. It is intended that the specification and example implementations be considered as examples only, with the true scope and spirit of the present application being indicated by the following claims.
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
9300660, | May 29 2015 | Pure Storage, Inc.; Pure Storage, Inc | Providing authorization and authentication in a cloud for a user of a storage array |
20070143601, | |||
20200097872, | |||
20210406391, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Aug 04 2021 | OSAKI, HIROYUKI | Hitachi, LTD | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 057176 | /0545 | |
Aug 13 2021 | Hitachi, Ltd. | (assignment on the face of the patent) | / | |||
Apr 01 2024 | Hitachi, LTD | HITACHI VANTARA, LTD | COMPANY SPLIT | 069518 | /0761 |
Date | Maintenance Fee Events |
Aug 13 2021 | BIG: Entity status set to Undiscounted (note the period is included in the code). |
Date | Maintenance Schedule |
Dec 26 2026 | 4 years fee payment window open |
Jun 26 2027 | 6 months grace period start (w surcharge) |
Dec 26 2027 | patent expiry (for year 4) |
Dec 26 2029 | 2 years to revive unintentionally abandoned end. (for year 4) |
Dec 26 2030 | 8 years fee payment window open |
Jun 26 2031 | 6 months grace period start (w surcharge) |
Dec 26 2031 | patent expiry (for year 8) |
Dec 26 2033 | 2 years to revive unintentionally abandoned end. (for year 8) |
Dec 26 2034 | 12 years fee payment window open |
Jun 26 2035 | 6 months grace period start (w surcharge) |
Dec 26 2035 | patent expiry (for year 12) |
Dec 26 2037 | 2 years to revive unintentionally abandoned end. (for year 12) |