Posts
Building a Secure RAG System for Internal DevOps Documentation
It’s 2am. You’re paged for a SEV1. Your runbooks are scattered across Confluence pages, SharePoint libraries, GitHub wikis, and a legacy shared drive that nobody admits still exists. You search three systems, find conflicting procedures with different dates, and end up calling the person …
Dynamic Matrix Strategies: Generating Runtime Tests with ${{ each }}
You need to test your application against 4 different browsers, 3 different operating systems, and 2 different database versions. That’s 24 unique job configurations. You could manually write 24 jobs—but what happens when you add a 5th browser? You are back to editing YAML for hours. There is a …
Subscription Vending: Automating New Workload Onboarding with IaC
The ticket comes in on a Monday. A team needs a new production subscription — they have a sprint starting Thursday. You know what this means: Management Group placement, VNet config, hub peering, RBAC assignments, a budget, and a diagnostic settings policy to wire it up to the SIEM. Each step is …
Securing the Prompt: Implementing AI Guardrails with Azure API Management
You built a CI/CD tool that sends code diffs to Azure OpenAI for automated review comments. It works great. Three months later, a security audit lands on your desk. The diffs have been routinely sending database connection strings, AWS access keys, and internal IP addresses—verbatim—to the LLM. The …
Cross-Job Communication: Mastering dependencies and Output Variables
You’ve successfully calculated a version number in Job A. Now you need to use that number to tag an image in Job B. You try to access the variable, but it comes up empty. You try $(JobA.myVar), then $[ dependencies.JobA.outputs['task.myVar'] ]. Still nothing. Frustration sets in. Why is it so hard …
Centralized Monitoring: Log Analytics, Diagnostic Settings, and Azure Monitor Workbooks
The incident ticket lands on a Tuesday morning. Production degraded last Friday. You open the Azure portal, pull up the subscription’s Log Analytics Workspace, and realize the diagnostics on the App Gateway were never enabled. The VNet flow logs are going to a different workspace some …
AI-Driven Secrets Scanning: Protecting the Pipeline from Hallucinated Credentials
GitHub Copilot just suggested an Azure Storage connection string. The format was correct, the key length was right, and the AccountName matched a plausible service name. You accepted the suggestion, committed, and pushed. Instantly, your terminal flashed a red error: GH007: Your push would publish a …
Expression Security: Preventing Injection and Hardening Your YAML
“Enter your environment name: prod; rm -rf /”. If that input reached your pipeline, would it crash your production server? Most DevOps engineers worry about network firewalls and SSH keys, but they leave a massive back door open: Expression Injection. In the rush to build …
Security Baseline: Defender for Cloud and Microsoft Sentinel in a Landing Zone
The compliance report lands in your inbox on a Tuesday morning. One finding: a production subscription had diagnostic logs disabled for 47 days. No one noticed because no one was watching. The subscription was vended six weeks ago, the app team started deploying workloads a week after that, and …








