CA AppLogic does not provide an extensive scheme of pre-defined groups and users. This allows grid administrators to set up users, groups and object access to suit each particular situation. In general, grid administrators follow these steps:
The following scenario provides a practical example of how this process can work to effectively control user access.
Ace Starships Incorporated (ASI) builds space craft. Each space craft includes software systems for life support and propulsion among many others. These two software systems are developed on a large shared CA AppLogic grid before being deployed to production grids on actual space craft. The development process on this grid includes the following parties:
In addition we also have:
Furthermore:
One of the first decisions to make in this scenario is whether to manage group membership using the company-wide directory, or whether to manage this membership using local groups. In this example we take the first approach:
Going forward with our example, the initial CA AppLogic user, who is a member of the local group admin, performs the following user and group set up:
The following tables show group membership in our scenario:
|
Global Group |
Members |
|
life_support |
individual global users - this group is maintained outside of CA AppLogic |
|
propulsion |
individual global users - this group is maintained outside of CA AppLogic |
|
QA |
individual global users - this group is maintained outside of CA AppLogic |
|
auditors |
individual global users - this group is maintained outside of CA AppLogic |
|
Local Group |
Members |
|
admin |
local user john_adams |
|
grid_operators |
local user jane_osprey |
|
outsiders |
individual local users |
|
app_developers |
local group outsiders and the global groups life_support, propulsion and QA |
The following table shows access level rights granted to principals for pertinent objects in our scenario:
|
Object |
Principal |
Access Level |
||
|
|
Scope |
Type |
Name |
|
|
grid |
local |
group |
admin |
grid_administrator |
|
|
local |
group |
grid_operators |
grid_operator |
|
|
local |
group |
app_developers |
app_developer |
|
|
global |
group |
auditors |
monitor |
|
catalog life_support |
global |
group |
life_support |
full |
|
|
global |
group |
propulsion |
configure |
|
catalog propulsion |
global |
group |
propulsion |
full |
|
catalog outsiders |
global |
group |
outsiders |
full |
|
|
local |
group |
app_developers |
configure |
The initial set up of users and groups is now complete. At this point global users belonging to the global groups life_support, propulsion, QA and auditors can all log in to the grid, and each user is automatically provided the necessary access level rights to perform their work.
Access to the global catalogs has also been set up so that appliances are accessible as required, but only members of the group which has full access level rights on a catalog can perform destructive operations on that catalog.
When a user creates a new application, that user becomes the application owner and is granted full access level rights on that application. At some point, the user may want to modify the application ACL to give other members of his development team, or of another team, access to the application. For example:
There are cases where an application will want to control itself on a grid (introspective control). For example, the SLA controller appliance, which enables the creation of elastic stacks, accesses the grid controller in order to start/stop additional appliances to accommodate the load.
In many cases, the appliance that issues control commands also has some form of user interface that can be exposed for public access. As a result, if someone exploits a vulnerability (e.g., in Apache) and manages to obtain access to the private key for accessing the grid controller, they could be affecting other applications.
With the introduction of role-based access controls (RBAC) in CA AppLogic 3.0, there are some important changes to how access to the controller can be configured for improved security. While there are several approaches, here is the simplest and most secure one.
Create a user for each application that needs introspective control and name that user as a derivative name of the application. For example, for application myapp, you can call the control user myapp_sla. Then, give that user specific control over the myapp application and no other application. This includes two important limitations:
Follow these steps:
user create myapp_sla pwd=- sshkey="ssh-rsa xxxxxxxxx="
Note: Enter a very complex unguessable password when prompted, then paste the public key from step 1.
grid modify_acl myapp_sla=app_operator
app modify_acl myapp myapp_sla=control
Create a Group
If there are many instances that need this type of control (more than 5), it is better to set up the control users as a group rather than adding each of them to the grid ACL separately. This will also work faster on the grid, keeping the grid ACL smaller.
Follow these steps:
group create sla_users
grid modify_acl sla_users=app_operator
Do this for each separate app instance you want to have isolated control user (instead of the steps in the original post, changes in bold):
user create myapp_sla group=sla_users pwd=- sshkey="ssh-rsa xxxxxxxxx="
Note: Enter a very complex unguessable password when prompted; paste the public key from step 1.
app modify_acl myapp myapp_sla=control
This setup requires two more steps initially (creating the group) but removes a step from each instance and creates a much more manageable configuration.
|
Copyright © 2013 CA Technologies.
All rights reserved.
|
|