187 lines
13 KiB
Markdown
187 lines
13 KiB
Markdown
# Cascades of Tucson — Master Plan v2 (phones-first)
|
||
|
||
**Built:** 2026-04-24 by Howard + Claude
|
||
**Supersedes:** `PLAN-AND-QUESTIONS-2026-04-23-archived.md`
|
||
**Target:** Pilot caregiver phone usable end-to-end by Monday 2026-04-27.
|
||
**Goal (Howard's exact words):** Authorized user + authorized device + authorized network → no 2FA → M365 sign-in (tied to domain account via PHS) → SSO into ALIS.
|
||
|
||
> This plan was rewritten after catching scope drift in the 2026-04-23 version. See Part 7 for the honest drift log. The executable path is Track A; Track B runs in parallel; Track C is later phases.
|
||
|
||
---
|
||
|
||
## Part 1 — Status as of 2026-04-24
|
||
|
||
### What's genuinely done
|
||
- **AD hygiene (G1)** — idempotent. OU=Excluded-From-Sync, 4 role accounts moved, 34 proxyAddresses populated, 16 SG-* groups created, display names normalized. `reports/2026-04-22-g1-execute.md` + `reports/2026-04-22-g1-post-verify.md`
|
||
- **M365 orphan cleanup (G2 partial)** — 7 orphan / former-employee accounts deleted; 1 Business Standard seat freed. `reports/2026-04-22-m365-orphan-deletes.md`
|
||
- **CS-SERVER preflight** — time sync, TLS 1.2, WSB installed, rebooted, post-reboot verification clean. Ready for Entra Connect. `reports/2026-04-22-cs-server-preflight-verification.md`
|
||
- **Synology discovery** — 10 shares, 35 users, 4 groups inventoried. 7 shared-credential HIPAA violations flagged. `docs/migration/synology-permission-inventory.md`
|
||
- **Intune MDM foundation** — MDMS@ service account, Apple MDM push cert, Android enrollment profile (dynamic group), Android compliance policy, config profiles, 7 required apps (incl. ALIS web app). 1 Samsung A15 enrolled compliant, 24 more in box. `PROJECT_STATE.md`
|
||
- **DMARC p=quarantine** + post-DMARC spoofing recheck clean. `reports/2026-04-21-post-dmarc-spoofing-recheck.md`
|
||
- **Staff CSV + working list** from Meredith/John. `reports/cascades-staff-2026-04-22.csv`
|
||
- **HIPAA review + risk register** drafted (with some accuracy issues flagged in Part 7). `docs/security/hipaa-review-2026-04-22.md`
|
||
|
||
### What's in flight vs not started
|
||
- **Entra Connect install** — NOT started. Prep is green.
|
||
- **Phone rollout at scale** — NOT started. Pattern validated on 1 device.
|
||
- **Role mailbox conversions (G2 remainder)** — have delegation lists for 6/11; 5 pending Meredith.
|
||
- **CA policies** — nothing live. No Named Location yet.
|
||
- **ALIS SSO** — nothing registered.
|
||
|
||
---
|
||
|
||
## Part 2 — Track A: Phone SSO Mission (pilot → caregiver rollout)
|
||
|
||
**One sentence:** one caregiver, one phone, full end-to-end flow proven by Monday — then scale.
|
||
|
||
### Phase 1 scope
|
||
- **1 pilot caregiver** (Howard picks — must be confirmed-spelling name + willing tester)
|
||
- **1 phone** (reuse current enrolled Phone 1 or fresh Samsung A15 from the 24 unopened)
|
||
- **Entra Connect sync scoped to `OU=Sync-Phase1-Caregivers` only**
|
||
- **PHS enabled** (Howard's decision 2026-04-24 — reverses prior "PHS deferred" call)
|
||
- **CA policy: MFA waived when user ∈ SG-Caregivers AND device compliant AND sign-in from Cascades WAN IP**
|
||
- **ALIS SSO live via OIDC App Registration**
|
||
|
||
Nothing else in this tenant is touched. No office staff change. No password cutover for the cloud-only population (that's Track C Phase 2).
|
||
|
||
### Gate-by-gate plan
|
||
|
||
| Gate | Target day | What | Blocker / input |
|
||
|---|---|---|---|
|
||
| **A1** | Fri PM | Entra Connect install on CS-SERVER, staging mode, scope = `OU=Sync-Phase1-Caregivers`, PHS on | Howard at CS-SERVER console |
|
||
| **A2** | Fri–Sat | Pull Cascades WAN IP from pfSense; create Entra Named Location "Cascades Office"; create CA policy "Cascades - Phone MFA Exception" in Report-only | Q38 (WAN IP static? — discover from pfSense cfg, not Meredith) |
|
||
| **A3** | Fri–Sat | Email `support@medtelligent.com` for SSO Integrations kickoff; create App Registration "Cascades of Tucson - ALIS SSO" (single-tenant, redirect `https://cascadestucson.alisonline.com/ExternalLoginCallback`, ID tokens implicit hybrid enabled); create client secret "ALIS - Single Tenant Secret"; vault creds | Howard / portal access |
|
||
| **A4** | Sat | Pilot caregiver AD account in `OU=Sync-Phase1-Caregivers`; add to `SG-Caregivers`; assign unassigned Entra ID P2 (no new spend); verify ALIS staff profile email == Entra UPN exactly | Howard picks pilot (T0-1) |
|
||
| **A5** | Sun AM | Exit Entra Connect staging; full sync; verify pilot user appears hybrid with AD password live; CA What-If check confirms MFA bypass fires for correct conditions | A1–A4 green |
|
||
| **A6** | Sun PM | Enroll phone (QR from `CSC - Android Shared Phones` profile); pilot caregiver signs in via MSDM; verify zero MFA prompt on Cascades Wi-Fi; verify Teams/Authenticator/ALIS web app all SSO; verify sign-out / second sign-in works (shared-device proof) | A5 green |
|
||
| **A7** | Mon AM | CA Report-only logs reviewed (zero unexpected blocks); flip policy to On | A6 green |
|
||
|
||
### Phase 1a (post-Monday): expand to full caregiver roster
|
||
- Create remaining ~36 caregiver AD accounts in same OU
|
||
- Purchase Business Premium seats (Q21 — tenant-wide preferred)
|
||
- Add to `SG-Caregivers`
|
||
- Factory-reset and enroll remaining 24 phones
|
||
- **Blocker resolved before 1a:** Q1 Ederick spelling
|
||
|
||
### Track A blockers
|
||
- **T0-1 (Howard):** pick pilot caregiver — name + consent
|
||
- **T0-2 (Howard — discoverable):** pfSense WAN IP — confirm static by inspecting Cox circuit config. If dynamic, plan Named Location update hook.
|
||
- **T0-3 (Meredith, cheap ask):** sign Microsoft HIPAA BAA. Doesn't block phones technically — Meredith's covered entity exposure is the driver. 5 min.
|
||
- **T0-4 (ALIS, lead time):** ALIS Integrations team response to `support@medtelligent.com`. Send Friday. They may need 24–48h.
|
||
|
||
---
|
||
|
||
## Part 3 — Track B: HIPAA Baseline (parallel to A, sized realistically)
|
||
|
||
**Scope:** compliant-enough-to-survive-an-audit. Not gold-standard. Each item sized honestly.
|
||
|
||
| ID | Item | Rule | Who | Effort | Cost |
|
||
|---|---|---|---|---|---|
|
||
| **B1** | Microsoft HIPAA BAA sign | §164.308(b)(1) Required | Meredith | 5 min portal click | $0 |
|
||
| **B2** | ALIS BAA confirmed | §164.308(b)(1) Required | Meredith → ALIS support | 1 email, 1–2wk vendor turnaround | $0 |
|
||
| **B3** | Risk Analysis document | §164.308(a)(1)(ii)(A) Required | Howard drafts → Mike/Howard sign Security Official → Meredith counter-signs CE | 3–4h | $0 |
|
||
| **B4** | Termination Procedures documented | §164.308(a)(3)(ii)(C) Required | Howard drafts from existing process | 1–2h | $0 |
|
||
| **B5** | Audit log retention decision | §164.312(b) + §164.316(b)(2) | Meredith picks option; Howard implements | 1h | $0 (option b) or ~$3/user/mo (option a) |
|
||
| **B6** | Synology shared-login risk acceptance | §164.312(a)(2)(i) interim | Meredith signs paper acknowledgment until Phase 4 cutover | Howard drafts form + route | $0 |
|
||
| **B7** | Break-glass admin **DECISION** (not the injected YubiKey spec — a decision entry only) | §164.312(a)(2)(ii) Addressable | Howard writes decision entry | 30 min | $0 |
|
||
| **B8** | Security Rule Implementation Register | §164.316(b) | Howard drafts — single doc listing every Addressable spec + decision | 2h | $0 |
|
||
|
||
### Audit retention options (B5)
|
||
- **(a)** Microsoft Purview Audit (Premium) add-on — 10yr retention — ~$3/user/mo
|
||
- **(b)** M365 Compliance retention policy at 7 years — $0 *if we're on Business Premium tenant-wide* (which we would be for Phase 1a anyway)
|
||
- **(c)** Monthly export to immutable Azure Blob — $0 but operational burden
|
||
|
||
**Recommended: (b)**, stacked on the Business Premium tenant-wide purchase we're already teeing up for Phase 1a. No additional spend.
|
||
|
||
### What Track B does NOT include (drift scrubbed)
|
||
- ~~FIDO2 YubiKey purchase~~ — was injected; Emergency Access Procedure is Addressable, not Required; documented decision (B7) suffices
|
||
- ~~Per-user DLP policies~~ — not in Security Rule Required set
|
||
- ~~Defender for Identity / SIEM~~ — nice-to-have, not baseline
|
||
|
||
---
|
||
|
||
## Part 4 — Track C: Future phases (not this week)
|
||
|
||
| Item | When | Blocker |
|
||
|---|---|---|
|
||
| **C1** Phase 2 sync — in-building office-PHI staff (Sharon, Allison, Alma, Kyla, etc.) | Week-2 or later | Pre-cutover AD password reset to known values; 48h user comms; scheduled maintenance window |
|
||
| **C2** Phase 3 sync — remaining staff | Week-3 or later | Same mechanics as C1, larger batch |
|
||
| **C3** G2 role mailbox conversion (6 ready, 5 pending delegations) | Any time — execute the 6 with lists we have | 5 of 11 pending Meredith answers on delegates (Q8, Q11, Q14, Q15, Q16) |
|
||
| **C4** Synology → CS-SERVER file-share migration (Phase 4) | After Phase 2/3 sync | John answers on pacs/Activities/chat/Sandra Fish shares + MainOffice group membership |
|
||
| **C5** Wave 5 hardening — BitLocker fleet, LAPS, password policy, krbtgt rotation | After Phase 4 | Previous phases complete |
|
||
|
||
---
|
||
|
||
## Part 5 — Open questions (slimmed, re-tiered)
|
||
|
||
### T0 — Blocks Monday
|
||
- **T0-1 (Howard):** Pilot caregiver — who? Must be confirmed-spelling name, willing tester.
|
||
- **T0-2 (Howard, discoverable):** pfSense WAN IP — static? Query the appliance.
|
||
- **T0-3 (Meredith, Friday ask):** sign Microsoft HIPAA BAA.
|
||
- **T0-4 (ALIS, send Friday):** kick off SSO Integrations engagement via `support@medtelligent.com`.
|
||
|
||
### T1 — Blocks Phase 1a (full caregiver rollout, not pilot)
|
||
- **Q1** Ederick Yuzon spelling — Meredith
|
||
- **Q21** Business Premium tenant-wide vs mixed SKU — Meredith (approve PO)
|
||
- **Q48** Reliable Agency shift scheduling pattern — Meredith (determines per-person vs supervised model)
|
||
|
||
### T2 — Track B completion (parallel)
|
||
- **Q17** MS BAA (= T0-3)
|
||
- **Q18** ALIS BAA — Meredith
|
||
- **Q19** Synology shared-login risk posture (a/b/c) — Meredith → B6
|
||
- **Q20** Audit retention path — Meredith → B5 (recommend (b))
|
||
- **Q25** Reliable Agency contract → workforce vs BA — Meredith
|
||
- **Q27–29** Training, sanctions, termination procedure docs — Meredith
|
||
|
||
### T3 — Blocks Phase 2/3 + Wave 4 (later)
|
||
- **Q2** Stephanie Devin status — Meredith
|
||
- **Q3** Dax Howard identity — Meredith
|
||
- **Q4** Tamra Matthews exit date — Meredith
|
||
- **Q6–16** Role mailbox delegations — Meredith (G2 remainder)
|
||
- **Q30–35** Synology content + MainOffice group — John
|
||
- **Q36** John's email activity — John
|
||
- **Q37** Matt Brooks cross-role delegation — John
|
||
- **Q38** WAN IP stability — John (confirms T0-2)
|
||
- **Q39** Dell R610 replacement — John
|
||
|
||
### Dropped (drift — see Part 7)
|
||
- ~~**Q23** FIDO2 security key purchase~~
|
||
- ~~**Q24** Second break-glass holder~~
|
||
|
||
---
|
||
|
||
## Part 6 — Executable now (no client answers needed)
|
||
|
||
| Item | Agent / effort | Blocks what |
|
||
|---|---|---|
|
||
| Draft Risk Analysis (B3) | Howard, 3–4h | Nothing — parallel to Track A |
|
||
| Draft Termination Procedures (B4) | Howard, 1–2h | Nothing |
|
||
| Draft Security Rule Implementation Register (B8) | Howard, 2h | Nothing |
|
||
| Draft Synology risk-acceptance form for Meredith's signature (B6) | Howard, 30min | Nothing |
|
||
| SMB3 encryption on `\\CS-SERVER\homes` | `Set-SmbShare -Name homes -EncryptData $true` via GuruRMM | H3 HIPAA risk |
|
||
| Create `OU=Sync-Phase1-Caregivers` on CS-SERVER | Howard, 5 min | Track A Gate A1 prep |
|
||
| ALIS App Registration in Entra (A3) | Howard, 20 min | Track A Gate A5 verify |
|
||
| Email ALIS support for SSO kickoff | Howard, 10 min | Lead-time |
|
||
|
||
---
|
||
|
||
## Part 7 — Drift log (honest record)
|
||
|
||
The 2026-04-23 master plan had four accuracy/scope problems traced to doc-generation drift. Captured here so we don't repeat:
|
||
|
||
1. **FIDO2 / YubiKey recommendation appeared without user input.** First showed up in `docs/cloud/user-account-rollout-plan.md` line 160 (commit `c077d58` — a staff-CSV ingest session where the session log has zero FIDO2 mention). Escalated to Required HIPAA finding H2 in `docs/security/hipaa-review-2026-04-22.md` (commit `6bd4166`, auto-sync, no session log). Then to Q23–24 T1 blocker in `PLAN-AND-QUESTIONS-2026-04-23.md` asking Meredith to buy a specific YubiKey 5C NFC (~$55). **The §164.312(a)(2)(ii) citation is Addressable, not Required, and doesn't prescribe FIDO2.** Removed.
|
||
|
||
2. **ALIS SSO marked "Optional / separate project."** Gate G8 labeled optional in the old plan. In reality ALIS SSO is the endpoint of Howard's goal. Promoted to Track A Gate A3.
|
||
|
||
3. **PHS deferred indefinitely.** Gate G5 was labeled deferred. Howard's confirmed intent 2026-04-24 is PHS enabled so M365 password == AD password. Reversed.
|
||
|
||
4. **SAML / Enterprise App vs OIDC / App Registration.** My old writeup described ALIS SSO as "Enterprise App with SAML/OIDC." The ALIS doc (https://support.alisonline.com/hc/en-us/articles/34831696021901) specifies **App Registration with OIDC implicit hybrid flow and a client secret.** Not SAML, not Enterprise Application. Corrected in Gate A3.
|
||
|
||
**Anti-drift commitment going forward:** new architectural decisions must trace back to a session log or user message, not be drafted unilaterally during document generation. When a document auto-adds a technical spec that nobody discussed, that's drift — we flag it rather than carrying it forward.
|
||
|
||
---
|
||
|
||
## Revision history
|
||
- 2026-04-23 — original plan drafted by Howard (now archived)
|
||
- 2026-04-24 — rewritten: Track A/B/C split, phased Entra Connect sync, drift log added, Monday pilot target locked in
|