6. マイグレーションガイド

本章では、モバイルバックエンド基盤サーバの以前のバージョンからの 変更点や移行方法について説明します。

6.1. 最新版へのバージョンアップ方法

APIサーバ/デベロッパーコンソールサーバについては、WAR ファイルを差し替えて Tomcat を再起動するだけで バージョンアップできます。この際データベースのマイグレーションは自動で実行されます。

ただし、ver 7.5.10 以上では、Java 17, Tomcat 10.1.9 が必要となります。それぞれ、バージョンの移行をお願いいたします。

原則、全てのサーバを一斉にバージョンアップして下さい。

注意

バージョンアップ実行後にバージョンダウンすることは原則できませんので、ご注意ください。

6.2. ver 7.5.10 → ver 7.5.11 での変更点

6.2.1. APIサーバ・デベロッパーコンソールサーバ

以下の対応を行いました。

  • FCM Push v1 API に移行
    • FCM Push API は 2024/6 に削除される予定であるため、FCM Push v1 API に移行しました

6.3. ver 7.5.0 → ver 7.5.10 での変更点

6.3.1. APIサーバ・デベロッパーコンソールサーバ

動作環境に、Red Hat Enterprise Linux 8 を追加しました。

以下の対応を行いました。

  • Java 17 への移行
    • 動作には JDK 17 以上が必須となりましたので、JDK 17 へ移行が必要です
  • Tomcat バージョンの更新
    • 必要な Tomcat のバージョンが 10.1.9 以上に変更になりました
  • OSS アップデート(SpringBoot EOL 対応)
  • ログ機能の改善
    • ログのフォーマット/レベル設定変更を可能とする
    • デベロッパーコンソールのヘルスチェック API の出力内容の改善

SAML 認証は非対応となりました。

6.4. ver 6.5.4 → ver 6.5.5 での変更点

6.4.1. デベロッパーコンソールサーバ

以下の不具合修正を行いました。

  • コンソールのオブジェクト検索画面カラム操作時に、表示不正になることがある
  • IE11からファイルのアップロードが失敗する場合がある

6.5. ver 7.0.x → 7.5.0 での変更点

以下の機能を追加しました。

6.5.1. HTTP/2対応

HTTP/2プロトコルに対応しました。 大量のリクエストを行う場合等に、効率的に通信を行うことができます。 詳細は、 HTTP/2使用手順 を参照して下さい。

6.5.2. Basic認証

REST API使用時に、Basic認証によるユーザ認証を行うことができます。

6.5.3. ユーザ管理

  • ユーザバッチ処理(登録・更新・削除) API 追加

    REST APIを使用し、管理者が一括してユーザ登録等を行うことができます。

  • ユーザ無効化 API 追加

    REST APIやデベロッパーコンソールから、登録済みのユーザを無効化することができます。 無効化したユーザは認証に失敗します。 ユーザ登録、更新通知のメールに、ユーザの有効、無効を示す情報を追加しています。

6.5.4. JSONオブジェクトストレージ

  • JSONフィールド暗号化機能

    特定のフィールドを、暗号化してDBに保存することができます。

  • バッチ API への MongoDB トランザクション機能追加

    複数のドキュメントをアトミックに更新することができます。 使用にはMongoDB 4.0以上が必要です。

6.5.5. ファイルストレージ

Rangeヘッダを使用したファイルの一部取得、更新有無による取得判定に対応しました。

6.5.6. イベント駆動

ファイル登録等のイベントを契機に、Clound Function を起動することができます。 詳細は、デベロッパーガイドの「NEC BaaS Event Subscription Developer Guide」を参照下さい。

6.5.7. 管理 REST API

テナント管理、アプリ管理を、REST APIから操作できます。

6.5.8. アクセスログ出力機能

システムログとアクセスログを、別々に出力することができます。 詳細は、 fluentd を利用したロギング を参照してください。

6.5.9. OpenJDK 11 対応

OpenJDK 11に対応しました。

6.5.10. MongoDB Atlas 対応

MongoDB AtlasをバックエンドDBとして使用することができます。 詳細は、 MongoDB Atlas を参照して下さい。

6.5.11. Swagger UI対応

デベロッパーコンソールから、Swagger UIを使用することができます。

