Reviews data-residency/sovereignty — where regulated data may legally live and move — over sql-data-protection's at-rest controls and azure-dr-multiregion's replication. Flags regulated data deployed outside the required boundary, replication/failover copying it out of geography, backups/logs/telemetry in a non-compliant region, no residency requirement per data classification, and personal data to a third party with no residency guarantee. Outputs pilot-core data-residency-compliance standar...
Scanned 9/6/2026
Install to Claude Code
npx -y skills add AgenticPawan/FullStack-Pilot --skill data-residency-compliance --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Data Residency Compliance?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/agenticpawan-data-residency-compliance)More formats (shields.io, HTML) on the badges page.
---
name: data-residency-compliance
description: Reviews data-residency/sovereignty — where regulated data may legally live and move — over sql-data-protection's at-rest controls and azure-dr-multiregion's replication. Flags regulated data deployed outside the required boundary, replication/failover copying it out of geography, backups/logs/telemetry in a non-compliant region, no residency requirement per data classification, and personal data to a third party with no residency guarantee. Outputs pilot-core data-residency-compliance standard IDs.
when_to_use: data residency, data sovereignty, GDPR region, data boundary, geo restriction, region pinning, cross-region replication compliance, EU data boundary, backup region residency, log data residency, personal data location, regulated data geography, in-country data storage, Schrems, sovereign cloud
---
## Standard IDs
| ID | Severity | What it checks |
|----|----------|-----------------|
| DRC-001 | P1 | A resource holding regulated data deployed to a region outside the required residency boundary |
| DRC-002 | P1 | Cross-region replication/failover copies regulated data out of its allowed geography |
| DRC-003 | P2 | Backups, diagnostic logs, or telemetry shipped to a region/workspace outside the boundary |
| DRC-004 | P2 | No documented residency requirement mapped per data classification |
| DRC-005 | P2 | Personal data sent to a third-party/SaaS with no contractual residency guarantee |
`sql-data-protection` governs how regulated data is protected *at rest* (encryption,
masking); `azure-dr-multiregion` governs *availability* replication. Neither asks the prior
question this skill owns: **is this data legally allowed to live and move where the
architecture puts it?** A perfectly encrypted, highly-available copy in the wrong
geography is still a compliance breach.
---
## Check A — Resource deployed outside the residency boundary (DRC-001)
### Detection
For data-holding resources (SQL, Storage, Cosmos, Service Bus, backups), check the
deployment `location` against the documented residency requirement for the data class it
holds. An EU-personal-data workload with a resource pinned to a non-EU region violates
residency regardless of encryption.
### BAD — a hardcoded region contradicting the stated EU-only requirement
```bicep
// Requirement (docs/data-classification.md): customer PII must stay in EU regions.
resource sql 'Microsoft.Sql/servers@2023-08-01' = {
location: 'eastus' // US region for EU personal data — a residency breach
}
```
### GOOD — region constrained to the allowed set, enforced by policy
```bicep
@allowed([ 'westeurope', 'northeurope' ]) // only EU regions selectable
param location string
// Backed by an Azure Policy 'Allowed locations' assignment so a drift can't reintroduce a US region.
```
---
## Check B — Replication carries data out of geography (DRC-002)
### Detection
Cross-reference `azure-dr-multiregion`'s failover/replication design against the residency
boundary. A geo-redundant Storage account (`Standard_GRS`) or a SQL failover-group paired
region can silently copy regulated data to a region that violates residency. The secondary
must sit inside the allowed geography.
### BAD — geo-redundant storage pairing an EU primary to its default non-EU peer
```bicep
sku: { name: 'Standard_GRS' } // westeurope pairs to a region outside the EU-only boundary
```
### GOOD — replication kept within the allowed geography
```bicep
sku: { name: 'Standard_ZRS' } // zone-redundant within-region; or GZRS only if the paired region is in-boundary
// SQL failover group's secondary is explicitly an in-boundary EU region, not the default pairing.
```
---
## Check C — Backups / logs / telemetry leave the boundary (DRC-003)
### Detection
Residency applies to *copies* too. Check where backups, diagnostic logs, and telemetry
land: a Log Analytics workspace or Application Insights resource (`azure-observability`) in
a non-compliant region, or a backup vault outside the boundary, exports regulated data —
including PII that leaks into logs — out of geography.
### GOOD — the telemetry sink is in-boundary and PII is scrubbed before it ships
```bicep
resource laws 'Microsoft.OperationalInsights/workspaces@2023-09-01' = {
location: 'westeurope' // logs stay in the EU boundary; app scrubs PII before logging (dotnet-logging)
}
```
---
## Check D — No documented residency requirement (DRC-004)
### Detection
Check for a data-classification document that states, per data class, which regions/geos
are permitted. Without it, "where is this allowed to live" has no answer to review against,
and every Check A/B/C decision is a guess. This is the source of truth the other checks cite.
### GOOD — an explicit classification-to-region mapping
```markdown
<!-- docs/data-classification.md -->
| Data class | Residency requirement | Allowed regions |
|-----------------------|------------------------------|--------------------------|
| Customer PII (EU) | EU Data Boundary | westeurope, northeurope |
| Operational telemetry | No cross-border restriction | any |
```
---
## Check E — Personal data to a third party with no residency guarantee (DRC-005)
### Detection
Check outbound integrations that receive personal data (email/SMS providers per
`dotnet-notifications`/`dotnet-email-service`, analytics, a third-party API). Each must have
a contractual/technical residency guarantee (a region-pinned endpoint, a DPA) — otherwise
personal data crosses the boundary the moment it's sent, outside your infrastructure's control.
### GOOD — a region-pinned processor endpoint, documented
```markdown
<!-- docs/data-processors.md -->
Email: provider EU region endpoint (eu.api.provider.example), DPA on file, no US failover.
Analytics: region set to EU; IP anonymization on; no PII in event properties.
```
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!