The embedded image was garbled, so I have attached a link to the image.

Somik

On Fri, Aug 19, 2011 at 2:36 PM, Somik Behera <so...@nicira.com> wrote:

> Hello All,
>
> I spent some time on and offline with Nova, Swift & Keystone PTLs
> understanding current Keystone use-cases and championing the fine-grained
> AuthZ that Quantum will need, here is the summary outcome from those
> discussions. Before I dive into that, I would like say the bulk of our AuthN
> & AuthZ concerns are already being handled by Salvatore's branch! So, Thanks
> Salvatore!
> These discussions were along the lines of providing AuthZ of "interfaces"
> owned by Nova or (in the future) other interface services.
>
> *Current Status of AuthZ, wrt Keystone implementation:*
>
> Keystone is a young( just incubated) project that is focused on addressing
> existing use-cases, mostly around AuthN. A notion of "roles" was added as
> groups and roles exist in Active Directory and LDAP systems, and Nova
> already had some notion of "roles." Keystone is an "integration" service,
> that means that Keystone has plugins in the backend to implement Keystone
> concepts using Active Directory and other such identity management
> solutions. Similar to the notion of Quantum "plugins"
>
> Roles in Keystone are high-level roles that map to job roles and are
> applied on a particular user, for a particular tenant. But the enforcement
> of the "role" is left to the individual service, Keystone only provides the
> role that a particular user owns, and its the responsibility of the
> individual service( Nova, Quantum) to enforce that role. This model of AuthZ
> is consistent with the way FileSystems managing a large number of objects
> enforce AuthZ where the ACLs are stored with individual files, not in a
> separate centralized directory.
>
> With that said, Keystone team is interested in exploring our use case where
> AuthZ is either enforced or orchestrated by Keystone across multiple
> underlying services and this would be a good thing to discuss during the
> Essex Design Summit.
>
> *Options for achieving AuthZ in Quantum during diablo time-frame:
> **
> Option 1: Short-term solution -** *Introduce a role named "NetworkAdmin"
> or "Quantum:NetworkAdmin"  This new roles has to be owned by any user
> wishing to perform VIF plug operations. The thinking is that the
> "NetworkAdmin" role is allocated to the service provider and for the time
> being, only the service provider can actually perform "VIF plugging." So, we
> have multi-tenancy in our AuthZ APIs for reading and creating network
> topologies but not for plugging VIFs. Not quite where we want to be, but it
> does provide a realistic Quantum deployment solution in diablo time-frame.
>
> *Option 2: Medium-term solution* - Quantum performs AuthZ for Network
> resources, and calls into Nova to perform network interface AuthZ, and then
> performs the VIF plugging. This solution is not ideal and only medium term
> as this architecture requires Quantum to contain clients of various
> "interface" services, of which Nova is the first interface service.
>
> The sequence of calls would look someting like this:
>
> http://www.websequencediagrams.com/index.php?img=mscb96q6O


> *Option 3: Long-term solution* - Quantum calls into Keystone for AuthZ and
> asks Keystone "Does UserA have VIF-Plug privilege on Tenant-X?" Keystone
> either maintain a central repository to service such a request or proxies
> the request to individual service, i.e. Nova in this case, in order to
> fulfill such a request. This solution needs additional discussion with the
> Keystone team.
>
>
> *Summary:* In summary, I would in favor of just having support for Option
> 1 in the current diablo time-frame and then we continue to work on more
> sophisticated AuthZ solutions. One thing to note is our initial suggestion
> of overloading Keystone "roles" to contain information regarding VIF-Plug,
> i.e. a role like "nova:VIF-Plug-instance-0000012-eth0" associated with every
> user for every VIF the user is allowed to "plug", was rejected as Keystone
> implementations are backed by Active Directory and LDAP systems, which are
> not designed for such fine-grained AuthZ and the associated scalability
> requirements.
>
> Thanks,
> Somik
>
> ---------- Forwarded message ----------
> From: Ziad Sawalha <ziad.sawa...@rackspace.com>
> Date: Thu, Aug 18, 2011 at 6:00 PM
> Subject: Re: [Openstack] AuthZ functionality in Keystone - Re:
> [WAS]OpenStack Identity: Keystone API Proposal
> To: Vishvananda Ishaya <vishvana...@gmail.com>, Somik Behera <
> so...@nicira.com>
> Cc: "openst...@lists.launchpad.net" <openst...@lists.launchpad.net>
>
>
> Agreed. My suggestion (in a direct email to Jan) was:
>
> 1. A tenant (Tenant-X) has resources in Nova (VM1)
>        GET nova/Tenant-X/servers/VM1        returns {name: VM1, interface:
> instance-0001-eth0 }
>
> 2. A user (john) creates a network in Quantum (or in Nova? Or in Quantum
> through Nova?)
>        POST nova/Tenant-X/networks           returns {name: Network-A}
>                Or
>        POST quantum/Tenant-X/networks          returns {name: Network-A}
>
>
>        Here, Quantum should store the network under the tenant (although
> you may
> choose to track that in some other way).
>
> 3. Per your use case below:
>        2.1 OK
>        2.2 This would need a call to Nova. Only Nova knows whether
> instance-0001-eth0 belongs to Tenant-X
>                GET
> nova/tenants/Tenant-X/servers/VM1/interfaces/instance-0001-eth0
> returns 200
>        2.3 Who creates the role "plug_virtual_interface"? It sounds like
> this
> should be a role created by Quantum (therefore
> "quantum:plug_virtual_interface") and the user should have that role on
> that tenant
>                GET or HEAD
> keystone/tenants/Tenant-X/users/john/roles/quantum:plug_virtual_interface
>  returns 200
>
> I would not advocate creating a role for each resource. Such fine-grained
> authz should probably live in the service (and not in Keystone ­ at least
> not today)
>
> Z
>
>
>
>
> On 8/18/11 5:50 PM, "Vishvananda Ishaya" <vishvana...@gmail.com> wrote:
>
> >
> >On Aug 18, 2011, at 3:45 PM, Somik Behera wrote:
> >
> >> Hi Vish,
> >>
> >> That would be one very reasonable way to do it, but in that case we are
> >>fragmenting AuthZ in multiple services instead of Keystone taking care
> >>of AuthZ across all services.
> >
> >We can't necessarily depend on keystone to keep track of all objects
> >owned by each service.  Especially for things like swift where millions
> >of objects are involved.  I therefore think the right solution is to have
> >the services responsible for their own objects, and allow them to
> >delegate to keystone in the cases where it makes sense.
> >
> >>
> >> Depending on Keystone's roadmap and plans, we could take a 2 phased
> >>approach, where Nova doing AuthZ is a temporary solution till Keystone
> >>can do it or  if Keystone  is not going to have this capability, then we
> >>go down the path you are suggesting - Keystone does AuthN and we rely on
> >>Nova to authorize a tenant's access rights to a particular vif.
> >>
> >> Thanks,
> >> Somik
>
> This email may include confidential information. If you received it in
> error, please delete it.
>
>
>
>
> --
> Somik Behera | Nicira Networks, Inc. | so...@nicira.com<sbeh...@nicira.com> |
> office: 650-390-6790 | cell: 512-577-6645
>



-- 
Somik Behera | Nicira Networks, Inc. | so...@nicira.com <sbeh...@nicira.com> |
office: 650-390-6790 | cell: 512-577-6645
-- 
Mailing list: https://launchpad.net/~netstack
Post to     : netstack@lists.launchpad.net
Unsubscribe : https://launchpad.net/~netstack
More help   : https://help.launchpad.net/ListHelp

Reply via email to