詳細は、デベロッパーガイドの「REST API ガイド」=>「REST APIの概要」を参照して下さい。

6.6. ver 7.0.3 → ver 7.0.4 での変更点

6.6.1. デベロッパーコンソールサーバ

以下の不具合修正を行いました。

  • オブジェクト数が非常に多い場合、オブジェクト表示ページ総数がずれることがある
  • IE11からファイルのアップロードが失敗する場合がある

6.7. ver 7.0.2 → 7.0.3 での変更点

以下の機能を追加しました。

  • MongoDB サーバ接続に Connection URI が利用可能になりました。詳細は MongoDB設定 を参照ください。

6.8. ver 7.0.0 → 7.0.2 での変更点

以下の機能を追加しました。

  • APIGW(HTTP) リクエスト再送機能を追加
  • ログ表示の逆順表示機能追加

6.9. ver 6.5.3 → 6.5.4 での変更点

6.9.1. デベロッパーコンソールサーバ

以下の機能を追加しました。

  • ログ表示の逆順表示機能追加

6.10. ver 6.5.x → 7.0.0 での変更点

6.10.1. ライセンス認証

ライセンス認証が追加されました。 ライセンスキーが設定されていないと BaaS サーバが正常に動作しません。

ライセンスキーの投入手順は ライセンス認証 を参照してください。

6.10.2. オブジェクトストレージ強化

MongoDB の Aggregation Framework、および Extended JSON 表記に対応しました。 詳細は オブジェクトストレージ をご参照ください。

6.10.3. OpenID Connect認証 アカウントリンク対応

OpenID Connect認証 アカウントリンクに対応しました。 詳細は アカウントリンク情報の設定、取得、削除 を参照してください。

6.11. ver 6.5.2 → 6.5.3 での変更点

6.11.1. APIサーバ

以下の不具合修正を行いました。サーババージョンは v6.5.3 となります。

  • API Gateway (HTTP) クエリストリングに使用できない文字がある

6.12. ver 6.5.1 → 6.5.2 での変更点

6.12.1. APIサーバ

以下の不具合修正を行いました。サーババージョンは v6.5.2 となります。

  • SSE Push 送信先が 4096 個を超えると送信エラーになる
  • オブジェクトストレージ: 部分更新で一部の演算子を使うと、update権限のみでACLを変更できてしまう
  • ファイルストレージ: ファイル名に日本語が含まれるときに、Content-Disposition ヘッダのファイル名が文字化けする
  • ファイルストレージ: メモリ不足が原因で、AWS S3 に対する大容量ファイルアップロードが失敗することがある

6.13. ver 6.5.0 → ver 6.5.1 での変更点

6.13.1. APIサーバ

  • MongoDB 最大コネクション数のデフォルト値を 2000 から 200 に変更
  • テナント名に使用できる文字制約を追加 (先頭は英数字のみ、24文字hex文字列使用不可)
  • サーバログ改善: (ログイン成功時にセッショントークンの一部を出力)

6.14. ver 6.0.3 → 6.5.0 での変更点

6.14.1. 準拠する REST API の改訂

準拠する REST API が v6.5.0 に改訂されました。

REST API v6.0.0 に対して上位互換となっています。

6.14.2. SAML 認証機能追加

SAML認証によるユーザ認証に対応しました。 詳細は ADFS/SAML認証 を参照してください。

6.14.3. OpenID Connect認証機能追加

OpenID Connect認証によるユーザ認証に対応しました。 詳細は OpenID Connect 認証 を参照してください。

6.14.4. クライアント証明書認証機能追加

クライアント証明書認証によるユーザ認証に対応しました。 クライアント証明書認証を使用する場合は、BaaSサーバ以外にHAProxyなどのリバースプロキシが必要になります。

詳細は クライアント証明書認証 を参照してください。

6.14.5. LDAPグループ連携機能追加

ActiveDirectory 利用時にユーザの所属グループを自動的にBaaSサーバ側に転送する機能を追加しました。

詳細は、 認証機能ガイド の「LDAP/ActiveDirectory連携」⇒「グループ情報の自動連携」を参照してください。

6.14.6. ローカルユーザ・外部認証ユーザ混在対応

