Merge "Restrict access to Kibana for admin"
This commit is contained in:
@@ -20,14 +20,15 @@ import logging
|
|||||||
import urllib
|
import urllib
|
||||||
import urllib2
|
import urllib2
|
||||||
|
|
||||||
|
from django import http
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
from django.core.urlresolvers import reverse_lazy
|
from django.core.urlresolvers import reverse_lazy
|
||||||
from django.http import HttpResponse # noqa
|
from django.http import HttpResponse # noqa
|
||||||
from django.views.generic import TemplateView # noqa
|
|
||||||
from django.utils.translation import ugettext_lazy as _ # noqa
|
from django.utils.translation import ugettext_lazy as _ # noqa
|
||||||
from django import http
|
|
||||||
from django.views.decorators.csrf import csrf_exempt
|
|
||||||
from django.views import generic
|
from django.views import generic
|
||||||
|
from django.views.decorators.csrf import csrf_exempt
|
||||||
|
from django.views.generic import TemplateView # noqa
|
||||||
|
from openstack_auth import utils as auth_utils
|
||||||
from openstack_dashboard import policy
|
from openstack_dashboard import policy
|
||||||
|
|
||||||
from monitoring import api
|
from monitoring import api
|
||||||
@@ -35,7 +36,6 @@ from monitoring.alarms import tables as alarm_tables
|
|||||||
from monitoring.config import local_settings as settings
|
from monitoring.config import local_settings as settings
|
||||||
from monitoring.overview import constants
|
from monitoring.overview import constants
|
||||||
|
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
@@ -374,6 +374,13 @@ class KibanaProxyView(generic.View):
|
|||||||
if request.method not in self.http_method_names:
|
if request.method not in self.http_method_names:
|
||||||
return http.HttpResponseNotAllowed(request.method)
|
return http.HttpResponseNotAllowed(request.method)
|
||||||
|
|
||||||
|
if not self._can_access_kibana():
|
||||||
|
error_msg = (_('User %s does not have sufficient '
|
||||||
|
'privileges to access Kibana')
|
||||||
|
% auth_utils.get_user(request))
|
||||||
|
LOG.error(error_msg)
|
||||||
|
return http.HttpResponseForbidden(content=error_msg)
|
||||||
|
|
||||||
# passing kbn version explicitly for kibana >= 4.3.x
|
# passing kbn version explicitly for kibana >= 4.3.x
|
||||||
headers = {
|
headers = {
|
||||||
'X-Auth-Token': request.user.token.id,
|
'X-Auth-Token': request.user.token.id,
|
||||||
@@ -392,3 +399,8 @@ class KibanaProxyView(generic.View):
|
|||||||
|
|
||||||
def get_absolute_url(self, url):
|
def get_absolute_url(self, url):
|
||||||
return self.base_url + self.get_relative_url(url).lstrip('/')
|
return self.base_url + self.get_relative_url(url).lstrip('/')
|
||||||
|
|
||||||
|
def _can_access_kibana(self):
|
||||||
|
return policy.check(
|
||||||
|
(('identity', 'admin_required'),), self.request
|
||||||
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user