[openstack-dev] [all][keystone][product] api keys/application specific passwords
Adrian Turjak
adriant at catalyst.net.nz
Tue May 16 02:10:13 UTC 2017
On 16/05/17 14:00, Adrian Turjak wrote:
>
> On 16/05/17 13:29, Lance Bragstad wrote:
>>
>>
>> On Mon, May 15, 2017 at 7:07 PM, Adrian Turjak
>> <adriant at catalyst.net.nz <mailto:adriant at catalyst.net.nz>> wrote:
>>
>>
>> On 16/05/17 01:09, Lance Bragstad wrote:
>>>
>>>
>>> On Sun, May 14, 2017 at 11:59 AM, Monty Taylor
>>> <mordred at inaugust.com <mailto:mordred at inaugust.com>> wrote:
>>>
>>> On 05/11/2017 02:32 PM, Lance Bragstad wrote:
>>>
>>> Hey all,
>>>
>>> One of the Baremetal/VM sessions at the summit focused
>>> on what we need
>>> to do to make OpenStack more consumable for application
>>> developers [0].
>>> As a group we recognized the need for application
>>> specific passwords or
>>> API keys and nearly everyone (above 85% is my best
>>> guess) in the session
>>> thought it was an important thing to pursue. The API
>>> key/application-specific password specification is up
>>> for review [1].
>>>
>>> The problem is that with all the recent churn in the
>>> keystone project,
>>> we don't really have the capacity to commit to this for
>>> the cycle. As a
>>> project, we're still working through what we've
>>> committed to for Pike
>>> before the OSIC fallout. It was suggested that we reach
>>> out to the PWG
>>> to see if this is something we can get some help on from
>>> a keystone
>>> development perspective. Let's use this thread to see if
>>> there is anyway
>>> we can better enable the community through API
>>> keys/application-specific
>>> passwords by seeing if anyone can contribute resources
>>> to this effort.
>>>
>>>
>>> In the session, I signed up to help get the spec across the
>>> finish line. I'm also going to do my best to write up
>>> something resembling a user story so that we're all on the
>>> same page about what this is, what it isn't and what comes next.
>>>
>>>
>>> Thanks Monty. If you have questions about the current proposal,
>>> Ron might be lingering in IRC (rderose). David (dstanek) was
>>> also documenting his perspective in another spec [0].
>>>
>>>
>>> [0] https://review.openstack.org/#/c/440593/
>>> <https://review.openstack.org/#/c/440593/>
>>>
>>>
>>
>> Based on the specs that are currently up in Keystone-specs, I
>> would highly recommend not doing this per user.
>>
>> The scenario I imagine is you have a sysadmin at a company who
>> created a ton of these for various jobs and then leaves. The
>> company then needs to keep his user account around, or create
>> tons of new API keys, and then disable his user once all the
>> scripts he had keys for are replaced. Or more often then not,
>> disable his user and then cry as everything breaks and no one
>> really knows why or no one fully documented it all, or didn't
>> read the docs. Keeping them per project and unrelated to the user
>> makes more sense, as then someone else on your team can
>> regenerate the secrets for the specific Keys as they want. Sure
>> we can advise them to use generic user accounts within which to
>> create these API keys but that implies password sharing which is bad.
>>
>>
>> That said, I'm curious why we would make these as a thing
>> separate to users. In reality, if you can create users, you can
>> create API specific users. Would this be a different
>> authentication mechanism? Why? Why not just continue the work on
>> better access control and let people create users for this.
>> Because lets be honest, isn't a user already an API key? The
>> issue (and the Ron's spec mentions this) is a user having too
>> much access, how would this fix that when the issue is that we
>> don't have fine grained policy in the first place? How does a new
>> auth mechanism fix that? Both specs mention roles so I assume it
>> really doesn't. If we had fine grained policy we could just
>> create users specific to a service with only the roles it needs,
>> and the same problem is solved without any special API, new auth,
>> or different 'user-lite' object model. It feels like this is
>> trying to solve an issue that is better solved by fixing the
>> existing problems.
>>
>> I like the idea behind these specs, but... I'm curious what
>> exactly they are trying to solve. Not to mention if you wanted to
>> automate anything larger such as creating sub-projects and
>> setting up a basic network for each new developer to get access
>> to your team, this wouldn't work unless you could have your API
>> key inherit to subprojects or something more complex, at which
>> point they may as well be users. Users already work for all of
>> this, why reinvent the wheel when really the issue isn't the
>> wheel itself, but the steering mechanism (access control/policy
>> in this case)?
>>
>>
>> All valid points, but IMO the discussions around API keys didn't set
>> out to fix deep-rooted issues with policy. We have several specs in
>> flights across projects to help mitigate the real issues with policy
>> [0] [1] [2] [3] [4].
>>
>> I see an API key implementation as something that provides a cleaner
>> fit and finish once we've addressed the policy bits. It's also a
>> familiar concept for application developers, which was the use case
>> the session was targeting.
>>
>> I probably should have laid out the related policy work before
>> jumping into API keys. We've already committed a bunch of keystone
>> resource to policy improvements this cycle, but I'm hoping we can
>> work API keys and policy improvements in parallel.
>>
>> [0] https://review.openstack.org/#/c/460344/
>> [1] https://review.openstack.org/#/c/462733/
>> [2] https://review.openstack.org/#/c/464763/
>> [3] https://review.openstack.org/#/c/433037/
>> [4] https://review.openstack.org/#/c/427872/
>>
> I'm well aware of the policy work, and it is fantastic to see it
> progressing! I can't wait to actually be able to play with that stuff!
> We've been painstakingly tweaking the json policy files which is a
> giant mess.
>
> I'm just concerned that this feels like a feature we don't really need
> when really it's just a slight variant of a user with a new auth model
> (that is really just another flavour of username/password). The sole
> reason most of the other cloud services have API keys is because a
> user can't talk to the API directly. OpenStack does not have that
> problem, users are API keys. So I think what we really need to
> consider is what exact benefit does API keys actually give us that
> won't be solved with users and better policy?
>
> From my look at the specs the only feature difference compared to
> users is optional expiry of the API keys. Why make something entirely
> different for just that one feature when, as David says in his spec,
> there is debate if that feature is even a good idea.
>
> As an application developer, I don't see why I can't just create a
> user and limit the roles. I feel as if this is better addressed with
> documentation because it almost sounds like people are asking for
> something that already exists, but just doesn't have as nice an API as
> they would like. Another option, make a better API in Keystone for
> user creation/management alongside the old one? That's pretty much
> what we did, except we wrote a service to act as a proxy/wrapper
> around Keystone for some customer actions.
>
If expiry is the killer feature, why no just add it to users? Temporary
user accounts could solve that, and probably be useful beyond the scope
of just API keys.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20170516/b4a34c50/attachment.html>
More information about the OpenStack-dev
mailing list