LDAP, SAML, OAuth/OpenID Connect などの外部認証連携利用時でも、該当テナント内でローカル認証を同時に使用できるようになりました。 具体的には外部認証連携時でも、ローカルユーザのサインアップ・ログインなどの REST API を利用可能です。

6.14.7. ファイルストレージ強化

  • S3互換オブジェクトストレージ対応
  • ユーザ定義メタ情報の付与機能を追加
    • ファイルのメタデータにユーザが定義したJSON形式のメタ情報 (例えば、ファイルバージョン・作成者情報など)を付与できるようになりました。

6.14.8. API Gateway

API Gateway に機能強化を行っています。 詳細は API Gateway 利用手順書「マイグレーションガイド」 を参照してください。

6.14.9. セキュリティ強化

ユーザ登録・更新時に E-mail を使用した本人確認・通知を行う機能を追加しました。

  • 本人確認機能を有効にすると、ユーザ登録・更新時にユーザ宛てに E-mail が送信され、記載した URLにブラウザでアクセスすることで確認を行うことができます。
  • また、通知機能を有効にすると、ユーザ宛てに通知メールが送信されるようになります。

設定方法は デベロッパーコンソール利用ガイド ⇒ 「テナントの管理」 ⇒ 「テナント設定 - 基本設定」を参照してください。

また、マスターキーを変更する機能を追加しました。 デベロッパーコンソールのアプリ編集画面でマスターキーを変更することができます。

6.14.10. デベロッパーコンソール強化

以下の機能を追加しました。

  • API Gateway / Cloud Function の編集機能
  • ファイルバケット内のファイル操作機能
  • メールなどのテンプレート編集機能
  • テナント管理画面の改善
  • グループの所属メンバ編集機能
  • API統計(メータリング)グラフ表示機能

6.14.11. 設定項目改善

  • RabbitMQ クラスタに接続するための設定項目を追加しました。また、RabbitMQ 接続設定はデベロッパーコンソールからも指定できるようになりました。
  • MongoDBサーバに接続する際のコネクション数を指定できるようになりました。
  • ファイルストレージを利用する際のファイル1つあたりの最大サイズを指定できるようになりました。なお、AWS S3 を利用する場合、本設定を適用せず、AWS S3 の上限までファイルデータを格納できます。
  • 各設定項目は環境変数で指定することができるようになりました。

詳細は 設定ファイル を参照してください。

6.14.12. サーバ管理ツール強化

  • YAML形式の import/export サポート
  • テナントの項目追加(パスワードポリシー、MongoDB 個別接続設定、レートリミット設定、本人確認とアカウントロック関連の設定など)
  • 外部ストレージ設定の import/export サポート
  • ファイルバケットの項目追加(バケットの外部ストレージ設定)

詳細は コマンドラインツール を参照してください。

6.14.13. APNs 利用時の ALPN Boot 不要化

APNs (iOS Push) を使用する際に ALPN Boot を Tomcat に設定する必要が無くなりました。 詳細は ALPN 設定 を参照してください。

6.15. ver 6.0.2 → 6.0.3 での変更点

6.15.1. APIサーバ/デベロッパーコンソールサーバ

