{"id":690,"date":"2026-05-28T08:30:00","date_gmt":"2026-05-28T06:30:00","guid":{"rendered":"https:\/\/au2mator-consulting.com\/?p=690"},"modified":"2026-06-03T13:46:51","modified_gmt":"2026-06-03T11:46:51","slug":"secure-azure-automation-architecture","status":"publish","type":"post","link":"https:\/\/au2mator-consulting.com\/en\/secure-azure-automation-architecture\/","title":{"rendered":"How to Build a Secure Azure Automation Environment: Architecture Guide"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/au2mator-consulting.com\/wp-content\/uploads\/2026\/06\/secure-azure-automation-au2mator-scaled.jpg\" alt=\"Secure Azure Automation Architecture Guide\" class=\"aligncenter\" \/><\/p>\n<p>Azure Automation accounts often start as a convenience. Someone needs to schedule a script. They create an Automation Account, add a runbook, and it works. Six months later, that account runs 30 production runbooks with broad permissions, shared credentials, and no audit trail.<\/p>\n<p>We&#8217;ve audited Automation environments where a single account had Contributor access to the entire subscription. Where credentials were stored as unencrypted variables. Where anyone in the IT team could edit runbooks directly in the portal.<\/p>\n<p>None of this started as negligence. It started as &#8220;we&#8217;ll secure it later.&#8221; Later never came.<\/p>\n<p>This guide covers the architecture decisions that make an Azure Automation environment secure from the start. Not theoretical best practices. Concrete configurations we implement in consulting projects.<\/p>\n<h2>Authentication: Managed Identity Over Everything<\/h2>\n<p>Run As Accounts are deprecated. Certificate-based service principals are complex to maintain. Application secrets expire and rotate awkwardly. Managed Identity eliminates all of these problems.<\/p>\n<h3>System-Assigned Managed Identity<\/h3>\n<p>Every Automation Account should have a System-assigned Managed Identity enabled. It&#8217;s a single toggle in the Azure Portal. Once enabled, the Automation Account gets an identity in Entra ID that can be granted RBAC roles.<\/p>\n<p>In your runbooks, authentication becomes one line:<\/p>\n<pre><code>Connect-AzAccount -Identity<\/code><\/pre>\n<p>No certificates. No secrets. No rotation. The identity is tied to the lifecycle of the Automation Account. Delete the account, the identity disappears.<\/p>\n<h3>User-Assigned Managed Identity<\/h3>\n<p>For scenarios where multiple Automation Accounts need identical permissions, or where you need the identity to persist independently of the account, use a User-assigned Managed Identity.<\/p>\n<p>Create the identity once. Assign it RBAC roles. Attach it to multiple Automation Accounts. If you rebuild an Automation Account, reattach the same identity without re-granting permissions.<\/p>\n<p>In runbooks, specify which identity to use:<\/p>\n<pre><code>Connect-AzAccount -Identity -AccountId \"client-id-of-user-assigned-identity\"<\/code><\/pre>\n<h3>When You Still Need Service Principals<\/h3>\n<p>Sometimes Managed Identity isn&#8217;t enough. Cross-tenant access, third-party APIs that require OAuth client credentials, or legacy applications that only support certificate auth. In these cases, store credentials in Azure Key Vault and retrieve them at runtime. Never as Automation variables. Never in runbook code.<\/p>\n<p><a href=\"\/en\/blog\/azure-automation-mistakes-to-avoid\">See the most common Azure Automation mistakes including credential handling<\/a><\/p>\n<h2>Least Privilege: Only What&#8217;s Needed<\/h2>\n<p>The most dangerous Automation Account is one with Contributor access to the subscription. It can create resources, modify configurations, delete entire resource groups. If a runbook is compromised, the blast radius is everything.<\/p>\n<p><strong>Start with zero permissions.<\/strong> For each runbook, document exactly what it needs to do. Then grant the minimum RBAC role at the narrowest scope.<\/p>\n<p>Examples:<\/p>\n<table>\n<thead>\n<tr>\n<th>Runbook Purpose<\/th>\n<th>RBAC Role<\/th>\n<th>Scope<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Start\/Stop VMs<\/td>\n<td>Virtual Machine Contributor<\/td>\n<td>Resource Group containing the VMs<\/td>\n<\/tr>\n<tr>\n<td>Read Log Analytics<\/td>\n<td>Log Analytics Reader<\/td>\n<td>Specific workspace<\/td>\n<\/tr>\n<tr>\n<td>Manage DNS records<\/td>\n<td>DNS Zone Contributor<\/td>\n<td>Specific DNS zone<\/td>\n<\/tr>\n<tr>\n<td>Create Entra ID users<\/td>\n<td>User Administrator<\/td>\n<td>Directory level<\/td>\n<\/tr>\n<tr>\n<td>Send email via Graph<\/td>\n<td>Mail.Send<\/td>\n<td>Specific mailbox<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Custom roles work well for Automation. If a runbook only needs to start and stop VMs (not delete or resize), create a custom role with just <code>Microsoft.Compute\/virtualMachines\/start\/action<\/code> and <code>Microsoft.Compute\/virtualMachines\/deallocate\/action<\/code>. Nothing more.<\/p>\n<p>Review permissions quarterly. Runbooks get decommissioned, but their permissions linger. We&#8217;ve found Automation Accounts with roles for resources that no longer exist.<\/p>\n<h2>RBAC on the Automation Account Itself<\/h2>\n<p>Who can do what with the Automation Account matters as much as what the account can do to other resources.<\/p>\n<p>Azure provides three relevant built-in roles:<\/p>\n<p><strong>Automation Operator:<\/strong> Can start jobs and view runbooks but not edit them. Perfect for operations teams who need to trigger runbooks without modifying code.<\/p>\n<p><strong>Automation Contributor:<\/strong> Can create and edit runbooks, manage schedules, and configure the account. For the automation development team.<\/p>\n<p><strong>Reader:<\/strong> Can view everything but change nothing. For auditors, managers, or anyone who needs visibility without control.<\/p>\n<p>Don&#8217;t give everyone Contributor access. In most organizations, 2\u00e2\u20ac\u201c3 people need Contributor. Everyone else should be an Operator or Reader.<\/p>\n<p>For sensitive runbooks (those handling user provisioning, financial data, or security operations), consider a dedicated Automation Account with tighter RBAC. Separation of duties isn&#8217;t just for compliance. It limits the damage if someone makes a mistake.<\/p>\n<h2>Secrets Management with Key Vault<\/h2>\n<p>Azure Automation has built-in credential assets and encrypted variables. They work. But Key Vault is better.<\/p>\n<p><strong>Why Key Vault over Automation credentials:<\/strong><\/p>\n<ul>\n<li><strong>Centralized secrets management.<\/strong> One Key Vault for all applications, not secrets scattered across Automation Accounts, App Services, and Function Apps.<\/li>\n<li><strong>Access policies and RBAC.<\/strong> Granular control over who and what can read which secrets.<\/li>\n<li><strong>Audit logging.<\/strong> Every access to a secret is logged. Key Vault Diagnostics + Log Analytics gives you a complete audit trail.<\/li>\n<li><strong>Rotation.<\/strong> Key Vault supports automatic rotation for certain secret types. Automation credential assets don&#8217;t.<\/li>\n<li><strong>Soft delete and purge protection.<\/strong> Accidental deletion doesn&#8217;t mean the secret is gone.<\/li>\n<\/ul>\n<p>Implementation pattern:<\/p>\n<pre><code># Connect with Managed Identity\nConnect-AzAccount -Identity\n\n# Retrieve secrets from Key Vault\n$apiKey = Get-AzKeyVaultSecret -VaultName \"automation-secrets\" -Name \"ServiceNow-APIKey\" -AsPlainText\n$dbPassword = Get-AzKeyVaultSecret -VaultName \"automation-secrets\" -Name \"SQL-Password\" -AsPlainText\n\n# Use secrets in runbook logic\n$headers = @{ \"Authorization\" = \"Bearer $apiKey\" }<\/code><\/pre>\n<p>Grant the Automation Account&#8217;s Managed Identity the &#8220;Key Vault Secrets User&#8221; role on the Key Vault. Not &#8220;Key Vault Administrator.&#8221; Not &#8220;Key Vault Contributor.&#8221; Just &#8220;Secrets User&#8221; for read-only access to secrets.<\/p>\n<h2>Network Security<\/h2>\n<h3>Hybrid Worker Hardening<\/h3>\n<p>Hybrid Runbook Workers run inside your network. That makes them powerful and a potential attack vector.<\/p>\n<p><strong>Network isolation:<\/strong><\/p>\n<ul>\n<li>Place the Hybrid Worker in a dedicated subnet<\/li>\n<li>Apply NSG rules: allow outbound HTTPS (443) to Azure Automation endpoints and deny everything else<\/li>\n<li>No inbound rules needed. The worker polls Azure for jobs. It doesn&#8217;t listen.<\/li>\n<li>No public IP. If the worker needs internet access for runbook tasks, use a NAT Gateway or Azure Firewall for controlled egress<\/li>\n<\/ul>\n<p><strong>OS hardening:<\/strong><\/p>\n<ul>\n<li>Patch regularly. The Hybrid Worker is a Windows or Linux VM that needs maintenance.<\/li>\n<li>Use Azure Update Manager or your existing patching process<\/li>\n<li>Minimal software installed. Only the Az modules and tools your runbooks need.<\/li>\n<li>Endpoint protection (Defender for Servers or equivalent)<\/li>\n<\/ul>\n<p><strong>Monitoring:<\/strong><\/p>\n<ul>\n<li>Azure Monitor Agent for performance and security events<\/li>\n<li>Defender for Cloud for vulnerability assessment<\/li>\n<li>Alert on unexpected processes or network connections<\/li>\n<\/ul>\n<h3>Private Endpoints<\/h3>\n<p>For environments where no traffic should traverse the public internet, Azure Automation supports Private Endpoints. This means:<\/p>\n<ul>\n<li>Runbook job management happens over your VNet, not the public endpoint<\/li>\n<li>The Automation Account&#8217;s public endpoint can be disabled entirely<\/li>\n<li>Hybrid Workers communicate with Azure Automation through the private IP<\/li>\n<\/ul>\n<p>Setup requires a Private DNS Zone (<code>privatelink.azure-automation.net<\/code>) and a Private Endpoint in your VNet. The Azure Portal walks you through it, or use Terraform\/Bicep for repeatability.<\/p>\n<p>Private Endpoints add complexity. Not every environment needs them. But for regulated industries (finance, healthcare, government) or environments handling sensitive data, they&#8217;re the right call.<\/p>\n<h2>Source Control Integration<\/h2>\n<p>Runbooks are code. Code belongs in source control. Full stop.<\/p>\n<p>Azure Automation integrates natively with GitHub and Azure DevOps. Once connected, runbooks sync automatically from your repository. No more editing in the portal.<\/p>\n<p><strong>Benefits beyond version history:<\/strong><\/p>\n<ul>\n<li><strong>Pull request reviews.<\/strong> Someone else sees the code before it runs in production.<\/li>\n<li><strong>Branch protection.<\/strong> The main branch requires reviews. No direct pushes.<\/li>\n<li><strong>Automated testing.<\/strong> Run Pester tests on runbook code in CI before deployment.<\/li>\n<li><strong>Change tracking.<\/strong> Git blame shows who changed what and when. Auditors appreciate this.<\/li>\n<li><strong>Rollback.<\/strong> Revert to a previous commit if a change breaks something.<\/li>\n<\/ul>\n<p>For organizations with strict change management, this workflow maps directly to ITIL change processes. The pull request is the change request. The review is the approval. The merge is the implementation. The git log is the audit trail.<\/p>\n<p><a href=\"\/en\/blog\/azure-automation-mistakes-to-avoid\">Common runbook errors that source control helps prevent<\/a><\/p>\n<h2>Monitoring and Alerting<\/h2>\n<p>A secure environment is a monitored environment. If a runbook fails at 3 AM and nobody knows until 9 AM, that&#8217;s six hours of potential impact.<\/p>\n<h3>Job Monitoring<\/h3>\n<p>Configure Azure Monitor alerts for:<\/p>\n<ul>\n<li><strong>Failed jobs:<\/strong> Any job that ends in &#8220;Failed&#8221; status. This is the minimum.<\/li>\n<li><strong>Suspended jobs:<\/strong> Jobs that hit the fair share limit or are manually suspended.<\/li>\n<li><strong>Long-running jobs:<\/strong> Jobs that exceed their expected duration by more than 2x.<\/li>\n<li><strong>Missing jobs:<\/strong> If a scheduled job doesn&#8217;t run at all (schedule misconfiguration or Hybrid Worker offline).<\/li>\n<\/ul>\n<h3>Log Analytics Integration<\/h3>\n<p>Send Automation job logs to a Log Analytics workspace. This enables:<\/p>\n<ul>\n<li>Historical analysis of job performance<\/li>\n<li>Correlation with other Azure events<\/li>\n<li>Custom KQL queries for specific patterns<\/li>\n<li>Workbooks and dashboards for operational visibility<\/li>\n<\/ul>\n<p>Sample KQL query to find runbooks with increasing failure rates:<\/p>\n<pre><code>AzureDiagnostics\n| where ResourceProvider == \"MICROSOFT.AUTOMATION\"\n| where Category == \"JobLogs\"\n| where ResultType == \"Failed\"\n| summarize FailureCount = count() by RunbookName_s, bin(TimeGenerated, 1d)\n| order by TimeGenerated desc<\/code><\/pre>\n<h3>Security Monitoring<\/h3>\n<p>Beyond operational monitoring, watch for security-relevant events:<\/p>\n<ul>\n<li>New RBAC role assignments on the Automation Account<\/li>\n<li>Changes to runbook content outside of source control<\/li>\n<li>Unexpected job executions (runbooks running at unusual times)<\/li>\n<li>Failed authentication attempts from the Managed Identity<\/li>\n<\/ul>\n<p>Feed these into Microsoft Sentinel or your SIEM for correlation with broader security events.<\/p>\n<h2>Encryption<\/h2>\n<h3>Variables and Credentials<\/h3>\n<p>Azure Automation encrypts credential assets by default. Variables can be encrypted optionally. Always enable encryption for variables that contain sensitive data.<\/p>\n<p>But understand the limitation: encrypted variables are decrypted at runtime inside the runbook. If the runbook logs the value (accidentally or intentionally), the encryption doesn&#8217;t help. Code review and output monitoring matter.<\/p>\n<h3>Data in Transit<\/h3>\n<p>All communication between Azure Automation and its components uses TLS 1.2+. This includes:<\/p>\n<ul>\n<li>Portal to Automation Account<\/li>\n<li>Hybrid Worker to Azure Automation<\/li>\n<li>Runbook calls to Azure APIs (via Az modules)<\/li>\n<\/ul>\n<p>For runbooks that call external APIs, verify TLS configuration:<\/p>\n<pre><code>[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12<\/code><\/pre>\n<p>This is the default in PowerShell 7.x but may need to be set explicitly in 5.1 environments.<\/p>\n<h2>Putting It All Together: Reference Architecture<\/h2>\n<p>Here&#8217;s the complete secure architecture we recommend:<\/p>\n<pre><code>\u00e2\u201d\u0152\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u0090\n\u00e2\u201d\u201a  Azure Subscription                              \u00e2\u201d\u201a\n\u00e2\u201d\u201a                                                   \u00e2\u201d\u201a\n\u00e2\u201d\u201a  \u00e2\u201d\u0152\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u0090    \u00e2\u201d\u0152\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u0090    \u00e2\u201d\u201a\n\u00e2\u201d\u201a  \u00e2\u201d\u201a Automation Account\u00e2\u201d\u201a\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u2013\u00b6\u00e2\u201d\u201a   Key Vault       \u00e2\u201d\u201a    \u00e2\u201d\u201a\n\u00e2\u201d\u201a  \u00e2\u201d\u201a (Managed Identity)\u00e2\u201d\u201a    \u00e2\u201d\u201a (Secrets, Keys)   \u00e2\u201d\u201a    \u00e2\u201d\u201a\n\u00e2\u201d\u201a  \u00e2\u201d\u201a Source Control:   \u00e2\u201d\u201a    \u00e2\u201d\u201d\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u02dc    \u00e2\u201d\u201a\n\u00e2\u201d\u201a  \u00e2\u201d\u201a  GitHub\/DevOps    \u00e2\u201d\u201a                            \u00e2\u201d\u201a\n\u00e2\u201d\u201a  \u00e2\u201d\u201d\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u00ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u02dc    \u00e2\u201d\u0152\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u0090    \u00e2\u201d\u201a\n\u00e2\u201d\u201a           \u00e2\u201d\u201a              \u00e2\u201d\u201a  Log Analytics     \u00e2\u201d\u201a    \u00e2\u201d\u201a\n\u00e2\u201d\u201a           \u00e2\u201d\u201a              \u00e2\u201d\u201a  (Job Logs, Diag)  \u00e2\u201d\u201a    \u00e2\u201d\u201a\n\u00e2\u201d\u201a           \u00e2\u2013\u00bc              \u00e2\u201d\u201d\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u02dc    \u00e2\u201d\u201a\n\u00e2\u201d\u201a  \u00e2\u201d\u0152\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u0090                            \u00e2\u201d\u201a\n\u00e2\u201d\u201a  \u00e2\u201d\u201a  Hybrid Worker    \u00e2\u201d\u201a    \u00e2\u201d\u0152\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u0090    \u00e2\u201d\u201a\n\u00e2\u201d\u201a  \u00e2\u201d\u201a  (Dedicated Subnet\u00e2\u201d\u201a\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u2013\u00b6\u00e2\u201d\u201a  Azure Monitor    \u00e2\u201d\u201a    \u00e2\u201d\u201a\n\u00e2\u201d\u201a  \u00e2\u201d\u201a   NSG, No PubIP) \u00e2\u201d\u201a    \u00e2\u201d\u201a  (Alerts)         \u00e2\u201d\u201a    \u00e2\u201d\u201a\n\u00e2\u201d\u201a  \u00e2\u201d\u201d\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u02dc    \u00e2\u201d\u201d\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u02dc    \u00e2\u201d\u201a\n\u00e2\u201d\u201a                                                   \u00e2\u201d\u201a\n\u00e2\u201d\u201d\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u20ac\u00e2\u201d\u02dc<\/code><\/pre>\n<p>Each component has a single responsibility. RBAC is scoped narrowly. Secrets live in Key Vault. Changes go through source control. Failures trigger alerts. Every action is logged.<\/p>\n<p>This isn&#8217;t overengineering. It&#8217;s the baseline for any Automation Account running production workloads.<\/p>\n<h2>FAQ<\/h2>\n<h3>Is System-assigned or User-assigned Managed Identity better?<\/h3>\n<p>System-assigned is simpler for single-account setups. The identity lives and dies with the Automation Account. User-assigned is better when multiple accounts need the same permissions or when you need the identity to survive account rebuilds. Most organizations start with System-assigned and add User-assigned for specific cross-account scenarios.<\/p>\n<h3>How do I audit who changed a runbook?<\/h3>\n<p>With Source Control integration, every change is a git commit with author, timestamp, and diff. Without it, Azure Activity Log captures who modified the Automation Account resources, but with less detail. Source Control is the reliable audit path.<\/p>\n<h3>Can I restrict which runbooks a user can execute?<\/h3>\n<p>Not natively at the individual runbook level. RBAC applies to the Automation Account as a whole. To restrict execution of specific runbooks, use separate Automation Accounts with different RBAC assignments. Some organizations create a &#8220;sensitive operations&#8221; account with tight access and a &#8220;general operations&#8221; account with broader access.<\/p>\n<h3>What&#8217;s the cost impact of Private Endpoints?<\/h3>\n<p>Private Endpoints themselves have a small hourly cost (around .30\/month per endpoint). The bigger cost is DNS management complexity and the requirement that Hybrid Workers resolve the private DNS zone. For regulated environments, this cost is trivial compared to the compliance benefit.<\/p>\n<h3>How often should I review Automation Account permissions?<\/h3>\n<p>Quarterly at minimum. Include it in your regular access review cycle. Check: Does the Managed Identity still need all its roles? Are there roles for resources that no longer exist? Has anyone been granted Contributor access who should be an Operator?<\/p>\n<hr \/>\n<p><strong>Need help securing your Azure Automation environment?<\/strong> We design and implement secure Automation architectures for organizations across Europe. From initial assessment to full implementation, we bring real-world experience to every project.<\/p>\n<p><a href=\"\/en\/contact\/\">Schedule a consultation<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Azure Automation accounts often start as a convenience. Someone needs to schedule a script. They create an Automation Account, add a runbook, and it works. Six months later, that account runs 30 production runbooks with broad permissions, shared credentials, and no audit trail. We&#8217;ve audited Automation environments where a single account had Contributor access to [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":682,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[52],"tags":[],"class_list":["post-690","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-security"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>How to Build a Secure Azure Automation Environment: Architecture Guide - au2mator Consulting<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/au2mator-consulting.com\/en\/secure-azure-automation-architecture\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Build a Secure Azure Automation Environment: Architecture Guide - au2mator Consulting\" \/>\n<meta property=\"og:description\" content=\"Azure Automation accounts often start as a convenience. Someone needs to schedule a script. They create an Automation Account, add a runbook, and it works. Six months later, that account runs 30 production runbooks with broad permissions, shared credentials, and no audit trail. We&#8217;ve audited Automation environments where a single account had Contributor access to [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/au2mator-consulting.com\/en\/secure-azure-automation-architecture\/\" \/>\n<meta property=\"og:site_name\" content=\"au2mator Consulting\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-28T06:30:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-03T11:46:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/au2mator-consulting.com\/wp-content\/uploads\/2026\/06\/secure-azure-automation-au2mator-scaled.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1429\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"openclaw\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"openclaw\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/au2mator-consulting.com\\\/en\\\/secure-azure-automation-architecture\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/au2mator-consulting.com\\\/en\\\/secure-azure-automation-architecture\\\/\"},\"author\":{\"name\":\"openclaw\",\"@id\":\"https:\\\/\\\/au2mator-consulting.com\\\/en\\\/#\\\/schema\\\/person\\\/f97ef2d94df416b15f9a406429a3e1a3\"},\"headline\":\"How to Build a Secure Azure Automation Environment: Architecture Guide\",\"datePublished\":\"2026-05-28T06:30:00+00:00\",\"dateModified\":\"2026-06-03T11:46:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/au2mator-consulting.com\\\/en\\\/secure-azure-automation-architecture\\\/\"},\"wordCount\":1859,\"publisher\":{\"@id\":\"https:\\\/\\\/au2mator-consulting.com\\\/en\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/au2mator-consulting.com\\\/en\\\/secure-azure-automation-architecture\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/au2mator-consulting.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/secure-azure-automation-au2mator-scaled.jpg\",\"articleSection\":[\"Security\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/au2mator-consulting.com\\\/en\\\/secure-azure-automation-architecture\\\/\",\"url\":\"https:\\\/\\\/au2mator-consulting.com\\\/en\\\/secure-azure-automation-architecture\\\/\",\"name\":\"How to Build a Secure Azure Automation Environment: Architecture Guide - au2mator Consulting\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/au2mator-consulting.com\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/au2mator-consulting.com\\\/en\\\/secure-azure-automation-architecture\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/au2mator-consulting.com\\\/en\\\/secure-azure-automation-architecture\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/au2mator-consulting.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/secure-azure-automation-au2mator-scaled.jpg\",\"datePublished\":\"2026-05-28T06:30:00+00:00\",\"dateModified\":\"2026-06-03T11:46:51+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/au2mator-consulting.com\\\/en\\\/secure-azure-automation-architecture\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/au2mator-consulting.com\\\/en\\\/secure-azure-automation-architecture\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/au2mator-consulting.com\\\/en\\\/secure-azure-automation-architecture\\\/#primaryimage\",\"url\":\"https:\\\/\\\/au2mator-consulting.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/secure-azure-automation-au2mator-scaled.jpg\",\"contentUrl\":\"https:\\\/\\\/au2mator-consulting.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/secure-azure-automation-au2mator-scaled.jpg\",\"width\":2560,\"height\":1429},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/au2mator-consulting.com\\\/en\\\/secure-azure-automation-architecture\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/au2mator-consulting.com\\\/en\\\/home\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Build a Secure Azure Automation Environment: Architecture Guide\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/au2mator-consulting.com\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/au2mator-consulting.com\\\/en\\\/\",\"name\":\"au2mator Consulting\",\"description\":\"Automation Consulting. Unabh\u00e4ngig vom Frontend.\",\"publisher\":{\"@id\":\"https:\\\/\\\/au2mator-consulting.com\\\/en\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/au2mator-consulting.com\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/au2mator-consulting.com\\\/en\\\/#organization\",\"name\":\"au2mator Consulting\",\"url\":\"https:\\\/\\\/au2mator-consulting.com\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/au2mator-consulting.com\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/au2mator-consulting.com\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/SelfServicePortalLogo.png\",\"contentUrl\":\"https:\\\/\\\/au2mator-consulting.com\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/SelfServicePortalLogo.png\",\"width\":238,\"height\":72,\"caption\":\"au2mator Consulting\"},\"image\":{\"@id\":\"https:\\\/\\\/au2mator-consulting.com\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/au2mator-consulting.com\\\/en\\\/#\\\/schema\\\/person\\\/f97ef2d94df416b15f9a406429a3e1a3\",\"name\":\"openclaw\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/211a3e1c7f49a9773bde36665e41e1a333032142bee80be4c9146cc3fc7bf663?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/211a3e1c7f49a9773bde36665e41e1a333032142bee80be4c9146cc3fc7bf663?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/211a3e1c7f49a9773bde36665e41e1a333032142bee80be4c9146cc3fc7bf663?s=96&d=mm&r=g\",\"caption\":\"openclaw\"},\"url\":\"https:\\\/\\\/au2mator-consulting.com\\\/en\\\/author\\\/openclaw\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to Build a Secure Azure Automation Environment: Architecture Guide - au2mator Consulting","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/au2mator-consulting.com\/en\/secure-azure-automation-architecture\/","og_locale":"en_US","og_type":"article","og_title":"How to Build a Secure Azure Automation Environment: Architecture Guide - au2mator Consulting","og_description":"Azure Automation accounts often start as a convenience. Someone needs to schedule a script. They create an Automation Account, add a runbook, and it works. Six months later, that account runs 30 production runbooks with broad permissions, shared credentials, and no audit trail. We&#8217;ve audited Automation environments where a single account had Contributor access to [&hellip;]","og_url":"https:\/\/au2mator-consulting.com\/en\/secure-azure-automation-architecture\/","og_site_name":"au2mator Consulting","article_published_time":"2026-05-28T06:30:00+00:00","article_modified_time":"2026-06-03T11:46:51+00:00","og_image":[{"width":2560,"height":1429,"url":"https:\/\/au2mator-consulting.com\/wp-content\/uploads\/2026\/06\/secure-azure-automation-au2mator-scaled.jpg","type":"image\/jpeg"}],"author":"openclaw","twitter_card":"summary_large_image","twitter_misc":{"Written by":"openclaw","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/au2mator-consulting.com\/en\/secure-azure-automation-architecture\/#article","isPartOf":{"@id":"https:\/\/au2mator-consulting.com\/en\/secure-azure-automation-architecture\/"},"author":{"name":"openclaw","@id":"https:\/\/au2mator-consulting.com\/en\/#\/schema\/person\/f97ef2d94df416b15f9a406429a3e1a3"},"headline":"How to Build a Secure Azure Automation Environment: Architecture Guide","datePublished":"2026-05-28T06:30:00+00:00","dateModified":"2026-06-03T11:46:51+00:00","mainEntityOfPage":{"@id":"https:\/\/au2mator-consulting.com\/en\/secure-azure-automation-architecture\/"},"wordCount":1859,"publisher":{"@id":"https:\/\/au2mator-consulting.com\/en\/#organization"},"image":{"@id":"https:\/\/au2mator-consulting.com\/en\/secure-azure-automation-architecture\/#primaryimage"},"thumbnailUrl":"https:\/\/au2mator-consulting.com\/wp-content\/uploads\/2026\/06\/secure-azure-automation-au2mator-scaled.jpg","articleSection":["Security"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/au2mator-consulting.com\/en\/secure-azure-automation-architecture\/","url":"https:\/\/au2mator-consulting.com\/en\/secure-azure-automation-architecture\/","name":"How to Build a Secure Azure Automation Environment: Architecture Guide - au2mator Consulting","isPartOf":{"@id":"https:\/\/au2mator-consulting.com\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/au2mator-consulting.com\/en\/secure-azure-automation-architecture\/#primaryimage"},"image":{"@id":"https:\/\/au2mator-consulting.com\/en\/secure-azure-automation-architecture\/#primaryimage"},"thumbnailUrl":"https:\/\/au2mator-consulting.com\/wp-content\/uploads\/2026\/06\/secure-azure-automation-au2mator-scaled.jpg","datePublished":"2026-05-28T06:30:00+00:00","dateModified":"2026-06-03T11:46:51+00:00","breadcrumb":{"@id":"https:\/\/au2mator-consulting.com\/en\/secure-azure-automation-architecture\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/au2mator-consulting.com\/en\/secure-azure-automation-architecture\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/au2mator-consulting.com\/en\/secure-azure-automation-architecture\/#primaryimage","url":"https:\/\/au2mator-consulting.com\/wp-content\/uploads\/2026\/06\/secure-azure-automation-au2mator-scaled.jpg","contentUrl":"https:\/\/au2mator-consulting.com\/wp-content\/uploads\/2026\/06\/secure-azure-automation-au2mator-scaled.jpg","width":2560,"height":1429},{"@type":"BreadcrumbList","@id":"https:\/\/au2mator-consulting.com\/en\/secure-azure-automation-architecture\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/au2mator-consulting.com\/en\/home\/"},{"@type":"ListItem","position":2,"name":"How to Build a Secure Azure Automation Environment: Architecture Guide"}]},{"@type":"WebSite","@id":"https:\/\/au2mator-consulting.com\/en\/#website","url":"https:\/\/au2mator-consulting.com\/en\/","name":"au2mator Consulting","description":"Automation Consulting. Unabh\u00e4ngig vom Frontend.","publisher":{"@id":"https:\/\/au2mator-consulting.com\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/au2mator-consulting.com\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/au2mator-consulting.com\/en\/#organization","name":"au2mator Consulting","url":"https:\/\/au2mator-consulting.com\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/au2mator-consulting.com\/en\/#\/schema\/logo\/image\/","url":"https:\/\/au2mator-consulting.com\/wp-content\/uploads\/2026\/04\/SelfServicePortalLogo.png","contentUrl":"https:\/\/au2mator-consulting.com\/wp-content\/uploads\/2026\/04\/SelfServicePortalLogo.png","width":238,"height":72,"caption":"au2mator Consulting"},"image":{"@id":"https:\/\/au2mator-consulting.com\/en\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/au2mator-consulting.com\/en\/#\/schema\/person\/f97ef2d94df416b15f9a406429a3e1a3","name":"openclaw","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/211a3e1c7f49a9773bde36665e41e1a333032142bee80be4c9146cc3fc7bf663?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/211a3e1c7f49a9773bde36665e41e1a333032142bee80be4c9146cc3fc7bf663?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/211a3e1c7f49a9773bde36665e41e1a333032142bee80be4c9146cc3fc7bf663?s=96&d=mm&r=g","caption":"openclaw"},"url":"https:\/\/au2mator-consulting.com\/en\/author\/openclaw\/"}]}},"_links":{"self":[{"href":"https:\/\/au2mator-consulting.com\/en\/wp-json\/wp\/v2\/posts\/690","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/au2mator-consulting.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/au2mator-consulting.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/au2mator-consulting.com\/en\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/au2mator-consulting.com\/en\/wp-json\/wp\/v2\/comments?post=690"}],"version-history":[{"count":1,"href":"https:\/\/au2mator-consulting.com\/en\/wp-json\/wp\/v2\/posts\/690\/revisions"}],"predecessor-version":[{"id":696,"href":"https:\/\/au2mator-consulting.com\/en\/wp-json\/wp\/v2\/posts\/690\/revisions\/696"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/au2mator-consulting.com\/en\/wp-json\/wp\/v2\/media\/682"}],"wp:attachment":[{"href":"https:\/\/au2mator-consulting.com\/en\/wp-json\/wp\/v2\/media?parent=690"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/au2mator-consulting.com\/en\/wp-json\/wp\/v2\/categories?post=690"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/au2mator-consulting.com\/en\/wp-json\/wp\/v2\/tags?post=690"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}