Nutmeg は Open edX の最新のネームドリリースです。9年2022月XNUMX日にリリースされました。この記事では、オペレーターと開発者(つまり、Open edX のコードを作成する人や Open edX インスタンスをデプロイする人)のエクスペリエンスに関する最近の変更点についてご紹介します。これには、Tutor の最新かつ最も優れた変更点、Open edX のイベントとフィルターへの注目、そして廃止、削除、セキュリティ更新に関する重要な注意事項が含まれます。
講師のハイライト
Mapleリリース以降のTutorの変更点については、 チューターの変更履歴 – バージョン13.0.1から14.0.0まで。主な変更点は以下のとおりです。
チューターの機能と改善点
- 新しく拡張された 「バージョン1」プラグインAPI という考えに基づいて 「フック」は、プラグインがTutorのアクションに反応したり、データフィルターを使用してTutorの挙動を変更したりできるようにする拡張ポイントです。古い 「バージョン0」プラグインAPI は引き続きサポートされますが、プラグイン開発者は新しい API に移行することをお勧めします。
- アップグレード時のより包括的な指示
- 複数の新しいコマンド:
- `tutor k8s apply`: `kubectl apply` との直接インターフェース
- `tutor [dev|local|k8s] status`: システム情報のステータスを提供します
- `tutor dev quickstart`: 開発セットアッププロセスの摩擦を軽減する `tutor local quickstart` のバリエーション
- `tutor [local/dev] copyfrom`: コンテナからコンテンツをコピーする
- -m/–mount`: いくつかのローカルおよび開発コマンドに追加されたオプションで、ホストからフォルダーを自動的にバインドマウントします。これは、古い `bindmount` コマンドと `–volume` オプションに取って代わります。
- `tutor dev start SERVICE` では、ブレークポイントのデバッグのためにサービスに接続できるようになりました。
- `dev` コンテナを起動すると `local` コンテナが停止するようになりました。また、その逆も同様です。
- Docker イメージでカスタム パッケージをインストールし、root としてコマンドを実行する機能
- Docker ビルド引数としてではなく、`config.yml` を介して `EDX_PLATFORM_REPOSITORY` と `NPM_REGISTRY` をオーバーライドする機能。
- Studio でコースの表示設定を「なし」に設定することで、LMS の /course 検索ページからコースを非表示にすることができます。
- 永続的な成績がデフォルトで有効になりました。
チューターの廃止と重大な変更
- `tutor dev runserver` は非推奨となり、代わりに `tutor dev start` が推奨されます。
- `tutor k8s exec “ ”` (引用符付き) は非推奨です。代わりに `tutor k8s exec を使用してください。 `。これは`tutor local exec`の構文と一致します。 `。
- `TUTOR_EDX_PLATFORM_SETTINGS` 環境変数のサポートを廃止しました。代わりにプラグインを作成することを推奨します。
- lms.env.json と cms.env.json はそれぞれ `lms.env.yml` と cms.env.yml になりました。プラグイン開発者は、複数のパッチを再フォーマットして YAML 形式を使用する必要があります。
複数のチューターセキュリティとバグ修正。 チューターの変更履歴 – 詳細についてはバージョン 13.0.1 から 14.0.0 をご覧ください。
Open edX イベントとフィルター
Open edX イベントとフィルター edx-platformの内部をいじることなくコアを拡張する新しい方法を追加します(この作業は OEP-50: フック拡張フレームワーク).
- Open edX イベント: Django Signals のこの標準化バージョンにより、開発者は登録、ログイン、登録などの主要なプロセスが完了した後に送信されるイベントをリッスンするだけでプラットフォームの機能を拡張できます。
- Open edX フィルター: 拡張機能開発者は、設定のみを使用して、登録、ログイン、登録などの重要なプロセスが開始される前に実行される関数のリストを設定できます。
詳細については、 OEP ドキュメント、またはフェリペ・モントーヤの Open edX 2022 カンファレンス プレゼンテーション この製品の背景、アーキテクチャ、および使用方法について説明します。
実行する重要な管理コマンドと設定する構成変数
「学習シーケンス」と呼ばれる内部パフォーマンス改善機能は、いくつかのリリースでオプトインされていましたが、現在 Nutmeg では常時オンになっています。 Koa以降に再公開されていないコースがある場合はアップグレードする前に、コースで simulate_publish cms django コマンドを実行して、学習シーケンス データを入力します。
CLOSEST_CLIENT_IP_FROM_HEADERS 構成値を設定しないと、プロキシの設定に応じて、正当なトラフィックのレート制限が発生したり、ブルート フォース攻撃をブロックできなかったりする可能性があります。
廃止と削除
Maple リリース以降、次の機能が廃止および削除されました。
- edx-certificatesリポジトリはアーカイブされました
- ボクチョイ(テストプラットフォーム)がアーカイブされました
- django-ratelimit-backend ライブラリが edx-platform から削除されました。標準の django-ratelimit バックエンドが使用されるようになりました。これにより、デフォルトの Django 管理ログインウィンドウが削除され、ユーザーはまず LMS からログインする必要が生じます。
- 「旧Mongo」コースアクセスはついに完全に削除されました。つまり、コースページのURLに表示されるcourse-v1:Org+Course+runではなく、Org/Course/Runのようなキーを持つコースランには、学習者はアクセスできなくなります。
詳細については、 廃止と削除 Nutmeg wiki ページのセクション。
セキュリティの強化
理解しておくべき主要なセキュリティ強化が 2 つあります。設定する必要がある新しい構成値 (CLOSEST_CLIENT_IP_FROM_HEADERS) と、Nutmeg にアップグレードする前に注意する必要がある SafeSessionMiddleware の変更です。
- CLOSEST_CLIENT_IP_FROM_HEADERS は、すべてのデプロイメントで設定する必要がある新しい構成値です。
- これを設定しないと、プロキシの設定に応じて、正当なトラフィックのレートが制限されたり、ブルート フォース攻撃をブロックできなかったりする可能性があります。
- これはセキュリティに影響を与える設定で、デプロイメントにクライアントのIPアドレスの決定方法を指定します。この設定方法(および設定理由)については、openedx.core.djangoapps.util.ip のドキュメント(およびdjango-rest-frameworkの関連するNUM_PROXIES設定)をご覧ください。
- SafeSessionMiddleware は、キャッシュの誤った構成や、あるユーザーが別のユーザーのセッションを取得してしまうようなバグによって発生する可能性のある脆弱性に対して、いくつかの保護機能を提供する既存のミドルウェアです。
- 以前は、リクエストまたはセッションとレスポンスの間でユーザーの不一致が検出された場合、ミドルウェアは警告をログに記録していましたが、現在はセッションを無効化し、エラーレスポンスを送信します。ENFORCE_SAFE_SESSIONSトグルはデフォルトで有効になっていますが、無効にして警告のみのログ記録に戻すこともできます。
- Nutmegにアップグレードする前に、ログに「SafeCookieData user at request」で始まる警告が含まれていないこと、またはこれらの警告が非常にまれであることを確認してください。これらの警告が頻繁に発生する場合は、mark_user_change_as_expectedを呼び出す必要があるカスタムログイン、マスカレード、または登録コードによって誤検知が発生している可能性があります。そうでない場合、有効なリクエストが拒否される可能性があります。
詳細については、 リリースノート または ナツメグのウィキページ.
![]()