|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1800 1320" font-family="Arial, Helvetica, sans-serif">
|
|
|
<defs>
|
|
|
<linearGradient id="gMgmt" x1="0" y1="0" x2="1" y2="0"><stop offset="0%" stop-color="#1A237E"/><stop offset="100%" stop-color="#283593"/></linearGradient>
|
|
|
<linearGradient id="gSub" x1="0" y1="0" x2="0" y2="1"><stop offset="0%" stop-color="#E8EAF6"/><stop offset="100%" stop-color="#C5CAE9"/></linearGradient>
|
|
|
<linearGradient id="gHub" x1="0" y1="0" x2="0" y2="1"><stop offset="0%" stop-color="#E0F2F1"/><stop offset="100%" stop-color="#B2DFDB"/></linearGradient>
|
|
|
<linearGradient id="gGreen" x1="0" y1="0" x2="1" y2="0"><stop offset="0%" stop-color="#006B3F"/><stop offset="100%" stop-color="#00944F"/></linearGradient>
|
|
|
<linearGradient id="gTeal" x1="0" y1="0" x2="1" y2="0"><stop offset="0%" stop-color="#00706E"/><stop offset="100%" stop-color="#00A09D"/></linearGradient>
|
|
|
<linearGradient id="gPurple" x1="0" y1="0" x2="0" y2="1"><stop offset="0%" stop-color="#7B1FA2"/><stop offset="100%" stop-color="#9C27B0"/></linearGradient>
|
|
|
<linearGradient id="gOrange" x1="0" y1="0" x2="0" y2="1"><stop offset="0%" stop-color="#E65100"/><stop offset="100%" stop-color="#F57C00"/></linearGradient>
|
|
|
<linearGradient id="gBlue" x1="0" y1="0" x2="0" y2="1"><stop offset="0%" stop-color="#0D47A1"/><stop offset="100%" stop-color="#1565C0"/></linearGradient>
|
|
|
<linearGradient id="gDark" x1="0" y1="0" x2="1" y2="0"><stop offset="0%" stop-color="#263238"/><stop offset="100%" stop-color="#37474F"/></linearGradient>
|
|
|
<filter id="sh"><feDropShadow dx="1" dy="2" stdDeviation="2" flood-opacity="0.12"/></filter>
|
|
|
<filter id="shL"><feDropShadow dx="2" dy="3" stdDeviation="3" flood-opacity="0.15"/></filter>
|
|
|
<marker id="ar" viewBox="0 0 10 7" refX="9" refY="3.5" markerWidth="8" markerHeight="6" orient="auto"><path d="M0 0L10 3.5L0 7z" fill="#546E7A"/></marker>
|
|
|
<marker id="arR" viewBox="0 0 10 7" refX="9" refY="3.5" markerWidth="8" markerHeight="6" orient="auto"><path d="M0 0L10 3.5L0 7z" fill="#C62828"/></marker>
|
|
|
</defs>
|
|
|
|
|
|
<!-- ═══ BACKGROUND ═══ -->
|
|
|
<rect width="1800" height="1320" fill="#F5F6FA" rx="6"/>
|
|
|
|
|
|
<!-- ═══ TITLE BAR ═══ -->
|
|
|
<rect x="0" y="0" width="1800" height="50" fill="#004D2C" rx="6"/>
|
|
|
<rect x="0" y="20" width="1800" height="30" fill="#004D2C"/>
|
|
|
<text x="900" y="32" text-anchor="middle" font-size="20" font-weight="bold" fill="white">Greenfield Modern Data Platform — Azure Infrastructure Topology</text>
|
|
|
|
|
|
<!-- ═══ MANAGEMENT GROUP HIERARCHY (top) ═══ -->
|
|
|
<rect x="40" y="62" width="1720" height="52" rx="6" fill="url(#gMgmt)" filter="url(#sh)"/>
|
|
|
<text x="80" y="84" font-size="11" fill="#9FA8DA">Management Group</text>
|
|
|
<rect x="76" y="92" width="200" height="18" rx="3" fill="#3949AB"/>
|
|
|
<text x="176" y="104" text-anchor="middle" font-size="10" font-weight="bold" fill="white">Greenfield (Root)</text>
|
|
|
<text x="288" y="104" font-size="12" fill="#9FA8DA">→</text>
|
|
|
<rect x="302" y="92" width="230" height="18" rx="3" fill="#3949AB"/>
|
|
|
<text x="417" y="104" text-anchor="middle" font-size="10" font-weight="bold" fill="white">Data & AI Platform (MG)</text>
|
|
|
<text x="544" y="104" font-size="12" fill="#9FA8DA">→</text>
|
|
|
<rect x="560" y="92" width="140" height="18" rx="3" fill="#5C6BC0"/><text x="630" y="104" text-anchor="middle" font-size="9" fill="white">Production</text>
|
|
|
<rect x="710" y="92" width="140" height="18" rx="3" fill="#5C6BC0"/><text x="780" y="104" text-anchor="middle" font-size="9" fill="white">Non-Production</text>
|
|
|
<rect x="860" y="92" width="180" height="18" rx="3" fill="#5C6BC0"/><text x="950" y="104" text-anchor="middle" font-size="9" fill="white">Connectivity & Shared Svcs</text>
|
|
|
|
|
|
<!-- Azure Policies -->
|
|
|
<rect x="1120" y="72" width="620" height="36" rx="4" fill="#303F9F" opacity="0.7"/>
|
|
|
<text x="1134" y="86" font-size="9" font-weight="bold" fill="#C5CAE9">Azure Policies (inherited):</text>
|
|
|
<text x="1134" y="100" font-size="8.5" fill="#B0BEC5">Deny public endpoints · Require tags · Enforce TLS 1.2 · Allowed regions: canadacentral, canadaeast · Enforce diagnostics</text>
|
|
|
|
|
|
<!-- ═══════════════════════════════════════════════════════════ -->
|
|
|
<!-- SUBSCRIPTION 1: CONNECTIVITY HUB (top-left) -->
|
|
|
<!-- ═══════════════════════════════════════════════════════════ -->
|
|
|
<rect x="40" y="126" width="370" height="360" rx="8" fill="url(#gHub)" stroke="#00897B" stroke-width="1.5" filter="url(#shL)"/>
|
|
|
<rect x="40" y="126" width="370" height="30" rx="8" fill="#00897B"/>
|
|
|
<rect x="40" y="144" width="370" height="12" fill="#00897B"/>
|
|
|
<text x="225" y="146" text-anchor="middle" font-size="13" font-weight="bold" fill="white">sub-data-connectivity</text>
|
|
|
|
|
|
<!-- VNet Hub -->
|
|
|
<rect x="54" y="168" width="342" height="304" rx="6" fill="white" stroke="#26A69A" stroke-width="1.2" opacity="0.95" filter="url(#sh)"/>
|
|
|
<text x="66" y="186" font-size="11" font-weight="bold" fill="#00695C">vnet-hub-canadacentral</text>
|
|
|
<text x="310" y="186" font-size="9" fill="#888">Hub VNet</text>
|
|
|
|
|
|
<!-- Azure Firewall -->
|
|
|
<rect x="66" y="196" width="150" height="54" rx="5" fill="#FFEBEE" stroke="#EF5350" stroke-width="1"/>
|
|
|
<text x="141" y="214" text-anchor="middle" font-size="11" font-weight="bold" fill="#C62828">Azure Firewall</text>
|
|
|
<text x="141" y="228" text-anchor="middle" font-size="9" fill="#555">Premium SKU</text>
|
|
|
<text x="141" y="242" text-anchor="middle" font-size="8" fill="#888">afw-hub-canadacentral</text>
|
|
|
|
|
|
<!-- ExpressRoute -->
|
|
|
<rect x="226" y="196" width="156" height="54" rx="5" fill="#E8EAF6" stroke="#5C6BC0" stroke-width="1"/>
|
|
|
<text x="304" y="214" text-anchor="middle" font-size="11" font-weight="bold" fill="#283593">ExpressRoute</text>
|
|
|
<text x="304" y="228" text-anchor="middle" font-size="9" fill="#555">Gateway</text>
|
|
|
<text x="304" y="242" text-anchor="middle" font-size="8" fill="#888">On-premises connectivity</text>
|
|
|
|
|
|
<!-- Azure Bastion -->
|
|
|
<rect x="66" y="260" width="150" height="42" rx="5" fill="#E3F2FD" stroke="#42A5F5" stroke-width="1"/>
|
|
|
<text x="141" y="278" text-anchor="middle" font-size="10" font-weight="bold" fill="#1565C0">Azure Bastion</text>
|
|
|
<text x="141" y="292" text-anchor="middle" font-size="9" fill="#555">Secure RDP/SSH</text>
|
|
|
|
|
|
<!-- VPN Gateway -->
|
|
|
<rect x="226" y="260" width="156" height="42" rx="5" fill="#E8EAF6" stroke="#7986CB" stroke-width="1"/>
|
|
|
<text x="304" y="278" text-anchor="middle" font-size="10" font-weight="bold" fill="#3949AB">VPN Gateway</text>
|
|
|
<text x="304" y="292" text-anchor="middle" font-size="9" fill="#555">Backup connectivity</text>
|
|
|
|
|
|
<!-- Private DNS Zones -->
|
|
|
<rect x="66" y="312" width="316" height="56" rx="5" fill="#F3E5F5" stroke="#AB47BC" stroke-width="1"/>
|
|
|
<text x="224" y="330" text-anchor="middle" font-size="10" font-weight="bold" fill="#6A1B9A">Private DNS Zones (Centralized)</text>
|
|
|
<text x="224" y="346" text-anchor="middle" font-size="8.5" fill="#555">privatelink.dfs.core.windows.net · privatelink.blob.core.windows.net</text>
|
|
|
<text x="224" y="360" text-anchor="middle" font-size="8.5" fill="#555">privatelink.vaultcore.azure.net · privatelink.azuredatabricks.net · +6 more</text>
|
|
|
|
|
|
<!-- UDR label -->
|
|
|
<rect x="66" y="378" width="316" height="34" rx="4" fill="#FFF3E0" stroke="#FF9800" stroke-width="0.8"/>
|
|
|
<text x="224" y="394" text-anchor="middle" font-size="9" font-weight="bold" fill="#E65100">UDR: 0.0.0.0/0 → Firewall Private IP</text>
|
|
|
<text x="224" y="406" text-anchor="middle" font-size="8" fill="#666">All spoke egress routes through hub firewall</text>
|
|
|
|
|
|
<!-- Region label -->
|
|
|
<rect x="66" y="422" width="316" height="34" rx="4" fill="#E0F2F1"/>
|
|
|
<text x="224" y="438" text-anchor="middle" font-size="9" font-weight="bold" fill="#00695C">Primary: Canada Central (Toronto)</text>
|
|
|
<text x="224" y="452" text-anchor="middle" font-size="9" fill="#00695C">DR: Canada East (Québec City)</text>
|
|
|
|
|
|
<!-- ═══════════════════════════════════════════════════════════ -->
|
|
|
<!-- SUBSCRIPTION 2: DATA PLATFORM PROD (center-top, large) -->
|
|
|
<!-- ═══════════════════════════════════════════════════════════ -->
|
|
|
<rect x="424" y="126" width="778" height="590" rx="8" fill="#F5F5FF" stroke="#3F51B5" stroke-width="1.8" filter="url(#shL)"/>
|
|
|
<rect x="424" y="126" width="778" height="30" rx="8" fill="#3F51B5"/>
|
|
|
<rect x="424" y="144" width="778" height="12" fill="#3F51B5"/>
|
|
|
<text x="813" y="146" text-anchor="middle" font-size="13" font-weight="bold" fill="white">sub-data-platform-prod (Production Data Platform)</text>
|
|
|
|
|
|
<!-- VNet Data Prod -->
|
|
|
<rect x="438" y="166" width="750" height="540" rx="6" fill="white" stroke="#5C6BC0" stroke-width="1.2" stroke-dasharray="6,3" opacity="0.95"/>
|
|
|
<text x="452" y="184" font-size="11" font-weight="bold" fill="#283593">vnet-data-prod-cc (10.10.0.0/16)</text>
|
|
|
|
|
|
<!-- ── RG: Networking ── -->
|
|
|
<rect x="452" y="194" width="240" height="68" rx="5" fill="#E8EAF6" stroke="#7986CB" stroke-width="0.8" filter="url(#sh)"/>
|
|
|
<text x="462" y="210" font-size="9" font-weight="bold" fill="#283593">rg-networking-prod-cc</text>
|
|
|
<text x="462" y="224" font-size="8.5" fill="#555">Subnets, NSGs, UDRs, PE NICs</text>
|
|
|
<rect x="462" y="230" width="80" height="16" rx="2" fill="#C5CAE9"/><text x="502" y="242" text-anchor="middle" font-size="7.5" fill="#283593">snet-dbx-host</text>
|
|
|
<rect x="548" y="230" width="84" height="16" rx="2" fill="#C5CAE9"/><text x="590" y="242" text-anchor="middle" font-size="7.5" fill="#283593">snet-dbx-cont</text>
|
|
|
<rect x="638" y="230" width="42" height="16" rx="2" fill="#C5CAE9"/><text x="659" y="242" text-anchor="middle" font-size="7.5" fill="#283593">PEs</text>
|
|
|
|
|
|
<!-- ── RG: Storage ── -->
|
|
|
<rect x="452" y="272" width="370" height="142" rx="5" fill="#FFF8E1" stroke="#FFB300" stroke-width="0.8" filter="url(#sh)"/>
|
|
|
<text x="462" y="290" font-size="10" font-weight="bold" fill="#E65100">rg-storage-prod-cc</text>
|
|
|
|
|
|
<!-- Storage accounts -->
|
|
|
<rect x="462" y="298" width="106" height="50" rx="4" fill="white" stroke="#FFB300" stroke-width="0.8"/>
|
|
|
<text x="515" y="314" text-anchor="middle" font-size="8.5" font-weight="bold" fill="#E65100">stadlsbronzeprod</text>
|
|
|
<text x="515" y="328" text-anchor="middle" font-size="8" fill="#555">ADLS Gen2 · Hot</text>
|
|
|
<text x="515" y="340" text-anchor="middle" font-size="7.5" fill="#888">/bronze/{src}/{entity}/</text>
|
|
|
|
|
|
<rect x="574" y="298" width="106" height="50" rx="4" fill="white" stroke="#FFB300" stroke-width="0.8"/>
|
|
|
<text x="627" y="314" text-anchor="middle" font-size="8.5" font-weight="bold" fill="#E65100">stadlssilverprod</text>
|
|
|
<text x="627" y="328" text-anchor="middle" font-size="8" fill="#555">ADLS Gen2 · Hot</text>
|
|
|
<text x="627" y="340" text-anchor="middle" font-size="7.5" fill="#888">/silver/{domain}/{ent}/</text>
|
|
|
|
|
|
<rect x="686" y="298" width="106" height="50" rx="4" fill="white" stroke="#FFB300" stroke-width="0.8"/>
|
|
|
<text x="739" y="314" text-anchor="middle" font-size="8.5" font-weight="bold" fill="#E65100">stadlsgoldprod</text>
|
|
|
<text x="739" y="328" text-anchor="middle" font-size="8" fill="#555">ADLS Gen2 · Hot</text>
|
|
|
<text x="739" y="340" text-anchor="middle" font-size="7.5" fill="#888">/gold/{product}/{ent}/</text>
|
|
|
|
|
|
<rect x="462" y="354" width="106" height="50" rx="4" fill="white" stroke="#FFB300" stroke-width="0.8"/>
|
|
|
<text x="515" y="370" text-anchor="middle" font-size="8.5" font-weight="bold" fill="#E65100">stadlsstagingprod</text>
|
|
|
<text x="515" y="384" text-anchor="middle" font-size="8" fill="#555">ADLS Gen2 · Hot</text>
|
|
|
<text x="515" y="396" text-anchor="middle" font-size="7.5" fill="#888">/staging/ (ephemeral)</text>
|
|
|
|
|
|
<rect x="574" y="354" width="106" height="50" rx="4" fill="white" stroke="#FFB300" stroke-width="0.8"/>
|
|
|
<text x="627" y="370" text-anchor="middle" font-size="8.5" font-weight="bold" fill="#E65100">stadlsarchiveprod</text>
|
|
|
<text x="627" y="384" text-anchor="middle" font-size="8" fill="#555">Cool → Archive</text>
|
|
|
<text x="627" y="396" text-anchor="middle" font-size="7.5" fill="#888">Long-term regulatory</text>
|
|
|
|
|
|
<!-- Storage details -->
|
|
|
<rect x="686" y="354" width="126" height="50" rx="4" fill="#FFF3E0"/>
|
|
|
<text x="749" y="370" text-anchor="middle" font-size="8" font-weight="bold" fill="#E65100">All Accounts:</text>
|
|
|
<text x="749" y="384" text-anchor="middle" font-size="8" fill="#555">HNS enabled · Delta Lake</text>
|
|
|
<text x="749" y="396" text-anchor="middle" font-size="8" fill="#555">PE only · TLS 1.2 · CMK</text>
|
|
|
|
|
|
<!-- ── RG: Databricks ── -->
|
|
|
<rect x="452" y="424" width="370" height="142" rx="5" fill="#E8F5E9" stroke="#43A047" stroke-width="0.8" filter="url(#sh)"/>
|
|
|
<text x="462" y="442" font-size="10" font-weight="bold" fill="#1B5E20">rg-databricks-prod-cc</text>
|
|
|
|
|
|
<rect x="462" y="450" width="112" height="52" rx="4" fill="white" stroke="#66BB6A" stroke-width="0.8"/>
|
|
|
<text x="518" y="466" text-anchor="middle" font-size="9" font-weight="bold" fill="#2E7D32">dbw-data-eng</text>
|
|
|
<text x="518" y="478" text-anchor="middle" font-size="8" fill="#555">DLT · Streaming</text>
|
|
|
<text x="518" y="490" text-anchor="middle" font-size="7.5" fill="#888">DS4_v2 · Photon</text>
|
|
|
|
|
|
<rect x="580" y="450" width="112" height="52" rx="4" fill="white" stroke="#66BB6A" stroke-width="0.8"/>
|
|
|
<text x="636" y="466" text-anchor="middle" font-size="9" font-weight="bold" fill="#2E7D32">dbw-analytics</text>
|
|
|
<text x="636" y="478" text-anchor="middle" font-size="8" fill="#555">SQL · AI/BI · Genie</text>
|
|
|
<text x="636" y="490" text-anchor="middle" font-size="7.5" fill="#888">Serverless 2–16 DBU</text>
|
|
|
|
|
|
<rect x="698" y="450" width="112" height="52" rx="4" fill="white" stroke="#66BB6A" stroke-width="0.8"/>
|
|
|
<text x="754" y="466" text-anchor="middle" font-size="9" font-weight="bold" fill="#2E7D32">dbw-mlops</text>
|
|
|
<text x="754" y="478" text-anchor="middle" font-size="8" fill="#555">MLflow · Serving</text>
|
|
|
<text x="754" y="490" text-anchor="middle" font-size="7.5" fill="#888">GPU NC6s_v3</text>
|
|
|
|
|
|
<!-- SQL Warehouses -->
|
|
|
<rect x="462" y="510" width="172" height="46" rx="4" fill="white" stroke="#43A047" stroke-width="0.8"/>
|
|
|
<text x="548" y="526" text-anchor="middle" font-size="9" font-weight="bold" fill="#2E7D32">SQL Warehouses (Serverless)</text>
|
|
|
<text x="548" y="540" text-anchor="middle" font-size="8" fill="#555">sqlwh-bi-serving · sqlwh-analytics · sqlwh-etl</text>
|
|
|
<text x="548" y="552" text-anchor="middle" font-size="7.5" fill="#888">snet-sqlwarehouse (10.10.9.0/24)</text>
|
|
|
|
|
|
<!-- Unity Catalog -->
|
|
|
<rect x="642" y="510" width="168" height="46" rx="4" fill="#C8E6C9" stroke="#43A047" stroke-width="0.8"/>
|
|
|
<text x="726" y="526" text-anchor="middle" font-size="9" font-weight="bold" fill="#1B5E20">Unity Catalog Metastore</text>
|
|
|
<text x="726" y="540" text-anchor="middle" font-size="8" fill="#555">RLS · CLS · DDM · Column lineage</text>
|
|
|
<text x="726" y="552" text-anchor="middle" font-size="7.5" fill="#333">External metastore on dedicated ADLS</text>
|
|
|
|
|
|
<!-- ── RG: Ingestion ── -->
|
|
|
<rect x="452" y="576" width="240" height="62" rx="5" fill="#E3F2FD" stroke="#42A5F5" stroke-width="0.8" filter="url(#sh)"/>
|
|
|
<text x="462" y="594" font-size="10" font-weight="bold" fill="#0D47A1">rg-ingestion-prod-cc</text>
|
|
|
<rect x="462" y="602" width="100" height="28" rx="3" fill="white" stroke="#42A5F5" stroke-width="0.6"/>
|
|
|
<text x="512" y="616" text-anchor="middle" font-size="9" font-weight="bold" fill="#1565C0">ADF</text>
|
|
|
<text x="512" y="626" text-anchor="middle" font-size="7.5" fill="#555">adf-data-platform</text>
|
|
|
|
|
|
<rect x="568" y="602" width="114" height="28" rx="3" fill="white" stroke="#42A5F5" stroke-width="0.6"/>
|
|
|
<text x="625" y="616" text-anchor="middle" font-size="9" font-weight="bold" fill="#1565C0">Event Hub</text>
|
|
|
<text x="625" y="626" text-anchor="middle" font-size="7.5" fill="#555">Streaming / CDC</text>
|
|
|
|
|
|
<!-- ── RG: Governance ── -->
|
|
|
<rect x="832" y="194" width="330" height="130" rx="5" fill="#F3E5F5" stroke="#AB47BC" stroke-width="0.8" filter="url(#sh)"/>
|
|
|
<text x="842" y="212" font-size="10" font-weight="bold" fill="#6A1B9A">rg-governance-prod-cc</text>
|
|
|
|
|
|
<rect x="842" y="222" width="150" height="50" rx="4" fill="white" stroke="#CE93D8" stroke-width="0.8"/>
|
|
|
<text x="917" y="240" text-anchor="middle" font-size="10" font-weight="bold" fill="#6A1B9A">Microsoft Purview</text>
|
|
|
<text x="917" y="254" text-anchor="middle" font-size="8" fill="#555">pv-data-governance-prod</text>
|
|
|
<text x="917" y="266" text-anchor="middle" font-size="7.5" fill="#888">Glossary · Classification · DQ · DLP</text>
|
|
|
|
|
|
<rect x="1000" y="222" width="150" height="50" rx="4" fill="white" stroke="#CE93D8" stroke-width="0.8"/>
|
|
|
<text x="1075" y="240" text-anchor="middle" font-size="10" font-weight="bold" fill="#6A1B9A">Purview PEs</text>
|
|
|
<text x="1075" y="254" text-anchor="middle" font-size="8" fill="#555">pe-pv-account</text>
|
|
|
<text x="1075" y="266" text-anchor="middle" font-size="8" fill="#555">pe-pv-portal</text>
|
|
|
|
|
|
<!-- Purview scan targets -->
|
|
|
<rect x="842" y="280" width="308" height="34" rx="3" fill="#F3E5F5"/>
|
|
|
<text x="996" y="296" text-anchor="middle" font-size="8.5" fill="#6A1B9A">Auto-classification scans → ADLS accounts → sensitivity labels → UC tags</text>
|
|
|
<text x="996" y="308" text-anchor="middle" font-size="8" fill="#888">DQ sampling assessment on staging zone (pre-Bronze Tier 1)</text>
|
|
|
|
|
|
<!-- ── RG: Key Vault ── -->
|
|
|
<rect x="832" y="336" width="330" height="78" rx="5" fill="#FFEBEE" stroke="#EF5350" stroke-width="0.8" filter="url(#sh)"/>
|
|
|
<text x="842" y="354" font-size="10" font-weight="bold" fill="#C62828">rg-keyvault-prod-cc</text>
|
|
|
|
|
|
<rect x="842" y="364" width="150" height="42" rx="4" fill="white" stroke="#EF9A9A" stroke-width="0.8"/>
|
|
|
<text x="917" y="380" text-anchor="middle" font-size="9" font-weight="bold" fill="#C62828">kv-data-platform</text>
|
|
|
<text x="917" y="394" text-anchor="middle" font-size="8" fill="#555">Secrets · API keys · SAS license</text>
|
|
|
|
|
|
<rect x="1000" y="364" width="150" height="42" rx="4" fill="white" stroke="#EF9A9A" stroke-width="0.8"/>
|
|
|
<text x="1075" y="380" text-anchor="middle" font-size="9" font-weight="bold" fill="#C62828">kv-data-encryption</text>
|
|
|
<text x="1075" y="394" text-anchor="middle" font-size="8" fill="#555">CMK: ADLS + Databricks</text>
|
|
|
|
|
|
<!-- ── RG: Monitoring ── -->
|
|
|
<rect x="832" y="424" width="330" height="78" rx="5" fill="#FFF8E1" stroke="#FFA000" stroke-width="0.8" filter="url(#sh)"/>
|
|
|
<text x="842" y="442" font-size="10" font-weight="bold" fill="#E65100">rg-monitoring-prod-cc</text>
|
|
|
|
|
|
<rect x="842" y="452" width="150" height="42" rx="4" fill="white" stroke="#FFB74D" stroke-width="0.8"/>
|
|
|
<text x="917" y="468" text-anchor="middle" font-size="9" font-weight="bold" fill="#E65100">Log Analytics</text>
|
|
|
<text x="917" y="482" text-anchor="middle" font-size="8" fill="#555">law-data-platform-prod</text>
|
|
|
|
|
|
<rect x="1000" y="452" width="150" height="42" rx="4" fill="white" stroke="#FFB74D" stroke-width="0.8"/>
|
|
|
<text x="1075" y="468" text-anchor="middle" font-size="9" font-weight="bold" fill="#E65100">Azure Monitor</text>
|
|
|
<text x="1075" y="482" text-anchor="middle" font-size="8" fill="#555">Alerts · Action groups</text>
|
|
|
|
|
|
<!-- ── Private Endpoints summary ── -->
|
|
|
<rect x="832" y="512" width="330" height="68" rx="5" fill="#E3F2FD" stroke="#1565C0" stroke-width="0.8" filter="url(#sh)"/>
|
|
|
<text x="842" y="530" font-size="9" font-weight="bold" fill="#0D47A1">snet-private-endpoints (10.10.8.0/24) — ~25-30 PEs</text>
|
|
|
<text x="842" y="546" font-size="8.5" fill="#555">pe-stadlsbronzeprod-dfs · pe-stadlssilverprod-dfs · pe-stadlsgoldprod-dfs</text>
|
|
|
<text x="842" y="560" font-size="8.5" fill="#555">pe-kv-platform · pe-kv-encryption · pe-pv-account · pe-dbw-* · pe-adf-*</text>
|
|
|
<text x="842" y="574" font-size="8" fill="#C62828">Public access DISABLED on ALL services · NSG default DENY ALL</text>
|
|
|
|
|
|
<!-- Subnet summary -->
|
|
|
<rect x="700" y="582" width="462" height="38" rx="4" fill="#E8EAF6"/>
|
|
|
<text x="710" y="598" font-size="8.5" font-weight="bold" fill="#283593">Subnets:</text>
|
|
|
<text x="770" y="598" font-size="8.5" fill="#555">snet-dbx-host (10.10.0.0/22) · snet-dbx-container (10.10.4.0/22) · snet-private-endpoints (/24)</text>
|
|
|
<text x="710" y="612" font-size="8.5" fill="#555">snet-sqlwarehouse (/24) · snet-adf (/24) · snet-services (/24) — Databricks VNet injection requires /22</text>
|
|
|
|
|
|
<!-- ═══════════════════════════════════════════════════════════ -->
|
|
|
<!-- SUBSCRIPTION 3: NON-PROD (bottom-left) -->
|
|
|
<!-- ═══════════════════════════════════════════════════════════ -->
|
|
|
<rect x="40" y="498" width="370" height="230" rx="8" fill="#FAFAFA" stroke="#78909C" stroke-width="1.2" filter="url(#shL)"/>
|
|
|
<rect x="40" y="498" width="370" height="28" rx="8" fill="#78909C"/>
|
|
|
<rect x="40" y="514" width="370" height="12" fill="#78909C"/>
|
|
|
<text x="225" y="516" text-anchor="middle" font-size="12" font-weight="bold" fill="white">sub-data-platform-nonprod</text>
|
|
|
|
|
|
<rect x="54" y="536" width="342" height="180" rx="5" fill="white" stroke="#B0BEC5" stroke-width="1" stroke-dasharray="5,3"/>
|
|
|
<text x="66" y="554" font-size="10" font-weight="bold" fill="#546E7A">vnet-data-nonprod-cc</text>
|
|
|
|
|
|
<!-- Non-prod workspaces -->
|
|
|
<rect x="66" y="564" width="150" height="42" rx="4" fill="#E8F5E9" stroke="#A5D6A7" stroke-width="0.8"/>
|
|
|
<text x="141" y="580" text-anchor="middle" font-size="9" font-weight="bold" fill="#2E7D32">dbw-data-eng-dev</text>
|
|
|
<text x="141" y="594" text-anchor="middle" font-size="8" fill="#555">Max 4 workers · DS3_v2</text>
|
|
|
|
|
|
<rect x="224" y="564" width="150" height="42" rx="4" fill="#E8F5E9" stroke="#A5D6A7" stroke-width="0.8"/>
|
|
|
<text x="299" y="580" text-anchor="middle" font-size="9" font-weight="bold" fill="#2E7D32">dbw-sandbox</text>
|
|
|
<text x="299" y="594" text-anchor="middle" font-size="8" fill="#555">Read-only · Budget cap</text>
|
|
|
|
|
|
<!-- Non-prod storage + KV -->
|
|
|
<rect x="66" y="614" width="150" height="36" rx="4" fill="#FFF8E1" stroke="#FFB300" stroke-width="0.8"/>
|
|
|
<text x="141" y="630" text-anchor="middle" font-size="9" font-weight="bold" fill="#E65100">ADLS Gen2 (dev/stg)</text>
|
|
|
<text x="141" y="644" text-anchor="middle" font-size="8" fill="#555">Isolated storage accounts</text>
|
|
|
|
|
|
<rect x="224" y="614" width="150" height="36" rx="4" fill="#FFEBEE" stroke="#EF9A9A" stroke-width="0.8"/>
|
|
|
<text x="299" y="630" text-anchor="middle" font-size="9" font-weight="bold" fill="#C62828">kv-data-platform-nonprod</text>
|
|
|
<text x="299" y="644" text-anchor="middle" font-size="8" fill="#555">Non-prod secrets</text>
|
|
|
|
|
|
<rect x="66" y="658" width="308" height="26" rx="3" fill="#ECEFF1"/>
|
|
|
<text x="220" y="676" text-anchor="middle" font-size="8.5" fill="#546E7A">Dev UC metastore · Masked data · No prod write access · Auto-terminate 15 min</text>
|
|
|
|
|
|
<!-- ═══════════════════════════════════════════════════════════ -->
|
|
|
<!-- SUBSCRIPTION 4: SAS VIYA (bottom-center) -->
|
|
|
<!-- ═══════════════════════════════════════════════════════════ -->
|
|
|
<rect x="424" y="730" width="380" height="242" rx="8" fill="#FFF3E0" stroke="#E65100" stroke-width="1.5" filter="url(#shL)"/>
|
|
|
<rect x="424" y="730" width="380" height="28" rx="8" fill="url(#gOrange)"/>
|
|
|
<rect x="424" y="746" width="380" height="12" fill="url(#gOrange)"/>
|
|
|
<text x="614" y="748" text-anchor="middle" font-size="12" font-weight="bold" fill="white">sub-data-sas</text>
|
|
|
|
|
|
<rect x="438" y="770" width="352" height="190" rx="5" fill="white" stroke="#FF8A65" stroke-width="1" stroke-dasharray="5,3"/>
|
|
|
<text x="450" y="788" font-size="10" font-weight="bold" fill="#BF360C">vnet-sas-prod-cc</text>
|
|
|
<text x="680" y="788" font-size="9" fill="#888">Peered to hub</text>
|
|
|
|
|
|
<!-- AKS Cluster -->
|
|
|
<rect x="450" y="798" width="330" height="152" rx="5" fill="#FFF8E1" stroke="#FF9800" stroke-width="0.8"/>
|
|
|
<text x="615" y="816" text-anchor="middle" font-size="11" font-weight="bold" fill="#E65100">AKS: aks-sas-viya-prod</text>
|
|
|
<text x="615" y="832" text-anchor="middle" font-size="9" fill="#555">Private cluster · Azure CNI · Entra ID RBAC · Auto-scaling (2–6 nodes)</text>
|
|
|
|
|
|
<!-- AKS Node pools -->
|
|
|
<rect x="460" y="842" width="148" height="44" rx="4" fill="white" stroke="#FFB74D" stroke-width="0.8"/>
|
|
|
<text x="534" y="858" text-anchor="middle" font-size="9" font-weight="bold" fill="#E65100">Compute Server Pods</text>
|
|
|
<text x="534" y="870" text-anchor="middle" font-size="8" fill="#555">E16s_v5 (16 vCPU, 128 GB)</text>
|
|
|
<text x="534" y="882" text-anchor="middle" font-size="8" fill="#555">2–4 pods · Actuarial batch</text>
|
|
|
|
|
|
<rect x="614" y="842" width="158" height="44" rx="4" fill="white" stroke="#FFB74D" stroke-width="0.8"/>
|
|
|
<text x="693" y="858" text-anchor="middle" font-size="9" font-weight="bold" fill="#E65100">Programming Runtime</text>
|
|
|
<text x="693" y="870" text-anchor="middle" font-size="8" fill="#555">E32s_v5 (32 vCPU, 256 GB)</text>
|
|
|
<text x="693" y="882" text-anchor="middle" font-size="8" fill="#555">1–2 pods · IFRS 17, IBNR</text>
|
|
|
|
|
|
<rect x="460" y="894" width="148" height="36" rx="4" fill="white" stroke="#FFB74D" stroke-width="0.8"/>
|
|
|
<text x="534" y="910" text-anchor="middle" font-size="9" font-weight="bold" fill="#E65100">License + Model Mgr</text>
|
|
|
<text x="534" y="924" text-anchor="middle" font-size="8" fill="#555">D4s_v5 + D8s_v5 (HA)</text>
|
|
|
|
|
|
<rect x="614" y="894" width="158" height="36" rx="4" fill="white" stroke="#FFB74D" stroke-width="0.8"/>
|
|
|
<text x="693" y="910" text-anchor="middle" font-size="9" font-weight="bold" fill="#E65100">System Node Pool</text>
|
|
|
<text x="693" y="924" text-anchor="middle" font-size="8" fill="#555">D4s_v5 × 3 (across AZs)</text>
|
|
|
|
|
|
<text x="615" y="950" text-anchor="middle" font-size="8.5" fill="#BF360C">JDBC LIBNAME → Databricks SQL Warehouses (enforces UC RLS/CLS/DDM)</text>
|
|
|
|
|
|
<!-- ═══════════════════════════════════════════════════════════ -->
|
|
|
<!-- SUBSCRIPTION 5: FABRIC (bottom-right-top) -->
|
|
|
<!-- ═══════════════════════════════════════════════════════════ -->
|
|
|
<rect x="822" y="730" width="382" height="242" rx="8" fill="#F3E5F5" stroke="#7B1FA2" stroke-width="1.5" filter="url(#shL)"/>
|
|
|
<rect x="822" y="730" width="382" height="28" rx="8" fill="url(#gPurple)"/>
|
|
|
<rect x="822" y="746" width="382" height="12" fill="url(#gPurple)"/>
|
|
|
<text x="1013" y="748" text-anchor="middle" font-size="12" font-weight="bold" fill="white">sub-data-fabric</text>
|
|
|
|
|
|
<!-- Fabric is PaaS, no VNet -->
|
|
|
<rect x="836" y="770" width="354" height="190" rx="5" fill="white" stroke="#CE93D8" stroke-width="1"/>
|
|
|
<text x="846" y="788" font-size="10" font-weight="bold" fill="#6A1B9A">Microsoft Fabric (Managed PaaS — No VNet required)</text>
|
|
|
|
|
|
<!-- F64 -->
|
|
|
<rect x="846" y="798" width="160" height="60" rx="5" fill="#EDE7F6" stroke="#AB47BC" stroke-width="0.8"/>
|
|
|
<text x="926" y="816" text-anchor="middle" font-size="11" font-weight="bold" fill="#6A1B9A">F64 (Production)</text>
|
|
|
<text x="926" y="832" text-anchor="middle" font-size="9" fill="#555">64 CU · Direct Lake</text>
|
|
|
<text x="926" y="846" text-anchor="middle" font-size="9" fill="#555">55,000 users · Power BI</text>
|
|
|
<text x="926" y="856" text-anchor="middle" font-size="7.5" fill="#888">~$8–9K USD/mo</text>
|
|
|
|
|
|
<!-- F32 -->
|
|
|
<rect x="1016" y="798" width="160" height="60" rx="5" fill="#EDE7F6" stroke="#AB47BC" stroke-width="0.8"/>
|
|
|
<text x="1096" y="816" text-anchor="middle" font-size="11" font-weight="bold" fill="#6A1B9A">F32 (Non-Prod)</text>
|
|
|
<text x="1096" y="832" text-anchor="middle" font-size="9" fill="#555">32 CU · Dev/test</text>
|
|
|
<text x="1096" y="846" text-anchor="middle" font-size="9" fill="#555">BI workloads only</text>
|
|
|
|
|
|
<!-- F16 -->
|
|
|
<rect x="846" y="868" width="160" height="46" rx="5" fill="#EDE7F6" stroke="#AB47BC" stroke-width="0.8" stroke-dasharray="5,3"/>
|
|
|
<text x="926" y="886" text-anchor="middle" font-size="10" font-weight="bold" fill="#6A1B9A">F16 (IQ POC – H2)</text>
|
|
|
<text x="926" y="900" text-anchor="middle" font-size="8.5" fill="#555">Ontology POC · Customer 360</text>
|
|
|
<text x="926" y="912" text-anchor="middle" font-size="7.5" fill="#888">Time-limited · ARB approval</text>
|
|
|
|
|
|
<!-- OneLake shortcuts -->
|
|
|
<rect x="1016" y="868" width="160" height="46" rx="4" fill="#F3E5F5"/>
|
|
|
<text x="1096" y="886" text-anchor="middle" font-size="9" font-weight="bold" fill="#7B1FA2">OneLake Shortcuts</text>
|
|
|
<text x="1096" y="900" text-anchor="middle" font-size="8.5" fill="#555">Zero-copy → Gold Delta</text>
|
|
|
<text x="1096" y="912" text-anchor="middle" font-size="8" fill="#555">Direct Lake mode</text>
|
|
|
|
|
|
<!-- Anti-pattern warning -->
|
|
|
<rect x="846" y="924" width="330" height="28" rx="3" fill="#FFCDD2"/>
|
|
|
<text x="1011" y="940" text-anchor="middle" font-size="8.5" font-weight="bold" fill="#C62828">⚠ BI SERVING ONLY — Fabric ETL / Warehouse / Spark PROHIBITED (AD-03)</text>
|
|
|
<text x="1011" y="952" text-anchor="middle" font-size="7.5" fill="#C62828">Capacity growth for non-BI triggers Architecture Review Board</text>
|
|
|
|
|
|
<!-- ═══════════════════════════════════════════════════════════ -->
|
|
|
<!-- SUBSCRIPTION 6: MANAGEMENT (far right) -->
|
|
|
<!-- ═══════════════════════════════════════════════════════════ -->
|
|
|
<rect x="1220" y="126" width="540" height="590" rx="8" fill="#ECEFF1" stroke="#546E7A" stroke-width="1.5" filter="url(#shL)"/>
|
|
|
<rect x="1220" y="126" width="540" height="28" rx="8" fill="url(#gDark)"/>
|
|
|
<rect x="1220" y="142" width="540" height="12" fill="url(#gDark)"/>
|
|
|
<text x="1490" y="144" text-anchor="middle" font-size="12" font-weight="bold" fill="white">sub-data-management</text>
|
|
|
|
|
|
<rect x="1234" y="166" width="512" height="538" rx="5" fill="white" stroke="#90A4AE" stroke-width="1" stroke-dasharray="5,3"/>
|
|
|
<text x="1246" y="184" font-size="10" font-weight="bold" fill="#37474F">vnet-mgmt-cc</text>
|
|
|
|
|
|
<!-- DevOps -->
|
|
|
<rect x="1246" y="196" width="240" height="90" rx="5" fill="#E3F2FD" stroke="#42A5F5" stroke-width="0.8" filter="url(#sh)"/>
|
|
|
<text x="1256" y="214" font-size="10" font-weight="bold" fill="#0D47A1">Azure DevOps</text>
|
|
|
<rect x="1256" y="222" width="220" height="56" rx="4" fill="white" stroke="#90CAF9" stroke-width="0.6"/>
|
|
|
<text x="1366" y="240" text-anchor="middle" font-size="9" font-weight="bold" fill="#1565C0">Self-hosted Agents</text>
|
|
|
<text x="1366" y="254" text-anchor="middle" font-size="8.5" fill="#555">In vnet-mgmt-cc (PE access)</text>
|
|
|
<text x="1366" y="268" text-anchor="middle" font-size="8.5" fill="#555">4-stage CI/CD pipeline</text>
|
|
|
|
|
|
<!-- Terraform -->
|
|
|
<rect x="1496" y="196" width="240" height="90" rx="5" fill="#E8F5E9" stroke="#66BB6A" stroke-width="0.8" filter="url(#sh)"/>
|
|
|
<text x="1506" y="214" font-size="10" font-weight="bold" fill="#1B5E20">Infrastructure as Code</text>
|
|
|
<rect x="1506" y="222" width="220" height="56" rx="4" fill="white" stroke="#A5D6A7" stroke-width="0.6"/>
|
|
|
<text x="1616" y="240" text-anchor="middle" font-size="9" font-weight="bold" fill="#2E7D32">Terraform</text>
|
|
|
<text x="1616" y="254" text-anchor="middle" font-size="8.5" fill="#555">9 modules (networking, databricks,</text>
|
|
|
<text x="1616" y="268" text-anchor="middle" font-size="8.5" fill="#555">storage, governance, KV, SAS, ...)</text>
|
|
|
|
|
|
<!-- Terraform State -->
|
|
|
<rect x="1246" y="296" width="490" height="38" rx="4" fill="#FFF8E1" stroke="#FFB300" stroke-width="0.8"/>
|
|
|
<text x="1491" y="314" text-anchor="middle" font-size="9" font-weight="bold" fill="#E65100">Terraform Remote State: Azure Storage (blob lease locking · versioning · CMK · CI/CD SP only)</text>
|
|
|
<text x="1491" y="328" text-anchor="middle" font-size="8.5" fill="#555">Separate state files per module/environment · Gitflow branching · PR-gated deployments</text>
|
|
|
|
|
|
<!-- Manta -->
|
|
|
<rect x="1246" y="346" width="240" height="70" rx="5" fill="#E0F7FA" stroke="#00ACC1" stroke-width="0.8" filter="url(#sh)"/>
|
|
|
<text x="1256" y="364" font-size="10" font-weight="bold" fill="#006064">Manta (IBM) — Tier 3 Lineage</text>
|
|
|
<rect x="1256" y="372" width="220" height="36" rx="4" fill="white" stroke="#80DEEA" stroke-width="0.6"/>
|
|
|
<text x="1366" y="388" text-anchor="middle" font-size="9" fill="#555">Cross-platform code-level lineage</text>
|
|
|
<text x="1366" y="402" text-anchor="middle" font-size="8" fill="#555">SAS + Databricks + ADF + Fabric</text>
|
|
|
|
|
|
<!-- Sentinel -->
|
|
|
<rect x="1496" y="346" width="240" height="70" rx="5" fill="#FFEBEE" stroke="#EF5350" stroke-width="0.8" filter="url(#sh)"/>
|
|
|
<text x="1506" y="364" font-size="10" font-weight="bold" fill="#C62828">Microsoft Sentinel (SIEM)</text>
|
|
|
<rect x="1506" y="372" width="220" height="36" rx="4" fill="white" stroke="#EF9A9A" stroke-width="0.6"/>
|
|
|
<text x="1616" y="388" text-anchor="middle" font-size="9" fill="#555">Security events · DLP alerts</text>
|
|
|
<text x="1616" y="402" text-anchor="middle" font-size="8" fill="#555">Anomaly detection · Auto-block</text>
|
|
|
|
|
|
<!-- Dashboards -->
|
|
|
<rect x="1246" y="428" width="490" height="56" rx="5" fill="#F5F5F5" stroke="#BDBDBD" stroke-width="0.8"/>
|
|
|
<text x="1256" y="446" font-size="9" font-weight="bold" fill="#424242">Operational Dashboards</text>
|
|
|
<rect x="1256" y="454" width="112" height="22" rx="3" fill="#E3F2FD"/><text x="1312" y="469" text-anchor="middle" font-size="8" fill="#1565C0">Platform Health</text>
|
|
|
<rect x="1374" y="454" width="112" height="22" rx="3" fill="#E8F5E9"/><text x="1430" y="469" text-anchor="middle" font-size="8" fill="#2E7D32">DQ Governance</text>
|
|
|
<rect x="1492" y="454" width="82" height="22" rx="3" fill="#FFF8E1"/><text x="1533" y="469" text-anchor="middle" font-size="8" fill="#E65100">FinOps</text>
|
|
|
<rect x="1580" y="454" width="148" height="22" rx="3" fill="#FFEBEE"/><text x="1654" y="469" text-anchor="middle" font-size="8" fill="#C62828">Security & Compliance</text>
|
|
|
|
|
|
<!-- Budget / FinOps -->
|
|
|
<rect x="1246" y="496" width="490" height="84" rx="5" fill="#FFF8E1" stroke="#FFA000" stroke-width="0.8" filter="url(#sh)"/>
|
|
|
<text x="1256" y="514" font-size="10" font-weight="bold" fill="#E65100">FinOps & Cost Management</text>
|
|
|
|
|
|
<rect x="1256" y="524" width="156" height="48" rx="4" fill="white" stroke="#FFB74D" stroke-width="0.6"/>
|
|
|
<text x="1334" y="540" text-anchor="middle" font-size="8.5" font-weight="bold" fill="#E65100">Mandatory Tags</text>
|
|
|
<text x="1334" y="554" text-anchor="middle" font-size="8" fill="#555">Environment · CostCenter</text>
|
|
|
<text x="1334" y="566" text-anchor="middle" font-size="8" fill="#555">Platform · Owner · Domain</text>
|
|
|
|
|
|
<rect x="1420" y="524" width="156" height="48" rx="4" fill="white" stroke="#FFB74D" stroke-width="0.6"/>
|
|
|
<text x="1498" y="540" text-anchor="middle" font-size="8.5" font-weight="bold" fill="#E65100">Budget Alerts</text>
|
|
|
<text x="1498" y="554" text-anchor="middle" font-size="8" fill="#555">50% / 75% / 90% / 100%</text>
|
|
|
<text x="1498" y="566" text-anchor="middle" font-size="8" fill="#555">>100% → CDO + FinOps</text>
|
|
|
|
|
|
<rect x="1584" y="524" width="144" height="48" rx="4" fill="white" stroke="#FFB74D" stroke-width="0.6"/>
|
|
|
<text x="1656" y="540" text-anchor="middle" font-size="8.5" font-weight="bold" fill="#E65100">Reserved Capacity</text>
|
|
|
<text x="1656" y="554" text-anchor="middle" font-size="8" fill="#555">DBCU 1yr (20–35%)</text>
|
|
|
<text x="1656" y="566" text-anchor="middle" font-size="8" fill="#555">Savings Plan (15–25%)</text>
|
|
|
|
|
|
<!-- Alerting -->
|
|
|
<rect x="1246" y="592" width="490" height="46" rx="5" fill="#FFEBEE" stroke="#EF5350" stroke-width="0.6"/>
|
|
|
<text x="1256" y="610" font-size="9" font-weight="bold" fill="#C62828">Alerting Strategy</text>
|
|
|
<text x="1256" y="624" font-size="8.5" fill="#555">Pipeline failure (Sev 1/2) · DQ SLA breach (Sev 1) · Security anomaly (Sev 1) · Cluster over-provision (Sev 3)</text>
|
|
|
<text x="1256" y="636" font-size="8.5" fill="#555">Fabric saturation (Sev 2) · Storage anomaly (Sev 3) → On-call page · Auto-retry · SOC · FinOps escalation</text>
|
|
|
|
|
|
<!-- DR info -->
|
|
|
<rect x="1246" y="648" width="490" height="46" rx="5" fill="#E0F2F1" stroke="#26A69A" stroke-width="0.6"/>
|
|
|
<text x="1256" y="666" font-size="9" font-weight="bold" fill="#00695C">Disaster Recovery → Canada East</text>
|
|
|
<text x="1256" y="680" font-size="8.5" fill="#555">Tier 1 Critical (RPO≤1h, RTO≤4h): Gold + regulatory + ML serving · GRS/RA-GRS · IaC redeploy <2h</text>
|
|
|
<text x="1256" y="694" font-size="8.5" fill="#555">Tier 2 (RPO≤4h, RTO≤8h): Silver + SAS · Tier 3 (RPO/RTO≤24h): Bronze + dev/sandbox · DR test: annual full sim</text>
|
|
|
|
|
|
<!-- ═══════════════════════════════════════════════════════════ -->
|
|
|
<!-- HUB-SPOKE PEERING CONNECTIONS -->
|
|
|
<!-- ═══════════════════════════════════════════════════════════ -->
|
|
|
|
|
|
<!-- Hub → Prod Data (peering) -->
|
|
|
<line x1="410" y1="260" x2="438" y2="260" stroke="#00897B" stroke-width="2.5" marker-end="url(#ar)"/>
|
|
|
<line x1="438" y1="260" x2="410" y2="260" stroke="#00897B" stroke-width="2.5"/>
|
|
|
<text x="424" y="254" text-anchor="middle" font-size="7" fill="#00695C">Peer</text>
|
|
|
|
|
|
<!-- Hub → Non-Prod (peering) -->
|
|
|
<line x1="225" y1="486" x2="225" y2="496" stroke="#00897B" stroke-width="2" stroke-dasharray="4,3"/>
|
|
|
<text x="248" y="494" font-size="7" fill="#00695C">Peer</text>
|
|
|
|
|
|
<!-- Hub → SAS (peering through hub) -->
|
|
|
<path d="M 225 470 L 225 486" stroke="#00897B" stroke-width="1.5"/>
|
|
|
<text x="96" y="494" font-size="7" fill="#00695C">All spokes peer to hub</text>
|
|
|
|
|
|
<!-- SAS → Databricks SQL WH (JDBC) -->
|
|
|
<path d="M 614 730 L 614 716 Q 614 706 604 706 L 548 706 Q 538 706 538 686 L 538 640" stroke="#E65100" stroke-width="1.5" stroke-dasharray="5,3" marker-end="url(#ar)"/>
|
|
|
<text x="550" y="700" font-size="7.5" fill="#E65100" font-weight="bold">JDBC via hub</text>
|
|
|
|
|
|
<!-- Fabric → Gold (OneLake shortcut) -->
|
|
|
<path d="M 900 730 L 900 718 Q 900 706 880 706 L 760 706 Q 750 706 750 696 L 750 640" stroke="#7B1FA2" stroke-width="1.5" stroke-dasharray="5,3"/>
|
|
|
<text x="830" y="718" font-size="7.5" fill="#7B1FA2" font-weight="bold">OneLake shortcuts</text>
|
|
|
|
|
|
<!-- ═══════════════════════════════════════════════════════════ -->
|
|
|
<!-- IDENTITY LAYER (bottom bar) -->
|
|
|
<!-- ═══════════════════════════════════════════════════════════ -->
|
|
|
<rect x="40" y="988" width="1720" height="80" rx="6" fill="url(#gBlue)" filter="url(#sh)"/>
|
|
|
<text x="900" y="1010" text-anchor="middle" font-size="14" font-weight="bold" fill="white">Identity & Access Management — Azure Entra ID</text>
|
|
|
|
|
|
<rect x="60" y="1018" width="200" height="38" rx="4" fill="white" opacity="0.92"/>
|
|
|
<text x="160" y="1034" text-anchor="middle" font-size="9" font-weight="bold" fill="#0D47A1">Entra ID SSO + MFA</text>
|
|
|
<text x="160" y="1048" text-anchor="middle" font-size="8" fill="#555">Conditional Access · Compliant device</text>
|
|
|
|
|
|
<rect x="274" y="1018" width="200" height="38" rx="4" fill="white" opacity="0.92"/>
|
|
|
<text x="374" y="1034" text-anchor="middle" font-size="9" font-weight="bold" fill="#0D47A1">RBAC Security Groups</text>
|
|
|
<text x="374" y="1048" text-anchor="middle" font-size="8" fill="#555">sg-data-engineers · sg-scientists · +5</text>
|
|
|
|
|
|
<rect x="488" y="1018" width="200" height="38" rx="4" fill="white" opacity="0.92"/>
|
|
|
<text x="588" y="1034" text-anchor="middle" font-size="9" font-weight="bold" fill="#0D47A1">Managed Identities</text>
|
|
|
<text x="588" y="1048" text-anchor="middle" font-size="8" fill="#555">Databricks MI · ADF MI · Purview MI</text>
|
|
|
|
|
|
<rect x="702" y="1018" width="240" height="38" rx="4" fill="white" opacity="0.92"/>
|
|
|
<text x="822" y="1034" text-anchor="middle" font-size="9" font-weight="bold" fill="#0D47A1">Service Principals</text>
|
|
|
<text x="822" y="1048" text-anchor="middle" font-size="8" fill="#555">sp-sas-compute · sp-manta · sp-terraform</text>
|
|
|
|
|
|
<rect x="956" y="1018" width="280" height="38" rx="4" fill="white" opacity="0.92"/>
|
|
|
<text x="1096" y="1034" text-anchor="middle" font-size="9" font-weight="bold" fill="#0D47A1">SCIM Provisioning</text>
|
|
|
<text x="1096" y="1048" text-anchor="middle" font-size="8" fill="#555">Entra groups → Databricks UC · Fabric · Purview collection roles</text>
|
|
|
|
|
|
<rect x="1250" y="1018" width="250" height="38" rx="4" fill="#FFCDD2" opacity="0.92"/>
|
|
|
<text x="1375" y="1034" text-anchor="middle" font-size="9" font-weight="bold" fill="#C62828">SAS SP: ADLS restricted to non-sensitive</text>
|
|
|
<text x="1375" y="1048" text-anchor="middle" font-size="8" fill="#C62828">Sensitive data MUST route via JDBC → UC</text>
|
|
|
|
|
|
<rect x="1514" y="1018" width="230" height="38" rx="4" fill="white" opacity="0.92"/>
|
|
|
<text x="1629" y="1034" text-anchor="middle" font-size="9" font-weight="bold" fill="#0D47A1">No shared secrets</text>
|
|
|
<text x="1629" y="1048" text-anchor="middle" font-size="8" fill="#555">OAuth M2M · PATs disabled prod</text>
|
|
|
|
|
|
<!-- ═══════════════════════════════════════════════════════════ -->
|
|
|
<!-- GOVERNANCE LAYER (bottom) -->
|
|
|
<!-- ═══════════════════════════════════════════════════════════ -->
|
|
|
<rect x="40" y="1080" width="1720" height="52" rx="6" fill="url(#gTeal)" filter="url(#sh)"/>
|
|
|
<text x="900" y="1102" text-anchor="middle" font-size="14" font-weight="bold" fill="white">Three-Tier Governance Catalog (AD-05)</text>
|
|
|
|
|
|
<rect x="60" y="1110" width="460" height="18" rx="3" fill="white" opacity="0.9"/>
|
|
|
<text x="290" y="1123" text-anchor="middle" font-size="9" fill="#00706E">Tier 1 · Purview (Enterprise): Glossary · Classification · Policies · DLP · DQ sampling</text>
|
|
|
|
|
|
<rect x="536" y="1110" width="460" height="18" rx="3" fill="white" opacity="0.9"/>
|
|
|
<text x="766" y="1123" text-anchor="middle" font-size="9" fill="#00706E">Tier 2 · Unity Catalog (Enforcement): RLS · CLS · DDM · Column lineage · Data contracts</text>
|
|
|
|
|
|
<rect x="1012" y="1110" width="460" height="18" rx="3" fill="white" opacity="0.9"/>
|
|
|
<text x="1242" y="1123" text-anchor="middle" font-size="9" fill="#00706E">Tier 3 · Manta (Lineage): Cross-platform code-level lineage (SAS + Databricks + ADF + Fabric)</text>
|
|
|
|
|
|
<!-- ═══════════════════════════════════════════════════════════ -->
|
|
|
<!-- LEGEND -->
|
|
|
<!-- ═══════════════════════════════════════════════════════════ -->
|
|
|
<rect x="40" y="1146" width="1720" height="160" rx="6" fill="white" stroke="#DDD" stroke-width="1"/>
|
|
|
<text x="60" y="1170" font-size="13" font-weight="bold" fill="#333">Legend & Naming Convention</text>
|
|
|
|
|
|
<!-- Subscription colors -->
|
|
|
<rect x="60" y="1182" width="16" height="14" rx="2" fill="#E0F2F1" stroke="#00897B" stroke-width="0.8"/><text x="84" y="1193" font-size="10" fill="#555">Connectivity Hub</text>
|
|
|
<rect x="210" y="1182" width="16" height="14" rx="2" fill="#F5F5FF" stroke="#3F51B5" stroke-width="0.8"/><text x="234" y="1193" font-size="10" fill="#555">Prod Data Platform</text>
|
|
|
<rect x="390" y="1182" width="16" height="14" rx="2" fill="#FAFAFA" stroke="#78909C" stroke-width="0.8"/><text x="414" y="1193" font-size="10" fill="#555">Non-Prod</text>
|
|
|
<rect x="510" y="1182" width="16" height="14" rx="2" fill="#FFF3E0" stroke="#E65100" stroke-width="0.8"/><text x="534" y="1193" font-size="10" fill="#555">SAS Viya</text>
|
|
|
<rect x="622" y="1182" width="16" height="14" rx="2" fill="#F3E5F5" stroke="#7B1FA2" stroke-width="0.8"/><text x="646" y="1193" font-size="10" fill="#555">Fabric</text>
|
|
|
<rect x="710" y="1182" width="16" height="14" rx="2" fill="#ECEFF1" stroke="#546E7A" stroke-width="0.8"/><text x="734" y="1193" font-size="10" fill="#555">Management</text>
|
|
|
|
|
|
<line x1="840" y1="1189" x2="878" y2="1189" stroke="#546E7A" stroke-width="2" marker-end="url(#ar)"/><text x="886" y="1193" font-size="10" fill="#555">VNet peering / data flow</text>
|
|
|
<line x1="1040" y1="1189" x2="1078" y2="1189" stroke="#546E7A" stroke-width="1.5" stroke-dasharray="5,3"/><text x="1086" y="1193" font-size="10" fill="#555">JDBC / indirect path</text>
|
|
|
<rect x="1240" y="1182" width="16" height="14" rx="2" fill="none" stroke="#5C6BC0" stroke-width="1" stroke-dasharray="4,2"/><text x="1264" y="1193" font-size="10" fill="#555">VNet boundary</text>
|
|
|
|
|
|
<!-- Naming convention -->
|
|
|
<text x="60" y="1218" font-size="10" font-weight="bold" fill="#333">Naming:</text>
|
|
|
<text x="116" y="1218" font-size="9.5" fill="#555">{type}-{workload}-{environment}-{region} | Region: cc = Canada Central, ce = Canada East</text>
|
|
|
|
|
|
<text x="60" y="1238" font-size="9.5" fill="#777">Examples: rg-databricks-prod-cc · vnet-data-prod-cc · stadlsgoldprod · kv-data-platform-prod · dbw-data-eng-prod · sqlwh-bi-serving</text>
|
|
|
<text x="60" y="1256" font-size="9.5" fill="#777">aks-sas-viya-prod · pe-stadlsgoldprod-dfs · id-databricks-prod · sp-sas-compute-prod · pv-data-governance-prod · fc-bi-serving-prod · afw-hub-canadacentral</text>
|
|
|
|
|
|
<!-- Architecture decision references -->
|
|
|
<text x="60" y="1280" font-size="9" font-weight="bold" fill="#283593">Architecture Decisions:</text>
|
|
|
<text x="260" y="1280" font-size="8.5" fill="#555">AD-01 Delta Lake · AD-02 Databricks primary · AD-03 Fabric BI only · AD-04 SAS Compute Server · AD-05 Three-tier catalog · AD-06 Retire IKC · AD-07 ADLS shared · AD-08 Three-tier DQ · AD-09 Fabric IQ (H2–3)</text>
|
|
|
|
|
|
<text x="60" y="1298" font-size="9" font-weight="bold" fill="#283593">Compliance:</text>
|
|
|
<text x="155" y="1298" font-size="8.5" fill="#555">AMF · OSFI B-13 · Law 25 (Québec) · PIPEDA · DAMA-DMBOK · EDM-DCAM (target Level 3 H2, Level 4+ H3) · Data residency: Canadian regions only</text>
|
|
|
|
|
|
</svg>
|