<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>The Azure Footguns Database</title>
    <link>https://getstratolens.com/footguns</link>
    <atom:link href="https://getstratolens.com/footguns/rss.xml" rel="self" type="application/rss+xml"/>
    <description>The ways Azure quietly costs you money or exposes you to risk, documented one by one. New footguns as they are published.</description>
    <language>en-us</language>
    <lastBuildDate>Thu, 09 Jul 2026 00:00:00 GMT</lastBuildDate>
    <item>
      <title>AZF-0097: RDP, SSH, or a database port open to the internet: the misconfiguration bots find in minutes</title>
      <link>https://getstratolens.com/footguns/nsg-admin-ports-open-to-internet</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/nsg-admin-ports-open-to-internet</guid>
      <description>An NSG inbound Allow rule from 0.0.0.0/0 on RDP, SSH, or a database port is the most exploited misconfiguration class in Azure. Automated scanners find it in minutes, not weeks.</description>
      <category>security</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0096: A PIM eligibility nobody activates is a dormant escalation path your access reviews miss</title>
      <link>https://getstratolens.com/footguns/pim-eligible-assignment-unused</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/pim-eligible-assignment-unused</guid>
      <description>An eligible assignment on a privileged role that hasn&apos;t been activated in months isn&apos;t hygiene, it&apos;s a live escalation path the principal (or whoever compromises it) can exercise any time.</description>
      <category>governance</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0095: A service principal with Owner at subscription scope is one leaked secret from full compromise</title>
      <link>https://getstratolens.com/footguns/service-principal-privileged-subscription-role</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/service-principal-privileged-subscription-role</guid>
      <description>An automation identity holding Owner or Contributor across the whole subscription is a standing, non-interactive credential with a subscription-sized blast radius, and PIM can&apos;t help it.</description>
      <category>security</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0094: An NSG public-IP allowlist on SSH, RDP, or database ports is still a management port on the internet</title>
      <link>https://getstratolens.com/footguns/nsg-sensitive-ports-public-ip-allowlist</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/nsg-sensitive-ports-public-ip-allowlist</guid>
      <description>Allow-listing the office IP for SSH or RDP feels like the responsible version of an open port. It&apos;s better than 0.0.0.0/0, and it still puts an identity-less protocol on the internet behind addresses that rot.</description>
      <category>security</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0093: A VNet peering stuck outside the Connected state silently black-holes cross-network traffic</title>
      <link>https://getstratolens.com/footguns/vnet-peering-disconnected</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/vnet-peering-disconnected</guid>
      <description>VNet peering is two resources, one on each network, and both must exist for traffic to flow. Create only one side, or delete one side later, and the survivor sits there carrying nothing.</description>
      <category>reliability</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0092: A subnet with no NSG leaves every workload in it with zero network filtering</title>
      <link>https://getstratolens.com/footguns/subnet-without-nsg</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/subnet-without-nsg</guid>
      <description>Azure does not require an NSG on a subnet. Without one there is no subnet-level network filter at all, and every workload inside relies entirely on whatever other controls happen to exist.</description>
      <category>security</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0091: A WAF policy stuck in Detection mode logs every attack and blocks none of them</title>
      <link>https://getstratolens.com/footguns/waf-policy-detection-mode-only</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/waf-policy-detection-mode-only</guid>
      <description>Azure WAF policies start life in Detection mode, which monitors and logs matching requests but blocks nothing. The flip to Prevention is a manual step that routinely never happens.</description>
      <category>security</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0090: A Standard-SKU Application Gateway load-balances attacks as happily as legitimate traffic</title>
      <link>https://getstratolens.com/footguns/application-gateway-not-waf-sku</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/application-gateway-not-waf-sku</guid>
      <description>An Application Gateway on the Standard SKU terminates TLS and routes requests but inspects nothing. SQL injection and XSS pass through it exactly like a login page does.</description>
      <category>security</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0089: An App Service with no managed identity runs on secrets that leak, sprawl, and never expire</title>
      <link>https://getstratolens.com/footguns/app-service-no-managed-identity</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/app-service-no-managed-identity</guid>
      <description>An App Service without a managed identity authenticates to databases, storage, and Key Vault with connection strings and keys in app settings — a whole credential class Azure would let you delete.</description>
      <category>security</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0088: A SignalR or Web PubSub service with public network access enabled takes realtime connections from anywhere</title>
      <link>https://getstratolens.com/footguns/signalr-public-network-access-enabled</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/signalr-public-network-access-enabled</guid>
      <description>The realtime channel pushing live data to your users&apos; browsers accepts connections from any internet address. Access keys and tokens are the whole boundary, and the default is Enabled.</description>
      <category>security</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0087: An Azure AI Search service with public network access enabled puts your whole RAG corpus behind one query key</title>
      <link>https://getstratolens.com/footguns/ai-search-public-network-access-enabled</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/ai-search-public-network-access-enabled</guid>
      <description>The search index is usually the retrieval layer of a RAG pipeline, holding full copies of the documents it ingested. A public endpoint makes one leaked key equal to the whole corpus.</description>
      <category>security</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0086: An Azure OpenAI account with public network access enabled leaves API keys as the only lock on your models and data</title>
      <link>https://getstratolens.com/footguns/cognitive-services-public-network-access-enabled</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/cognitive-services-public-network-access-enabled</guid>
      <description>Your Azure OpenAI or AI services account is reachable from the internet, so an API key is the only thing standing between the world and your models, your quota, and any data your prompts carry.</description>
      <category>security</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0085: Service Bus SAS keys are on by default: one connection string can read, inject, and delete your queues</title>
      <link>https://getstratolens.com/footguns/service-bus-local-auth-enabled</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/service-bus-local-auth-enabled</guid>
      <description>Every Service Bus namespace ships with SAS-key authentication enabled, and the root key grants manage rights over the whole namespace. Those keys live in connection strings, and a connection string is not an identity.</description>
      <category>security</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0084: A Service Bus namespace with public network access enabled leaves your message broker answering the internet</title>
      <link>https://getstratolens.com/footguns/service-bus-public-network-access-enabled</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/service-bus-public-network-access-enabled</guid>
      <description>Service Bus namespaces allow public network traffic by default. The broker gluing your systems together, and every in-flight order, job, and event sitting in its queues, is reachable from anywhere.</description>
      <category>security</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0083: Event Hubs SAS keys are on by default: a connection string is full access to the stream, no identity required</title>
      <link>https://getstratolens.com/footguns/event-hubs-local-auth-enabled</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/event-hubs-local-auth-enabled</guid>
      <description>Every Event Hubs namespace ships with SAS-key authentication enabled. The keys are long-lived static secrets that bypass Entra ID and conditional access, and they live in connection strings scattered through configs.</description>
      <category>security</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0082: An Event Hubs namespace with public network access enabled puts your event stream at the internet edge</title>
      <link>https://getstratolens.com/footguns/event-hubs-public-network-access-enabled</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/event-hubs-public-network-access-enabled</guid>
      <description>Event Hubs namespaces allow traffic over the public network by default. The stream carrying your telemetry and business events is reachable from anywhere, and authentication is the only gate.</description>
      <category>security</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0081: A Linux VM accepting SSH passwords puts brute-forceable credentials on the internet&apos;s most attacked port</title>
      <link>https://getstratolens.com/footguns/linux-vm-ssh-password-auth-enabled</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/linux-vm-ssh-password-auth-enabled</guid>
      <description>The Linux VM was deployed with disablePasswordAuthentication set to false, so sshd accepts passwords: guessable, reusable, phishable credentials with no MFA in front of them.</description>
      <category>security</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0080: A VM still on unmanaged OS disks runs a retired storage model Azure can stop and deallocate</title>
      <link>https://getstratolens.com/footguns/vm-unmanaged-os-disk</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/vm-unmanaged-os-disk</guid>
      <description>Unmanaged VHD disks were fully retired on March 31, 2026. A VM still booting from one is running on borrowed time, outside modern snapshot, encryption, and reliability tooling.</description>
      <category>governance</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0079: Boot diagnostics disabled: when the VM won&apos;t start, you&apos;re debugging a black box</title>
      <link>https://getstratolens.com/footguns/vm-boot-diagnostics-disabled</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/vm-boot-diagnostics-disabled</guid>
      <description>Boot diagnostics is off unless someone turned it on, and you discover that at the worst possible moment: mid-outage, staring at a VM that won&apos;t boot and produces no evidence about why.</description>
      <category>reliability</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0078: A VM without Trusted Launch has no Secure Boot or vTPM — rootkits load below your EDR</title>
      <link>https://getstratolens.com/footguns/vm-trusted-launch-disabled</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/vm-trusted-launch-disabled</guid>
      <description>Trusted Launch brings Secure Boot and vTPM to Azure VMs at no extra cost, but plenty of deployment paths still create Standard VMs where the entire boot chain runs unverified.</description>
      <category>security</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0077: A managed disk open to public export is one SAS URL from full disk exfiltration</title>
      <link>https://getstratolens.com/footguns/managed-disk-public-export-enabled</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/managed-disk-public-export-enabled</guid>
      <description>Managed disks default to AllowAll network access with public export enabled. One export SAS turns the entire disk into a downloadable file, no VM login required.</description>
      <category>security</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0076: An AKS cluster with no network policy engine lets one compromised pod reach every other pod</title>
      <link>https://getstratolens.com/footguns/aks-no-network-policy</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/aks-no-network-policy</guid>
      <description>Unless you choose a network policy engine at cluster creation, AKS enforces none. Kubernetes NetworkPolicy resources are silently ignored and the pod network is completely flat.</description>
      <category>security</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0075: An AKS cluster with Kubernetes RBAC disabled makes every credential cluster-admin, and only a rebuild fixes it</title>
      <link>https://getstratolens.com/footguns/aks-kubernetes-rbac-disabled</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/aks-kubernetes-rbac-disabled</guid>
      <description>With enableRBAC: false there is no in-cluster authorization at all: every kubeconfig, service account token, and pipeline credential is effectively cluster-admin. And RBAC cannot be enabled on an existing cluster.</description>
      <category>security</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0074: AKS local accounts hand out a cluster-admin kubeconfig that bypasses Entra ID</title>
      <link>https://getstratolens.com/footguns/aks-local-accounts-enabled</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/aks-local-accounts-enabled</guid>
      <description>Local accounts are enabled on AKS by default. Anyone with the right Azure role can pull an admin kubeconfig that works with no identity attached, ignores conditional access, and keeps working after they leave.</description>
      <category>security</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0073: An AKS cluster&apos;s public API server puts the Kubernetes control plane on the internet</title>
      <link>https://getstratolens.com/footguns/aks-public-api-server</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/aks-public-api-server</guid>
      <description>The default AKS deployment gives the Kubernetes API server a public endpoint with no IP restrictions. The API that can read every secret and exec into every pod is reachable from anywhere.</description>
      <category>security</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0072: A MySQL flexible server with public network access is one weak firewall rule from the open internet</title>
      <link>https://getstratolens.com/footguns/mysql-flexible-server-public-access</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/mysql-flexible-server-public-access</guid>
      <description>The MySQL flexible server sits on a public endpoint guarded only by IP firewall rules, and the creation-time connectivity choice can&apos;t simply be swapped out later.</description>
      <category>security</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0071: A PostgreSQL flexible server on a public endpoint leaves IP firewall rules as the only barrier to your data</title>
      <link>https://getstratolens.com/footguns/postgresql-flexible-server-public-access</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/postgresql-flexible-server-public-access</guid>
      <description>The Postgres server answers on a publicly resolvable endpoint. Firewall rules, plain IP allow-lists with no identity behind them, are the only thing between your data and the internet.</description>
      <category>security</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0070: Redis non-SSL port 6379 enabled: cache traffic and the access key cross the network in cleartext</title>
      <link>https://getstratolens.com/footguns/redis-non-ssl-port-enabled</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/redis-non-ssl-port-enabled</guid>
      <description>Plaintext port 6379 is open alongside the TLS port. Every GET and SET, session tokens included, crosses the network unencrypted, and so does the access key during AUTH.</description>
      <category>security</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0069: An internet-reachable Azure Cache for Redis puts live session tokens one leaked key from exposure</title>
      <link>https://getstratolens.com/footguns/redis-public-network-access-enabled</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/redis-public-network-access-enabled</guid>
      <description>A cache that usually holds session tokens and hot application data is reachable from the internet, and an access key is the only thing standing in the way.</description>
      <category>security</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0068: Anonymous pull enabled: anyone on the internet can download your container images</title>
      <link>https://getstratolens.com/footguns/container-registry-anonymous-pull-enabled</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/container-registry-anonymous-pull-enabled</guid>
      <description>With anonymous pull enabled, unauthenticated clients can download images from the registry. Images carry baked-in config, internal hostnames, and more often than anyone admits, credentials.</description>
      <category>security</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0067: The ACR admin user is one shared credential with full push and pull over every image</title>
      <link>https://getstratolens.com/footguns/container-registry-admin-user-enabled</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/container-registry-admin-user-enabled</guid>
      <description>The ACR admin account is a single shared username/password with full push and pull rights and no identity behind it. It ends up pasted into CI configs everywhere, and a leak means someone else decides what your clusters run.</description>
      <category>security</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0066: A container registry with public network access enabled exposes your image supply chain to the internet</title>
      <link>https://getstratolens.com/footguns/container-registry-public-network-access-enabled</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/container-registry-public-network-access-enabled</guid>
      <description>The registry that feeds your production clusters accepts connections from any internet address. Authentication becomes the only barrier between the world and the images everything runs on.</description>
      <category>security</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0065: A multi-region Cosmos DB account with automatic failover off still needs a human during the outage</title>
      <link>https://getstratolens.com/footguns/cosmos-db-no-automatic-failover</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/cosmos-db-no-automatic-failover</guid>
      <description>You pay for a second Cosmos DB region so an outage can&apos;t take you down. With automatic failover disabled, it still can — promotion of the read region waits for someone to click the button.</description>
      <category>reliability</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0064: Cosmos DB master keys are on by default — full account access outside Entra ID and RBAC</title>
      <link>https://getstratolens.com/footguns/cosmos-db-local-auth-enabled</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/cosmos-db-local-auth-enabled</guid>
      <description>Every Cosmos DB account ships with two master keys enabled. A key in a connection string is full access to all the data — no Entra ID, no RBAC, no conditional access, no per-user audit trail.</description>
      <category>security</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0063: Key Vault legacy access policies: a parallel permission system your RBAC reviews never see</title>
      <link>https://getstratolens.com/footguns/key-vault-legacy-access-policies</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/key-vault-legacy-access-policies</guid>
      <description>Vaults created without enableRbacAuthorization manage permissions through a per-vault access-policy list that RBAC tooling, access reviews, and PIM never touch.</description>
      <category>governance</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0062: A general-purpose v1 storage account runs production data on a retired-in-2026 account model</title>
      <link>https://getstratolens.com/footguns/storage-account-legacy-v1</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/storage-account-legacy-v1</guid>
      <description>General-purpose v1 accounts predate blob access tiers, lifecycle management, and a decade of security and pricing evolution. Microsoft has scheduled their retirement for 2026 — accounts left behind get migrated on Microsoft&apos;s timetable, not yours.</description>
      <category>governance</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0061: Cross-tenant replication left enabled lets a storage account copy blobs into someone else&apos;s tenant</title>
      <link>https://getstratolens.com/footguns/storage-cross-tenant-replication-enabled</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/storage-cross-tenant-replication-enabled</guid>
      <description>With allowCrossTenantReplication enabled, an object replication policy can name a destination account in a completely different Entra tenant — a data-movement channel that looks like a legitimate Azure feature because it is one.</description>
      <category>security</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0060: Shared key authorization lets anyone holding a storage account key bypass Entra ID entirely</title>
      <link>https://getstratolens.com/footguns/storage-shared-key-auth-enabled</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/storage-shared-key-auth-enabled</guid>
      <description>Every storage account is born with two account keys and shared key authorization enabled. Anyone holding a key gets full data-plane access — no Entra ID, no RBAC, no Conditional Access, no name in the logs.</description>
      <category>security</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0059: A storage firewall set to default Allow leaves every network path to the account open</title>
      <link>https://getstratolens.com/footguns/storage-account-firewall-default-allow</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/storage-account-firewall-default-allow</guid>
      <description>A storage account whose networkAcls.defaultAction is Allow accepts traffic from every network. The firewall exists, the rule list looks reassuring, and none of it filters anything.</description>
      <category>security</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0058: Regional vCPU quota fills invisibly until a deploy, scale-out, or DR failover fails with QuotaExceeded</title>
      <link>https://getstratolens.com/footguns/subscription-vcpu-quota-nearing-limit</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/subscription-vcpu-quota-nearing-limit</guid>
      <description>vCPU quotas are per subscription, per region, per VM family — and nothing warns you as they fill. The first symptom is a QuotaExceeded error on the day a deployment, scale-out, or failover actually mattered.</description>
      <category>reliability</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0057: A reservation expires silently and every covered VM snaps back to pay-as-you-go overnight</title>
      <link>https://getstratolens.com/footguns/reservation-expiring-unplanned</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/reservation-expiring-unplanned</guid>
      <description>A reservation quietly reaches the end of its term and every covered resource reverts to pay-as-you-go rates overnight. The bill jump lands before anyone connects it to the lapse.</description>
      <category>cost</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0056: An underutilized Azure reservation burns its committed spend silently, hour after hour</title>
      <link>https://getstratolens.com/footguns/reserved-instance-underutilized</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/reserved-instance-underutilized</guid>
      <description>You pre-paid for capacity you aren&apos;t using. A reservation running below its utilization threshold burns committed dollars silently every hour, and Azure never rolls the unused hours forward.</description>
      <category>cost</category>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0055: A role assignment already covered by a broader grant adds no access, only audit noise</title>
      <link>https://getstratolens.com/footguns/rbac-redundant-assignment</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/rbac-redundant-assignment</guid>
      <description>Assigning Reader on a resource group to someone who already has Owner on the subscription grants nothing new. It just clutters every access review.</description>
      <category>governance</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0054: The same role granted separately across 5+ subscriptions signals blanket over-provisioning, not intent</title>
      <link>https://getstratolens.com/footguns/rbac-excessive-sprawl</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/rbac-excessive-sprawl</guid>
      <description>When one principal holds the same role in subscription after subscription, it is usually a blanket grant, not a deliberate per-subscription decision.</description>
      <category>governance</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0053: A privileged role assignment keeps full standing access for months after anyone last used it</title>
      <link>https://getstratolens.com/footguns/rbac-stale-assignment</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/rbac-stale-assignment</guid>
      <description>Privileged access granted for a project or an incident routinely outlives the need. The role keeps full standing access long after anyone last exercised it.</description>
      <category>governance</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0052: A privileged role assignment nobody has used, still standing</title>
      <link>https://getstratolens.com/footguns/rbac-unused-assignment</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/rbac-unused-assignment</guid>
      <description>A principal holds a privileged role but has performed no operations in its scope. It is standing access with nothing on the other side of the ledger.</description>
      <category>governance</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0051: Subscription-wide RBAC for work that lives in one resource group</title>
      <link>https://getstratolens.com/footguns/rbac-over-scoped-assignment</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/rbac-over-scoped-assignment</guid>
      <description>A Contributor or Owner assignment sits at subscription scope, but every operation the principal performs lands in one resource group. The rest of the subscription is exposed for nothing.</description>
      <category>governance</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0050: An Owner role that only ever reads: over-privileged RBAC no one downgrades</title>
      <link>https://getstratolens.com/footguns/rbac-over-privileged-assignment</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/rbac-over-privileged-assignment</guid>
      <description>A principal holds Owner but its actual activity is read/deploy work that Contributor or Reader would cover. The extra privilege is pure blast radius with no offsetting use.</description>
      <category>governance</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0049: An orphaned API Connection is a stored credential no workflow uses</title>
      <link>https://getstratolens.com/footguns/api-connection-orphaned</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/api-connection-orphaned</guid>
      <description>An API Connection referenced by no Logic App still holds the OAuth token or API key it was authorized with, quietly outliving the workflow it was created for.</description>
      <category>governance</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0048: An orphaned Firewall Policy is a full ruleset that protects nothing</title>
      <link>https://getstratolens.com/footguns/firewall-policy-orphaned</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/firewall-policy-orphaned</guid>
      <description>A Firewall Policy attached to no Azure Firewall and inherited by no child policy is a complete ruleset that enforces nothing, yet still reads as authoritative.</description>
      <category>governance</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0047: An orphaned IP Group is a stale allowlist no firewall rule references</title>
      <link>https://getstratolens.com/footguns/ip-group-orphaned</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/ip-group-orphaned</guid>
      <description>An IP Group referenced by no firewall or firewall policy serves no purpose, but it still looks like a live allowlist that engineers assume is enforced.</description>
      <category>governance</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0046: An empty resource group is dead scaffolding that complicates governance</title>
      <link>https://getstratolens.com/footguns/resource-group-empty</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/resource-group-empty</guid>
      <description>A resource group that contains nothing still carries tags, RBAC assignments, policy scope, and a place in every report, adding noise no one ever cleans up.</description>
      <category>governance</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0045: An empty subnet reserves address space and serves no workload</title>
      <link>https://getstratolens.com/footguns/subnet-empty</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/subnet-empty</guid>
      <description>A subnet with no NICs, private endpoints, or delegations carves out address space that nothing uses, quietly shrinking the range available for real workloads.</description>
      <category>governance</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0044: An empty VNet provides no networking and just complicates your address plan</title>
      <link>https://getstratolens.com/footguns/virtual-network-empty</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/virtual-network-empty</guid>
      <description>A virtual network with no subnets provides no networking capability at all, yet it reserves an address space and adds one more thing to reason about in every peering and IP-planning decision.</description>
      <category>governance</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0043: An unattached route table is free config clutter with zero effect on traffic</title>
      <link>https://getstratolens.com/footguns/route-table-unattached</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/route-table-unattached</guid>
      <description>A route table associated with no subnet steers no traffic, but its user-defined routes still sit in inventory, inviting confusion about how packets actually flow.</description>
      <category>governance</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0042: An orphaned NSG protects nothing and drifts into a misleading audit trail</title>
      <link>https://getstratolens.com/footguns/network-security-group-orphaned</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/network-security-group-orphaned</guid>
      <description>A network security group associated with no subnet and no NIC enforces nothing, but its rules still show up in every review, quietly implying protection that isn&apos;t there.</description>
      <category>governance</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0041: An unattached NIC costs nothing but leaves stale NSG rules pointing at a ghost</title>
      <link>https://getstratolens.com/footguns/network-interface-unattached</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/network-interface-unattached</guid>
      <description>A network interface with no VM, no private endpoint, and no owning resource bills nothing, so it lingers, carrying its old NSG and IP configuration into your security posture as dead weight.</description>
      <category>governance</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0040: A Private Endpoint that is Disconnected or failed provisioning breaks private connectivity while still billing</title>
      <link>https://getstratolens.com/footguns/private-endpoint-disconnected</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/private-endpoint-disconnected</guid>
      <description>A Private Endpoint whose connection is Disconnected, or whose provisioning failed, no longer routes to its Private Link service. Anything relying on that private path fails, and the endpoint keeps billing.</description>
      <category>reliability</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0039: A Load Balancer with an empty backend pool silently drops all inbound traffic</title>
      <link>https://getstratolens.com/footguns/load-balancer-empty-backend-pool</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/load-balancer-empty-backend-pool</guid>
      <description>A Load Balancer whose backend pool has no members has nothing to forward to. Connections to its frontend IP are dropped, and the failure is easy to blame on the network.</description>
      <category>reliability</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0038: An Application Gateway with empty backend pools returns silent 502s while billing hourly</title>
      <link>https://getstratolens.com/footguns/application-gateway-no-backends</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/application-gateway-no-backends</guid>
      <description>An Application Gateway whose backend pools have no targets answers every request with a 502. It keeps billing until someone stops or deletes it, so it charges the whole time it serves errors.</description>
      <category>reliability</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0037: Owner held as standing access for months is a permanent blast radius</title>
      <link>https://getstratolens.com/footguns/privileged-access-standing-too-long</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/privileged-access-standing-too-long</guid>
      <description>Owner and User Access Administrator granted as permanent, always-on assignments sit for months. Every day they stand is a day they can be abused.</description>
      <category>security</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0036: A newly attached public IP quietly puts a resource on the internet</title>
      <link>https://getstratolens.com/footguns/resource-public-ip-internet-facing</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/resource-public-ip-internet-facing</guid>
      <description>Attaching a public IP to a NIC or load balancer moves a resource from private to internet-facing in one property change, with no separate confirmation.</description>
      <category>security</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0035: Storage infrastructure encryption silently drops your second at-rest layer</title>
      <link>https://getstratolens.com/footguns/storage-infrastructure-encryption-disabled</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/storage-infrastructure-encryption-disabled</guid>
      <description>Infrastructure (double) encryption adds a second at-rest layer under the standard one. It can only be set at account creation, so once it&apos;s off, it stays off.</description>
      <category>security</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0034: HTTPS-only turned off on a storage account or web app allows cleartext HTTP again</title>
      <link>https://getstratolens.com/footguns/https-only-disabled</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/https-only-disabled</guid>
      <description>Secure transfer on Storage, or HTTPS-only on App Service, gets switched off and the endpoint starts accepting plaintext HTTP requests.</description>
      <category>security</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0033: Minimum TLS version quietly lowered from 1.2 to 1.0 on Storage, SQL, or App Service</title>
      <link>https://getstratolens.com/footguns/minimum-tls-version-lowered</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/minimum-tls-version-lowered</guid>
      <description>A minimum-TLS setting drops from TLS 1.2 to TLS 1.0 on a storage account, SQL server, or web app, and weak, deprecated transport encryption is allowed again.</description>
      <category>security</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0032: App Service public network access flipped back on exposes the app to the whole internet</title>
      <link>https://getstratolens.com/footguns/app-service-public-network-access-enabled</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/app-service-public-network-access-enabled</guid>
      <description>An App Service locked to a private endpoint gets publicNetworkAccess set back to Enabled and the site is answering the public internet again.</description>
      <category>security</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0031: A Key Vault with soft-delete disabled makes deleted secrets and keys unrecoverable</title>
      <link>https://getstratolens.com/footguns/key-vault-soft-delete-disabled</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/key-vault-soft-delete-disabled</guid>
      <description>A Key Vault with enableSoftDelete set to false has no recovery net. Delete a secret or the vault and it is gone immediately, with no restore.</description>
      <category>security</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0030: A Key Vault firewall set to default Allow quietly undoes every network rule you added</title>
      <link>https://getstratolens.com/footguns/key-vault-firewall-default-allow</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/key-vault-firewall-default-allow</guid>
      <description>A Key Vault whose networkAcls.defaultAction is set to Allow accepts traffic from everywhere. Your carefully built allow-list still exists but no longer gates anything.</description>
      <category>security</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0029: Key Vault with public network access enabled exposes your secrets to any network</title>
      <link>https://getstratolens.com/footguns/key-vault-public-network-access-enabled</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/key-vault-public-network-access-enabled</guid>
      <description>A Key Vault with publicNetworkAccess set to Enabled answers requests from the internet. A private endpoint does not disable it.</description>
      <category>security</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0028: Cosmos DB with public network access enabled puts your database on the internet</title>
      <link>https://getstratolens.com/footguns/cosmos-db-public-network-access-enabled</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/cosmos-db-public-network-access-enabled</guid>
      <description>A Cosmos DB account with publicNetworkAccess set to Enabled accepts connections from the public internet. A private endpoint does not turn this off.</description>
      <category>security</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0027: An Azure SQL server with public network access enabled exposes the database endpoint to the internet</title>
      <link>https://getstratolens.com/footguns/sql-server-public-network-access-enabled</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/sql-server-public-network-access-enabled</guid>
      <description>Enabling public network access on an Azure SQL logical server makes its endpoint resolvable and reachable from the internet, leaving login credentials and firewall rules as the only defense.</description>
      <category>security</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0026: Blob public access turns containers into an anonymous, unauthenticated download link</title>
      <link>https://getstratolens.com/footguns/storage-blob-anonymous-access-enabled</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/storage-blob-anonymous-access-enabled</guid>
      <description>Setting allowBlobPublicAccess to true lets any container or blob be configured for anonymous reads, so data can be pulled over plain HTTPS with no credentials at all.</description>
      <category>security</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0025: A storage account with public network access enabled puts its data at the internet edge</title>
      <link>https://getstratolens.com/footguns/storage-account-public-network-access-enabled</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/storage-account-public-network-access-enabled</guid>
      <description>Flipping a storage account&apos;s public network access from Disabled to Enabled exposes its blob, file, queue, and table endpoints to the whole internet, gated only by keys and identity.</description>
      <category>security</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0024: A resource quietly settles into a new, higher cost baseline and the step-up becomes the new normal</title>
      <link>https://getstratolens.com/footguns/cost-pattern-shift-anomaly</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/cost-pattern-shift-anomaly</guid>
      <description>A resource&apos;s spend steps up to a permanently higher level and stays there. Unlike a spike it never comes back down, so it&apos;s easy to accept as the new normal.</description>
      <category>cost</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0023: A single resource&apos;s daily spend spikes above its baseline while the subscription budget stays quiet</title>
      <link>https://getstratolens.com/footguns/cost-spike-anomaly</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/cost-spike-anomaly</guid>
      <description>One resource&apos;s daily cost jumps sharply above its normal level. Subscription-total budget alerts don&apos;t see it, so the spike inflates the bill until month-end.</description>
      <category>cost</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0022: An oversized VM runs at single-digit CPU while billing for a SKU the workload never uses</title>
      <link>https://getstratolens.com/footguns/vm-oversized-for-workload</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/vm-oversized-for-workload</guid>
      <description>A VM sits at a fraction of its provisioned CPU and memory, so you pay for a SKU far larger than the workload uses. Nothing is broken, so nothing prompts a resize.</description>
      <category>cost</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0021: An idle Container Registry with zero pulls and pushes bills its tier&apos;s daily rate</title>
      <link>https://getstratolens.com/footguns/container-registry-idle</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/container-registry-idle</guid>
      <description>Azure Container Registry bills a fixed daily rate for its tier regardless of use. A registry with zero pulls and pushes keeps charging as if it were in active service.</description>
      <category>cost</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0020: A Front Door WAF policy attached to no profile protects nothing and still bills</title>
      <link>https://getstratolens.com/footguns/frontdoor-waf-policy-orphaned</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/frontdoor-waf-policy-orphaned</guid>
      <description>A Front Door WAF policy only inspects traffic it is linked to. With no security-policy or endpoint links it protects nothing, but it keeps billing its per-policy rate.</description>
      <category>cost</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0019: A Private DNS zone with zero VNet links resolves nothing and still bills</title>
      <link>https://getstratolens.com/footguns/private-dns-zone-orphaned</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/private-dns-zone-orphaned</guid>
      <description>A Private DNS zone needs a virtual network link to answer queries. With zero links it resolves nothing, yet it keeps billing its per-zone base charge.</description>
      <category>cost</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0018: A Traffic Manager profile with endpoints but zero DNS queries keeps paying for health checks</title>
      <link>https://getstratolens.com/footguns/traffic-manager-profile-idle</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/traffic-manager-profile-idle</guid>
      <description>A profile that still has endpoints but receives zero DNS queries keeps billing per-endpoint health monitoring for a name no client is using anymore.</description>
      <category>cost</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0017: An empty Traffic Manager profile routes nothing and holds a DNS name for no reason</title>
      <link>https://getstratolens.com/footguns/traffic-manager-profile-empty</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/traffic-manager-profile-empty</guid>
      <description>A Traffic Manager profile with no endpoints can resolve nothing, yet it holds a trafficmanager.net name and sits in inventory as finished-looking dead config.</description>
      <category>cost</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0016: An ExpressRoute circuit that was never provisioned still bills, and its gateway bills separately</title>
      <link>https://getstratolens.com/footguns/expressroute-circuit-unprovisioned</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/expressroute-circuit-unprovisioned</guid>
      <description>An ExpressRoute circuit that never completed provisioning with a provider bills its full monthly rate anyway, and the gateway you stood up for it bills on top.</description>
      <category>cost</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0015: An attached NAT Gateway passing zero traffic keeps billing; there is no paused state</title>
      <link>https://getstratolens.com/footguns/nat-gateway-idle-zero-traffic</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/nat-gateway-idle-zero-traffic</guid>
      <description>A NAT Gateway still wired to a subnet but moving zero bytes and packets keeps billing its hourly base rate. Azure has no way to pause it.</description>
      <category>cost</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0014: An empty SQL Elastic Pool bills its full provisioned capacity with no databases in it</title>
      <link>https://getstratolens.com/footguns/sql-elastic-pool-empty</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/sql-elastic-pool-empty</guid>
      <description>A SQL Elastic Pool with no databases keeps billing its provisioned eDTU/vCore capacity. The pool charges for the compute it reserves, whether or not a single database sits in it.</description>
      <category>cost</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0013: A storage account with zero transactions still bills for every GB it holds</title>
      <link>https://getstratolens.com/footguns/storage-account-idle-zero-transactions</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/storage-account-idle-zero-transactions</guid>
      <description>A storage account with zero transactions still bills for the data sitting in it. The charge is the stored bytes, not the activity, so an untouched account keeps costing money.</description>
      <category>cost</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0012: An App Service Plan with zero apps still bills its full tier rate</title>
      <link>https://getstratolens.com/footguns/empty-app-service-plan</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/empty-app-service-plan</guid>
      <description>An App Service Plan bills for its reserved compute tier, not for the apps on it. Delete every app and the plan keeps charging the full rate for hosting nothing.</description>
      <category>cost</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0011: Disk snapshots nobody deletes bill per-GB storage forever</title>
      <link>https://getstratolens.com/footguns/stale-disk-snapshot</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/stale-disk-snapshot</guid>
      <description>A disk snapshot is a point-in-time copy that never expires on its own. Kept past its useful life, it accrues per-GB storage charges every month until someone deletes it.</description>
      <category>cost</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0010: A &quot;Stopped&quot; VM keeps billing full compute; only &quot;Stopped (deallocated)&quot; stops the meter</title>
      <link>https://getstratolens.com/footguns/stopped-vm-not-deallocated</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/stopped-vm-not-deallocated</guid>
      <description>Shutting a VM down from inside the guest OS leaves it Stopped, not Deallocated. Azure keeps charging full compute, disks, and reserved IPs as if it were running.</description>
      <category>cost</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0009: An idle Application Gateway serving zero requests still bills ~$144/mo and up</title>
      <link>https://getstratolens.com/footguns/application-gateway-idle-zero-traffic</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/application-gateway-idle-zero-traffic</guid>
      <description>A fully configured Application Gateway left running bills a flat hourly rate even when it serves zero requests. The only ways to end the charge are to stop it or delete it.</description>
      <category>cost</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0008: An unattached NAT Gateway routes nothing but still bills ~$32/mo base</title>
      <link>https://getstratolens.com/footguns/nat-gateway-unattached</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/nat-gateway-unattached</guid>
      <description>A NAT Gateway with no subnet associations provides zero outbound connectivity, but its hourly base rate runs 24/7 with no way to pause it.</description>
      <category>cost</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0007: An idle VPN Gateway with zero tunnels bills ~$140/mo and up, 24/7</title>
      <link>https://getstratolens.com/footguns/vpn-gateway-idle-zero-connections</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/vpn-gateway-idle-zero-connections</guid>
      <description>A VPN Gateway bills a fixed hourly rate whether or not a single tunnel is up. There is no stopped state, so an idle gateway is pure waste.</description>
      <category>cost</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0006: An NSG rule allowing 0.0.0.0/0 inbound exposes whatever is behind it to the entire internet</title>
      <link>https://getstratolens.com/footguns/nsg-inbound-any-source</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/nsg-inbound-any-source</guid>
      <description>A single inbound allow rule with source Any (0.0.0.0/0) turns whatever sits behind it into a target for the internet&apos;s background scanning traffic.</description>
      <category>security</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0005: An Azure Bastion bills by the hour even on the days nobody connects</title>
      <link>https://getstratolens.com/footguns/idle-azure-bastion</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/idle-azure-bastion</guid>
      <description>Bastion is billed per deployment-hour, not per session. A host left running in a low-traffic or abandoned VNet charges around the clock for sessions nobody opens.</description>
      <category>cost</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0004: A reserved Standard public IP keeps billing after whatever it fronted is gone</title>
      <link>https://getstratolens.com/footguns/unattached-standard-public-ip</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/unattached-standard-public-ip</guid>
      <description>Standard SKU public IPs are always statically allocated and always billed. When the load balancer or NIC they fronted goes away, the IP keeps charging.</description>
      <category>cost</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0003: An unattached managed disk bills its full provisioned size forever</title>
      <link>https://getstratolens.com/footguns/unattached-managed-disk</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/unattached-managed-disk</guid>
      <description>Delete a VM and its data disks usually survive. A managed disk in the Unattached state bills its full provisioned capacity whether or not anything reads it.</description>
      <category>cost</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0002: Key Vault purge protection is off by default, so a deleted vault can be gone for good</title>
      <link>https://getstratolens.com/footguns/keyvault-purge-protection-disabled</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/keyvault-purge-protection-disabled</guid>
      <description>Without purge protection, a deleted Key Vault can be permanently purged before the retention window ends, taking the data its keys encrypted with it.</description>
      <category>security</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>AZF-0001: A forgotten DDoS Protection Plan bills ~$2,944/mo while protecting nothing</title>
      <link>https://getstratolens.com/footguns/ddos-protection-plan-unassociated</link>
      <guid isPermaLink="true">https://getstratolens.com/footguns/ddos-protection-plan-unassociated</guid>
      <description>Network DDoS Protection Plans charge a flat monthly fee even with zero VNets attached. A detached plan is pure waste.</description>
      <category>cost</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
  </channel>
</rss>
