[Kimchi-devel] [RFC] Authorization enhancement
Yu Xin Huo
huoyuxin at linux.vnet.ibm.com
Mon Jan 20 10:20:43 UTC 2014
I have read the oVirt security model, I think basically, for
virtualization management, it can be applied to Kimchi.
I think Kimchi's security model can be created with some customization
of oVirt's security model.
I recommend 3 levels of administration below:
https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Virtualization/3.0/html/Administration_Guide/Administration_Guide-Managing_User_Access.html
1. console admin -- handle kimchi administration, host level physical
resources management.
2. resource admin -- OOTB roles with permission combined with resource
type, like VMAdmin, StorageAdmin, NetworkAdmin...
this type of users are responsible to construct environment for
a certain task.
their authorizations can be easily constructed with combination
with OOTB roles, then they can start to create resources needed.
I think it will be needed if we can set some limit on resource
usages like max cpu, memory, bandwidth.
https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Virtualization/3.0/html/Administration_Guide/Virtual_Roles.html
3. resource user -- at this level, I tend to think that no OOTB roles
are needed as fine granularity of authorization will be needed.
the authorization at this level are at a resource basis, need
to assign permissions for each user on each resource.
one thing to emphasize is that, resource user does not mean the
user can only use(start/stop/vnc) the resource,
it depends on concrete case, they can be assigned with
permission to update/delete resources.
I think this is a flexible and efficient authority delegation model with
responsibilities balanced.
On 1/15/2014 3:03 PM, Shu Ming wrote:
>
>
> Background
>
>
> In Kimchi, now we have a basic authentication model based on PAM. In
> this model, all the authenticated user get all of the privileges to
> access the resources in Kimchi. However, it is too simple to cause
> some security holes and classifying the user with different roles is a
> way to address the holes. Roles with very fine grained privileges need
> huge effort and time, so here we are trying to split the effort with
> several steps. And we will discuss the first step of the effort in
> the below which can be achieved in a certain time bound and reserve
> the forward compatibility for future extensions.
>
>
> First step of the effort
>
>
> In this step, the goal is to authorize the user's action on a resource
> by roles. The user action here is applied by the REST API exposed by
> Kimchi. Every action on Kimchi resources should be checked based on
> the user's role. In this step, we will not try to have roles in a
> very fine granularity. Naturally, three permanent roles will be
> created by default, the system administrator role, the infrastructure
> role and the user role.
>
> * The system administrator get the privileges to manage the roles
> for the other users including assigning a role to a user, removing the
> role from a user &etc. A default user "admink" will be created by
> default with a system administrator role assigned to it. And the role
> of the user "admink" can not be modified.
>
> * The infrastructure role get the privileges to manage the
> physical resources and virtual resources including network's creation
> and deletion, create or delete storage storage pools or storage
> volumes' creation and deletion, adding a user to the user list of
> storage storage pool &etc.
>
> * The user role get the privileges to apply action on VMs including
> VMs' starting and stopping, viewing the VM console by VNC &etc.
>
> * Some of the change can be enhanced on the existing REST API like
> "DELETE /storagepools/poo1/vo1". But we need create new REST APIs for
> actions like adding a role for a user like " PUT /users/user1 {role:
> "user role"}"
>
> * Database is needed to store the user information including roles
> and resource user list
>
> Beside the privileges inherited from the user's role, Kimchi will
> check if a user get the permission to access a resource based on a
> tuple. The tuple is composed from both the privileges of the user and
> the user list of the resource. An example is, if a user try ti delete
> a storage volume from the stroage pool, Kimchi will check if it is
> assigned a infrastructure role and if it is in the user list of the
> storage pool.
>
>
> Next step of the effort
>
>
> * The roles are defined in a very fine granularity containing the
> privileges precisely matching what the system administrator expects.
>
> * Existing roles can by customized by the system administrator from a
> set of previleges. The set of privileges should be pre-defined and
> hierarchy.
>
> * The system administrator can create new roles with customized
> privileges
>
>
> _______________________________________________
> Kimchi-devel mailing list
> Kimchi-devel at ovirt.org
> http://lists.ovirt.org/mailman/listinfo/kimchi-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ovirt.org/pipermail/kimchi-devel/attachments/20140120/b343e12c/attachment.html>
More information about the Kimchi-devel
mailing list