<div dir="ltr"><div>my guess is horizon admin panels would bomb out... but it would be trivial to replace the admin panels with a warning page.<br><br></div>-matt<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Oct 21, 2014 at 10:23 AM, Adam Young <span dir="ltr"><<a href="mailto:ayoung@redhat.com" target="_blank">ayoung@redhat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 10/20/2014 12:11 AM, Tim Goddard wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hello all,<br>
<br>
We have an established OpenStack cloud and as part of a round of security<br>
hardening would like to add some additional restrictions on the use of "admin"<br>
permissions.<br>
<br>
In particular, we would like to limit it so that API endpoints requiring admin<br>
access can only be used from a VPN (known range of source IP addresses). We do<br>
not want the public-facing APIs to expose these endpoints, even to users with<br>
the right credentials.<br>
<br>
Has anyone already been through a similar process and have a method or advice<br>
for us to follow?<br>
</blockquote>
>From a Keystone perspective, what you want to do is to user the "admin" and "main<br>
 configuration to have each mapped to different interfaces on the HTTPD server machine don't try to do this with Eventlet, as Eventlet alone doesn't support it.<br>
<br>
You'll have to decide what you want to do about Horizon, as the Admin operations on Keystone from Horizon are RBAC controlled.  You could run two different Horizon instances, one internal and one external, and give each a seaprate Auth URL.  Then the Admin port would be hidden from Horizon, but I think the admin fields wouls still show up on the Horizon portal, just be non-functional.  I'll let some Horizon folks chime in with how to deal with that.<br>
<br>
Unfortunately, each service defines these things a little differntly, and not all fo them run in Eventlet. For the ones that run in Eventlet, you'll need to use some form of termination in front of them to bind to different interfaces.<br>
<br>
<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Cheers,<br>
<br>
Tim<br>
<br>
______________________________<u></u>_________________<br>
OpenStack-operators mailing list<br>
<a href="mailto:OpenStack-operators@lists.openstack.org" target="_blank">OpenStack-operators@lists.<u></u>openstack.org</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-operators" target="_blank">http://lists.openstack.org/<u></u>cgi-bin/mailman/listinfo/<u></u>openstack-operators</a><br>
</blockquote>
<br>
<br>
______________________________<u></u>_________________<br>
OpenStack-operators mailing list<br>
<a href="mailto:OpenStack-operators@lists.openstack.org" target="_blank">OpenStack-operators@lists.<u></u>openstack.org</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-operators" target="_blank">http://lists.openstack.org/<u></u>cgi-bin/mailman/listinfo/<u></u>openstack-operators</a><br>
</blockquote></div><br></div>