第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
によって管理されます。