第6章 Dashboard サービスの強化

この章では、OpenStack Dashboard (horizon) を使用する Red Hat OpenStack Platform デプロイメントのセキュリティー強化に関する考慮事項を説明します。

Dashboard により、ユーザーには、(管理者によって設定される制限内において) 独自のリソースをプロビジョニングするためのセルフサービスポータルが提供されます。たとえば、ダッシュボードを使用して、インスタンスフレーバーの定義、仮想マシン (VM) イメージのアップロード、仮想ネットワークの管理、セキュリティーグループの作成、インスタンスの開始、および管理コンソールを介したインスタンスへのリモートアクセスを行うことができます。

ダッシュボードは、OpenStack API と同じ感度で処理する必要があります。どちらにも、クラウドリソースと構成へのアクセスを許可する機能があるためです。

6.1. ダッシュボードデプロイメントの計画

このセクションでは、ダッシュボード (horizon) サービスをデプロイする前に考慮すべきセキュリティーの側面について説明します。

6.1.1. ドメイン名の選択

Dashboard は、任意のレベルの共有サブドメイン (例: https://openstack.example.org または https://horizon.openstack.example.org) にデプロイするのではなく、2 次レベルのドメインにデプロイすることが推奨されます (例: https://example.com)。また、https://horizon/ などのベア内部ドメインへの Dashboard のデプロイを回避することが推奨されます。これらの推奨事項は、ブラウザーの same-origin-policy の制限に基づいています。

このアプローチは、コンテンツを完全に制御できない他のドメインからクッキーとセキュリティートークンを分離するのに役立ちます。サブドメインにデプロイされる場合、ダッシュボードのセキュリティーは、同じ 2 次ドメインにデプロイされた最も安全ではないアプリケーションと同じです。

クッキーでサポートされるセッションストアを回避し、HTTP Strict Transport Security (HSTS) (本書で説明されている) を設定することにより、このリスクをさらに軽減できます。

6.1.2. ALLOWED_HOSTS の設定

Web サービスは、偽の HTTP ホストヘッダーに関連する脅威に対して脆弱です。これを軽減するために、ALLOWED_HOSTS を設定して OpenStack Dashboard で提供される FQDN を使用することを検討してください。

設定すると、受信 HTTP リクエストの Host: ヘッダーがこの一覧のいずれの値にも一致しない場合、エラーが発生し、要求側は処理を続行できなくなります。

horizon は、python Django web フレームワーク上に構築されています。この場合、HTTP Host: ヘッダーの悪意のある操作から保護するために、ALLOWED_HOSTS を設定する必要があります。この値を、ダッシュボードにアクセスできる FQDN に設定します。director の場合、この設定は HorizonAllowedHosts によって管理されます。