Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

4.2. RHSA-2018:2214 (重要): openstack-tripleo-heat-templates のセキュリティー更新

本項に記載するバグは、アドバイザリー RHSA-2018:2214 で対応しています。このアドバイザリーについての詳しい情報は、RHSA-2018:2214 - Security Advisory を参照してください。

openstack-tripleo-common

Ansible Playbook のログに、デプロイメント、更新、アップグレード中のアクションのタイミングに関する情報を提供するタイムスタンプが含まれるようになりました。

openstack-tripleo-heat-templates

以前のリリースでは、OpenDaylight の古いキャッシュが原因でオーバークラウドの更新が失敗していました。今回の更新により、新しいバージョンにアップグレードする前に OpenDaylight が停止されて、古いキャッシュが削除されるようになりました。レベル 1 の更新は OpenDaylight デプロイメントで機能します。レベル 2 の更新は現在サポートされていません。

既存のオーバークラウドデプロイメントで Octavia を有効化すると操作が成功したと報告されますが、コントローラーノード上のファイアウォールルールが誤って設定されているため、Octavia API エンドポイントに到達出来ません。

回避策:

全コントローラーノードでファイアウォールルールを追加して、それらが DROP ルールの前に挿入されるようにします。

IPv4:
  # iptables -A INPUT -p tcp -m multiport --dports 9876 -m state --state NEW -m comment --comment "100 octavia_api_haproxy ipv4" -j ACCEPT
  # iptables -A INPUT -p tcp -m multiport --dports 13876 -m state --state NEW -m comment --comment "100 octavia_api_haproxy_ssl ipv4" -j ACCEPT
  # iptables -A INPUT -p tcp -m multiport --dports 9876,13876 -m state --state NEW -m comment --comment "120 octavia_api ipv4" -j ACCEPT

IPv6:
  # ip6tables -A INPUT -p tcp -m multiport --dports 9876 -m state --state NEW -m comment --comment "100 octavia_api_haproxy ipv6" -j ACCEPT
  # ip6tables -A INPUT -p tcp -m multiport --dports 13876 -m state --state NEW -m comment --comment "100 octavia_api_haproxy_ssl ipv6" -j ACCEPT
  # ip6tables -A INPUT -p tcp -m multiport --dports 9876,13876 -m state --state NEW -m comment --comment "120 octavia_api ipv6" -j ACCEPT

HAProxy を再起動します。

  # docker restart haproxy-bundle-docker-0

OpenDaylight のロギングで前半のログが含まれていない可能性があります。OpenDaylight の journald ロギング (docker logs opendaylght_api コマンドを使用) の既知の問題です。現在の回避策としては、OpenDaylight のロギングを file メカニズムに切り替えて、コンテナー内の /opt/opendaylight/data/logs/karaf.log にロギングされるようにする方法があります。そのためには、heat パラメーター OpenDaylightLogMechanism: ‘file' を設定します。

以前のリリースでは、既存のオーバークラウドに対して overcloud deploy コマンドを再実行すると、pacemaker で管理されているリソースの再起動のトリガーに失敗していました。たとえば、新しいサービスを haproxy に追加すると、haproxy は再起動せず、haproxy pacemaker リソースを手動で再起動するまで 新たに設定されたサービスは利用できない状態となっていました。

今回の更新により、pacemaker リソースの設定変更が検出され、pacemaker リソースは自動的に再起動するようになりました。pacemaker で管理されるリソースの設定変更は、いずれもオーバークラウドに反映されるようになりました。

以前のリリースでは、Playbook のリストに不要なエントリーが含まれていたため、マイナーな更新のワークフロー内のサービスデプロイメントタスクが 2 回実行されていました。今回の更新により、Playbook の不要なエントリーが削除され、更新された Playbook にはホストの準備のタスクが直接含まれるようになりました。マイナーバージョン更新のアクションは、必要な順序で実行されるようになりました。

以前のリリースでは、事前にプロビジョニングされたサーバーにオーバークラウドをデプロイする場合に使用される Heat テンプレートには UpgradeInitCommonCommand のパラメーターがありませんでした。openstack overcloud upgrade prepare コマンドは必要な全操作を実行しなかったため、一部の環境でアップグレード中に問題が発生していました。

今回の更新で、事前プロビジョニング済みのサーバー用のテンプレートに UpgradeInitCommonCommand が追加され、openstack overcloud upgrade prepare のコマンドが必要なアクションを実行できるようになりました。

セキュリティーを強化するために、デフォルトの OpenDaylightPasswordadmin は無作為に生成される 16 桁の数値に置き換えられました。この無作為に生成されるパスワードは Heat テンプレートでパスワードを指定することによって上書きすることができます。

$ cat odl_password.yaml
parameter_defaults:
  OpenDaylightPassword: admin

続いて、そのファイルを overcloud deploy コマンドで渡します。

openstack overcloud deploy <other env files> -e odl_password.yaml

puppet-opendaylight

以前のリリースでは Karaf シェル (OpenDaylight 用の管理シェル) は、ポート 8101 上の特定の IP アドレスにバインドされていなかったため、Karaf シェルは公開されている外部ネットワーク上でリッスンしていました。そのポートでは、外部ネットワークを使用して OpenDaylight にアクセスすることができるため、セキュリティーの脆弱性が発生しました。

今回の更新により、Karaf シェルはデプロイメント中に内部 API ネットワークの IP にバインドされるようになり、Karaf シェルはプライベートの内部 API ネットワークでのみアクセス可能となりました。