マルチテナントに関連するセキュリティ上の不具合を修正しました。

  • APIサーバ: マスターキーで別テナントのユーザを操作できてしまう (#6588)
  • デベロッパーコンソールサーバ: 別テナントのアプリ情報が見えてしまう (#6590)

機能面での変更はありません。

6.16. ver 6.0.0 → 6.0.2 での変更点

6.16.1. API サーバ

以下の不具合を修正しました。

  • パスワードリセットページに、不要なフィールド(現パスワード入力)がある
  • API Gateway: HTTP Proxy レスポンスが空のときにエラーになる

6.16.2. デベロッパーコンソールサーバ

以下の不具合を修正しました。

  • デベロッパーコンソール: オブジェクト検索結果画面でページ切り替えができない

6.17. ver 5.0.2 → 6.0.0 での変更点

6.17.1. 準拠する REST API の改訂

準拠する REST API が v6.0.0 に改訂されました。

REST API v5 に対して上位互換となっています。

6.17.2. 設定ファイル変更

設定ファイル(XML)より、以下の項目が削除されました。

  • メール関連設定 : SMTPサーバホスト名・ポート番号、SMTP認証ユーザ・パスワード、Fromアドレス
  • デベロッパーコンソール: ベースURL, ヘルプURL
  • SSE Push サーバ URI

これらの値のほとんどはデベロッパーコンソールの「システム設定」で行うように変更されました。

設定ファイルの詳細は 設定ファイル を参照してください。

6.17.3. API Gateway (HTTP Proxy) の仕様変更

API Gateway (HTTP Proxy) の Swagger 記述フォーマットに変更があります。 具体的には、レスポンスマッピング(ステータスコードのマッピング)の記述方法が変更になっています。

詳細は API Gateway 利用手順書の レスポンスマッピング を参照してください。

6.17.4. 初期システム管理者アカウントの自動追加

システムインストール後、初回デベロッパーコンソールにアクセスする際、 初期システム管理アカウントが自動的に作成されるようになりました。 (コマンドラインツールでアカウントを手動追加している場合は自動追加は実施されません)

詳細は 初回ログイン を参照してください。

6.18. ver 5.0.1 → 5.0.2 での変更点

以下の不具合を修正しました。

  • オブジェクトストレージ: クエリ結果に Long 値が入っている場合、$numberLong フィールド内に格納されてしまう
  • SSE Push : RabbitMQ 接続が失敗しても SSE Push の register/unregiter がエラーにならない
  • デベロッパーコンソール: Push受信可能グループに g:anonymous などを指定すると黒画面(エラー)になってしまう

6.19. ver 5.0.0 → 5.0.1 での変更点

6.19.1. CORS Access-Control-Allow-Credential ヘッダ許可設定追加

Access-Control-Allow-Credential ヘッダの送信許可設定を追加しました。

詳細はデベロッパーコンソール利用ガイドの テナント設定 を参照ください。

6.19.2. 不具合修正

API Gateway (HTTP Proxy) において、chunked encoding されたレスポンスを正常に Proxy できない問題を修正しました。

6.20. ver 4.0.3 → 5.0.0 での変更点

6.20.1. 設定ファイル変更

  • ssePush.internalAmqpUri 設定は削除されました。代わりに amqp.uri 設定を使用してください。
  • console.allowSelfSignup 設定は削除されました。デベロッパーコンソールの「システム設定」より設定変更ができるようになっています。
  • system.noChargeKey 設定が追加されました。Cloud Functions を使用する場合は設定が必要です。
  • api.internalBaseUrl 設定が追加されました。Cloud Function を使用する場合は設定が必要です。

詳細は 設定ファイル を参照してください。

6.20.2. API Gateway / Cloud Functions機能追加

API Gateway / Cloud Functions 機能に対応しました。

Cloud Functions機能を使用するためには Cloud Functionsサーバのインストールが必要です。 詳細は Cloud Functionsサーバ利用手順書 をご参照ください。

6.20.3. ログ閲覧機能追加

デベロッパーコンソールにシステムログ・Cloud Functionsログを閲覧する機能を追加しました。

なお、本機能を使用する場合は fluentd の設定が必要です。 詳細は fluentd を利用したロギング を参照してください。

6.20.4. APIレートリミット(スロットリング)機能追加

REST API の発行数を制限するレートリミット(スロットリング)機能を追加しました。

設定方法については デベロッパーコンソール利用ガイド の「レートリミット」の章をご参照ください。

6.20.5. パスワードポリシ・ロックポリシの強化・設定変更機能追加

パスワードポリシ・アカウントロックポリシを強化し、また設定値をテナント毎に変更する機能を追加しました。

設定方法については デベロッパーコンソール利用ガイド の「テナント設定」の章をご参照ください。

6.20.6. テナント毎のDBクラスタ切り替え機能追加

テナント単位で DB クラスタを切り替える機能を追加しました。 詳細は テナント単位の MongoDB クラスタ切り替え を参照してください。

6.20.7. オブジェクトストレージ MongoDB クエリタイムアウト設定の追加

オブジェクトストレージから MongoDB にクエリを行う際のデフォルトタイムアウト値 (MongoDBサーバ側のタイムアウト値)をデベロッパーコンソールから指定できます。

詳細は「デベロッパーコンソール利用ガイド」の「システム設定」を参照してください。

6.20.8. オブジェクトストレージ クエリプランナ実行機能の追加

オブジェクトストレージに対するクエリプランナの実行機能をデベロッパーコンソールに追加しました。

詳細は「デベロッパーコンソール利用ガイド」の「オブジェクトバケット管理」 → クエリプランナー を参照してください。

6.21. ver 4.0.2 → 4.0.3 での変更点

以下の不具合修正を行いました。

  • オブジェクトストレージ: $or 条件を指定してクエリを実施すると、アクセス権限がないオブジェクトにアクセスできてしまう。
  • mongos を2台指定することができない(起動時エラーになる)

機能面での変更はありません。

6.22. ver 4.0.1 → 4.0.2 での変更点

以下の不具合修正を行いました。

  • オブジェクト数やユーザ数が非常に多い場合、デベロッパーコンソールで オブジェクト・ユーザ一覧を表示した際にメモリ不足でサーバが落ちる問題を修正。

機能面での変更はありません。

6.23. ver 4.0.0 → 4.0.1 での変更点

6.23.1. オブジェクトストレージ: 論理削除オブジェクトの自動定期削除機能追加

論理削除状態のオブジェクトを自動的に定期削除する機能を追加しました。

  • テナントごとに、論理削除状態オブジェクトの有効期限を指定します。設定は、デベロッパーコンソールの「テナント設定」から行ってください。
  • デフォルト状態では、自動定期削除は行わない設定となっています。
  • 定期削除機能は、APIサーバ上で1時間に1回の間隔で自動実行されます。

6.23.2. APNs Push

  • APNs Push サーバとの通信プロトコルを最新の APNs Provider API (HTTP/2) 方式に変更しました。
    • Tomcat に ALPN 設定を行う必要があります。詳細は ALPN 設定 を参照してください。
    • クライアント側への影響はありません。
  • デベロッパーコンソールでの APNs Push 証明書時に、Development, Production を手動選択するように変更しました。

6.24. ver 3.0.0 → 4.0.0 での変更点

6.24.1. Java 8 への移行

動作には JDK 8 以上が必須となりましたので、JDK 7 では起動しません。 JDK 7 をお使いの場合は JDK 8 への移行が必要です。

6.24.2. Tomcat バージョンの更新

必要な Tomcat のバージョンが 8.0.32 以上に変更になりました。 Tomcat 7.0.68 以上でも動作可能ですが、保証範囲外となります。

これより古いバージョンでは一部動作不具合が発生する可能性があります。 またセキュリティ脆弱性も報告されているため使用しないでください。

6.24.3. マイグレーション手順

WARファイルを差し替えるだけでマイグレーションは完了します。

デベロッパーコンソール関連データベースの一部スキーマが変更されていますが、 データベースは自動的にマイグレーションされますので、特に操作は必要ありません。 ただし、ver 3.x のサーバとは混在させないようにしてください。

6.24.4. 設定ファイルフォーマットの変更

設定ファイル (XMLファイル)の設定項目が追加・変更になっています。 適宜、修正を行ってください。

追加された項目は以下のとおりです。

  • console.helpUrl: デベロッパーコンソールのヘルプURL
  • ssePush.publicUrl: SSE Push サーバ URI
  • ssePush.internalAmqpUri : SSE Push 用 AMQP Broker URI

SDE Push に関連する以下の項目は削除となっています。

  • sdePush.internalUrl
  • sdePush.publicUrl
  • sdePush.serviceId

6.24.5. 準拠する REST API の改訂

準拠する REST API が v4.0.1 に改訂されました。

REST API は v3 に対してほぼ後方互換性があります。 ただし、後述するとおり SDE Push 関連の API は削除されています。

6.24.6. SSE Push 機能追加

SSE Push 機能を新たに追加しました。

これに伴い、設定ファイルの書式やセットアップ手順が変更になっていますので注意してください。 設定ファイルの詳細は 設定ファイル を参照してください。

6.24.7. デベロッパコンソール機能の変更

ユーザ・グループ管理機能、オブジェクトデータ参照・インポート・エクスポート機能、 運用管理者権限追加などの機能追加が行われています。

デベロッパーコンソールの詳細については デベロッパーコンソール利用ガイド を参照してください。