カスタムコース
カスタムコースは、SecureCodingHubコンテンツカタログから構築する練習トピックと学習シナリオの名前付きで順序付けされたシーケンスです。構築後、コースは組み込みカテゴリを割り当てる方法と同じ方法で課題ページから割り当てることができ、学習者は標準コースの1つであるかのように/learn/custom/<courseId>でインラインで消費します。
カスタムコースを構築するタイミング
組み込みのOWASPファミリーは意図的に広いです。それらは組織全体のロールアウトとコンプライアンスエビデンスパックの出発点として意味があります。しかし、チームが一度フルパスを行うと、次の課題はほぼ常により的を絞ったものになります — バックエンド採用のオンボーディング、CodeQL検出結果が継続的にフラグを立てている脆弱性クラスに焦点を当てたリフレッシャー、チームが移行しようとしている言語スタックのセキュアコーディング習慣の迅速なランプ。それがカスタムコースが価値を発揮する場所です: 必要なトピックとシナリオを正確に、必要な順序で、単一の名前付きバンドルに引き込めます。
場所
サイドバーで学習セクションの下のカスタムコースをクリックして、/organization/custom-coursesのリストページに着地します。リストには、組織が構築したすべてのコース、各コース内の項目数、現在参照されている課題数、作成者、最終更新日時が表示されます。コース行をクリックしてそのコースのビルダーを開きます。右上の+ 新規カスタムコースをクリックして1つ作成します。
コースの構築
ビルダーは2ペインレイアウトです。左ペインには、ドラッグハンドルでの並べ替えと行ごとの削除コントロールを備えた現在の項目リストが表示されます。右ペインはピッカーです — ライブコンテンツカタログから描画されたカテゴリ、モジュール、トピック、シナリオのツリー。Addボタンを使用すると、任意の粒度で項目を取り込めます:
| 追加先 | 効果 |
|---|---|
| トピック | 単一の練習トピックを追加します。学習者は、スタック設定に応じて自身の優先言語で内部のすべてのチャレンジを見ます。 |
| シナリオ | 単一の学習シナリオを追加します。学習者は学習モードと同じようにステップバイステップのウォークスルーを通過します。 |
| モジュール | モジュールを構成トピックに展開し、それぞれを個別の項目として追加します (後でそれらを並べ替えたり特定のものを削除したりできます)。 |
| カテゴリ | モジュールと同じですが、OWASPファミリーレベルです。後でトリミングする出発点として便利です。 |
コースをいつでも保存できます。部分的な保存が許可されています。Nameは唯一の必須フィールドです。オプションのDescription、Icon、Colorフィールドを使用して学習者UI内でコースをブランド化できます。
カスタムコースの割り当て
課題 → 新規課題から、コンテンツ領域としてカスタムを選択し、ドロップダウンからコースを選択します。残りの課題フォームは、組み込みコンテンツと同じように動作します — 担当者 (ユーザー、チーム、または組織全体) を選択し、期限を選択し、必須またはオプションを選択し、作成します。担当者の進捗はコースのコンテンツに対して項目ごとに追跡され、課題詳細ページはそれらをOWASP追跡課題が使用するのと同じ完了パーセンテージにロールアップします。
編集と削除
コースを開いて、名前、説明、アイコン、色、または項目リストを変更します。項目の変更は、アクティブな課題に即座に適用されます — 項目を追加すると進行中の学習者の分母が増え、削除すると減ります。並べ替えは完了の数学に影響しません。学習者UIで項目がレンダリングされる順序を変えるだけです。
削除アクションは、コースを非アクティブに設定します。リスト、課題作成ピッカー、学習者消費画面に表示されなくなります。コースを参照する履歴課題は、既存の進捗を引き続き報告します。コースがなくなったら新しい担当者を受け入れません。
プログラム的アクセス
管理UIのすべては公開APIからも到達可能です — JSONリクエストとレスポンスの形状についてはAPI → カスタムコースを参照。一般的な自動化には、バージョン管理されたソースコントロールリポジトリから厳選されたコースのリストを同期する、チームメタデータからプログラム的にチームごとのオンボーディングコースを構築することが含まれます。