教材產製標準
本文件把 John 在 Telegram 指定的 goal 固定成 repo 內可驗收的工作規格。之後所有 slide、lab、speaker note、講師 runbook 都要依這份標準檢查。
Goal
依 plan/course-outline.md 製作 Entra ID / Azure 攻擊基礎課程教材:
- 教材主線必須依課綱設計,不另外發散成 AD-heavy 或通用 Azure 管理課。
- 學生版內容只呈現課程資訊、概念、攻擊鏈脈絡、實驗步驟、觀察重點與防禦檢查點。
- 課程目標是讓學生學會判斷與說明攻防關係,不設計 CTF flag、分數提交或強制作業交付。
- Speaker notes 要與 John 平常簡報風格一致:講師視角、提醒點、取捨理由、現場節奏,不寫成冗長逐字稿。
- 每個技術點都要能追到正式文件、可靠研究資料或已存在的滲透測試技巧來源。
- 沒有來源支撐的內容不得直接寫成定論;先放入
references/source-map.md的Need source或Lecture-only candidate。 - 最終 slide source 要支援 OpenSlide 顯示,並且學生版與講師版可以清楚分開輸出。
Repository Contract
plan/course-outline.md: 課綱與教學主線。material-production-standard.md: 本規格。slide-build-checklist.md: 每章產出與驗收 checklist。slides/student/: 學生會看到的 slide source。speaker-notes/: 講師看的 speaker notes,依 slide 編號對應。openslide/: OpenSlide 顯示設定或轉檔輸出規格。labs/student/: 學生操作步驟。instructor/: 講師 runbook、環境初始化、故障排除。references/source-map.md: 課程主題到來源的對照表。research-notes/: 逐主題整理的研究筆記。assets/diagrams/: 架構圖、攻擊鏈圖。screenshots/: 實驗截圖,需去識別化。
Slide Rules
- Student slide 不放:
- 講師提醒、時間控制、臨場取捨。
- 未公開 tenant、token、secret、private key、測試帳密。
- 沒有來源支撐的攻擊細節。
- Student slide 要放:
- 明確學習目標。
- 攻擊者決策點與防禦者觀察點。
- Lab 前置條件、操作邊界與 learning observations。
- 來源簡短標記,例如
[MS-PRT]、[ROADtools]。 - Student slide 與 lab 不要求:
- 交 flag。
- 上傳或提交 tool output。
- 產出可評分的攻擊結果。
- 把私人 tenant、token、secret、log 原文交給講師。
- Speaker note 要放:
- John 要補充的說法與現場節奏。
- 為什麼這個實驗保留或拿掉。
- 常見誤解、風險提醒、時間不夠時的 shortcut。
- 可跳過內容與可加深內容。
Source Rules
每個技術點至少要符合其一:
- Microsoft 官方文件:Microsoft Learn、Microsoft Security Blog、Microsoft Graph / Azure REST docs。
- 可靠研究:研究者原文、工具官方 repo/wiki、會議投影片、MITRE ATT&CK。
- 既有滲透測試技巧:公開工具文件、作者說明、可重現但不含真實目標或未授權操作的 lab 技法。
來源使用原則:
- Microsoft 官方文件優先支撐產品行為、權限模型、API、token、Conditional Access、Azure RBAC。
- 研究來源支撐攻擊脈絡、工具用途、真實案例與技術限制。
- 新聞或二手文章只能作為 threat context,不能單獨支撐技術操作。
- 如果來源與目前產品行為可能已改變,實作前要重新查證日期與文件內容。
Acceptance Checklist
每一章完成前必須確認:
- [ ] 對應
plan/course-outline.md中的章節與 teaching spine。 - [ ] Student slide 與 speaker note 分離。
- [ ] 每個技術點在
references/source-map.md有來源 ID。 - [ ] Lab 步驟不要求學生使用 Global Administrator,除非該章明確標記為講師示範。
- [ ] Lab 有 learning observations,例如學生能指出 Graph query result、sign-in log event、role assignment、resource access result 代表什麼;不要求提交檔案或 flag。
- [ ] 防禦邊界有說清楚:可防什麼、不能防什麼、需要哪些條件。
- [ ] OpenSlide 顯示不依賴講師 notes。
- [ ] 未決策項目放入
plan/slide-build-checklist.md,不混入正式教材。
Current Scope Decision
6 小時課程先收斂成這條主線:
- Entra ID / Azure 權限模型與 token 基礎。
- Initial access:device code phishing 或 OAuth phishing 擇一做主實驗。
- ROADtools recon 與 post-access discovery。
- Application / Service Principal / ownership 濫用。
- Device persistence 或 malicious device join 擇一到二。
- Azure Storage、Key Vault、Managed Identity 作為 Azure resource abuse 主軸。
Hybrid credential theft 先列為 optional / lecture-only,除非時間與 lab 環境確認可控。
Original Markdown source
# 教材產製標準
本文件把 John 在 Telegram 指定的 goal 固定成 repo 內可驗收的工作規格。之後所有 slide、lab、speaker note、講師 runbook 都要依這份標準檢查。
## Goal
依 `plan/course-outline.md` 製作 Entra ID / Azure 攻擊基礎課程教材:
- 教材主線必須依課綱設計,不另外發散成 AD-heavy 或通用 Azure 管理課。
- 學生版內容只呈現課程資訊、概念、攻擊鏈脈絡、實驗步驟、觀察重點與防禦檢查點。
- 課程目標是讓學生學會判斷與說明攻防關係,不設計 CTF flag、分數提交或強制作業交付。
- Speaker notes 要與 John 平常簡報風格一致:講師視角、提醒點、取捨理由、現場節奏,不寫成冗長逐字稿。
- 每個技術點都要能追到正式文件、可靠研究資料或已存在的滲透測試技巧來源。
- 沒有來源支撐的內容不得直接寫成定論;先放入 `references/source-map.md` 的 `Need source` 或 `Lecture-only candidate`。
- 最終 slide source 要支援 OpenSlide 顯示,並且學生版與講師版可以清楚分開輸出。
## Repository Contract
- `plan/`
- `course-outline.md`: 課綱與教學主線。
- `material-production-standard.md`: 本規格。
- `slide-build-checklist.md`: 每章產出與驗收 checklist。
- `slides/`
- `student/`: 學生會看到的 slide source。
- `speaker-notes/`: 講師看的 speaker notes,依 slide 編號對應。
- `openslide/`: OpenSlide 顯示設定或轉檔輸出規格。
- `labs/`
- `student/`: 學生操作步驟。
- `instructor/`: 講師 runbook、環境初始化、故障排除。
- `references/`
- `source-map.md`: 課程主題到來源的對照表。
- `research-notes/`: 逐主題整理的研究筆記。
- `assets/`
- `diagrams/`: 架構圖、攻擊鏈圖。
- `screenshots/`: 實驗截圖,需去識別化。
## Slide Rules
- Student slide 不放:
- 講師提醒、時間控制、臨場取捨。
- 未公開 tenant、token、secret、private key、測試帳密。
- 沒有來源支撐的攻擊細節。
- Student slide 要放:
- 明確學習目標。
- 攻擊者決策點與防禦者觀察點。
- Lab 前置條件、操作邊界與 learning observations。
- 來源簡短標記,例如 `[MS-PRT]`、`[ROADtools]`。
- Student slide 與 lab 不要求:
- 交 flag。
- 上傳或提交 tool output。
- 產出可評分的攻擊結果。
- 把私人 tenant、token、secret、log 原文交給講師。
- Speaker note 要放:
- John 要補充的說法與現場節奏。
- 為什麼這個實驗保留或拿掉。
- 常見誤解、風險提醒、時間不夠時的 shortcut。
- 可跳過內容與可加深內容。
## Source Rules
每個技術點至少要符合其一:
1. Microsoft 官方文件:Microsoft Learn、Microsoft Security Blog、Microsoft Graph / Azure REST docs。
2. 可靠研究:研究者原文、工具官方 repo/wiki、會議投影片、MITRE ATT&CK。
3. 既有滲透測試技巧:公開工具文件、作者說明、可重現但不含真實目標或未授權操作的 lab 技法。
來源使用原則:
- Microsoft 官方文件優先支撐產品行為、權限模型、API、token、Conditional Access、Azure RBAC。
- 研究來源支撐攻擊脈絡、工具用途、真實案例與技術限制。
- 新聞或二手文章只能作為 threat context,不能單獨支撐技術操作。
- 如果來源與目前產品行為可能已改變,實作前要重新查證日期與文件內容。
## Acceptance Checklist
每一章完成前必須確認:
- [ ] 對應 `plan/course-outline.md` 中的章節與 teaching spine。
- [ ] Student slide 與 speaker note 分離。
- [ ] 每個技術點在 `references/source-map.md` 有來源 ID。
- [ ] Lab 步驟不要求學生使用 Global Administrator,除非該章明確標記為講師示範。
- [ ] Lab 有 learning observations,例如學生能指出 Graph query result、sign-in log event、role assignment、resource access result 代表什麼;不要求提交檔案或 flag。
- [ ] 防禦邊界有說清楚:可防什麼、不能防什麼、需要哪些條件。
- [ ] OpenSlide 顯示不依賴講師 notes。
- [ ] 未決策項目放入 `plan/slide-build-checklist.md`,不混入正式教材。
## Current Scope Decision
6 小時課程先收斂成這條主線:
1. Entra ID / Azure 權限模型與 token 基礎。
2. Initial access:device code phishing 或 OAuth phishing 擇一做主實驗。
3. ROADtools recon 與 post-access discovery。
4. Application / Service Principal / ownership 濫用。
5. Device persistence 或 malicious device join 擇一到二。
6. Azure Storage、Key Vault、Managed Identity 作為 Azure resource abuse 主軸。
Hybrid credential theft 先列為 optional / lecture-only,除非時間與 lab 環境確認可控。