<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Azure on Fabian van Steen</title>
    <link>https://fabianvansteen.com/tags/azure/</link>
    <description>Recent content in Azure on Fabian van Steen</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Mon, 16 Jun 2025 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://fabianvansteen.com/tags/azure/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Securing an Azure Storage Account</title>
      <link>https://fabianvansteen.com/articles/securing-an-azure-storage-account/</link>
      <pubDate>Mon, 16 Jun 2025 00:00:00 +0000</pubDate>
      <guid>https://fabianvansteen.com/articles/securing-an-azure-storage-account/</guid>
      <description>&lt;p&gt;A secure Azure Storage Account setup involves applying best practices for access control, networking, encryption, and monitoring. Below is a comprehensive checklist.&lt;/p&gt;&#xA;&lt;h2 id=&#34;-1-identity--access-management&#34;&gt;🔑 1. Identity &amp;amp; Access Management&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Use Azure RBAC (Role-Based Access Control):&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Assign the least privileged roles to users, groups, and services.&lt;/li&gt;&#xA;&lt;li&gt;Prefer &lt;code&gt;Storage Blob Data Reader/Contributor&lt;/code&gt; over general &lt;code&gt;Storage Account Contributor&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Use Azure AD for Authentication:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Enable Azure AD authentication for Blob and Queue services.&lt;/li&gt;&#xA;&lt;li&gt;Avoid using account keys where possible.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Disable Shared Key Access:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;If possible, disable Shared Key Authorization under the &lt;code&gt;Configuration&lt;/code&gt; tab.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Use Shared Access Signatures (SAS) cautiously:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Prefer user delegation SAS over account SAS.&lt;/li&gt;&#xA;&lt;li&gt;Limit expiry, permissions, and IP address range.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;-2-networking&#34;&gt;🌐 2. Networking&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Restrict access with firewalls and VNets:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Enable the firewall and configure trusted IP ranges or VNets.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Disable public access:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Set &lt;code&gt;AllowBlobPublicAccess = false&lt;/code&gt; at the storage account level.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Use Private Endpoints:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Create Azure Private Endpoints to eliminate exposure to the public internet.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;-3-encryption&#34;&gt;🔐 3. Encryption&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Data-at-Rest Encryption:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Enabled by default with Microsoft-managed keys.&lt;/li&gt;&#xA;&lt;li&gt;Optionally use Customer-managed keys (CMK) in Azure Key Vault.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Data-in-Transit Encryption:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Enforce HTTPS-only traffic (&lt;code&gt;Secure transfer required&lt;/code&gt; setting).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;-4-monitoring--alerts&#34;&gt;📊 4. Monitoring &amp;amp; Alerts&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Enable Azure Monitor &amp;amp; Storage Diagnostics:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Configure Azure Monitor Logs and metrics.&lt;/li&gt;&#xA;&lt;li&gt;Enable Storage Analytics Logging for Blob, Queue, Table.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Log all access with Azure Activity Logs:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Monitor operations like key changes, firewall updates, etc.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Enable Defender for Storage:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Detect threats like data exfiltration, malware uploads, unusual access patterns.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;-5-data-protection--recovery&#34;&gt;🛡️ 5. Data Protection &amp;amp; Recovery&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Enable Soft Delete:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Protect against accidental deletions (Blob, File, Container).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Enable Point-in-Time Restore (Blob Storage):&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Recover from corruption or accidental deletion.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Replication Options:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Choose Geo-Redundant Storage (GRS) or Zone-Redundant Storage (ZRS) for durability.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;-6-regular-reviews--compliance&#34;&gt;✅ 6. Regular Reviews &amp;amp; Compliance&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Rotate keys and secrets regularly.&lt;/li&gt;&#xA;&lt;li&gt;Use Azure Policy to enforce compliance (e.g., disallow public access).&lt;/li&gt;&#xA;&lt;li&gt;Audit access control assignments and review logs routinely.&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Azure Key Vault - Best Practices</title>
      <link>https://fabianvansteen.com/articles/azure-key-vault-best-practices/</link>
      <pubDate>Fri, 06 Jun 2025 00:00:00 +0000</pubDate>
      <guid>https://fabianvansteen.com/articles/azure-key-vault-best-practices/</guid>
      <description>&lt;p&gt;Azure Key Vault is essential for secure management of secrets, keys, and certificates. Below are key security-focused best practices to design a robust, compliant, and resilient implementation.&lt;/p&gt;&#xA;&lt;h2 id=&#34;1-use-separate-vaults-per-environment&#34;&gt;1. Use Separate Vaults per Environment&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Create dedicated vaults for Development, Testing, and Production.&lt;/li&gt;&#xA;&lt;li&gt;Apply environment-specific access controls.&lt;/li&gt;&#xA;&lt;li&gt;Reduce the blast radius and avoid accidental sharing or overwriting across environments.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;2-set-expiration--automate-rotation&#34;&gt;2. Set Expiration &amp;amp; Automate Rotation&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Configure expiration dates for all secrets, keys, and certificates.&lt;/li&gt;&#xA;&lt;li&gt;Automate rotation with Azure Logic Apps or Azure Functions.&lt;/li&gt;&#xA;&lt;li&gt;Use Key Vault references in Azure App Services to consume updated secrets without redeploying code.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;3-enable-logging--monitoring&#34;&gt;3. Enable Logging &amp;amp; Monitoring&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Send activity logs to Azure Monitor, Log Analytics, or Storage Accounts.&lt;/li&gt;&#xA;&lt;li&gt;Track who accessed what, when, and from where.&lt;/li&gt;&#xA;&lt;li&gt;Integrate with Azure Sentinel to enable threat detection and automated alerting.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;4-restrict-network-access&#34;&gt;4. Restrict Network Access&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Use Private Endpoints to limit access to resources within your Virtual Network.&lt;/li&gt;&#xA;&lt;li&gt;Configure IP firewall rules to allow only trusted sources.&lt;/li&gt;&#xA;&lt;li&gt;Enable only necessary Microsoft trusted services access.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;5-use-azure-rbac-instead-of-access-policies&#34;&gt;5. Use Azure RBAC Instead of Access Policies&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Prefer Azure RBAC for fine-grained, manageable access control.&lt;/li&gt;&#xA;&lt;li&gt;Assign roles like &lt;code&gt;Key Vault Secrets User&lt;/code&gt; with least privilege.&lt;/li&gt;&#xA;&lt;li&gt;Avoid using the built-in &lt;code&gt;Contributor&lt;/code&gt; role, as it grants excessive permissions.&lt;/li&gt;&#xA;&lt;li&gt;Create a custom role that excludes sensitive actions (e.g., vault deletion).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;6-enable-soft-delete--purge-protection&#34;&gt;6. Enable Soft Delete &amp;amp; Purge Protection&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Protect secrets, keys, and certificates from accidental or malicious deletion.&lt;/li&gt;&#xA;&lt;li&gt;Enable Soft Delete and Purge Protection to ensure recovery is always possible.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;7-lock-the-key-vault-resource&#34;&gt;7. Lock the Key Vault Resource&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Apply resource locks (e.g., &amp;ldquo;CanNotDelete&amp;rdquo;) to prevent accidental or unauthorized deletion of the vault itself.&lt;/li&gt;&#xA;&lt;li&gt;Especially important in Production environments.&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
  </channel>
</rss>
