Red Hat Training
A Red Hat training course is available for Red Hat OpenStack Platform
10.4. Dashboard の設定
10.4.1. 接続とロギングの設定
ユーザーがダッシュボードに初めて接続する前には、
/etc/openstack-dashboard/local_settings
ファイルで以下のパラメーターを設定します (サンプルファイルは、https://access.redhat.com/site/documentation/ja/Red_Hat_Enterprise_Linux_OpenStack_Platform に掲載されている『Configuration Reference Guide』を参照してください)。
手順10.2 Dashboard の接続およびロギングの設定
ALLOWED_HOSTS
パラメーターにアプリケーションがサービス提供可能なホスト/ドメイン名のコンマ区切りリストで指定します。例は以下のとおりです。ALLOWED_HOSTS = ['horizon.example.com', 'localhost', '192.168.20.254', ]
CACHES
の設定は、memcached
の値を使用して更新します。SESSION_ENGINE = 'django.contrib.sessions.backends.cache' CACHES = { 'default': { 'BACKEND' : 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION' : 'memcacheURL:port', } }
以下の値を置き換えてください。- memcacheURL は、
memcached
がインストールされたホストの IP アドレスに置き換えます。 - port は
/etc/sysconfig/memcached
ファイルのPORT
パラメーターからの値に置き換えます。
- Identity サービスのエンドポイントのホスト URL を以下のように指定します。
OPENSTACK_KEYSTONE_URL="127.0.0.1"
- Dashboard のタイムゾーンを更新します。
TIME_ZONE="UTC"
タイムゾーンは、Dashboard GUI を使用して更新することも可能です。 - 設定の変更を有効にするには、Apache サーバーを再起動します。
#
systemctl restart httpd.service
注記
HORIZON_CONFIG
ディレクトリーには Dashboard のすべての設定が含まれます。サービスが Dashboard に含まれているかどうかは、Identity サービスの Service Catalog configuration によって決定します。
注記
django-secure
モジュールを使用して、推奨プラクティスと最新のブラウザー保護メカニズムの大半を有効にすることをお勧めします。詳しい情報は http://django-secure.readthedocs.org/en/latest/ (『django-secure』) を参照してください。
10.4.2. HTTPS で使用するための Dashboard の設定
デフォルトのインストールでは、暗号化されていないチャンネル (HTTP) を使用していますが、Dashboard の SSL サポートを有効にすることが可能です。
手順10.3 HTTPS を使用するためのダッシュボードの設定
- テキストエディターで
/etc/openstack-dashboard/local_settings
ファイルを開き、以下のパラメーターをアンコメントします。SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTOCOL', 'https') CSRF_COOKIE_SECURE = True SESSION_COOKIE_SECURE = True
後の 2 つの設定は、Dashboard のクッキーを HTTPS 接続のみで送信するようにブラウザーに指示して、セッションが HTTP 上では機能しないようにします。 - テキストエディターで
/etc/httpd/conf/httpd.conf
ファイルを開き、以下の行を追加します。NameVirtualHost *:443
- テキストエディターで
/etc/httpd/conf.d/openstack-dashboard.conf
ファイルを開きます。- 以下の行を削除します。
WSGIDaemonProcess dashboard WSGIProcessGroup dashboard WSGISocketPrefix run/wsgi WSGIScriptAlias /dashboard /usr/share/openstack-dashboard/openstack_dashboard/wsgi/django.wsgi Alias /static /usr/share/openstack-dashboard/static/ <Directory /usr/share/openstack-dashboard/openstack_dashboard/wsgi> <IfModule mod_deflate.c> SetOutputFilter DEFLATE <IfModule mod_headers.c> # Make sure proxies donât deliver the wrong content Header append Vary User-Agent env=!dont-vary </IfModule> </IfModule> Order allow,deny Allow from all </Directory> <Directory /usr/share/openstack-dashboard/static> <IfModule mod_expires.c> ExpiresActive On ExpiresDefault "access 6 month" </IfModule> <IfModule mod_deflate.c> SetOutputFilter DEFLATE </IfModule> Order allow,deny Allow from all </Directory> RedirectMatch permanent ^/$ https://xxx.xxx.xxx.xxx:443/dashboard
- 以下の行を追加します。
WSGIDaemonProcess dashboard WSGIProcessGroup dashboard WSGISocketPrefix run/wsgi LoadModule ssl_module modules/mod_ssl.so <VirtualHost *:80> ServerName openstack.example.com RedirectPermanent / https://openstack.example.com/ </VirtualHost> <VirtualHost *:443> ServerName openstack.example.com SSLEngine On SSLCertificateFile /etc/httpd/SSL/openstack.example.com.crt SSLCACertificateFile /etc/httpd/SSL/openstack.example.com.crt SSLCertificateKeyFile /etc/httpd/SSL/openstack.example.com.key SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown WSGIScriptAlias / /usr/share/openstack-dashboard/openstack_dashboard/wsgi/django.wsgi WSGIDaemonProcess horizon user=apache group=apache processes=3 threads=10 RedirectPermanent /dashboard https://openstack.example.com Alias /static /usr/share/openstack-dashboard/static/ <Directory /usr/share/openstack-dashboard/openstack_dashboard/wsgi> Order allow,deny Allow from all </Directory> </VirtualHost> <Directory /usr/share/openstack-dashboard/static> <IfModule mod_expires.c> ExpiresActive On ExpiresDefault "access 6 month" </IfModule> <IfModule mod_deflate.c> SetOutputFilter DEFLATE </IfModule> Order allow,deny Allow from all </Directory> RedirectMatch permanent ^/$ /dashboard/
新しい設定では、Apache がポート 443 をリッスンし、セキュリティーで保護されていない要求をすべて HTTPS プロトコルにリダイレクトします。<VirtualHost *:443>
のセクションでは、秘密鍵、公開鍵、証明書など、このプロトコルに必要なオプションを定義します。 - Apache サービスと
memcached
サービスを再起動します。#
systemctl restart httpd.service
#
systemctl restart memcached.service
ブラウザーで HTTP バージョンの Dashboard を使用すると、ユーザーは HTTPS バージョンのページにリダイレクトされるようになりました。
10.4.3. Dashboard のデフォルトロールの変更
デフォルトでは、Dashboard サービスは Identity によって自動的に作成される
_member_
という Identity ロールを使用します。これは、一般ユーザーに適切なロールです。別のロールを作成することを選択し、Dashboard がそのロールを使用するように設定する場合には、このロールは、Dashboard を使用する前に Identity サービスで作成してから Dashboard が使用するように設定しておく必要があります。
以下の手順は、Identity サービスのサーバーまたは
keystonerc_admin
ファイルをコピーして keystone コマンドラインユーティリティーをインストールした任意のマシンで実行してください。
手順10.4 Dashboard のデフォルトロールの変更
- Keystone に管理ユーザーとしてアクセスするためのシェルを設定します。
#
source ~/keystonerc_admin
- 新しいロールを作成します。
[(keystone_admin)]#
keystone role-create --name NEW_ROLE
+----------+----------------------------------+ | Property | Value | +----------+----------------------------------+ | id | 8261ac4eabcc4da4b01610dbad6c038a | | name | NEW_ROLE | +----------+----------------------------------+NEW_ROLE は、そのロールの名前に置き換えます。 - テキストエディターで
/etc/openstack-dashboard/local_settings
ファイルを開き、以下のパラメーターの値を変更します。OPENSTACK_KEYSTONE_DEFAULT_ROLE = 'NEW_ROLE'
NEW_ROLE は、前のステップで作成したロールの名前に置き換えます。 - Apache サービスを再起動し、変更を有効にします。
#
systemctl restart httpd.service
10.4.4. SELinux の設定
SELinux は、アクセス制御を提供する Red Hat Enterprise Linux のセキュリティー機能です。SELinux のステータスの値は、「Enforcing」、「Permissive」、および「Disabled」です。SELinux が「Enforcing」モードに設定されている場合には、SELinux ポリシーを変更して、
httpd
サービスから Identity サーバーへの通信を許可する必要があります。この設定変更は、SELinux が「Permissive」モードに設定されている場合にも推奨されます。
手順10.5 SELinux が Apache サービスからの接続を許可するように設定
- システム上の SELinux のステータスを確認します。
#
getenforce
- 出力された値が「Enforcing」、「Permissive」の場合には、
httpd
サービスと Identity サービスの間の接続が可能です。#
setsebool -P httpd_can_network_connect on
10.4.5. Dashboard のファイアウォール設定
ユーザーが Dashboard にアクセスできるようにするには、接続を許可するようにシステムのファイアウォールを設定する必要があります。
httpd
サービスと Dashboard は、HTTP 接続と HTTPS 接続の両方をサポートします。以下の手順に記載するステップはすべて、httpd
サービスをホストするサーバーに root
ユーザーとしてログインして実行する必要があります。
注記
認証情報およびその他の情報を保護するには、HTTPS 接続のみを有効化することを推奨します。
手順10.6 Dashboard のトラフィックを許可するためのファイアウォール設定
- テキストエディターで
/etc/sysconfig/iptables
の設定ファイルを開きます。- HTTPS のみを使用した受信接続を許可するには、以下のファイアウォールルールを追加します。
-A INPUT -p tcp --dport 443 -j ACCEPT
- HTTP および HTTPS の両方を使用した受信接続を許可するには、以下のファイアウォールルールを追加します。
-A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT
iptables
サービスを再起動して、ファイアウォールの変更を有効にします。#
systemctl restart iptables.service
重要
上記のルールにより、全リモートホストから Dashboard サービスを実行するサーバーへの通信がポート 80 または 443 で 許可されます。より制限の厳しいファイアウォールルールの作成についての説明は、以下のリンクで 『Red Hat Enterprise Linux セキュリティーガイド』を参照してください。