Microsoft already encrypts M365 data at rest with Microsoft-managed keys. These additional controls let regulated or sovereignty-sensitive customers hold the keys themselves:
- Customer Key — customer-supplied root keys (in Azure Key Vault HSM) wrap service data-encryption keys for Exchange, SharePoint, OneDrive, Teams (chats/files), and Purview. Revoke the key → Microsoft can no longer decrypt → service-data path crypto- shredded.
- Double Key Encryption (DKE) — sensitivity-label-driven client-side encryption where one key is customer-held in a self-hosted key release service. Microsoft never sees that key; service-side features (search, eDiscovery, Copilot) cannot read the content.
This skill covers both — when to use which, the architectures, and the operational realities.
When to use
- Regulatory mandate to hold encryption keys (financial sector sovereignty, defense, certain EU public sector).
- Crypto-shredding requirement (provable destruction by key revocation).
- The highest-sensitivity documents that must not be readable by Microsoft or by any service-side process even temporarily.
Do not use this skill for Azure resource encryption (azure-key-vault), generic
sensitivity-label rollout (purview-information-governance), or GRC frameworks
(compliance-manager).
Customer Key vs DKE — pick consciously
| Feature | Customer Key | DKE |
|---|---|---|
| Scope | All data in selected M365 services | Per-document, label-driven |
| Encryption point | Service-side, transparent | Client-side, before upload |
| Microsoft can read for service features? | Yes (until key revoked) | No |
| eDiscovery, Search, Copilot, DLP work on content? | Yes | No |
| Key custody | Azure Key Vault HSM (customer subscription) | Customer-hosted key release service (on-prem or your cloud) |
| Crypto-shred via revocation? | Yes (service-wide) | Per-document by destroying key |
| Use case | Sovereignty, blanket regulator demand | Crown-jewel docs only |
Rule of thumb: Customer Key for tenant-wide sovereignty. DKE for the 0.1% of documents that must remain opaque even to internal cross-tenant features (board minutes, M&A drafts, weapon designs).
Approach
Customer Key
-
Provision Azure Key Vault in two separate Azure subscriptions/regions (paired). Mandatory settings:
- HSM-backed key (RSA 2048+).
- Soft-delete on, purge protection on (Customer Key onboarding will refuse otherwise).
- Recovery level: Recoverable+ProtectedSubscription.
- Diagnostic logs to a dedicated, long-retention Log Analytics workspace.
-
Create two root keys per service — one per region. M365 needs both available for wrap/unwrap. Losing one is recoverable; losing both is unrecoverable crypto-shredding.
-
Create Data Encryption Policies (DEPs) per service (Exchange/SharePoint/etc.), referencing the two root keys. Assign DEPs to tenant or per-mailbox/site (Exchange supports per-mailbox; SharePoint is tenant-wide for the geo).
-
Rotate keys annually (or per policy) by adding a new key version; Microsoft automatically re-wraps. Never delete the old version while it might be in use.
-
Revocation runbook (the whole point). Document exactly: who authorizes, what command, who is notified, what the customer-facing impact is. Practice the revocation in a non-prod tenant. A real revocation is the only path to crypto-shredding — ensure governance.
-
Monitor. Alert on any change to the Key Vault access policy, key permissions, or M365 service principal assignments.
Double Key Encryption
-
Decide the document population. DKE breaks search, DLP, Copilot, eDiscovery on those documents. Limit to a small, well-defined set.
-
Stand up the DKE service.
- Containerized .NET service (Microsoft-published image).
- Hosted in your environment (on-prem, AWS, GCP, or Azure outside the M365 tenant).
- Reachable from end-user clients via HTTPS; client-cert or OAuth to your IdP for authorization.
- HA: at least two regions/AZs. Outage = users can't open DKE-protected documents.
-
Generate and load keys. Each DKE label points at a key in the service. Plan for per-classification keys, not per-document keys (operational burden).
-
Author the DKE sensitivity label in Purview with DKE encryption option and the service endpoint URL.
-
Publish the label to the target user group (legal, M&A, board, etc.). Users see a new label option in Office; applying it triggers client-side encryption via the DKE service.
-
Communicate the trade-offs to users in writing. No search results, no Copilot summaries, no third-party scanning, no automatic transcription of DKE-labeled documents.
-
Backup the DKE keys with strict custody. Loss of DKE keys = permanent loss of all documents protected by that key.
Guardrails
- Customer Key + losing both root keys = data loss. Microsoft cannot recover. Treat the keys with the same custody you'd give an HSM root.
- Soft-delete + purge protection are mandatory and irreversible. Plan Key Vault governance up front.
- DKE breaks service-side features by design. Do not promise eDiscovery or Copilot on DKE content.
- DKE service is a hard availability dependency. Outage = document access outage. HA, monitoring, on-call.
- Customer Key does not encrypt the data on Microsoft's wire any differently — TLS remains the transport. Customer Key is a wrapping-key control, not a transport- encryption change.
- Crypto-shredding via Customer Key revocation affects the whole DEP scope. It's a blunt instrument; coordinate with Legal and customers if multi-tenant.
- Both controls are premium-licensed. Confirm SKUs and add-ons before scoping.
- HYOK (Hold Your Own Key, AD RMS-based) is the legacy ancestor of DKE; Microsoft's forward-looking guidance is DKE. Don't architect new HYOK.
Common anti-patterns
- "Customer Key with one Key Vault in one region" — single failure = service outage. Always two regions.
- "Revoked Customer Key in prod 'to test'" — caused a tenant-wide service-data outage; recovery requires Microsoft engagement. Practice in test tenant only.
- "DKE on every executive's mailbox" — eDiscovery requests fail across an entire population. Use sparingly.
- "DKE service in a single VM" — outage = users can't open the most sensitive docs.
- "Customer Key marketed internally as 'extra encryption'" — it's a key custody control, not stronger crypto. Communicate the actual value (revocation, sovereignty).
- "DKE keys backed up to an admin's OneDrive" — defeats the entire model.
- "Confused Customer Key with Customer Lockbox" — different products. Customer Lockbox = approval for Microsoft engineer access; Customer Key = key custody.
Example prompts
Plan Customer Key rollout for Exchange Online and SharePoint across a multi-geo tenant — Key Vault topology and DEP design.Document the Customer Key revocation runbook with authorization steps and customer impact.Design DKE for board meeting minutes used by 12 directors — service architecture, HA, and user comms.Compare Customer Key vs DKE for a sovereignty requirement from a financial regulator.Key rotation plan for Customer Key with audit evidence for ISO 27001.Author the DKE label and pilot with 5 users in legal; identify broken workflows.Cost and operational impact estimate for adopting DKE on 1% of SharePoint content.
Microsoft Learn
- Customer Key overview: https://learn.microsoft.com/purview/customer-key-overview
- Customer Key setup: https://learn.microsoft.com/purview/customer-key-set-up
- Data encryption policies: https://learn.microsoft.com/purview/customer-key-manage
- Roll/rotate Customer Key: https://learn.microsoft.com/purview/customer-key-availability-key-roll
- Revoke Customer Key: https://learn.microsoft.com/purview/customer-key-overview
- DKE overview: https://learn.microsoft.com/purview/double-key-encryption
- DKE deploy service: https://learn.microsoft.com/purview/double-key-encryption-setup
- Customer Lockbox (distinct): https://learn.microsoft.com/purview/customer-lockbox-requests
- Service encryption (Microsoft-managed baseline): https://learn.microsoft.com/purview/office-365-service-encryption