Red Hat Training

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

9.2. 一般的な Web サーバーの脆弱性の理解

この章では、一般的な Web サーバーの脆弱性を軽減する方法を説明します。

9.2.1. クロスサイトスクリプティング (XSS)

OpenStack Dashboard はカスタマイズ可能で、ほとんどのフィールドで全 Unicode 文字セットを使用できます。この拡張性により、クロスサイトスクリプティング (XSS) の脆弱性が導入される可能性があります。horizon には、開発者が XSS の脆弱性を誤って作成するのを防ぎ、開発者が正しく使用している場合に限り機能するようにするためのツールが含まれています。カスタムダッシュボードを監査し、以下の機能に特に注意してください。

  • mark_safe 関数
  • is_safe: カスタムテンプレートタグと共に使用する場合
  • safe テンプレートタグ
  • 自動エスケープがオフで、不適切にエスケープされたデータを評価する可能性のある JavaScript の場合

9.2.2. クロスサイトリクエストフォージェリー (CSRF)

OpenStack Dashboard は、脅威を導入する可能性があるので、カスタムダッシュボードを使用して、クロスサイトスクリプティングの脆弱性を導入しないように設計されています。複数の JavaScript インスタンスを使用する Dashboard は、@csrf_exempt デコレーターの不適切な使用など、脆弱性について監査する必要があります。これらの推奨セキュリティー設定に準拠しないダッシュボードは、CORS (Cross Origin Resource Sharing) の制限が緩和される前に、慎重に評価する必要があります。

各応答で制限的な CORS ヘッダーを送信し、ダッシュボードのドメインおよびプロトコルのみを許可するように、 Web サーバーを設定する必要があります。例: Access-Control-Allow-Origin: https://example.com/ワイルドカードオリジンを許可しないでください。

9.2.3. クロスフレームスクリプティング (XFS)

disallow_iframe_embed 設定は、Dashboard が iframe 内に埋め込まれるのを防ぎます。従来のブラウザーは、クロスフレームスクリプティング (XFS) に対して脆弱性があります。したがって、このオプションを使用すると、iframes を要求しないデプロイメントにさらにセキュリティー強化機能が追加されます。

以下のパラメーターを使用して、iframe 埋め込みを許可できます。

    parameter_defaults:
      ControllerExtraConfig:
        horizon::disallow_iframe_embed: false

9.2.4. Dashboard トラフィックの HTTPS 暗号化の使用

HTTPS を使用して Dashboard トラフィックを暗号化することが推奨されます。これは、認識されている認証局 (CA) からの有効な信頼される証明書を使用するように設定することで実行できます。プライベート組織が発行した証明書は、信頼の root がすべてのユーザーブラウザーで事前インストールされている場合にのみ適切になります。

完全修飾 HTTPS URL にリダイレクトするように、Dashboard ドメインへの HTTP 要求を設定します。

Director ベースのデプロイメントについては、https://access.redhat.com/documentation/ja-jp/red_hat_openstack_platform/13/html/advanced_overcloud_customization/sect-enabling_ssltls_on_the_overcloud を参照してください。

9.2.5. HTTP Strict Transport Security (HSTS)

HTTP Strict Transport Security(HSTS) は、最初にセキュアな接続を行った後に、ブラウザーが後続の非セキュアな接続を確立できないようにします。パブリックまたは信頼できないゾーンに HTTP サービスをデプロイした場合、HSTS が特に重要になります。

director ベースのデプロイメントの場合、この設定はデフォルトで有効になっています。

enable_secure_proxy_ssl_header: true