Changelog
This pass restructured file boundaries and reading order across the repo so that each file owns a clear, non-overlapping domain and foundational concepts come before things built on them. Paragraph-level deduplication was deferred to a later pass.
Reading order, before vs. after
docs/misc/ (Reference) — before:
- Cloud Fundamentals
- Reading List & Resources (
scratch.md) - Microsoft Azure Overview
- Microsoft Azure Security Architecture (
microsoft-azure-security.md) - Microsoft Azure Security Model
- Microsoft Azure Platform Trust Chain
- Microsoft Azure Hardware Trust, Encryption, and Key Management
docs/misc/ (Reference) — after:
- Microsoft Azure Overview
- Microsoft Azure Platform Trust Chain (silicon → firmware → boot → kernel → drivers → hypervisor)
- Microsoft Azure Infrastructure & Tenant Isolation (was “Security Architecture”)
- Microsoft Azure Hardware Trust, Encryption, and Key Management
- Microsoft Azure Security Model: Shared Responsibility & Customer Data
- Cloud Fundamentals
- Reading List & Resources
The new order puts platform trust and the hypervisor boundary before encryption and key management, in line with the principle that lower layers must be trustworthy before guarantees built on them are credible.
docs/core/ — nav_order updates to group conceptual notes first, then specific TEE technologies, then cross-cutting flows and use cases:
| File | nav_order before | nav_order after |
|---|---|---|
confidential-computing-concepts.md | 1 | 1 |
tee-security-principles.md | 2 | 2 |
tees-in-practice.md | 9 | 3 |
sgx.md | 3 | 4 |
tdx/index.md | 4 | 5 |
paravisor.md | 5 | 6 |
gpu-confidential-computing.md | 11 | 7 |
secure-key-release.md | 6 | 8 |
confidential-ai.md | 7 | 9 |
live-migration.md | 8 | 10 |
docs/containers/ and docs/tools/ were left unchanged.
File-by-file changes
docs/misc/index.md
- Description rewritten to reflect the new reading order and signal that the section can host other clouds in the future under the same per-cloud pattern.
docs/misc/microsoft-azure-overview.md
nav_order3 → 1.- Content unchanged.
docs/misc/microsoft-azure-platform-trust-chain.md
nav_order6 → 2.- Title unchanged.
- Content unchanged except: cross-reference to “TDX Architecture” (broken path
tdx-architecture) updated to “Intel TDX” pointing at/docs/core/tdx/.
docs/misc/microsoft-azure-security.md (recast)
nav_order4 → 3.- Title changed from “Microsoft Azure Security Architecture” to “Microsoft Azure Infrastructure & Tenant Isolation”.
- Section 1 (Infrastructure Stack and Trust Boundaries) — kept. Two networks, physical-to-logical hierarchy, hypervisor as load-bearing boundary, Fabric Controller, operational access (MCIO, JIT, SAW/PAW).
- Section 2 (Encryption at Each Layer) — removed; moved to
microsoft-azure-hardware-trust-and-keys.md. The full encryption-at-rest and encryption-in-transit material (storage SSE, managed disks, ADE retirement, TDE, HTTPS/VPN/ExpressRoute, key rotation order, BYOK vs CMK vs PMK) lives there now. - Section 3 (Double Encryption) — removed; moved to
microsoft-azure-hardware-trust-and-keys.md. The TLS+MACsec layering and “when double encryption makes sense” guidance lives there now. - Tenant Isolation (new Section 2) — added; moved in from
microsoft-azure-security-model.md. Customer grouping hierarchy (tenant/subscription/management group/resource group), the five-rung compute isolation spectrum (multi-tenant VM → Isolated SKU → Dedicated Host → Confidential VM → CVM on Dedicated Host), VNet/NSG/Service Endpoint/Private Endpoint, and the Storage/SQL/App Service/AKS isolation summary, plus decision criteria. - Through-line and Practical Takeaways rewritten to fit the new scope (datacenter + isolation, not encryption).
- Sources list trimmed to the relevant subset (Azure infrastructure, hypervisor security, isolation choices, dedicated hosts, ASE, DC family, NCC H100).
docs/misc/microsoft-azure-hardware-trust-and-keys.md (expanded)
nav_order7 → 4.- Title unchanged.
- Sections 1–4 (SoC, measured boot, host attestation, THIM) — kept.
- Section 5 (Encryption Layered on the Trusted Foundation) — expanded. Pulled in from
microsoft-azure-security.md:- “Three states of data” table (at rest / in transit / in use).
- “Disks: three mechanisms often confused” subsection (SSE, encryption at host, ADE).
- Database TDE specifics.
- Full “In transit” subsection (HTTPS, VPN, ExpressRoute, MACsec on ExpressRoute Direct, TLS 1.2 Storage cutover).
- “Algorithm and FIPS status” subsection — RSA-OAEP-256 wrapping recommendation, Storage v1 CBC deprecation, FIPS 140-2 → 140-3 transition timeline.
- “Key rotation: a subtlety” subsection — KEK rotation re-wraps, doesn’t re-encrypt; rotate-then-disable order on suspected compromise.
- “BYOK vs CMK vs PMK” subsection — the distinction between how the key got there and who controls it in production.
- Section 6 (Double Encryption) — added; moved in from
microsoft-azure-security.md. Service-level + infrastructure-level at-rest layers; TLS + MACsec in transit; when double encryption makes sense. - Sections 7–8 (Key Manager Five-Way Decision, SKR) — kept; section numbers shifted by 1.
- Cross-reference cleanup: the security-architecture link (now “infrastructure & tenant isolation”) and the security-model link both point at the right notes.
- Sources list expanded to include the encryption-best-practices, double-encryption, ExpressRoute, infrastructure-encryption, TLS-minimum, and MACsec sources that previously lived in
microsoft-azure-security.md.
docs/misc/microsoft-azure-security-model.md (recast)
nav_order5 (unchanged numerically, but its position shifted because surrounding files moved).- Title changed from “Microsoft Azure Security Model” to “Microsoft Azure Security Model: Shared Responsibility & Customer Data” (clearer scope).
- Section 1 (Shared Responsibility — The Framework) — kept.
- Section 2 (Defense in Depth) — kept. Network-isolation primitives (VNets, NSGs, Service vs. Private Endpoints, VPN, ExpressRoute) trimmed and replaced with a pointer to the infrastructure note, since that’s now their canonical home.
- Section 3 (Tenant Isolation) — removed; moved to
microsoft-azure-security.md(now the infrastructure & tenant isolation note). The compute isolation spectrum, hypervisor-mechanics paragraph, network isolation primitives, and Storage/SQL/AppService/AKS isolation all now live there. - Section 4 (Customer Data Protection — now Section 3) — kept. DPA / Microsoft Product Terms, personnel-access defaults, Customer Lockbox, data residency vs. sovereignty, hardware disposition (NIST 800-88), government data requests, subscription termination timeline.
- Section 5 (Practical Takeaways — now Section 4) — kept; rewritten to drop tenant-isolation guidance (since that moved out) and clarify the link to confidential computing as a sovereignty/operator-trust choice rather than a tenant-isolation choice.
- Sources list trimmed to the relevant subset (overview, shared responsibility, customer-data protection, Customer Lockbox, DPA, Defender for Cloud, Sentinel, storage redundancy, NIST 800-88).
docs/misc/cloud-fundamentals.md
nav_order1 → 6. Moved to the end of the Azure-specific chain because it is cloud-agnostic supplementary material rather than part of the primary Azure reading path.- Content unchanged.
docs/misc/scratch.md (Reading List & Resources)
nav_order2 → 7.- Content unchanged.
docs/core/* — nav_order only
| File | nav_order before | nav_order after | Why |
|---|---|---|---|
confidential-computing-concepts.md | 1 | 1 | Foundational. |
tee-security-principles.md | 2 | 2 | Foundational. |
tees-in-practice.md | 9 | 3 | Conceptual/applied — reads better near the principles than at the end. |
sgx.md | 3 | 4 | Specific tech, after the conceptual material. |
tdx/index.md | 4 | 5 | Specific tech (with sub-pages for ABI, Trusted I/O, live migration). |
paravisor.md | 5 | 6 | Builds on confidential VMs introduced in TDX/SEV-SNP. |
gpu-confidential-computing.md | 11 | 7 | Specific tech; grouped with the other TEE techs rather than orphaned at the end. Also closes the gap at nav_order 10. |
secure-key-release.md | 6 | 8 | Cross-cutting attestation→key flow that depends on understanding the underlying TEEs. |
confidential-ai.md | 7 | 9 | Use case; reads after the techs. |
live-migration.md | 8 | 10 | Operational concern; after the techs. |
No content changes in docs/core/.
docs/containers/, docs/tools/
- Unchanged.
README.md
- Reference-section description rewritten to reflect the new reading order and the cross-cloud growth intent.
index.md
- Reference-section description shortened and aligned with the new scope.
CHANGELOG.md
- New file (this one).
What was deduplicated structurally vs. what still overlaps
Deduplicated at file level (one canonical home now):
- Encryption at rest, encryption in transit, double encryption — was in both
microsoft-azure-security.mdandmicrosoft-azure-hardware-trust-and-keys.md; now exclusively in the hardware-trust-and-keys note. - Compute isolation spectrum, network isolation, per-service isolation (Storage/SQL/App Service/AKS) — was in both
microsoft-azure-security-model.mdandmicrosoft-azure-security.md; now exclusively in the security (infrastructure & tenant isolation) note.
Still overlaps as a paragraph or two (acceptable for this pass):
- Hypervisor and Hyper-V partition mechanics still surface in three places at different depths: deeply in
microsoft-azure-platform-trust-chain.mdSection 6 (the canonical home); briefly inmicrosoft-azure-security.md(where it explains the load-bearing isolation boundary); and once more inmicrosoft-azure-hardware-trust-and-keys.mdSection 5 (where “encryption at host” needs to reference the hypervisor boundary). Each occurrence serves its surrounding argument; consolidating further would obscure the cross-references. - Silicon root of trust appears in both
microsoft-azure-platform-trust-chain.mdSection 3 (Cerberus/Pluton, the boot-path RoTs) andmicrosoft-azure-hardware-trust-and-keys.mdSection 1 (the SoC catalog: AMD EPYC + PSP, Intel Xeon + CSME, Cobalt, Caliptra). The angles are different — boot-path RoTs vs. CPU silicon catalog — but Caliptra in particular is named in both. - TPM 2.0 / measured boot is covered in
microsoft-azure-platform-trust-chain.md(Section 3, recording mechanism) andmicrosoft-azure-hardware-trust-and-keys.md(Section 2 recap, Section 3 attestation key hierarchy). The recap is intentional so the attestation flow reads standalone. - Confidential VM SKU naming (DCasv5/ECasv5, DCesv6/ECesv6, NCC H100 v5) appears in several places — the trust chain note, the infrastructure note, the hardware-and-keys note, and several core notes. Consolidating into a single SKU table is a candidate for a future pass.
What did not change
- File paths. All files were rewritten in place, not moved or renamed.
- The top-level section names “Core Concepts”, “Container Technologies”, “Tools & Frameworks”, and “Reference”.
docs/containers/,docs/tools/,docs/core/content (onlynav_orderchanged indocs/core/).- Site theme,
_config.yml, build pipeline.
Deduplication pass
This pass implements the dedupe work the previous changelog deferred. For every concept that still appeared in more than one file, the most complete treatment was kept as canonical and every other appearance was replaced with a 1–2 sentence summary linking to the canonical location via /confidential-computing-notes. No facts were deleted — anything trimmed from a non-canonical site was first verified to exist in (or moved to) the canonical home.
Concept → canonical home → trimmed appearances
| Concept | Canonical home | Trimmed (now a brief summary + link) |
|---|---|---|
Confidential VM SKU families (DCasv5 / ECasv5, DCesv5 / ECesv5, DCesv6 / ECesv6) and confidential GPU SKU (NCCadsH100v5, Standard_NCC40ads_H100_v5) | docs/misc/microsoft-azure-hardware-trust-and-keys.md Section 1 (the SoC catalog) | docs/misc/microsoft-azure-platform-trust-chain.md (Section 6.4 + Practical Takeaways + Sources); docs/misc/microsoft-azure-security.md (compute isolation spectrum + Sources) |
SKU naming convention (DC/EC prefix, v5/v6 generation, trailing C for confidential, as/es for SEV-SNP/TDX, NCC for confidential GPU) | docs/misc/microsoft-azure-hardware-trust-and-keys.md Section 1 | Was scattered as inline asides in microsoft-azure-platform-trust-chain.md; now in one place |
| Hyper-V architecture (type-1 hypervisor definition, partition model, VMBus, VSP/VSC, SLAT-based memory partitioning, isolation enforcement mechanisms) | docs/misc/microsoft-azure-platform-trust-chain.md Section 6 | docs/misc/microsoft-azure-security.md Section 1 (now a 3-sentence summary preserving only the unique fact: the Native OS running directly on storage tenants without a hypervisor) |
| Azure Key Vault Container Types (Standard / Premium / Managed HSM and the FIPS levels of each) | docs/misc/microsoft-azure-hardware-trust-and-keys.md Section 7 (the 5-way decision table: Standard, Premium, Managed HSM, Cloud HSM, Payment HSM) | docs/core/secure-key-release.md (the “Azure Key Vault Container Types”, “Accessing Keys in Azure Key Vault”, “Controlling Access to Keys” sections — collapsed into a single “Azure-specific KMS surfaces” paragraph that links to the canonical table; the Azure-specific operational facts about IMDS-based access tokens and per-environment-vault separation survive there) |
| Trusted Launch (Secure Boot + vTPM + boot integrity for Generation-2 Azure VMs; vTPM definition; flag about GA status) | docs/misc/microsoft-azure-security-model.md Section 2 (Compute services) | docs/misc/microsoft-azure-platform-trust-chain.md Practical Takeaways (now a 1-sentence pointer to the security-model note) |
| HSM Platform 2 / Marvell LiquidSecurity 2 FIPS 140-3 Level 3 cert (June 2024) | docs/misc/microsoft-azure-hardware-trust-and-keys.md Section 7 (in the “Marvell LiquidSecurity” paragraph below the 5-way table) | docs/misc/microsoft-azure-hardware-trust-and-keys.md Section 5 (the duplicate cert-date sentence in the FIPS subsection was removed; readers are pointed to Section 7 for HSM-specific FIPS levels) |
Concepts checked and left as-is
These showed up in multiple files but each occurrence either covered a different angle or was already a 1-2 sentence reference. No edits needed.
- Envelope encryption (DEK / KEK / CMK / PMK) — canonical in
microsoft-azure-hardware-trust-and-keys.mdSection 5. TheKEKmentions inmicrosoft-azure-platform-trust-chain.mdare the UEFI Key Exchange Key (a different concept, explicitly disambiguated). Not a duplicate. - Measured boot / TPM 2.0 / PCR mechanics — canonical in
microsoft-azure-platform-trust-chain.mdSection 3 (the “Measured boot and the TPM” subsection).microsoft-azure-hardware-trust-and-keys.mdSection 2 is explicitly titled “Measured Boot, Briefly” and is a one-paragraph recap with link, which was already the right shape. - Customer Lockbox — canonical in
microsoft-azure-security-model.mdSection 3. References elsewhere (microsoft-azure-hardware-trust-and-keys.md,microsoft-azure-security.md) are already brief disambiguators with links. - Tenant isolation (mechanisms vs. operational spectrum) — these are two angles on the same area and were already split correctly in the previous pass:
microsoft-azure-platform-trust-chain.mdSection 6 owns the hypervisor mechanisms (memory partitioning, vCPU scheduling, I/O brokering);microsoft-azure-security.mdSection 2 owns the customer-facing isolation spectrum (multi-tenant VM → Isolated SKU → Dedicated Host → Confidential VM). No content overlap, just adjacent topics. - Silicon root of trust — different angles in two files:
microsoft-azure-platform-trust-chain.mdSection 3 covers boot-path RoTs (Cerberus, Pluton);microsoft-azure-hardware-trust-and-keys.mdSection 1 covers the CPU SoC catalog (AMD EPYC + PSP, Intel Xeon + CSME, Cobalt, Caliptra). Caliptra is named in both because it is genuinely relevant to both lenses. Marvell LiquidSecurity— appears twice withinmicrosoft-azure-hardware-trust-and-keys.mditself (Section 7’s Cloud HSM paragraph and the Marvell paragraph below the 5-way table). Both serve a different purpose (one is “where Cloud HSM runs,” the other is the cross-tier hardware story). Internal repetition only; left as is.- TPMs vs. HSMs generic comparison in
docs/core/confidential-computing-concepts.mdis conceptual and cloud-agnostic; not the same scope as the Azure-specific HSM-tier material in hardware-trust-and-keys. - AMD SEV-SNP / Intel TDX as confidential-VM technologies — used as building-block names across many files (core, container, misc). Each use is contextual rather than a definition; the canonical definitions (with full expansions and the SoC-level home) live in
microsoft-azure-hardware-trust-and-keys.mdSection 1 and the dedicateddocs/core/tdx/folder.
Per-file edits in this pass
docs/misc/microsoft-azure-hardware-trust-and-keys.md
- Section 1: bolded the SKU family names (DCasv5 / ECasv5, DCesv6 / ECesv6) for visibility now that this is the only place they appear in long form. Added a paragraph capturing two facts that previously lived only in
microsoft-azure-platform-trust-chain.md: the specific confidential GPU SKU example (NCCadsH100v5,Standard_NCC40ads_H100_v5) and the SKU naming convention (DC/EC prefix, vN generation, trailing C, as/es/NCC suffix codes). - Section 5 (Algorithm and FIPS status): removed the duplicate “Azure Managed HSM and Azure Key Vault Premium are now FIPS 140-3 Level 3 validated on the new HSM Platform 2 hardware (Marvell LiquidSecurity 2, certified June 2024). Older Platform 1 keys remain at FIPS 140-2 Level 2 until rolled” — the cert date and Marvell hardware story already live in Section 7. Replaced with a one-sentence pointer.
docs/misc/microsoft-azure-platform-trust-chain.md
- Section 6 (“Where the hypervisor’s trust ends — confidential computing”): removed the SKU-naming bullets (DCasv5 / ECasv5, DCesv5 / ECesv5, DCesv6 / ECesv6 expansions). Replaced with one sentence pointing to the hardware-trust-and-keys SKU catalog.
- Section 9 (“Practical Takeaways”): trimmed the Confidential VM and Confidential GPU bullets that listed SKU families and the specific
Standard_NCC40ads_H100_v5example. Replaced with one sentence pointing to the hardware-trust-and-keys catalog and one pointer to the GPU note. Trimmed the Trusted Launch bullet (definition + components moved to security-model note). - Sources: removed duplicate links to “DC family confidential VM sizes” and “NCCadsH100v5 series” (now only in hardware-trust-and-keys).
docs/misc/microsoft-azure-security.md
- Section 1 (“Per-node architecture”): trimmed the type-1 hypervisor definition and the Hyper-V partition-model framing. Kept the unique facts (the Native OS on storage tenants and the load-bearing-claim quote) and the link to platform-trust-chain.
- Section 2 (compute isolation spectrum): removed the paragraph listing DCasv5 / ECasv5 / DCesv5 / ECesv5 / DCesv6 / ECesv6 / NCC H100 v5 SKUs. Replaced with one sentence pointing to the hardware-trust-and-keys catalog.
- Sources: removed duplicate links to “DC family confidential VM sizes” and “NCCadsH100v5 series”.
docs/core/secure-key-release.md
- Removed the “Azure Key Vault Container Types” section (Vaults Standard/Premium, Managed HSM Standard B1) — duplicated the Section 7 table in hardware-trust-and-keys.
- Removed the “Accessing Keys in Azure Key Vault” and “Controlling Access to Keys” sections as standalone headings.
- Replaced all three with a single “Azure-specific KMS surfaces” paragraph that links to the hardware-trust-and-keys catalog for the lineup, but preserves the unique operational facts: IMDS-based access-token retrieval via managed identity, REST API invocation with
Bearerheader, list-permission semantics, and the per-environment vault separation hardening pattern.
CHANGELOG.md
- This deduplication section.
Verification
bundle exec jekyll buildruns cleanly after the edits.- The “Concept → canonical home” table above is the explicit ledger of what moved; reviewing each row confirms every fact survived in exactly one place.
- The previous changelog’s “Still overlaps” section (hypervisor mechanics, silicon RoT, TPM/measured-boot recap, CVM SKU naming) has been resolved either by trimming (CVM SKU naming, Hyper-V architecture in security.md) or by audit and confirmation that the existing split was correct on the merits (silicon RoT angles, measured-boot recap).
Lint pass
A targeted audit of the repo for issues introduced or missed during the restructure and dedupe passes. Each issue found was fixed; the build remains clean.
Broken cross-links
docs/core/gpu-confidential-computing.md had several links to non-existent slugs predating the restructure:
| Line | Before | After |
|---|---|---|
| 13 | [Intel TDX](tdx-architecture) | [Intel TDX](/confidential-computing-notes/docs/core/tdx/) |
| 156 | [TDISP](tdx-trusted-io) | [TDISP](/confidential-computing-notes/docs/core/tdx/trusted-io/) |
| 163 | [Confidential AI](confidential-ai) | [Confidential AI](/confidential-computing-notes/docs/core/confidential-ai/) |
| 164 | [Intel TDX — Architecture & Threat Model](tdx-architecture) | [Intel TDX](/confidential-computing-notes/docs/core/tdx/) |
| 165 | [Intel TDX — Trusted I/O (TDISP)](tdx-trusted-io) | same text, fixed link |
docs/core/tdx/trusted-io.md line 56 had a same-folder reference (gpu-confidential-computing) that did not resolve from the tdx/ subfolder; replaced with the /confidential-computing-notes form.
Cross-link convention drift
Several files used relative .md paths or the relative_url Liquid filter instead of the SCHEMA’s /confidential-computing-notes/docs/<section>/<file>/ convention. All normalized:
docs/core/confidential-ai.md— same-foldergpu-confidential-computinglink.docs/core/live-migration.md—(tdx/live-migration.md)→/confidential-computing-notes/docs/core/tdx/live-migration/.docs/core/tdx/index.md— six relative links (abi.md,trusted-io.md,live-migration.md,../secure-key-release.md, plus an anchoredabi.md#…) →/confidential-computing-notesform.docs/core/tdx/live-migration.md—(index.md)and(../live-migration.md)→/confidential-computing-notesform.docs/containers/kubernetes.md—/confidential-computing-notes/docs/containers/kata-containers/→/confidential-computing-notes/docs/containers/kata-containers/.
A verification script (grep -rohE '\{\{ site\.baseurl \}\}/docs/[^)"]+' | check each target exists) now reports zero broken links. Two remaining “broken” hits are documentation examples inside SCHEMA.md (<section>/<file-without-.md> placeholder and docs/... ellipsis); both are intentional teaching examples, not real links.
Orphan pages (now linked)
Files only reachable from index.md and SCHEMA.md — fixed by adding inbound content links:
docs/core/tee-security-principles.md— added a link fromtees-in-practice.mdintro: “This note follows the [TEE security principles] by looking at where TEEs actually show up…”.docs/tools/open-policy-agent.md— OPA was named in two container files but not linked. Added/confidential-computing-noteslink inconfidential-containers.md(Key Building Blocks) and inkata-containers.md(Security Policy section).docs/misc/microsoft-azure-overview.mdanddocs/misc/cloud-fundamentals.md— left as TOC-only inbound. The Azure overview is a slot-1 gateway page that is naturally referenced from the section landing rather than from the deeper slot 2/3/4/5 notes; cloud-fundamentals is cloud-agnostic supplementary material. Both are appropriate orphans by design.
Concepts mentioned but never explained
Found and fixed:
- OHTTP (Oblivious HTTP) — used six times in
docs/core/confidential-ai.mdwithout ever being defined. Added a one-paragraph definition at the head of “Step-by-Step Example” referencing IETF RFC 9458 and explaining the relay-and-target split. - MAA without canonical link — both
docs/core/confidential-ai.mdanddocs/core/secure-key-release.mdmentioned MAA at length without linking to where it is defined. Added a cross-link tomicrosoft-azure-hardware-trust-and-keys.mdat the first MAA mention in each file. - “Azure Managed Attestation” misnaming —
confidential-ai.mdline 88 said “Azure Managed Attestation (MAA)”; the actual product is “Microsoft Azure Attestation”. Fixed.
Frontmatter inconsistencies
| File | Issue | Fix |
|---|---|---|
docs/core/tdx/abi.md | nav_order: 2 (with no nav_order 1 sibling) | → 1 |
docs/core/tdx/trusted-io.md | nav_order: 3 | → 2 |
docs/core/tdx/live-migration.md | nav_order: 4 | → 3 |
docs/tools/grpc.md | title: GRPC (inconsistent with prose & index reference to “gRPC”) | → gRPC |
Section index nav_orders (docs/core/index.md = 1, containers = 2, tools = 3, misc = 4) are contiguous and match section titles. Top-level Home is nav_order: 0. All parent: fields match the section index title: values. Sub-folder pages (docs/core/tdx/*.md) correctly use parent: Intel TDX and grand_parent: Core Concepts.
After the tdx/ renumbering, the subfolder ordering is 1: ABI Reference, 2: Trusted I/O (TDISP), 3: Live Migration — contiguous from 1.
Forward dependencies
Most apparent forward references are actually pointers across reading-order tiers (e.g., a core/conceptual file references the Azure-specific canonical home in docs/misc/). These are not “forward” in the harmful sense — they are the natural cross-cloud → canonical-home pattern the SCHEMA prescribes — but they need to be link-equipped so the reader can jump. The MAA + THIM + Managed HSM mentions in confidential-ai.md and secure-key-release.md were the main offenders here; they now link to the canonical Azure note (see “Concepts mentioned but never explained” above).
No genuine in-section forward dependencies were found: each docs/core/ page is self-contained relative to its predecessors in nav_order.
Remaining duplication
A second sweep after the last dedupe pass found no new “same concept explained in depth in 2+ places” cases beyond what the previous changelog already records. The Entra ID parenthetical “(formerly Azure Active Directory)” appears in four notes; each occurrence is a brief 3-word reminder rather than a definition, and serves the local context — left as-is.
Verification
bundle exec jekyll buildruns cleanly after the lint fixes.- Cross-link verification script passes (zero broken
/confidential-computing-noteslinks; the two remaining hits are intentional placeholder examples in SCHEMA.md). - All content files have inbound links (either from
index.md/SCHEMA.mdor from another content file). - Frontmatter is contiguous and parents match section titles across all four sections.
Merge pass: four Azure security files into one
The previous restructure and dedupe passes produced four logically connected Azure files that told a single story (silicon → boot → hypervisor → isolation → encryption → keys → shared responsibility). This pass merges them into a single microsoft-azure-security.md so the through-line is preserved as one continuous reading, while keeping every fact intact.
Files affected
Deleted (content fully absorbed into microsoft-azure-security.md):
docs/misc/microsoft-azure-platform-trust-chain.mddocs/misc/microsoft-azure-hardware-trust-and-keys.mddocs/misc/microsoft-azure-security-model.md
Created/rewritten:
docs/misc/microsoft-azure-security.md— now titled “Microsoft Azure Security Architecture”, organized into five Parts (continuous §§1–22) and one consolidated Sources list.
Reordered (unchanged content):
docs/misc/cloud-fundamentals.md:nav_order6 → 3docs/misc/scratch.md:nav_order7 → 4
microsoft-azure-overview.md keeps nav_order: 1; microsoft-azure-security.md keeps nav_order: 2. Misc nav_orders are now contiguous 1–4.
Internal structure of the merged file
| Part | Sections | Owns |
|---|---|---|
| I — The Platform Trust Chain | §§1–9 | Silicon Layer (SoC catalog, Caliptra), Hardware Roots of Trust (Cerberus, Pluton, anti-rollback), UEFI, Secure Boot, Measured Boot + TPM 2.0 (canonical), Code Integrity / dm-verity, Hashes, Hypervisor (Hyper-V architecture canonical), Confidential VMs and GPUs (CVM SKU families canonical) |
| II — Infrastructure and Tenant Isolation | §§10–11 | Datacenter geography, two networks, Fabric Controller, operator access (MCIO/JIT/SAW/PAW), customer’s grouping hierarchy, compute isolation spectrum, “trust grows monotonically” TCB-by-compute-mode table, network isolation, per-service isolation |
| III — Encryption and Key Management | §§12–17 | Host attestation (with MAA), THIM, encryption at rest and in transit, double encryption, 5-way HSM decision (Marvell LiquidSecurity canonical), Secure Key Release on Azure |
| IV — Shared Responsibility and Customer Data | §§18–20 | Shared-responsibility matrix, defense-in-depth services (Trusted Launch canonical), customer data protection (Customer Lockbox canonical) |
| V — Through-Lines and Practical Takeaways | §§21–22 | Single consolidated through-line and practical-takeaways sections; replaces the four per-file “Through-Line” + “Practical Takeaways” sections |
The merge preserved every fact from the four source files. Per the user’s “consolidate, don’t cut” instruction, content reduction came from:
- Removing four duplicate file-level intros (each source file opened with a prose summary of itself; the merged file has a single intro at the top).
- Removing four “Through-Line” and four “Practical Takeaways” sections, replaced by single Part V sections that draw connections across all four parts and consolidate takeaways without losing any specific guidance.
- Consolidating four Sources lists into one, deduplicated by URL.
No facts were dropped — verified by reviewing the heading map of the original four files (Step 1 of the merge) against the merged file’s section list.
Cross-link updates
Every reference to the three deleted files was rewritten to point at the merged file with a section anchor.
| File | Old reference | New reference |
|---|---|---|
docs/core/confidential-ai.md | microsoft-azure-hardware-trust-and-keys/ (MAA / THIM / Managed HSM context) | microsoft-azure-security/#12-host-attestation-fleet-internal-verification |
docs/core/secure-key-release.md (sidecar section) | microsoft-azure-hardware-trust-and-keys/ (MAA explanation) | microsoft-azure-security/#microsoft-azure-attestation-maa-the-customer-facing-service |
docs/core/secure-key-release.md (KMS lineup section) | microsoft-azure-hardware-trust-and-keys/ (5-way KMS decision) | microsoft-azure-security/#16-choosing-a-key-manager-the-five-way-decision |
index.md | Five separate per-slot bullets (Overview + 4 security slots) | Two bullets: Overview, plus a single Security Architecture entry with five Part-summary sub-bullets |
docs/misc/index.md | “starting with Microsoft Azure (overview, platform trust chain, infrastructure & tenant isolation, hardware trust & encryption & key management, security model)” | “two slots per cloud — an Overview and a single consolidated Security Architecture note” |
README.md | Five-slot description | Two-slot description with the five Parts spelled out |
SCHEMA.md | “Five per-cloud slots” + corresponding ownership table rows + “How to add a new cloud provider” five-file template | “Per-cloud structure: two slots, one consolidated security note” + corresponding ownership row + “How to add a new cloud provider” two-file template |
Anchor links were verified by inspecting the rendered _site/docs/misc/microsoft-azure-security/index.html. All anchors used in cross-links exist:
12-host-attestation-fleet-internal-verification✓microsoft-azure-attestation-maa-the-customer-facing-service✓16-choosing-a-key-manager-the-five-way-decision✓customer-lockbox✓
Schema-level change
The per-cloud pattern moved from five slots to two slots:
- Before: Overview + Platform Trust Chain + Infrastructure & Tenant Isolation + Hardware Trust, Encryption & Keys + Security Model.
- After: Overview + Security Architecture (five-Part internal structure).
SCHEMA.md was rewritten to reflect:
- New domain-ownership table row for
microsoft-azure-security.mddescribing the five-Part contents. - Updated decision tree and “Where new content should go” sections.
- New “Per-cloud structure: two slots” replacement for the old “Five per-cloud slots” table.
- Updated “How to add a new cloud provider” template (two files instead of five).
- Anti-rule added: “Do not split the Security Architecture into multiple files. The whole point of the consolidation is that trust → isolation → encryption → responsibility is one narrative.”
- Updated verification grep targets (e.g., CVM SKU substrings should now land in
microsoft-azure-security.md, not-hardware-trust-and-keys.md).
Verification
bundle exec jekyll buildruns cleanly.grep -rn "microsoft-azure-platform-trust-chain\|microsoft-azure-hardware-trust-and-keys\|microsoft-azure-security-model" docs/ index.md SCHEMA.md README.mdreturns no live references (only historical mentions in this CHANGELOG).- All four anchor links into the merged file resolve to existing IDs in the rendered HTML.
docs/misc/now contains exactly five files (one less than before):index.md,microsoft-azure-overview.md,microsoft-azure-security.md,cloud-fundamentals.md,scratch.md. nav_orders are contiguous 1–4 across the four content files.
Merge resolution against main (PR #46 absorbed)
While this PR was open, main advanced with PR #46 (“Add Azure attestation/SKR artifact map and cross-links”). Three modify/delete or content conflicts were resolved as follows:
microsoft-azure-hardware-trust-and-keys.md(modify/delete): re-deleted. The new “Artifact Map” section that PR #46 added to the original file was absorbed into the merged note as a### Artifact mapsubsection at the end of §17 (Secure Key Release).microsoft-azure-platform-trust-chain.md(modify/delete): re-deleted. The “On verifying the chain” practical takeaway PR #46 introduced is now part of the merged note’s §22 Practical Takeaways.microsoft-azure-security.md(content conflict): kept the merged-note content for the structurally-conflicting hunk (the origin/main version was a stale paragraph from the pre-merge “Infrastructure & Tenant Isolation” file). The artifact-map cross-link references PR #46 added in §13 (THIM consumers) and at the top of §17 (SKR intro) were preserved by adding equivalent in-file anchor links (#artifact-map).
Net effect: PR #46’s artifact-map content lives intact inside the merged note. No facts lost.