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 の接続およびロギングの設定

  1. ALLOWED_HOSTS パラメーターにアプリケーションがサービス提供可能なホスト/ドメイン名のコンマ区切りリストで指定します。例は以下のとおりです。
    ALLOWED_HOSTS = ['horizon.example.com', 'localhost', '192.168.20.254', ]
  2. 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 パラメーターからの値に置き換えます。
  3. Identity サービスのエンドポイントのホスト URL を以下のように指定します。
    OPENSTACK_KEYSTONE_URL="127.0.0.1"
  4. Dashboard のタイムゾーンを更新します。
    TIME_ZONE="UTC"
    タイムゾーンは、Dashboard GUI を使用して更新することも可能です。
  5. 設定の変更を有効にするには、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 を使用するためのダッシュボードの設定

  1. テキストエディターで /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 上では機能しないようにします。
  2. テキストエディターで /etc/httpd/conf/httpd.conf ファイルを開き、以下の行を追加します。
    NameVirtualHost *:443
  3. テキストエディターで /etc/httpd/conf.d/openstack-dashboard.conf ファイルを開きます。
    1. 以下の行を削除します。
      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
    2. 以下の行を追加します。
      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> のセクションでは、秘密鍵、公開鍵、証明書など、このプロトコルに必要なオプションを定義します。
  4. 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 のデフォルトロールの変更

  1. Keystone に管理ユーザーとしてアクセスするためのシェルを設定します。
    # source ~/keystonerc_admin
  2. 新しいロールを作成します。
    [(keystone_admin)]# keystone role-create --name NEW_ROLE
    +----------+----------------------------------+
    | Property |              Value               |
    +----------+----------------------------------+
    | id       | 8261ac4eabcc4da4b01610dbad6c038a |
    | name     |              NEW_ROLE            |
    +----------+----------------------------------+
    NEW_ROLE は、そのロールの名前に置き換えます。
  3. テキストエディターで /etc/openstack-dashboard/local_settings ファイルを開き、以下のパラメーターの値を変更します。
    OPENSTACK_KEYSTONE_DEFAULT_ROLE = 'NEW_ROLE'
    NEW_ROLE は、前のステップで作成したロールの名前に置き換えます。
  4. 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 サービスからの接続を許可するように設定

  1. システム上の SELinux のステータスを確認します。
    # getenforce
  2. 出力された値が「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 のトラフィックを許可するためのファイアウォール設定

  1. テキストエディターで /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
  2. iptables サービスを再起動して、ファイアウォールの変更を有効にします。
    # systemctl restart iptables.service

重要

上記のルールにより、全リモートホストから Dashboard サービスを実行するサーバーへの通信がポート 80 または 443 で 許可されます。より制限の厳しいファイアウォールルールの作成についての説明は、以下のリンクで 『Red Hat Enterprise Linux セキュリティーガイド』を参照してください。