[openstack-dev] [nova][keystone] auth for new metadata plugins

Michael Still mikal at stillhq.com
Wed Aug 31 11:56:53 UTC 2016


There is a quick sketch of what a service account might look like at
https://review.openstack.org/#/c/363606/ -- I need to do some more fiddling
to get the new option group working, but I could do that if we wanted to
try and get this into Newton.

Michael

On Wed, Aug 31, 2016 at 7:54 AM, Matt Riedemann <mriedem at linux.vnet.ibm.com>
wrote:

> On 8/30/2016 4:36 PM, Michael Still wrote:
>
>> Sorry for being slow on this one, I've been pulled into some internal
>> things at work.
>>
>> So... Talking to Matt Riedemann just now, it seems like we should
>> continue to pass through the user authentication details when we have
>> them to the plugin. The problem is what to do in the case where we do
>> not (which is mostly going to be when the instance itself makes a
>> metadata request).
>>
>> I think what you're saying though is that the middleware wont let any
>> requests through if they have no auth details? Is that correct?
>>
>> Michael
>>
>>
>>
>>
>> On Fri, Aug 26, 2016 at 12:46 PM, Adam Young <ayoung at redhat.com
>> <mailto:ayoung at redhat.com>> wrote:
>>
>>     On 08/22/2016 11:11 AM, Rob Crittenden wrote:
>>
>>         Adam Young wrote:
>>
>>             On 08/15/2016 05:10 PM, Rob Crittenden wrote:
>>
>>                 Review https://review.openstack.org/#/c/317739/
>>                 <https://review.openstack.org/#/c/317739/> added a new
>>                 dynamic
>>                 metadata handler to nova. The basic jist is that rather
>>                 than serving
>>                 metadata statically, it can be done dyamically, so that
>>                 certain values
>>                 aren't provided until they are needed, mostly for
>>                 security purposes
>>                 (like credentials to enroll in an AD domain). The
>>                 metadata is
>>                 configured as URLs to a REST service.
>>
>>                 Very little is passed into the REST call, mostly UUIDs
>>                 of the
>>                 instance, image, etc. to ensure a stable API. What this
>>                 means though
>>                 is that the REST service may need to make calls into
>>                 nova or glance to
>>                 get information, like looking up the image metadata in
>>                 glance.
>>
>>                 Currently the dynamic metadata handler _can_ generate
>>                 auth headers if
>>                 an authenticated request is made to it, but consider
>>                 that a common use
>>                 case is fetching metadata from within an instance using
>>                 something like:
>>
>>                 % curl
>>                 http://169.254.169.254/openstack/2016-10-06/vendor_data2.
>> json
>>                 <http://169.254.169.254/openst
>> ack/2016-10-06/vendor_data2.json>
>>
>>                 This will come into the nova metadata service
>>                 unauthenticated.
>>
>>                 So a few questions:
>>
>>                 1. Is it possible to configure paste (I'm a relative
>>                 newbie) both
>>                 authenticated and unauthenticated requests are accepted
>>                 such that IF
>>                 an authenticated request comes it, those credentials can
>>                 be used,
>>                 otherwise fall back to something else?
>>
>>
>>
>>             Only if they are on different URLs, I think.  Its auth_token
>>             middleware
>>             for all services but Keystone.  Keystone, the rles are
>>             similar, but the
>>             implementation is a little different.
>>
>>
>>         Ok. I'm fine with the unauthenticated path if the service we can
>>         just create a separate service user for it.
>>
>>                 2. If an unauthenticated request comes in, how best to
>>                 obtain a token
>>                 to use? Is it best to create a service user for the REST
>>                 services
>>                 (perhaps several), use a shared user, something else?
>>
>>
>>
>>             No unauthenticated requests, please.  If the call is to
>>             Keystone, we
>>             could use the X509 Tokenless approach, but if the call comes
>>             from the
>>             new server, you won't have a cert by the time you need to
>>             make the call,
>>             will you?
>>
>>
>>         Not sure which cert you're referring too but yeah, the metadata
>>         service is unauthenticated. The requests can come in from the
>>         instance which has no credentials (via http://169.254.169.254/).
>>
>>             Shared service users are probably your best bet.  We can
>>             limit the roles
>>             that they get.  What are these calls you need to make?
>>
>>
>>         To glance for image metadata, Keystone for project information
>>         and nova for instance information. The REST call passes in
>>         various UUIDs for these so they need to be dereferenced. There
>>         is no guarantee that these would be called in all cases but it
>>         is a possibility.
>>
>>         rob
>>
>>
>>                 I guess if config_drive is True then this isn't really a
>>                 problem as
>>                 the metadata will be there in the instance already.
>>
>>                 thanks
>>
>>                 rob
>>
>>                 ______________________________
>> ____________________________________________
>>
>>
>>                 OpenStack Development Mailing List (not for usage
>> questions)
>>                 Unsubscribe:
>>                 OpenStack-dev-request at lists.op
>> enstack.org?subject:unsubscribe
>>                 <http://OpenStack-dev-request@
>> lists.openstack.org?subject:unsubscribe>
>>                 http://lists.openstack.org/cgi
>> -bin/mailman/listinfo/openstack-dev
>>                 <http://lists.openstack.org/cg
>> i-bin/mailman/listinfo/openstack-dev>
>>
>>
>>
>>
>>             ____________________________________________________________
>> ______________
>>
>>             OpenStack Development Mailing List (not for usage questions)
>>             Unsubscribe:
>>             OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
>> <http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe>
>>             http://lists.openstack.org/cgi-bin/mailman/listinfo/openstac
>> k-dev
>>             <http://lists.openstack.org/cgi-bin/mailman/listinfo/opensta
>> ck-dev>
>>
>>
>>
>>         ____________________________________________________________
>> ______________
>>
>>         OpenStack Development Mailing List (not for usage questions)
>>         Unsubscribe:
>>         OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
>>         <http://OpenStack-dev-request@lists.openstack.org?subject:un
>> subscribe>
>>         http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>> <http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev>
>>
>>
>>     Sounded like you had this sorted.  True?
>>
>>
>>
>>     ____________________________________________________________
>> ______________
>>     OpenStack Development Mailing List (not for usage questions)
>>     Unsubscribe:
>>     OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
>>     <http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe
>> >
>>     http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>     <http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev>
>>
>>
>>
>>
>> --
>> Rackspace Australia
>>
>>
>> ____________________________________________________________
>> ______________
>> OpenStack Development Mailing List (not for usage questions)
>> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscrib
>> e
>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>
>>
> I think in the case of the initial boot we want all of the virt drivers to
> be passing the auth details to the external vendor data provider at a
> minimum in case that's going to block requests with no auth headers.
> Otherwise that means when we release newton that only works for the libvirt
> driver. That's being fixed for the other virt drivers here:
>
> https://review.openstack.org/#/c/348066/
>
> If the instance itself can't get updated information from the metadata
> service because it doesn't have the auth details, and nova isn't making an
> authenticated request on it's behalf with a service user, then I don't see
> that as being any worse off than the config drive case where you get the
> data on initial boot and it doesn't change. It's not great, but it's not
> something we have to hold this up for as we're 2 days away from feature
> freeze.
>
> So I think we should get https://review.openstack.org/#/c/348066/ merged
> for Newton and work on what to do about unauthenticated requests from the
> instance as a future enhancement.
>
> --
>
> Thanks,
>
> Matt Riedemann
>
>
>
> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>



-- 
Rackspace Australia
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20160831/083f342d/attachment.html>


More information about the OpenStack-dev mailing list