<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Daniel Glover</title>
    <description>The latest articles on DEV Community by Daniel Glover (@danieljglover).</description>
    <link>https://dev.to/danieljglover</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3791348%2F50689bfd-7ecc-4794-b9eb-d4224abcd8d7.png</url>
      <title>DEV Community: Daniel Glover</title>
      <link>https://dev.to/danieljglover</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/danieljglover"/>
    <language>en</language>
    <item>
      <title>AI Governance Framework Template</title>
      <dc:creator>Daniel Glover</dc:creator>
      <pubDate>Sat, 11 Apr 2026 17:15:23 +0000</pubDate>
      <link>https://dev.to/danieljglover/ai-governance-framework-template-1ljd</link>
      <guid>https://dev.to/danieljglover/ai-governance-framework-template-1ljd</guid>
      <description>&lt;p&gt;Most AI governance discussions go wrong before they begin.&lt;/p&gt;

&lt;p&gt;They start with policy language, abstract principles, and oversized committees. What they should start with is a much simpler question: how will we make sure people use AI in ways that are safe, useful, and commercially sensible?&lt;/p&gt;

&lt;p&gt;That is the gap most organisations are sitting in right now. Teams are experimenting with copilots, automating workflows, testing internal assistants, and buying AI features bundled into software they already use. Meanwhile, leadership is trying to work out where the risk sits, who owns decisions, and how to stop innovation turning into another unmanaged estate.&lt;/p&gt;

&lt;p&gt;A usable AI governance framework solves that. It gives you a repeatable way to approve use cases, set guardrails, assign ownership, and respond when something drifts off course.&lt;/p&gt;

&lt;p&gt;NIST's AI Risk Management Framework is useful here because it treats AI risk management as something that should be built into design, development, use, and evaluation. ISO/IEC 42001 pushes in the same direction from a management-systems angle, focusing on structured processes for responsible development and use. The OECD AI Principles reinforce the fundamentals: transparency, accountability, safety, privacy, and human rights. The common thread is clear. Good AI governance is not a one-off policy. It is an operating model.&lt;/p&gt;

&lt;p&gt;If you need a practical starting point, this is the template I would use.&lt;/p&gt;

&lt;h2&gt;
  
  
  What an AI Governance Framework Is Actually For
&lt;/h2&gt;

&lt;p&gt;An AI governance framework is not there to make the organisation sound mature. It is there to help leaders answer five practical questions.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What AI is being used across the business?&lt;/li&gt;
&lt;li&gt;Which use cases are acceptable, risky, or prohibited?&lt;/li&gt;
&lt;li&gt;Who is accountable for decisions, data, and outcomes?&lt;/li&gt;
&lt;li&gt;What checks happen before deployment and during live use?&lt;/li&gt;
&lt;li&gt;What happens when an AI system causes harm, confusion, or regulatory exposure?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If your framework cannot answer those five questions quickly, it is too theoretical.&lt;/p&gt;

&lt;p&gt;I see a lot of organisations jump straight to the language of responsible AI without sorting out the basics. They publish principles, but they cannot name all the tools in use. They talk about ethics, but they have no intake process. They say a human is in the loop, but nobody can explain when that human intervenes or what authority they actually have.&lt;/p&gt;

&lt;p&gt;That is not governance. That is aspiration.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Seven Parts of a Practical AI Governance Template
&lt;/h2&gt;

&lt;p&gt;A strong framework does not need to be huge. It needs to be clear. I would build it around seven sections.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Purpose and scope
&lt;/h3&gt;

&lt;p&gt;Start by defining what the framework covers.&lt;/p&gt;

&lt;p&gt;This sounds obvious, but it is where a lot of confusion starts. If you only mean custom-built AI, say that. If you also mean SaaS products with embedded generative AI features, say that too. If the scope includes experimentation, procurement, deployment, and third-party use, make it explicit.&lt;/p&gt;

&lt;p&gt;A sensible scope statement might look like this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This framework applies to any AI-enabled system, feature, service, or workflow used, developed, configured, or procured by the organisation where the output influences decisions, content, operations, customer interactions, or internal business processes.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That gives you room to govern both bespoke tools and off-the-shelf platforms.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Principles and decision rules
&lt;/h3&gt;

&lt;p&gt;You do need principles, but keep them short and operational.&lt;/p&gt;

&lt;p&gt;Mine would be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI must support a clear business purpose.&lt;/li&gt;
&lt;li&gt;Human accountability stays with named owners, not the system.&lt;/li&gt;
&lt;li&gt;High-impact use cases require stronger review and monitoring.&lt;/li&gt;
&lt;li&gt;Personal, confidential, or regulated data must be protected by design.&lt;/li&gt;
&lt;li&gt;Users must understand when AI is being used and where its limits sit.&lt;/li&gt;
&lt;li&gt;Outputs must be reviewable, challengeable, and, where necessary, reversible.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These principles should map directly to actual decisions. The ICO's AI and data protection guidance is particularly useful on this point. It keeps bringing governance back to accountability, transparency, lawfulness, and fairness rather than letting teams hide behind technical novelty.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Use case classification
&lt;/h3&gt;

&lt;p&gt;This is where the framework becomes useful in real life.&lt;/p&gt;

&lt;p&gt;Every proposed AI use case should be classified before it goes live. You do not need an elaborate taxonomy. Three tiers are enough for most organisations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Low risk&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Examples: internal drafting support, meeting-note summarisation, code assistance with review, knowledge retrieval for internal teams.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Medium risk&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Examples: customer support assistance, workflow automation that affects service delivery, supplier triage, internal decision support, AI-generated content for external publication with human review.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;High risk&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Examples: decisions affecting employment, access, pricing, compliance outcomes, safety, regulated data handling, fraud judgements, or customer eligibility.&lt;/p&gt;

&lt;p&gt;The point is not to label things for the sake of it. The point is to tie classification to controls.&lt;/p&gt;

&lt;p&gt;Low-risk use cases might need manager approval and standard logging. High-risk ones may need a DPIA, legal review, security review, testing evidence, named executive ownership, and stricter monitoring.&lt;/p&gt;

&lt;p&gt;If you do not classify use cases, everything ends up in the same bucket, and the governance either becomes too weak for serious use or too slow for routine use.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Roles and accountability
&lt;/h3&gt;

&lt;p&gt;This section should remove ambiguity.&lt;/p&gt;

&lt;p&gt;At minimum, name these roles:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Executive sponsor&lt;/strong&gt;&lt;br&gt;
Owns overall policy direction, risk appetite, and escalation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Business owner&lt;/strong&gt;&lt;br&gt;
Owns the use case, the intended outcome, and the operational impact.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Technical owner&lt;/strong&gt;&lt;br&gt;
Owns implementation, controls, integration, and monitoring.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data owner&lt;/strong&gt;&lt;br&gt;
Owns the legality, quality, and suitability of data used.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Risk or compliance lead&lt;/strong&gt;&lt;br&gt;
Owns review of regulatory, contractual, and policy implications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security lead&lt;/strong&gt;&lt;br&gt;
Owns security review, access model, supplier assurance, and incident response alignment.&lt;/p&gt;

&lt;p&gt;This is also where an &lt;a href="https://dev.to/blog/2026-03-28-ai-centre-of-excellence-guide/"&gt;AI Centre of Excellence&lt;/a&gt; can help. The CoE should not own every AI decision itself, but it can provide standards, templates, review guidance, and shared tooling so business teams do not improvise their own governance from scratch.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Approval workflow
&lt;/h3&gt;

&lt;p&gt;If you want the framework to stick, the approval path has to be visible and usable.&lt;/p&gt;

&lt;p&gt;A simple approval workflow could be:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Submit AI use case proposal.&lt;/li&gt;
&lt;li&gt;Classify risk level.&lt;/li&gt;
&lt;li&gt;Complete minimum evidence pack.&lt;/li&gt;
&lt;li&gt;Review by business, security, data, and compliance stakeholders as required.&lt;/li&gt;
&lt;li&gt;Approve, reject, or approve with conditions.&lt;/li&gt;
&lt;li&gt;Register the use case in the AI inventory.&lt;/li&gt;
&lt;li&gt;Review performance and risk on a defined cadence.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The evidence pack does not need to be bloated. For most use cases, it should cover:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;business purpose&lt;/li&gt;
&lt;li&gt;user group&lt;/li&gt;
&lt;li&gt;data involved&lt;/li&gt;
&lt;li&gt;expected benefits&lt;/li&gt;
&lt;li&gt;known risks&lt;/li&gt;
&lt;li&gt;human review points&lt;/li&gt;
&lt;li&gt;supplier or model details&lt;/li&gt;
&lt;li&gt;fallback plan if the tool is withdrawn or fails&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That last point gets missed too often. If a vendor changes pricing, access, retention terms, or output quality, what happens to the process that depends on it?&lt;/p&gt;

&lt;p&gt;That question links directly to wider procurement discipline. If external suppliers are involved, your AI governance should align with your &lt;a href="https://dev.to/blog/2026-04-08-vendor-due-diligence-guide/"&gt;vendor due diligence process&lt;/a&gt;, not sit beside it.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Control requirements
&lt;/h3&gt;

&lt;p&gt;This is the core of the template.&lt;/p&gt;

&lt;p&gt;I would group controls into six headings.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data controls&lt;/strong&gt;&lt;br&gt;
What data is allowed, restricted, or prohibited? Can staff paste customer data into public AI tools? Are prompts retained by the vendor? Is there a private deployment option?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security controls&lt;/strong&gt;&lt;br&gt;
How is access managed? Are outputs logged? Is the supplier assessed? What happens if credentials, prompts, or generated content are exposed?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Legal and compliance controls&lt;/strong&gt;&lt;br&gt;
Does the use case raise GDPR, IP, sector regulation, employment, or contractual issues? Do you need records, notices, or consent changes?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quality controls&lt;/strong&gt;&lt;br&gt;
How is accuracy checked? What error rate is acceptable? How are hallucinations, bias, or drift detected?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Human oversight controls&lt;/strong&gt;&lt;br&gt;
Who reviews the output before action? What decisions must never be fully automated? When can a user override the system?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Operational controls&lt;/strong&gt;&lt;br&gt;
How is the solution monitored after launch? What triggers re-review? What incidents get escalated?&lt;/p&gt;

&lt;p&gt;This is where many organisations discover they do not really have an AI problem. They have a control-design problem. AI just exposes it faster.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Monitoring, review, and incident handling
&lt;/h3&gt;

&lt;p&gt;Governance that stops at approval is not governance.&lt;/p&gt;

&lt;p&gt;NIST is clear that AI risk management should extend across the lifecycle. That means reviewing systems after deployment, not just before them. In practice, I would expect every live AI use case to have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a named review cadence&lt;/li&gt;
&lt;li&gt;usage and outcome monitoring&lt;/li&gt;
&lt;li&gt;issue logging&lt;/li&gt;
&lt;li&gt;change control for prompt, model, or workflow updates&lt;/li&gt;
&lt;li&gt;incident escalation routes&lt;/li&gt;
&lt;li&gt;retirement criteria&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This matters because AI systems drift in ways conventional software often does not. The model may change. The vendor may change. Staff may start relying on it in ways the original approval never anticipated. That is exactly how &lt;a href="https://dev.to/blog/2026-01-04-shadow-ai-governance-crisis/"&gt;shadow AI&lt;/a&gt; becomes a management problem instead of just a tooling trend.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Simple AI Governance Framework Template
&lt;/h2&gt;

&lt;p&gt;If I were drafting the first working version for an organisation, it would look like this.&lt;/p&gt;

&lt;h3&gt;
  
  
  AI Governance Framework Template
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. Purpose&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Define how the organisation approves, uses, monitors, and reviews AI systems to balance innovation, risk, compliance, and business value.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Scope&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Applies to all internally built, configured, or procured AI tools and AI-enabled product features used in business operations, employee workflows, customer interactions, analytics, or decision support.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Principles&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clear business purpose&lt;/li&gt;
&lt;li&gt;Named human accountability&lt;/li&gt;
&lt;li&gt;Proportionate controls based on risk&lt;/li&gt;
&lt;li&gt;Transparency for users and stakeholders&lt;/li&gt;
&lt;li&gt;Protection of personal, confidential, and regulated data&lt;/li&gt;
&lt;li&gt;Monitoring and review throughout the lifecycle&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Risk tiers&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Low: internal productivity and drafting support&lt;/li&gt;
&lt;li&gt;Medium: operational support and customer-facing assistance with review&lt;/li&gt;
&lt;li&gt;High: regulated, high-impact, or decision-shaping use cases&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;5. Required approvals&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Low: business owner plus standard policy compliance&lt;/li&gt;
&lt;li&gt;Medium: business owner, security, and data review&lt;/li&gt;
&lt;li&gt;High: business owner, security, data, compliance, and executive sign-off&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;6. Mandatory controls&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Approved data handling rules&lt;/li&gt;
&lt;li&gt;Supplier and security assessment where relevant&lt;/li&gt;
&lt;li&gt;Testing for accuracy and reliability&lt;/li&gt;
&lt;li&gt;Human review points for medium and high-risk use cases&lt;/li&gt;
&lt;li&gt;Logging, monitoring, and periodic review&lt;/li&gt;
&lt;li&gt;Defined fallback or rollback process&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;7. Documentation requirements&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Each use case must record:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;owner&lt;/li&gt;
&lt;li&gt;purpose&lt;/li&gt;
&lt;li&gt;users&lt;/li&gt;
&lt;li&gt;tool or model used&lt;/li&gt;
&lt;li&gt;data involved&lt;/li&gt;
&lt;li&gt;risk tier&lt;/li&gt;
&lt;li&gt;approval date&lt;/li&gt;
&lt;li&gt;review date&lt;/li&gt;
&lt;li&gt;key controls&lt;/li&gt;
&lt;li&gt;known limitations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;8. Incident handling&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Any material AI-related error, harmful output, privacy concern, control failure, or unauthorised use must be logged, reviewed, and escalated under existing security, data protection, or operational incident processes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;9. Review cadence&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Low: every 12 months&lt;/li&gt;
&lt;li&gt;Medium: every 6 months&lt;/li&gt;
&lt;li&gt;High: every 3 months or after material change&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is not the finished state for every organisation, but it is a credible starting point.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common Mistakes That Break AI Governance
&lt;/h2&gt;

&lt;p&gt;The first mistake is overbuilding. If the framework takes six weeks to approve a low-risk productivity tool, staff will route around it.&lt;/p&gt;

&lt;p&gt;The second is underbuilding. If every use case gets waved through because "it is only advisory", you will miss the fact that advisory tools still influence decisions.&lt;/p&gt;

&lt;p&gt;The third is separating AI governance from existing governance. AI does not need a magical parallel universe. It needs to connect to security review, procurement, data protection, records management, and incident response.&lt;/p&gt;

&lt;p&gt;The fourth is confusing ownership. If no one owns outcomes, the model becomes the scapegoat for human choices.&lt;/p&gt;

&lt;p&gt;The fifth is failing to maintain an inventory. You cannot govern what you cannot name.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where to Start Next Week
&lt;/h2&gt;

&lt;p&gt;If you do not have a framework today, do not wait for the perfect version.&lt;/p&gt;

&lt;p&gt;Do these five things first:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a simple AI use case register.&lt;/li&gt;
&lt;li&gt;Define low, medium, and high-risk categories.&lt;/li&gt;
&lt;li&gt;Publish minimum rules for data handling and human review.&lt;/li&gt;
&lt;li&gt;Name the owners for approvals, security, compliance, and escalation.&lt;/li&gt;
&lt;li&gt;Review the top five live AI use cases already in use.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That will get you further than another month of discussion about principles nobody is applying.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Bottom Line
&lt;/h2&gt;

&lt;p&gt;A good AI governance framework should make the organisation safer and faster at the same time.&lt;/p&gt;

&lt;p&gt;It should reduce uncertainty, not create bureaucracy. It should help teams adopt useful AI with confidence while stopping careless or high-risk use before it spreads. And it should fit the way the business already makes decisions, not float above it as a separate theory of responsibility.&lt;/p&gt;

&lt;p&gt;If your current framework is mostly a policy document, simplify it. If you do not have one at all, start with the template above and make it real through ownership, workflow, and review.&lt;/p&gt;

&lt;p&gt;That is what governance looks like when it is built for actual operations, not just audit language.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>career</category>
    </item>
    <item>
      <title>IT Risk Registers Executives Use</title>
      <dc:creator>Daniel Glover</dc:creator>
      <pubDate>Fri, 10 Apr 2026 17:05:57 +0000</pubDate>
      <link>https://dev.to/danieljglover/it-risk-registers-executives-use-22h6</link>
      <guid>https://dev.to/danieljglover/it-risk-registers-executives-use-22h6</guid>
      <description>&lt;p&gt;Most IT risk registers are full of effort and short on value.&lt;/p&gt;

&lt;p&gt;They are maintained because somebody sensible once said they should exist. They get reviewed before audits. They are updated after incidents. They sit in governance packs. And yet, when a real decision needs to be made, most executives do not reach for the risk register. They ask for a summary, a briefing, or a fresh view of the issue because the register itself is too technical, too bloated, or too detached from the business.&lt;/p&gt;

&lt;p&gt;That is the core problem. A risk register is not meant to be a museum of everything that could go wrong. It is meant to be a decision-making tool.&lt;/p&gt;

&lt;p&gt;NIST describes a risk register as a central record of current risks and related information for an organisation. The NCSC makes a similar point from a governance angle. Good cyber risk management should help leaders make better, more informed decisions, and it should be integrated into wider organisational risk management rather than treated as a standalone IT exercise. Those two ideas matter. A useful risk register is current, central, and connected to business decisions.&lt;/p&gt;

&lt;p&gt;In practice, that means your register has to work for people outside IT.&lt;/p&gt;

&lt;p&gt;I have seen this go wrong more than once. Teams produce a spreadsheet with forty-seven rows, each one scored on a five-by-five grid, and assume the existence of the sheet means the risk is being managed. It is not. If your CFO, COO, or CEO cannot read the register and understand what needs attention, you do not have an executive tool. You have documentation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Most IT Risk Registers Fail
&lt;/h2&gt;

&lt;p&gt;The first failure is that they are written in technical language. The risk statement says something like, "Legacy Windows Server estate approaching end of support may increase vulnerability exposure due to unpatched CVEs." That may be accurate, but it is not executive-ready. The board does not need to decode the phrase "unpatched CVEs". They need to know what is at risk, what the likely business impact is, and what decision is needed.&lt;/p&gt;

&lt;p&gt;The second failure is that they confuse activity with control. I often see mitigation fields filled with project names, tooling purchases, or vague phrases such as "security programme underway". That is not useful. An executive needs to know whether the risk is accepted, reduced, transferred, or still sitting there waiting for budget and ownership.&lt;/p&gt;

&lt;p&gt;The third failure is volume. Too many registers are dumping grounds. If every local annoyance, minor weakness, and hypothetical edge case appears alongside material operational risk, leaders stop trusting the prioritisation. They should. A register that says everything matters is really saying nothing matters.&lt;/p&gt;

&lt;p&gt;The fourth failure is isolation. The NCSC is right to warn against treating cyber risk as a standalone topic. Most meaningful IT risks now have operational, financial, legal, and reputational dimensions. If your risk register sits entirely within IT, disconnected from business planning and enterprise risk, you will miss the real trade-offs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start with the Decision, Not the Threat
&lt;/h2&gt;

&lt;p&gt;The easiest way to improve a risk register is to start from a different question.&lt;/p&gt;

&lt;p&gt;Do not ask, "What threats do we have?"&lt;/p&gt;

&lt;p&gt;Ask, "What decisions might leadership need to make because this risk exists?"&lt;/p&gt;

&lt;p&gt;That changes the quality of the entry immediately.&lt;/p&gt;

&lt;p&gt;A poor risk entry says:&lt;/p&gt;

&lt;p&gt;"Third-party remote access tooling may create security exposure."&lt;/p&gt;

&lt;p&gt;A better risk entry says:&lt;/p&gt;

&lt;p&gt;"A compromise of third-party remote access into core systems could disrupt order processing and customer service for up to two days. We need a decision on enforcing stronger supplier access controls and funding privileged access tooling this quarter."&lt;/p&gt;

&lt;p&gt;The first version names a category. The second version names a business consequence and a decision path.&lt;/p&gt;

&lt;p&gt;This is the standard I use: every risk entry should tell an executive five things in plain English.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What could happen.&lt;/li&gt;
&lt;li&gt;Why it matters to the business.&lt;/li&gt;
&lt;li&gt;How likely it is to happen.&lt;/li&gt;
&lt;li&gt;What is currently being done about it.&lt;/li&gt;
&lt;li&gt;What decision, investment, or acceptance is required.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If an entry cannot do that, it is not ready for an executive forum.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Fields That Actually Matter
&lt;/h2&gt;

&lt;p&gt;You do not need a complicated template. In fact, complexity is usually the enemy here. A strong executive-friendly register can work with eight fields.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Risk title
&lt;/h3&gt;

&lt;p&gt;Short, specific, readable. For example: "Unsupported production servers" or "Over-reliance on single SaaS vendor".&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Risk statement
&lt;/h3&gt;

&lt;p&gt;Write this in full-sentence business language. A good structure is: "If [event] happens, then [business impact] may occur, affecting [objective, revenue, service, compliance, or reputation]."&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Business impact
&lt;/h3&gt;

&lt;p&gt;Keep this concrete. Lost revenue, regulatory exposure, service outage, delayed delivery, failed audit, customer churn, reputational damage. Pick the consequences leadership recognises.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Likelihood and impact
&lt;/h3&gt;

&lt;p&gt;Yes, score it if your organisation expects scoring, but do not let the number do all the talking. The NCSC advises using risk metrics with caution because they are easy to misread without context. I agree. A red score without narrative is theatre.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Current controls
&lt;/h3&gt;

&lt;p&gt;List the controls that materially reduce the risk now, not everything you wish you had. Be honest. Multi-factor authentication enforced for admins is a control. "Security awareness planned" is not.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Gap or exposure
&lt;/h3&gt;

&lt;p&gt;What remains unresolved? This is where the real conversation usually is.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Owner
&lt;/h3&gt;

&lt;p&gt;Name one accountable person. Not a team. Not "IT". One person.&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Next action and due date
&lt;/h3&gt;

&lt;p&gt;If the entry does not point to a next action, it becomes passive. If it does not have a due date, it drifts.&lt;/p&gt;

&lt;p&gt;That is enough for most organisations. You can add appetite alignment, financial estimate, or linked controls if your governance model requires it, but the core record should remain readable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Write the Risk the Way the Business Hears It
&lt;/h2&gt;

&lt;p&gt;This is where most of the improvement comes from.&lt;/p&gt;

&lt;p&gt;Compare these two versions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Weak version:&lt;/strong&gt;&lt;br&gt;
"Insufficient patching cadence across endpoint estate creates elevated vulnerability exposure."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Better version:&lt;/strong&gt;&lt;br&gt;
"Laptops used by finance and HR are not consistently patched within the agreed window. If a known vulnerability is exploited, the business could face payroll disruption, data exposure, and reportable compliance impact."&lt;/p&gt;

&lt;p&gt;The second version is stronger because it names the business function, the consequence, and the outcome a leader can picture.&lt;/p&gt;

&lt;p&gt;The same applies to supplier risk. I covered the front-end procurement angle in my &lt;a href="https://www.danieljamesglover.com/blog/2026-04-08-vendor-due-diligence-guide/" rel="noopener noreferrer"&gt;vendor due diligence guide&lt;/a&gt;, but governance cannot stop at onboarding. Executive risk management needs to keep asking a harder question: if this supplier fails, is compromised, or underperforms, what happens to us?&lt;/p&gt;

&lt;p&gt;That is why strong registers often group risk around business dependency rather than around whichever technology domain owns the issue.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep the Register Short Enough to Defend
&lt;/h2&gt;

&lt;p&gt;An executive register should be short enough that you can defend the inclusion of every item.&lt;/p&gt;

&lt;p&gt;That does not mean pretending smaller risks do not exist. It means using layers.&lt;/p&gt;

&lt;p&gt;I prefer three levels:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Executive register:&lt;/strong&gt; 5 to 12 material risks that affect strategic objectives, major services, compliance exposure, or meaningful financial outcomes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Operational register:&lt;/strong&gt; team-level risks that need management attention but not executive airtime.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Issue log:&lt;/strong&gt; known defects, control failures, and actions in progress.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mixing all three together is one of the main reasons registers become unreadable.&lt;/p&gt;

&lt;p&gt;NIST's more recent guidance on integrating cybersecurity and enterprise risk management is useful here. The point is not just to record risk locally, but to roll up what matters for broader enterprise oversight. That only works if you separate background operational noise from risks that genuinely deserve leadership attention.&lt;/p&gt;

&lt;h2&gt;
  
  
  Review Cadence Matters More Than Spreadsheet Design
&lt;/h2&gt;

&lt;p&gt;I have never seen a risk register fail because the template was too simple. I have seen plenty fail because nobody owned the cadence.&lt;/p&gt;

&lt;p&gt;The NCSC says changes to risk should be assessed regularly, at least bi-annually, and more often where organisations are exposed to faster-moving threats, business change, or regulated environments. In reality, many IT leaders need a tighter rhythm than that.&lt;/p&gt;

&lt;p&gt;A practical operating model looks like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Monthly operational review for IT leadership and security stakeholders.&lt;/li&gt;
&lt;li&gt;Quarterly executive review tied to strategic priorities, investment decisions, and major change.&lt;/li&gt;
&lt;li&gt;Immediate out-of-cycle review after incidents, major supplier changes, acquisitions, restructures, or new regulatory exposure.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That rhythm keeps the register alive. It also prevents the common problem where the risk register says one thing while the business is actively making decisions that assume another.&lt;/p&gt;

&lt;p&gt;If you already report IT metrics to the board, this should sit alongside that conversation rather than apart from it. I wrote more about that reporting discipline in &lt;a href="https://www.danieljamesglover.com/blog/2026-03-12-it-metrics-board-reporting/" rel="noopener noreferrer"&gt;IT metrics board reporting&lt;/a&gt;. The short version is simple: risk, performance, investment, and strategy should reinforce one another.&lt;/p&gt;

&lt;h2&gt;
  
  
  What an Executive Wants to See in the Room
&lt;/h2&gt;

&lt;p&gt;When the register is discussed, leaders normally care about three questions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Has anything materially changed?&lt;/strong&gt;&lt;br&gt;
New suppliers, acquisitions, delayed projects, failing controls, or shifting threat patterns should be obvious.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where are we outside appetite?&lt;/strong&gt;&lt;br&gt;
Executives need to know which risks are being actively tolerated and whether that tolerance is deliberate or accidental.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What decision is needed from us?&lt;/strong&gt;&lt;br&gt;
Budget, prioritisation, policy support, acceptance, escalation, or intervention.&lt;/p&gt;

&lt;p&gt;This is why a one-line summary column can be surprisingly effective. If I were redesigning most registers tomorrow, I would add a field called "Executive takeaway" and force every risk owner to summarise the issue in one sentence. It is a brutal but useful test of clarity.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Simple Example Structure
&lt;/h2&gt;

&lt;p&gt;If you want a practical format, this is a solid starting point for each row:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Risk:&lt;/strong&gt; Unsupported warehouse management servers&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Statement:&lt;/strong&gt; If unsupported servers in the warehouse environment are compromised or fail, order fulfilment may be delayed, affecting revenue and customer service.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Impact:&lt;/strong&gt; High, because the warehouse is time-sensitive and customer-facing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Likelihood:&lt;/strong&gt; Medium, due to age, patch limitations, and current exposure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Current controls:&lt;/strong&gt; Network segmentation, restricted admin access, monitored backups.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Exposure remaining:&lt;/strong&gt; No vendor support and limited recovery confidence under peak load.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Owner:&lt;/strong&gt; Head of Infrastructure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Next action:&lt;/strong&gt; Approve replacement budget and migration plan by end of Q2.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;An executive can work with that.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Bottom Line
&lt;/h2&gt;

&lt;p&gt;A good IT risk register does not prove that governance exists. It helps governance happen.&lt;/p&gt;

&lt;p&gt;If your register is written for auditors, filled with abstract scores, and disconnected from business decisions, executives will ignore it until something goes wrong. If it is concise, business-readable, and tied to ownership and action, it becomes one of the most useful tools an IT leader has.&lt;/p&gt;

&lt;p&gt;That is the standard worth aiming for.&lt;/p&gt;

&lt;p&gt;Not a bigger spreadsheet. A better conversation.&lt;/p&gt;

</description>
      <category>itleadership</category>
      <category>riskmanagement</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>Presenting to the Board: An IT Leader's Guide</title>
      <dc:creator>Daniel Glover</dc:creator>
      <pubDate>Thu, 09 Apr 2026 17:39:29 +0000</pubDate>
      <link>https://dev.to/danieljglover/presenting-to-the-board-an-it-leaders-guide-24o2</link>
      <guid>https://dev.to/danieljglover/presenting-to-the-board-an-it-leaders-guide-24o2</guid>
      <description>&lt;p&gt;A CFO I worked with some years ago had a rule: every board paper that crossed her desk had to answer one question before it went any further. That question was not "what does this mean technically?" It was "so what?"&lt;/p&gt;

&lt;p&gt;It is a deceptively simple test. And it trips up the majority of IT leaders presenting to boards for the first time.&lt;/p&gt;

&lt;p&gt;The technical detail is not the problem. IT leaders are, by definition, technically capable people. The problem is that the skills that make someone excellent at engineering, architecture, and technical problem-solving are almost the opposite of the skills required to hold a board's attention and earn their confidence.&lt;/p&gt;

&lt;p&gt;This is not a criticism. It is a structural observation. Boards operate at a level of abstraction that is genuinely foreign to technical professionals who have spent their careers thinking in systems, dependencies, and precise specifications. The gap is real, and bridging it is a learnable skill.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why IT Boards Underperform in the Boardroom
&lt;/h2&gt;

&lt;p&gt;Walk into most board meetings and watch what happens when the IT update arrives. You will typically see one of two patterns.&lt;/p&gt;

&lt;p&gt;The first is the technical deep dive. The IT leader presents infrastructure diagrams, upgrade roadmaps, and security architectures. The language is precise and accurate. The board's eyes glaze over. The moment passes. IT is marked as "covered" and the meeting moves on to topics the board feels more equipped to engage with.&lt;/p&gt;

&lt;p&gt;The second pattern is the reassurance play. Nothing alarming is raised. Everything sounds like it is under control. The board approves the requested budget item without much discussion. No real engagement happens. And no one in the room has had an honest conversation about what the organisation's technology posture actually means for its future.&lt;/p&gt;

&lt;p&gt;Both patterns are failures, just different kinds. The first fails to communicate. The second fails to lead.&lt;/p&gt;

&lt;p&gt;The irony is that most boards are acutely aware of their own vulnerability around technology. They know they do not fully understand the technical detail. That awareness makes them simultaneously more dependent on IT leadership for interpretation and more likely to disengage when the material feels inaccessible.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Three Questions Boards Actually Want Answered
&lt;/h2&gt;

&lt;p&gt;Before you open any presentation software, step back and ask what the board actually needs from this update. In my experience, it boils down to three questions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Are we at risk?&lt;/strong&gt; Not "is our firewall configured correctly" or "are we patched against CVE-2026-1234". Boards want to know if there is a material risk to the business that they need to be aware of, and whether management has a grip on it. If the honest answer is yes, they need to know the scale and the plan. If the honest answer is no, they need enough context to trust that assessment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Are we getting value from our technology investment?&lt;/strong&gt; Boards approve significant technology expenditure. They want to know whether that spend is producing returns. This does not mean you need a detailed ROI model for every line item. It means you should be able to speak coherently about how technology is enabling the business strategy, and where the gaps are.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where are we headed?&lt;/strong&gt; Boards think in three-to-five-year horizons. They want to understand whether the technology strategy is aligned with where the business needs to be, and what the transition looks like. Technology leaders who can speak to direction, not just current state, earn significantly more credibility in the boardroom.&lt;/p&gt;

&lt;p&gt;If your board update answers those three questions clearly, you have done your job. Everything else is detail that should serve those answers, not replace them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reframing Technical Risk for a Non-Technical Audience
&lt;/h2&gt;

&lt;p&gt;The most common failure mode in IT board communication is translating technical risk into board-appropriate language. This is where most IT leaders either oversimplify to the point of being useless, or stay too technical to be actionable.&lt;/p&gt;

&lt;p&gt;The discipline is specificity without jargon. Boards are sophisticated people. They understand risk, probability, financial impact, and consequence. What they do not follow is the operational detail of how a risk materialises or how it is mitigated.&lt;/p&gt;

&lt;p&gt;Compare these two framings of the same risk.&lt;/p&gt;

&lt;p&gt;Version one: "We are running three Windows Server 2019 instances that will go end-of-support in January 2027. We need to upgrade or migrate these before that date to avoid security vulnerabilities."&lt;/p&gt;

&lt;p&gt;Version two: "Three production systems are running software that loses vendor support in nine months. If we do not migrate, those systems will no longer receive security patches, which means any newly discovered vulnerability in that platform becomes an unpatchable exposure on our network. Our current exposure window if this is exploited is approximately GBP 1.2 million based on our incident response costs from the 2024 breach. We have budgeted GBP 85,000 for the migration and the work is scheduled for Q3."&lt;/p&gt;

&lt;p&gt;Version two is better not because it is more alarming. It is better because it gives the board what they need: scale, consequence, financial context, and a clear plan. The technical detail is embedded, not foregrounded.&lt;/p&gt;

&lt;h2&gt;
  
  
  The One-Page Risk Summary
&lt;/h2&gt;

&lt;p&gt;The single most effective board communication tool I have used and recommended repeatedly is a one-page IT risk summary. Not a heat map. Not a traffic light report. An actual one-page summary that fits on a single side of A4.&lt;/p&gt;

&lt;p&gt;The format is straightforward. Five to seven items maximum. Each item names the risk, gives a materiality assessment (low, medium, high), describes the current mitigation status, and names the owner. Nothing else.&lt;/p&gt;

&lt;p&gt;The power of this format is that it forces prioritisation and it is readable in under two minutes. A board member who has not been in the IT industry should be able to read this document and understand the organisation's technology risk posture without requiring interpretation.&lt;/p&gt;

&lt;p&gt;When I implemented this format for a client in the retail sector, the reaction was immediate. The CEO described it as the first IT board paper they had read that actually felt like it was written for them rather than at them. The CFO put it on the risk committee agenda as a standing item. The IT director went from being perceived as a technical operator to being seen as a business partner within two quarters.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Gets Boards to Pay Attention
&lt;/h2&gt;

&lt;p&gt;Beyond the mechanics of good communication, there are a few behaviours that reliably change how boards engage with IT leadership.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lead with questions, not answers.&lt;/strong&gt; Before presenting your strategy or your update, ask the board what they are most concerned about. You might be planning to talk about infrastructure resilience, but if the board is worried about AI adoption, you will lose them before you get to your main point. Brief conversations with the Chair or the CEO before the meeting will tell you what the board's current priorities are. Use that information.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Show trajectory, not just state.&lt;/strong&gt; A flatline is not a story. If your security posture has improved materially over the past 12 months, show the movement. If your infrastructure reliability has moved from 97% to 99.4%, that trajectory tells a different story to the board than the number alone. Boards respond to direction and momentum.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Be honest about what you do not know.&lt;/strong&gt; Nothing builds board trust faster than an IT leader who says "I do not know, but I will find out and report back" rather than improvising an answer or deflecting. Boards have seen enough confident nonsense from executives. Genuine intellectual honesty is rare and memorable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Connect technology to business outcomes consistently.&lt;/strong&gt; Every significant technology decision should have a business outcome attached to it in your framing. The firewall upgrade is not about security. It is about protecting the supply chain relationships that generate 40% of revenue. The ERP migration is not about software. It is about the operational efficiency that determines whether the company can scale without proportional headcount growth. Make the business case explicit, even when it feels obvious to you.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Quarterly Rhythm That Works
&lt;/h2&gt;

&lt;p&gt;From a governance perspective, the rhythm of board IT communication matters as much as the content. In my experience, the most effective structure is a quarterly deep-dive combined with a monthly dashboard.&lt;/p&gt;

&lt;p&gt;The quarterly session is where strategy lives. This is where you present the IT roadmap, discuss material risks in detail, walk through the performance of major technology investments, and have the longer conversations about direction and capability. This session should be 30 to 45 minutes minimum. If IT is being squeezed into a 10-minute slot in the middle of a packed agenda, you are not doing quarterly governance properly.&lt;/p&gt;

&lt;p&gt;The monthly dashboard is a one-page status update. It covers the same risk summary format described above, flags any material changes from the previous month, and notes any decisions required from the board. It should not require the IT leader to be present unless there is a specific agenda item. Boards that receive a monthly IT pulse without requiring a meeting attendance tend to feel more informed and less anxious about technology, which paradoxically tends to result in more engaged and supportive board-level conversations.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Bottom Line
&lt;/h2&gt;

&lt;p&gt;The ability to present effectively to a board is not a natural skill for most IT professionals. It requires deliberate practice, feedback, and a willingness to be judged on communication outcomes, not just technical ones.&lt;/p&gt;

&lt;p&gt;But the business case for developing this skill is straightforward. IT leaders who can hold a board's attention, communicate risk clearly, and connect technology decisions to business outcomes earn more credibility, more budget, and more latitude to do the work that actually needs doing.&lt;/p&gt;

&lt;p&gt;The CFO's test is still the right one. Before your next board update, ask yourself: does this answer "so what?" If it does, you are probably ready to present.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Social Engineering: The Human Side of Cybersecurity</title>
      <dc:creator>Daniel Glover</dc:creator>
      <pubDate>Wed, 08 Apr 2026 17:44:23 +0000</pubDate>
      <link>https://dev.to/danieljglover/social-engineering-the-human-side-of-cybersecurity-5623</link>
      <guid>https://dev.to/danieljglover/social-engineering-the-human-side-of-cybersecurity-5623</guid>
      <description>&lt;p&gt;Your people are your biggest attack surface - and your last line of defence. Here is how to build a security culture that turns users from liability into asset.&lt;/p&gt;

&lt;p&gt;Last year, a finance director at a mid-sized retailer received a call from someone claiming to be from the company IT support. The caller knew the director name, their direct dial, and the name of the email provider. Within 12 minutes, the director had handed over credentials that gave attackers access to the accounting platform, the ERP system, and the backup infrastructure. The breach cost GBP 2.3 million and took eight months to fully resolve.&lt;/p&gt;

&lt;p&gt;No malware was involved. No zero-day exploit. Just a phone call and carefully researched pretexting.&lt;/p&gt;

&lt;p&gt;This is social engineering - and it remains the most effective attack vector in modern cybersecurity, precisely because it exploits the one variable that technical controls cannot fully govern: human behaviour.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Technical Controls Are Not Enough
&lt;/h2&gt;

&lt;p&gt;Most organisations have invested heavily in perimeter security, endpoint detection, email filtering, and multi-factor authentication. These controls are necessary, but they operate on the assumption that the person on the other end of the keyboard is the legitimate owner of the credentials. Social engineering breaks this assumption systematically.&lt;/p&gt;

&lt;p&gt;A phishing email that bypasses your secure email gateway. A phone call that bypasses your network authentication. A physical tailgate through an unguarded door. These are not technical failures - they are gaps between what your controls assume and what your people actually do.&lt;/p&gt;

&lt;p&gt;The 2025 Verizon Data Breach Investigations Report found that 68% of breaches involved a human element, whether through error, privilege misuse, or social engineering. That figure has remained stubbornly consistent across multiple years of the report. This is not a technology problem waiting for a better technological solution. It is a people problem that requires a people solution.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Anatomy of a Social Engineering Attack
&lt;/h2&gt;

&lt;p&gt;Understanding how social engineers work is the first step to defending against them. Most attacks follow a recognisable pattern.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reconnaissance.&lt;/strong&gt; Attackers gather publicly available information about their target. LinkedIn tells them who works in the finance team. Twitter reveals who attended which conference and what they presented. The company website lists leadership names and organisational structure. This phase is entirely passive and entirely legal from the attacker perspective - they are using open source intelligence that anyone with an internet connection can access.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pretexting.&lt;/strong&gt; The attacker constructs a believable scenario to initiate contact. This might be a delivery driver with a missing parcel, an IT administrator investigating a suspected breach, or a colleague from another office who has forgotten their access credentials. The pretext does not need to be sophisticated - it needs to be plausible in context.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Exploitation.&lt;/strong&gt; Once contact is established, the attacker uses psychological levers to escalate access or extract information. Common techniques include authority bias (posing as someone with power), reciprocity (offering something small to trigger a return favour), and scarcity (creating urgency to suppress rational scrutiny).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disengagement.&lt;/strong&gt; After achieving the objective, the attacker exits cleanly, often leaving the victim unaware that anything has occurred until much later - if at all.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building a Security Culture That Stands Up to Pressure
&lt;/h2&gt;

&lt;p&gt;Technical controls alone cannot protect against an attacker who has successfully impersonated a trusted colleague or service provider. The defence has to operate at the human level too.&lt;/p&gt;

&lt;h3&gt;
  
  
  Make Security Behaviour Visible and Social
&lt;/h3&gt;

&lt;p&gt;One of the most powerful drivers of secure behaviour is the perception that others are doing it too. When security practices are visible - team members questioning unusual requests in meetings, colleagues verifying identity before sharing credentials, managers modelling good hygiene - they become normalised rather than seen as obstruction.&lt;/p&gt;

&lt;p&gt;Security champions programmes work on this principle. Select one person per department to act as a security point of contact, give them basic threat awareness training, and empower them to question anything that feels wrong without fear of appearing unhelpful. Over time, security awareness becomes embedded in team culture rather than siloed in an IT department that sends quarterly password reminders nobody reads.&lt;/p&gt;

&lt;h3&gt;
  
  
  Create Psychological Safety for Verification
&lt;/h3&gt;

&lt;p&gt;The biggest obstacle to effective verification is social friction. Nobody wants to be the person who challenged the finance director when they were just trying to do their job. Nobody wants to call out a colleague they have worked with for years as a potential security risk.&lt;/p&gt;

&lt;p&gt;Leaders have to explicitly create permission to verify. This means stating clearly, repeatedly, and from the top of the organisation that questioning unusual requests is expected, not rude. It means celebrating cases where people caught something suspicious rather than treating near-misses as embarrassments to be quietly buried.&lt;/p&gt;

&lt;p&gt;A simple script can help: I want to make sure we are doing this securely. Can you verify your identity through the standard channel? This depersonalises the challenge and frames verification as professional diligence rather than personal suspicion.&lt;/p&gt;

&lt;h3&gt;
  
  
  Measure What Matters
&lt;/h3&gt;

&lt;p&gt;Most security awareness programmes measure completion rates for training modules. Completion rate tells you whether someone clicked through a slide deck, not whether they would make the right decision under pressure. Behavioural metrics are far more valuable.&lt;/p&gt;

&lt;p&gt;Track how many people report phishing simulations. Measure the time between a suspicious email landing and it being reported to the security team. Run controlled exercises to see who would hand over credentials under different pretexting scenarios. Use the results to identify where cultural interventions are working and where there are persistent gaps.&lt;/p&gt;

&lt;p&gt;The CISO of a global logistics firm I worked with ran quarterly social engineering simulations across all business units and published the results - anonymised but by department - to the executive team. Within 18 months, the钓鱼 reporting rate went from under 5% to over 70%, and the number of credentials actually handed over in tests fell from 23% to under 2%. The published results created accountability in a way that internal reporting to the security team alone never could.&lt;/p&gt;

&lt;h3&gt;
  
  
  Keep Training Real and Relevant
&lt;/h3&gt;

&lt;p&gt;Generic cybersecurity awareness training that covers password management, phishing, and GDPR compliance does not prepare people for the specific attacks targeting your organisation. The most effective training programmes are built around real incidents - your own or industry equivalents - and focus on the decision points where someone could have stopped the attack chain.&lt;/p&gt;

&lt;p&gt;When a social engineering attempt is identified, whether successful or not, treat it as a learning opportunity. Anonymise the details. Walk through what the attacker did, what made it convincing, and what the correct response would have been. This turns every incident into a training moment rather than a post-mortem that only the security team attends.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Leadership Imperative
&lt;/h2&gt;

&lt;p&gt;Security culture starts with tone at the top, but it cannot stay there. If the CEO cheerfully ignores the IT department advice on a weekly basis, the message that security is optional will filter down through every layer of the organisation. Conversely, if leaders visibly engage with security practices - reporting suspicious emails, completing training without being chased, asking questions when something does not feel right - that culture cascades too.&lt;/p&gt;

&lt;p&gt;One of the most effective interventions an IT leader can make is to ensure that the board understands social engineering risk in commercial terms. The retail breach I described at the start of this article was not primarily a technology failure. It was a failure to equip the finance director with the awareness and the permission to question a phone call that should have set off alarm bells.&lt;/p&gt;

&lt;p&gt;The return on investment for security culture is difficult to quantify precisely, but the cost of not building it is measurable in breach notifications, regulatory fines, operational disruption, and reputational damage. In a climate where the average cost of a data breach in the UK now exceeds GBP 3 million, the question is not whether to invest in security culture, but how quickly you can build it before an attacker tests whether your people are your weakest link.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Social engineering exploits human psychology rather than software vulnerabilities, which means no technical control can fully eliminate the risk. Your people are simultaneously your biggest attack surface and your most capable last line of defence. Building a security culture that empowers users to question unusual requests, rewards verification over politeness, and treats every incident as a learning opportunity is not a soft initiative - it is a critical security control that compounds in value over time.&lt;/p&gt;

&lt;p&gt;The finance director who handed over credentials last year was not incompetent. They were a reasonable professional who had never been taught to treat credential requests with the same scepticism they applied to unsolicited emails. That gap in awareness is fixable. The question is whether your organisation fixes it proactively, or waits until the fix comes in the form of a breach notification.&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>security</category>
      <category>leadership</category>
      <category>securityculture</category>
    </item>
    <item>
      <title>Docker Compose Self-Hosted Services Guide</title>
      <dc:creator>Daniel Glover</dc:creator>
      <pubDate>Mon, 06 Apr 2026 23:24:45 +0000</pubDate>
      <link>https://dev.to/danieljglover/docker-compose-self-hosted-services-guide-4hj4</link>
      <guid>https://dev.to/danieljglover/docker-compose-self-hosted-services-guide-4hj4</guid>
      <description>&lt;p&gt;This article was originally published on &lt;a href="https://danieljamesglover.com/blog/2026-04-07-docker-compose-self-hosted-services/" rel="noopener noreferrer"&gt;danieljamesglover.com&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;There is a certain satisfaction in running your own stack. Not because self-hosting is always the right choice, but because the discipline of deploying, securing, and maintaining your own services teaches you things that clicking through cloud consoles never does. You understand what a reverse proxy is doing when you have configured one. You understand secrets management when you have broken something by leaving credentials in a compose file.&lt;/p&gt;

&lt;p&gt;I run a self-hosted stack at home and have built similar setups for small IT teams. This guide covers eight services worth running yourself, with working Docker Compose configurations, security notes, and an honest view of where self-hosting earns its keep versus where managed services are the right call.&lt;/p&gt;

&lt;p&gt;Before you start, two things. First: Docker Compose is the right tool here. Not Kubernetes, not Nomad, not whatever the current trend is. For a small team or a serious home lab, Compose gives you readable declarative configuration, simple rollback, and low operational overhead. Second: put these services on a segmented network.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Foundations Before the Services
&lt;/h2&gt;

&lt;p&gt;Every service in this list shares a common infrastructure requirement: a reverse proxy. Running each service on a different host port (&lt;code&gt;:8080&lt;/code&gt;, &lt;code&gt;:8443&lt;/code&gt;, &lt;code&gt;:3000&lt;/code&gt;) is fine for development, but it is a maintenance problem at any scale. You end up with port-mapping spreadsheets, inconsistent TLS handling, and no central place to manage access.&lt;/p&gt;

&lt;p&gt;Traefik solves this. It is a container-aware reverse proxy that integrates directly with Docker and manages TLS certificates automatically via Let's Encrypt.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# traefik/docker-compose.yml&lt;/span&gt;
&lt;span class="na"&gt;services&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;traefik&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;traefik:v3.0&lt;/span&gt;
    &lt;span class="na"&gt;container_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;traefik&lt;/span&gt;
    &lt;span class="na"&gt;restart&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;unless-stopped&lt;/span&gt;
    &lt;span class="na"&gt;command&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;--api.insecure=false"&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;--providers.docker=true"&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;--providers.docker.exposedbydefault=false"&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;--entrypoints.web.address=:80"&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;--entrypoints.websecure.address=:443"&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;--certificatesresolvers.letsencrypt.acme.tlschallenge=true"&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;--certificatesresolvers.letsencrypt.acme.email=you@example.com"&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json"&lt;/span&gt;
    &lt;span class="na"&gt;ports&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;80:80"&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;443:443"&lt;/span&gt;
    &lt;span class="na"&gt;volumes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;/var/run/docker.sock:/var/run/docker.sock:ro&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;./letsencrypt:/letsencrypt&lt;/span&gt;
    &lt;span class="na"&gt;networks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;proxy&lt;/span&gt;

&lt;span class="na"&gt;networks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;proxy&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;external&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create the proxy network once with &lt;code&gt;docker network create proxy&lt;/code&gt;, then every service joins it and gets a Traefik label for routing.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Portainer - Container Management
&lt;/h2&gt;

&lt;p&gt;Portainer gives you a browser-based view of running containers, volumes, networks, and compose stacks.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;services&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;portainer&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;portainer/portainer-ce:latest&lt;/span&gt;
    &lt;span class="na"&gt;container_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;portainer&lt;/span&gt;
    &lt;span class="na"&gt;restart&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;unless-stopped&lt;/span&gt;
    &lt;span class="na"&gt;volumes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;/var/run/docker.sock:/var/run/docker.sock:ro&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;portainer_data:/data&lt;/span&gt;
    &lt;span class="na"&gt;labels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;traefik.enable=true"&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;traefik.http.routers.portainer.rule=Host(`portainer.yourdomain.com`)"&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;traefik.http.routers.portainer.entrypoints=websecure"&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;traefik.http.routers.portainer.tls.certresolver=letsencrypt"&lt;/span&gt;
    &lt;span class="na"&gt;networks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;proxy&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Security note:&lt;/strong&gt; Restrict Portainer to your management VLAN or VPN. The admin account has root-equivalent access to everything Docker can reach.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. BookStack - Documentation and Knowledge Base
&lt;/h2&gt;

&lt;p&gt;BookStack uses a Book/Chapter/Page hierarchy that maps well to how IT documentation actually works.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;services&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;bookstack&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;lscr.io/linuxserver/bookstack:latest&lt;/span&gt;
    &lt;span class="na"&gt;container_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;bookstack&lt;/span&gt;
    &lt;span class="na"&gt;restart&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;unless-stopped&lt;/span&gt;
    &lt;span class="na"&gt;environment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;APP_URL=https://docs.yourdomain.com&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;DB_HOST=bookstack-db&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;DB_PASS=${DB_PASS}&lt;/span&gt;
    &lt;span class="na"&gt;volumes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;./config:/config&lt;/span&gt;
    &lt;span class="na"&gt;networks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;proxy&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;internal&lt;/span&gt;

  &lt;span class="na"&gt;bookstack-db&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;mariadb:10.11&lt;/span&gt;
    &lt;span class="na"&gt;networks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;internal&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note the &lt;code&gt;internal: true&lt;/code&gt; network for the database - the database container has no external access.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Vaultwarden - Password Management
&lt;/h2&gt;

&lt;p&gt;Vaultwarden is a lightweight Bitwarden-compatible server. For a small team sharing infrastructure credentials, it is the right answer.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;services&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;vaultwarden&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;vaultwarden/server:latest&lt;/span&gt;
    &lt;span class="na"&gt;environment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;DOMAIN=https://vault.yourdomain.com&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;SIGNUPS_ALLOWED=false&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;ADMIN_TOKEN=${ADMIN_TOKEN}&lt;/span&gt;
    &lt;span class="na"&gt;volumes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;./vw-data:/data&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;SIGNUPS_ALLOWED=false&lt;/code&gt; is essential. After creating the accounts you need, disable open registration entirely.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Uptime Kuma - Monitoring
&lt;/h2&gt;

&lt;p&gt;Uptime Kuma monitors URLs, TCP ports, Docker containers, and DNS entries, and sends alerts via Telegram, Slack, email, and a dozen other channels.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;services&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;uptime-kuma&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;louislam/uptime-kuma:1&lt;/span&gt;
    &lt;span class="na"&gt;volumes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;uptime-kuma:/app/data&lt;/span&gt;
    &lt;span class="na"&gt;labels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;traefik.enable=true"&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;traefik.http.routers.uptime-kuma.rule=Host(`status.yourdomain.com`)"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  5. Gitea - Self-Hosted Git
&lt;/h2&gt;

&lt;p&gt;Gitea is lightweight, fast, and has a GitHub-like interface. The whole thing runs on less than 256MB RAM.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;services&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;gitea&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gitea/gitea:latest&lt;/span&gt;
    &lt;span class="na"&gt;environment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;GITEA__database__DB_TYPE=postgres&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;GITEA__database__HOST=gitea-db:5432&lt;/span&gt;
    &lt;span class="na"&gt;networks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;proxy&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;internal&lt;/span&gt;

  &lt;span class="na"&gt;gitea-db&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;postgres:15&lt;/span&gt;
    &lt;span class="na"&gt;networks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;internal&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Security note:&lt;/strong&gt; Disable public registration after creating your account.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Grafana with Prometheus - Metrics and Dashboards
&lt;/h2&gt;

&lt;p&gt;Grafana and Prometheus give you time-series metrics, customisable dashboards, and alerting based on thresholds rather than binary up/down status.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;services&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;prometheus&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;prom/prometheus:latest&lt;/span&gt;
    &lt;span class="na"&gt;networks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;internal&lt;/span&gt;

  &lt;span class="na"&gt;grafana&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;grafana/grafana:latest&lt;/span&gt;
    &lt;span class="na"&gt;environment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_PASS}&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;GF_USERS_ALLOW_SIGN_UP=false&lt;/span&gt;
    &lt;span class="na"&gt;networks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;proxy&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;internal&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Prometheus is on the internal network only. Only Grafana is exposed via Traefik.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Nextcloud - File Sync and Collaboration
&lt;/h2&gt;

&lt;p&gt;For a small IT team, the value is control: your files stay on your hardware, you set the retention policy, and you know exactly who has access to what.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Homepage - Service Dashboard
&lt;/h2&gt;

&lt;p&gt;When you are running eight services, you want a single place to see them all. Homepage is a customisable application dashboard that integrates with Docker to pull running container status automatically.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Security Baseline That Actually Matters
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Secrets stay out of compose files.&lt;/strong&gt; Use a &lt;code&gt;.env&lt;/code&gt; file. Add &lt;code&gt;.env&lt;/code&gt; to &lt;code&gt;.gitignore&lt;/code&gt; immediately.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Separate networks by trust level.&lt;/strong&gt; Public-facing services on the proxy network. Database containers on internal-only networks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run scheduled security scanning.&lt;/strong&gt; Trivy and Docker Bench for Security are worth running regularly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Back up volumes, not just images.&lt;/strong&gt; The image is replaceable. Your BookStack content and Vaultwarden data are not.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pin image versions in production.&lt;/strong&gt; &lt;code&gt;latest&lt;/code&gt; can introduce breaking changes on pull.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Read the full guide with complete compose configurations at &lt;a href="https://danieljamesglover.com/blog/2026-04-07-docker-compose-self-hosted-services/" rel="noopener noreferrer"&gt;danieljamesglover.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>docker</category>
      <category>selfhosted</category>
      <category>homelab</category>
      <category>devops</category>
    </item>
    <item>
      <title>IT Budget Business Case Template</title>
      <dc:creator>Daniel Glover</dc:creator>
      <pubDate>Sun, 05 Apr 2026 17:14:27 +0000</pubDate>
      <link>https://dev.to/danieljglover/it-budget-business-case-template-2i2i</link>
      <guid>https://dev.to/danieljglover/it-budget-business-case-template-2i2i</guid>
      <description>&lt;p&gt;&lt;em&gt;This post was originally published on &lt;a href="https://danieljamesglover.com/blog/2026-04-05-it-budget-business-case-template" rel="noopener noreferrer"&gt;danieljamesglover.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Most IT budgets get rejected not because the investment is wrong, but because the case is made in the wrong language. I have presented infrastructure spending to boards at organisations with turnover north of GBP 110 million. The proposals that got approved were not the most technically sophisticated. They were the ones that translated risk, cost, and opportunity into terms a finance director and non-technical board members could evaluate.&lt;/p&gt;

&lt;p&gt;This post sets out the framework I use: a practical IT budget template and a step-by-step approach to building a business case that survives scrutiny from finance, operations, and executive leadership. Whether you are seeking approval for a network refresh, a new security platform, or a cloud migration, the structure is the same.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Most IT Business Cases Fail
&lt;/h2&gt;

&lt;p&gt;The most common failure mode is leading with technology. The business case starts with a description of the proposed solution, moves into technical specifications, and ends with a cost figure. The board or CFO says no, or asks for it to be revisited next quarter, and the IT leader cannot understand why.&lt;/p&gt;

&lt;p&gt;The problem is framing. The board is not evaluating a technology purchase. They are evaluating a risk and return decision. If your business case reads like a procurement document rather than an investment proposal, it will be treated accordingly.&lt;/p&gt;

&lt;p&gt;The second failure mode is undercosting. IT leaders frequently present the capital cost of new infrastructure while omitting ongoing operational expenditure, integration costs, staff training, and decommissioning of legacy systems. When the finance team finds the gaps, it damages credibility and kills the proposal. Present the full picture up front.&lt;/p&gt;

&lt;p&gt;The third failure mode is ignoring the do-nothing option. Every business case should model what happens if the investment is not made. Sometimes the cost of inaction is obvious. Often it needs to be made explicit: what does continued reliance on legacy infrastructure cost in downtime risk, security exposure, and staff productivity?&lt;/p&gt;

&lt;h2&gt;
  
  
  The IT Budget Template Structure
&lt;/h2&gt;

&lt;p&gt;A well-structured IT business case has eight components. Each one answers a specific question the board will ask.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Executive Summary
&lt;/h3&gt;

&lt;p&gt;One page maximum. State the problem, the proposed solution, the total cost, and the recommended decision. Write this last, but put it first. The board should understand your ask before reading a single word of detail.&lt;/p&gt;

&lt;p&gt;The executive summary should answer three questions: What are we solving? What are we proposing? What will it cost and what do we get in return?&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Problem Statement and Context
&lt;/h3&gt;

&lt;p&gt;Describe the current state in business terms. Not "our SAN is end-of-life" but "our primary storage infrastructure has exceeded its supported lifespan, creating unplanned downtime risk and limiting our ability to support growth targets." Anchor the problem in business impact: revenue risk, regulatory exposure, operational inefficiency, or competitive disadvantage.&lt;/p&gt;

&lt;p&gt;Include context that makes the scale legible. If the organisation is planning to grow headcount by 40% over two years, the infrastructure must support that growth. If a regulatory deadline is approaching, quantify the fine exposure. If the current system goes down, what does an hour of downtime cost?&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Options Appraisal
&lt;/h3&gt;

&lt;p&gt;Never present a single solution. Boards instinctively distrust proposals that arrive with only one option, because it suggests the decision has already been made and approval is being sought retrospectively.&lt;/p&gt;

&lt;p&gt;Present at least three options:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Option A: Do nothing.&lt;/strong&gt; Model the risk and cost of maintaining the status quo. Deferred investment is not free. Legacy systems accumulate technical debt, require increasing maintenance spend, and create exposure that grows over time. Force the board to weigh inaction explicitly rather than treating it as the default safe choice.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Option B: Minimum viable investment.&lt;/strong&gt; The smallest intervention that meaningfully reduces risk. This is not the preferred option, but it gives the board a lower-commitment path and frames the recommended option against a meaningful baseline.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Option C: Recommended solution.&lt;/strong&gt; The full proposal. Justify why this is the right balance of cost, risk reduction, and strategic value.&lt;/p&gt;

&lt;p&gt;If there is a fourth option worth considering (for example, outsourcing versus insourcing, or a phased approach versus a full replacement), include it. The point is to demonstrate rigour, not to limit choices artificially.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Financial Analysis
&lt;/h3&gt;

&lt;p&gt;This is the section most IT leaders underinvest in, and it is the one that matters most to finance. The financial analysis must cover four areas:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Total cost of ownership (TCO).&lt;/strong&gt; Hardware or licensing, implementation and integration, staff time and training, ongoing support and maintenance, and decommissioning costs. Be comprehensive. If you are moving to a subscription model, show the multi-year cost trajectory. If the capex converts to opex, model both and explain the cash flow implications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cost of inaction.&lt;/strong&gt; Quantify the risk exposure of not investing. For infrastructure, this typically means: what does a failure event cost? Estimate the probability of that event over a two to three year window and multiply through. A storage system with a 15% chance of failure per year, combined with an estimated GBP 50,000 cost per day of unplanned downtime, represents a meaningful expected loss that belongs in the financial model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Return on investment (ROI).&lt;/strong&gt; Where the investment generates measurable returns, quantify them. Staff productivity gains, licence cost savings from consolidation, reduction in vendor support costs, and efficiency improvements from automation are all quantifiable. Use conservative estimates and show your workings. Finance teams apply significant scepticism to benefit projections, so a credible conservative case will outperform an optimistic one that gets challenged.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Payback period.&lt;/strong&gt; How long until the investment pays for itself? For infrastructure with a primarily risk-reduction rationale, this question is harder to answer, but you can frame it in terms of avoided cost. If the investment costs GBP 80,000 and prevents an event that would cost GBP 200,000, the payback period is essentially immediate on an expected-value basis.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Risk Assessment
&lt;/h3&gt;

&lt;p&gt;Map the risks of the proposed investment against the risks of not investing. Use a simple impact-likelihood matrix. The board should see clearly that the risks of the investment (implementation disruption, cost overrun, technology lock-in) are bounded and manageable, while the risks of inaction are open-ended and growing.&lt;/p&gt;

&lt;p&gt;Include dependencies and assumptions. If the proposal relies on a third-party vendor delivering on time, flag that. If it assumes a level of internal resource that may not be available, be explicit. Boards appreciate transparency about uncertainty. What they do not appreciate is discovering unacknowledged risks after approval.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Implementation Plan
&lt;/h3&gt;

&lt;p&gt;A high-level timeline showing key phases, milestones, and decision points. This does not need to be a full project plan, but the board needs confidence that the IT function has thought through delivery, not just procurement.&lt;/p&gt;

&lt;p&gt;Include resourcing. Will this be delivered with existing staff, or does it require contractor support? If procurement is required, what is the expected timeline? Are there dependencies on third parties that could affect the schedule?&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Success Metrics
&lt;/h3&gt;

&lt;p&gt;How will you measure whether the investment delivered what it promised? Define the metrics before you seek approval, not after. For infrastructure, typical measures include: system availability (target versus baseline), incident frequency, performance benchmarks, and staff productivity indicators.&lt;/p&gt;

&lt;p&gt;Having pre-agreed success metrics serves two purposes. It forces rigour in the proposal itself, because vague benefits produce vague metrics. And it gives the board a mechanism to hold IT accountable without micromanaging delivery.&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Recommendation
&lt;/h3&gt;

&lt;p&gt;Restate the recommended option and the ask. Be direct: "I am recommending Option C at a total cost of GBP X, to be funded from [capital budget / operational budget / a combination]. I am requesting approval to proceed at today's meeting."&lt;/p&gt;

&lt;p&gt;Do not make the board infer your recommendation from the preceding analysis. State it explicitly and make it easy to approve.&lt;/p&gt;

&lt;h2&gt;
  
  
  Presenting to Finance First
&lt;/h2&gt;

&lt;p&gt;Before the board meeting, present the business case to your CFO or finance director. This is not optional. It serves three functions.&lt;/p&gt;

&lt;p&gt;First, it gives finance the opportunity to pressure-test the numbers before the board sees them. If there are gaps or errors, you would rather find them in a conversation with the CFO than in front of the full board.&lt;/p&gt;

&lt;p&gt;Second, it builds a coalition. A CFO who has reviewed and supports the proposal is an ally in the board meeting. If questions arise about the financial modelling, having the CFO validate your approach is significantly more powerful than defending it alone.&lt;/p&gt;

&lt;p&gt;Third, it demonstrates the maturity of the IT function. An IT leader who turns up to the CFO's office with a properly structured financial model, rather than a deck of technical diagrams, signals that technology is being run as a business function.&lt;/p&gt;

&lt;h2&gt;
  
  
  Handling Pushback
&lt;/h2&gt;

&lt;p&gt;The most common objections to IT budget proposals, and how to respond to them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Can we delay this to next quarter?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Quantify the cost of delay. If waiting three months means continuing to operate vulnerable infrastructure, what is the expected cost of a security incident in that window? If a project is time-sensitive due to a contractual commitment or a regulatory deadline, be specific. Delay is a decision, not a neutral outcome.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Is there a cheaper option?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You anticipated this by presenting the options appraisal. Walk back to Option B and explain why it is insufficient: what risks it leaves unresolved, what future costs it defers, what capability gaps remain. The goal is not to dismiss the question but to demonstrate that cheaper options have already been evaluated and found wanting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"What is the ROI?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For investment with a primarily risk-reduction rationale, the language of ROI can be misleading. Reframe it: the investment does not generate a return in the traditional sense, but it avoids a cost. You do not typically calculate the ROI of building fire escapes. The question is whether the avoided risk justifies the spend.&lt;/p&gt;

&lt;p&gt;For investments with genuine productivity or revenue implications, have the numbers ready. Be conservative and show your workings.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"What if it goes over budget?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Acknowledge the risk and explain your mitigation. Fixed-price contracts where appropriate, contingency reserves built into the proposal, phase-gating that preserves the option to pause if costs escalate. Boards are not expecting certainty; they are expecting prudence.&lt;/p&gt;

&lt;h2&gt;
  
  
  The One-Page Version
&lt;/h2&gt;

&lt;p&gt;For smaller investments or organisations with a lighter governance process, the full eight-section template may be more than is needed. In those cases, a single page covering the following is sufficient:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What is broken or at risk right now&lt;/li&gt;
&lt;li&gt;What we are proposing and why this option&lt;/li&gt;
&lt;li&gt;Total cost (capex and opex, multi-year where relevant)&lt;/li&gt;
&lt;li&gt;What happens if we do not do this&lt;/li&gt;
&lt;li&gt;What success looks like and when we expect to see it&lt;/li&gt;
&lt;li&gt;Decision requested&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The principle is the same regardless of format: ground the proposal in business impact, show the full cost picture, and make the decision easy to say yes to.&lt;/p&gt;

&lt;h2&gt;
  
  
  Connecting Budget to Strategy
&lt;/h2&gt;

&lt;p&gt;The strongest IT budget proposals are not standalone funding requests. They are explicitly connected to the organisation's strategic objectives.&lt;/p&gt;

&lt;p&gt;If the business is growing through acquisition, infrastructure investment that supports integration capacity is not overhead: it is an enabler of the growth strategy. If the organisation has a compliance obligation, security investment is not discretionary: it is a requirement. If the business is automating operational processes to reduce headcount costs, the technology enabling that automation has a direct and calculable return.&lt;/p&gt;

&lt;p&gt;This connection only works if IT has visibility into business strategy, which means IT leadership needs to be present in strategic planning conversations, not just budget-setting ones. The IT function that waits to be told what to spend cannot make a compelling case for investment. The IT function that understands where the business is going can position every infrastructure proposal as an enabler of the journey.&lt;/p&gt;

&lt;p&gt;This is, ultimately, the difference between IT as a cost centre and IT as a strategic function. The budget template is a tool. The mindset shift is the work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical Starting Points
&lt;/h2&gt;

&lt;p&gt;For IT leaders building their first structured business case, I recommend starting with your highest-risk legacy system and working through the cost-of-inaction model. The numbers are usually more compelling than expected, because risk exposure is almost always underestimated when it is not explicitly quantified.&lt;/p&gt;

&lt;p&gt;If you have not already built a relationship with your CFO or finance director as a peer rather than a budget supplicant, start there before the next investment cycle. The business case conversation is much easier when finance already trusts your judgement.&lt;/p&gt;

&lt;p&gt;And if you are presenting to a board that has historically treated IT as overhead, the metrics and board communication approaches covered in &lt;a href="https://danieljamesglover.com/blog/2026-03-12-it-metrics-board-reporting" rel="noopener noreferrer"&gt;IT metrics that matter to boards&lt;/a&gt; are worth reviewing alongside this framework. Structural changes in how IT is perceived take multiple cycles, but they start with the quality of the case you put in front of the room.&lt;/p&gt;

&lt;p&gt;The full &lt;a href="https://danieljamesglover.com/blog/2025-12-23-it-strategy-review-checklist-2026" rel="noopener noreferrer"&gt;IT strategy review checklist&lt;/a&gt; is also a useful companion for aligning your budget cycle with broader strategic planning, particularly if you are setting priorities across a mixed portfolio of maintenance, growth, and transformation investment.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Daniel Glover is an IT Director and technical consultant with experience leading infrastructure and security programmes at mid-market and enterprise scale. He works with IT leaders on strategy, governance, and the organisational dimensions of technology delivery.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>leadership</category>
      <category>career</category>
      <category>productivity</category>
      <category>management</category>
    </item>
    <item>
      <title>Proxmox Backup and Disaster Recovery Guide</title>
      <dc:creator>Daniel Glover</dc:creator>
      <pubDate>Thu, 02 Apr 2026 17:05:29 +0000</pubDate>
      <link>https://dev.to/danieljglover/proxmox-backup-and-disaster-recovery-guide-26ej</link>
      <guid>https://dev.to/danieljglover/proxmox-backup-and-disaster-recovery-guide-26ej</guid>
      <description>&lt;p&gt;Most backup strategies look fine in a diagram. There is production, there is backup storage, there is some kind of retention policy, and there is a comforting sentence about disaster recovery. Then a host fails, a datastore corrupts, or ransomware lands on the management network, and you discover the truth: you did not have a recovery strategy, you had a hope strategy.&lt;/p&gt;

&lt;p&gt;I like Proxmox because it makes the mechanics of backup straightforward. The dangerous bit is that this can create false confidence. Clicking "Add backup job" is easy. Building a recovery setup that survives hardware failure, operator error and a bad week is not. This guide is the practical version of what I look for when setting up Proxmox backups for a small IT team or a serious home lab.&lt;/p&gt;

&lt;p&gt;If you need the leadership view first, read my guide to an &lt;a href="https://danieljamesglover.com/blog/2026-02-23-it-disaster-recovery-plan-guide/" rel="noopener noreferrer"&gt;IT disaster recovery plan that actually works&lt;/a&gt;. If you are thinking specifically about active attack scenarios, pair this with the &lt;a href="https://danieljamesglover.com/blog/2026-03-15-ransomware-response-playbook/" rel="noopener noreferrer"&gt;ransomware response playbook&lt;/a&gt;. This post is about the hands-on Proxmox layer underneath both.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Good Looks Like
&lt;/h2&gt;

&lt;p&gt;A usable Proxmox backup and DR setup does five things well:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It backs up every important VM and container automatically.&lt;/li&gt;
&lt;li&gt;It keeps enough restore points to be useful without filling storage.&lt;/li&gt;
&lt;li&gt;It isolates backup storage from the main virtualisation environment.&lt;/li&gt;
&lt;li&gt;It proves recoverability with regular test restores.&lt;/li&gt;
&lt;li&gt;It gives you an off-site option so one hardware problem does not take out everything.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That sounds obvious, but most weak setups fail on one of those five points. The most common mistake is treating backup completion as the goal. It is not. Recovery within an acceptable time is the goal.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start With the Failure Modes
&lt;/h2&gt;

&lt;p&gt;Before touching the GUI, define what you are defending against.&lt;/p&gt;

&lt;p&gt;For most Proxmox environments, the realistic failure modes are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Single VM or container issue.&lt;/strong&gt; Bad update, accidental deletion, filesystem corruption.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Host failure.&lt;/strong&gt; Disk dies, motherboard dies, bad kernel update, RAID issue.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage failure.&lt;/strong&gt; Local datastore corruption or accidental removal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security incident.&lt;/strong&gt; Compromised admin account, malicious encryption, attacker targeting backup infrastructure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Site loss.&lt;/strong&gt; Fire, theft, power event, or catastrophic network issue.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Your design should map to those scenarios. Local backups help with VM mistakes. Separate backup infrastructure helps with host failure. Off-site replication helps with site loss. If one control is supposed to solve everything, it probably solves less than you think.&lt;/p&gt;

&lt;h2&gt;
  
  
  Proxmox Backup Server Beats Dumping Files to NFS
&lt;/h2&gt;

&lt;p&gt;Proxmox VE can back up to file-level storage, and that is still better than having nothing. But if you are taking this seriously, use Proxmox Backup Server.&lt;/p&gt;

&lt;p&gt;The reason is not fashion. It is capability.&lt;/p&gt;

&lt;p&gt;Proxmox Backup Server gives you de-duplicated storage, better retention handling, verification workflows, and sync jobs to a remote PBS instance. Proxmox also explicitly recommends PBS on a dedicated host because of those advanced features. For a small team, that translates into two practical benefits: lower storage growth and a cleaner path to off-site copies.&lt;/p&gt;

&lt;p&gt;If you are still writing backup archives to the same host cluster, ask yourself a brutal question: what happens if the host storage, the hypervisor, and the backup target all fail together? If the answer is "that would be awkward", you do not have enough separation.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Baseline Architecture
&lt;/h2&gt;

&lt;p&gt;For a small but sensible setup, I would aim for this baseline:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Primary Proxmox VE host or cluster&lt;/strong&gt; running production workloads.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dedicated Proxmox Backup Server&lt;/strong&gt; on separate storage, ideally not on the same disks as the workloads.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nightly backup jobs&lt;/strong&gt; for all critical VMs and containers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prune schedule&lt;/strong&gt; that keeps short-term and long-term restore points.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Verification jobs&lt;/strong&gt; to detect corruption before you need a restore.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Off-site copy&lt;/strong&gt; using a second PBS instance or another synced destination.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you can only afford one improvement this month, make it the dedicated PBS host. If you can afford two, add off-site sync.&lt;/p&gt;

&lt;h2&gt;
  
  
  Backup Mode Choices Matter
&lt;/h2&gt;

&lt;p&gt;Proxmox gives you different backup modes, and they are not interchangeable.&lt;/p&gt;

&lt;p&gt;For VMs, snapshot mode is usually the right default because it keeps downtime low. With the guest agent enabled, Proxmox can freeze and thaw the filesystem to improve consistency. Stop mode gives you the highest consistency, but at the cost of downtime, so I reserve it for workloads where application-level consistency matters more than availability.&lt;/p&gt;

&lt;p&gt;For containers, the decision depends more on storage and tolerance for interruption. Snapshot mode is excellent when the underlying storage supports it. Suspend mode can reduce downtime, but it needs temporary space. Stop mode is the blunt instrument. Use it when simplicity matters more than elegance.&lt;/p&gt;

&lt;p&gt;The mistake here is picking one mode for everything without thinking about workload behaviour. Domain controllers, databases, app servers and throwaway lab machines do not all deserve identical handling.&lt;/p&gt;

&lt;h2&gt;
  
  
  Retention: Keep More Than Yesterday, Less Than Forever
&lt;/h2&gt;

&lt;p&gt;Retention is where people either hoard uselessly or prune themselves into danger.&lt;/p&gt;

&lt;p&gt;A practical retention policy for a small team might look like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keep 7 daily backups&lt;/li&gt;
&lt;li&gt;Keep 4 weekly backups&lt;/li&gt;
&lt;li&gt;Keep 3 monthly backups&lt;/li&gt;
&lt;li&gt;Keep 1-2 yearly backups for critical systems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That gives you recent rollback points, medium-term safety for slow-burn issues, and a minimal historical archive. The exact numbers depend on data churn and storage budget, but the principle is stable: retain enough history to catch corruption, mistakes and delayed detection.&lt;/p&gt;

&lt;p&gt;Remember that ransomware and insider mistakes are not always discovered on the same day they happen. If your retention only covers the last three days, you may be faithfully preserving three versions of a bad outcome.&lt;/p&gt;

&lt;h2&gt;
  
  
  Backup Isolation Is Non-Negotiable
&lt;/h2&gt;

&lt;p&gt;I have written before that attackers increasingly target backup systems because destroying recovery options dramatically increases the chance of payment. The same logic applies in Proxmox environments.&lt;/p&gt;

&lt;p&gt;A few practical rules:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Put backup infrastructure on a restricted management network.&lt;/li&gt;
&lt;li&gt;Do not use the same credentials everywhere.&lt;/li&gt;
&lt;li&gt;Limit who can reach PBS over the network.&lt;/li&gt;
&lt;li&gt;Do not mount the backup datastore casually on random admin machines.&lt;/li&gt;
&lt;li&gt;Treat the backup server as a critical security asset, not a storage afterthought.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your Proxmox host, your PBS server and your admin workstation all sit on the same flat network with shared credentials, you have convenience, not resilience. The &lt;a href="https://danieljamesglover.com/blog/2026-04-01-home-lab-network-segmentation-guide/" rel="noopener noreferrer"&gt;home lab segmentation guide&lt;/a&gt; applies here too. Good backup design and good network design are joined at the hip.&lt;/p&gt;

&lt;h2&gt;
  
  
  Off-Site Copies Are Where DR Becomes Real
&lt;/h2&gt;

&lt;p&gt;Local backup is backup. Off-site backup is disaster recovery.&lt;/p&gt;

&lt;p&gt;This is where PBS sync jobs are so useful. A remote PBS can pull datastore contents into a local target on a schedule, which gives you a workable off-site pattern without building a completely separate toolchain. For small teams, that is attractive because it keeps operations consistent. Same interface, same restore logic, less context switching.&lt;/p&gt;

&lt;p&gt;The point is not just geography. It is blast radius.&lt;/p&gt;

&lt;p&gt;If the primary site is lost, encrypted or electrically unwell, you need a copy that was not affected by the same event. That might be a second office, a co-lo box, or a trusted remote location over a tunnel. However you do it, make sure the off-site path is tested and not just documented.&lt;/p&gt;

&lt;h2&gt;
  
  
  Verification and Restore Testing
&lt;/h2&gt;

&lt;p&gt;This is the part that separates adults from optimists.&lt;/p&gt;

&lt;p&gt;A backup job finishing successfully does not prove the backup is restorable. It proves a process completed. You still need to validate the result.&lt;/p&gt;

&lt;p&gt;My rule is simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Verify backups routinely&lt;/strong&gt; so corruption surfaces early.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test restores monthly&lt;/strong&gt; for at least one representative workload.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Time the restore&lt;/strong&gt; so you know whether your recovery objectives are fantasy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Document the gotchas&lt;/strong&gt; you hit during restore, not just the happy path.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A sensible restore test matrix includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One small utility VM&lt;/li&gt;
&lt;li&gt;One business-critical application VM&lt;/li&gt;
&lt;li&gt;One container&lt;/li&gt;
&lt;li&gt;One file-level restore from inside a backup&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you have never restored a Proxmox VM under pressure, do not assume you know how long it takes. You will discover little frictions you forgot to model: VLAN mappings, IP conflicts, DNS updates, missing credentials, application service dependencies. This is exactly why testing exists.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Simple Recovery Runbook Template
&lt;/h2&gt;

&lt;p&gt;Every Proxmox environment should have a short recovery runbook. Not a sixty-page binder. A short document somebody can use at 3 AM.&lt;/p&gt;

&lt;p&gt;Mine would include:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Where backups live&lt;/li&gt;
&lt;li&gt;Which credentials are needed and where they are stored&lt;/li&gt;
&lt;li&gt;The order in which core systems should be restored&lt;/li&gt;
&lt;li&gt;Network dependencies for each critical VM&lt;/li&gt;
&lt;li&gt;Approximate restore times from the last successful test&lt;/li&gt;
&lt;li&gt;Who signs off on failover or rebuild decisions&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is where technical recovery joins business reality. Restoring the wrong system first can waste hours. Your monitoring, identity and DNS services often matter more than the application people shout about first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common Proxmox Backup Mistakes
&lt;/h2&gt;

&lt;p&gt;I see the same issues repeatedly:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Backing up to the same failure domain.&lt;/strong&gt; If your VM storage and backup storage rely on the same physical box, you have reduced recovery options.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No guest agent on important VMs.&lt;/strong&gt; Snapshot backups are better with proper filesystem quiescing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No retention logic.&lt;/strong&gt; Backups either accumulate until storage fills or get pruned too aggressively.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No verification.&lt;/strong&gt; Corruption remains invisible until the worst possible moment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No restore drills.&lt;/strong&gt; The team learns the process during an incident instead of before one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No off-site copy.&lt;/strong&gt; One bad event can wipe out both production and recovery.&lt;/p&gt;

&lt;p&gt;These are all fixable. None of them are glamorous. They are also the difference between a manageable incident and a career-limiting week.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where I Would Start This Week
&lt;/h2&gt;

&lt;p&gt;If your current Proxmox backup setup is basic, do these in order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Stand up a dedicated Proxmox Backup Server.&lt;/li&gt;
&lt;li&gt;Move critical VM and container backups onto a nightly schedule.&lt;/li&gt;
&lt;li&gt;Apply a sensible retention policy.&lt;/li&gt;
&lt;li&gt;Restrict network access to PBS.&lt;/li&gt;
&lt;li&gt;Run one restore test and record the actual time.&lt;/li&gt;
&lt;li&gt;Add a remote PBS sync for off-site protection.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That sequence gets you from "we do backups" to "we have the start of a disaster recovery capability".&lt;/p&gt;

&lt;p&gt;The main thing to remember is that Proxmox makes backup accessible, but accessibility is not the same as resilience. Resilience comes from separation, verification, testing and repetition. If you build those habits into your environment now, the next incident is still unpleasant, but it stops being existential.&lt;/p&gt;

&lt;p&gt;And that is the real goal. Not perfect diagrams. Not backup dashboards full of green ticks. Just the quiet confidence that when something breaks, you know exactly how you are getting it back.&lt;/p&gt;

</description>
      <category>proxmox</category>
      <category>backup</category>
      <category>virtualisation</category>
      <category>infrastructure</category>
    </item>
    <item>
      <title>Automated Security Scanning for Small IT Teams</title>
      <dc:creator>Daniel Glover</dc:creator>
      <pubDate>Wed, 01 Apr 2026 17:04:33 +0000</pubDate>
      <link>https://dev.to/danieljglover/automated-security-scanning-for-small-it-teams-1b8o</link>
      <guid>https://dev.to/danieljglover/automated-security-scanning-for-small-it-teams-1b8o</guid>
      <description>&lt;p&gt;Most vulnerability scanning advice assumes you have a dedicated security team, a six-figure tooling budget and a CISO who signs off on quarterly pen tests. If you are running IT for a small or mid-sized organisation with one to five people on your team, that advice is useless.&lt;/p&gt;

&lt;p&gt;You still need to find vulnerabilities before attackers do. You just need to do it with free tools, limited time and no dedicated security analyst. The good news is that the open source ecosystem has matured to the point where a small team can build an automated scanning pipeline that runs daily, catches real issues and costs nothing beyond the server it runs on.&lt;/p&gt;

&lt;p&gt;I have built exactly this kind of pipeline across several organisations. This guide covers the tools I actually use, how to stitch them together, and how to avoid drowning in false positives when you do not have the headcount to triage thousands of findings.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem with Enterprise Scanning Tools
&lt;/h2&gt;

&lt;p&gt;Enterprise vulnerability scanners like Qualys, Rapid7 InsightVM and Tenable Nessus Professional are excellent products. They are also designed for organisations with security operations centres, dedicated vulnerability management teams and annual budgets north of fifty thousand pounds.&lt;/p&gt;

&lt;p&gt;When you license one of these for a small team, three things tend to happen:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The scan runs, produces 4,000 findings, and nobody has time to look at them.&lt;/strong&gt; A vulnerability scanner that generates noise you cannot act on is worse than no scanner at all. It creates a false sense of security.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The tool sits idle after the initial excitement wears off.&lt;/strong&gt; Without a dedicated person to maintain scan schedules, update plugins and chase remediation, the scanner becomes shelfware.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You spend your entire security budget on detection and have nothing left for remediation.&lt;/strong&gt; Finding vulnerabilities is only half the job. Fixing them is where the real work happens.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Small teams need a different approach. Fewer findings, higher confidence, automated scheduling and zero licensing cost.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Scanning Stack I Recommend
&lt;/h2&gt;

&lt;p&gt;After testing dozens of tools over the years, I have settled on a stack of four open source scanners that cover different layers of the infrastructure. None of them cost anything. All of them can be automated with cron jobs or CI pipelines.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Nuclei - Network and Web Application Scanning
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/projectdiscovery/nuclei" rel="noopener noreferrer"&gt;Nuclei&lt;/a&gt; from ProjectDiscovery has become my default scanner for anything HTTP-facing. It uses YAML-based templates to check for specific vulnerabilities, misconfigurations and exposed services. The community template library covers over 8,000 checks and grows daily.&lt;/p&gt;

&lt;p&gt;What makes Nuclei exceptional for small teams is its signal-to-noise ratio. Each template targets a specific, known issue. You do not get vague "possible vulnerability" findings - you get "this exact CVE is present on this endpoint" or nothing. That precision means you can actually act on every finding.&lt;/p&gt;

&lt;p&gt;A basic scan looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nuclei &lt;span class="nt"&gt;-u&lt;/span&gt; https://yoursite.com &lt;span class="nt"&gt;-t&lt;/span&gt; cves/ &lt;span class="nt"&gt;-t&lt;/span&gt; misconfigurations/ &lt;span class="nt"&gt;-severity&lt;/span&gt; critical,high &lt;span class="nt"&gt;-o&lt;/span&gt; results.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Filter by severity from day one. Critical and high findings only. You can expand to medium later once you have a handle on the serious stuff.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Trivy - Container and Infrastructure Scanning
&lt;/h3&gt;

&lt;p&gt;If you run Docker containers (and most organisations do at this point), &lt;a href="https://github.com/aquasecurity/trivy" rel="noopener noreferrer"&gt;Trivy&lt;/a&gt; from Aqua Security is essential. It scans container images, filesystem paths, Git repositories and Kubernetes clusters for known CVEs in OS packages and application dependencies.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;trivy image your-app:latest &lt;span class="nt"&gt;--severity&lt;/span&gt; CRITICAL,HIGH
trivy fs /path/to/project &lt;span class="nt"&gt;--severity&lt;/span&gt; CRITICAL,HIGH
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Trivy also scans Infrastructure as Code files (Terraform, CloudFormation, Dockerfiles) for misconfigurations. One tool covers both your running containers and your deployment templates.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. OpenVAS - Traditional Network Vulnerability Scanning
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.openvas.org/" rel="noopener noreferrer"&gt;OpenVAS&lt;/a&gt; (now part of Greenbone Community Edition) is the open source equivalent of Nessus. It runs authenticated and unauthenticated scans against network hosts, checking for missing patches, weak configurations and known vulnerabilities across operating systems, network devices and services.&lt;/p&gt;

&lt;p&gt;OpenVAS has a steeper learning curve than Nuclei or Trivy. The initial setup involves deploying the Greenbone Community containers, syncing the vulnerability feed (which takes hours on first run) and configuring scan targets. But once it is running, it provides the deep network-level scanning that web-focused tools miss.&lt;/p&gt;

&lt;p&gt;I deploy OpenVAS on a dedicated VM and schedule weekly full scans overnight. The web interface generates PDF reports that you can hand directly to management or auditors.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. CIS Benchmarks with Lynis - Host Hardening Audits
&lt;/h3&gt;

&lt;p&gt;Vulnerability scanners find known CVEs. They do not tell you whether your Linux servers are actually hardened. &lt;a href="https://cisofy.com/lynis/" rel="noopener noreferrer"&gt;Lynis&lt;/a&gt; fills that gap by auditing system configurations against CIS benchmarks and security best practices.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;lynis audit system &lt;span class="nt"&gt;--quick&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lynis checks SSH configuration, firewall rules, file permissions, kernel parameters, authentication settings and dozens of other hardening controls. The output is a prioritised list of suggestions with a hardening index score. Run it monthly against your server fleet and track the score over time.&lt;/p&gt;




&lt;h2&gt;
  
  
  Building the Automation Pipeline
&lt;/h2&gt;

&lt;p&gt;Individual tools are useful. An automated pipeline that runs them on a schedule and delivers actionable results is transformative. Here is how I structure it.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Architecture
&lt;/h3&gt;

&lt;p&gt;Everything runs from a single management VM or server. In my current setup, that is a Debian VM on Proxmox with 4GB of RAM and 2 CPU cores - nothing expensive. The pipeline is orchestrated by simple bash scripts triggered by cron.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Management VM
├── Nuclei (daily, web targets)
├── Trivy (daily, container images)
├── OpenVAS (weekly, network hosts)
├── Lynis (monthly, server audit)
└── Report aggregator (sends summary)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 1: Define Your Targets
&lt;/h3&gt;

&lt;p&gt;Before you scan anything, build a target inventory. You cannot secure what you do not know about. I use &lt;a href="https://netbox.dev/" rel="noopener noreferrer"&gt;NetBox&lt;/a&gt; for this, but a simple spreadsheet works if you are starting out. What matters is having a definitive list of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;All public-facing domains and subdomains&lt;/li&gt;
&lt;li&gt;All internal IP ranges and subnets&lt;/li&gt;
&lt;li&gt;All container images you deploy&lt;/li&gt;
&lt;li&gt;All servers and network devices&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you have already &lt;a href="https://dev.to/blog/2026-03-09-network-segmentation-guide/"&gt;segmented your network&lt;/a&gt;, you will have a natural structure for organising scan targets by zone.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Create the Scan Scripts
&lt;/h3&gt;

&lt;p&gt;I keep each scanner in its own script so they can run independently or together. Here is a simplified version of the daily web scan:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;
&lt;span class="c"&gt;# daily-web-scan.sh&lt;/span&gt;
&lt;span class="nv"&gt;DATE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;date&lt;/span&gt; +%Y-%m-%d&lt;span class="si"&gt;)&lt;/span&gt;
&lt;span class="nv"&gt;TARGETS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"/opt/scanning/targets/web-targets.txt"&lt;/span&gt;
&lt;span class="nv"&gt;OUTPUT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"/opt/scanning/results/&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;DATE&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;-nuclei.json"&lt;/span&gt;

nuclei &lt;span class="nt"&gt;-l&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$TARGETS&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-t&lt;/span&gt; cves/ &lt;span class="nt"&gt;-t&lt;/span&gt; misconfigurations/ &lt;span class="nt"&gt;-t&lt;/span&gt; exposures/ &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-severity&lt;/span&gt; critical,high &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-json-export&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$OUTPUT&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-silent&lt;/span&gt;

&lt;span class="c"&gt;# Count findings&lt;/span&gt;
&lt;span class="nv"&gt;CRITICAL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s1"&gt;'"severity":"critical"'&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$OUTPUT&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; 2&amp;gt;/dev/null &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;echo &lt;/span&gt;0&lt;span class="si"&gt;)&lt;/span&gt;
&lt;span class="nv"&gt;HIGH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s1"&gt;'"severity":"high"'&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$OUTPUT&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; 2&amp;gt;/dev/null &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;echo &lt;/span&gt;0&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$CRITICAL&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;-gt&lt;/span&gt; 0 &lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$HIGH&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;-gt&lt;/span&gt; 0 &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
  &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"ALERT: &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CRITICAL&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; critical, &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;HIGH&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; high findings"&lt;/span&gt; | &lt;span class="se"&gt;\&lt;/span&gt;
    mail &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s2"&gt;"Security Scan Alert - &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;DATE&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; security@yourcompany.com
&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The container scan follows the same pattern:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;
&lt;span class="c"&gt;# daily-container-scan.sh&lt;/span&gt;
&lt;span class="nv"&gt;DATE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;date&lt;/span&gt; +%Y-%m-%d&lt;span class="si"&gt;)&lt;/span&gt;
&lt;span class="nv"&gt;IMAGES&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;docker image &lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;--format&lt;/span&gt; &lt;span class="s1"&gt;'{{.Repository}}:{{.Tag}}'&lt;/span&gt; | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;none&amp;gt;'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;for &lt;/span&gt;IMAGE &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="nv"&gt;$IMAGES&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do
  &lt;/span&gt;trivy image &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$IMAGE&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;--severity&lt;/span&gt; CRITICAL,HIGH &lt;span class="nt"&gt;--format&lt;/span&gt; json &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"/opt/scanning/results/&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;DATE&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;-trivy.json"&lt;/span&gt;
&lt;span class="k"&gt;done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3: Schedule with Cron
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Daily scans at 02:00
0 2 * * * /opt/scanning/daily-web-scan.sh
0 3 * * * /opt/scanning/daily-container-scan.sh

# Weekly network scan on Sunday at 01:00
0 1 * * 0 /opt/scanning/weekly-network-scan.sh

# Monthly hardening audit on 1st at 04:00
0 4 1 * * /opt/scanning/monthly-lynis-audit.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run scans outside business hours. Network scans in particular can generate noticeable traffic, and you do not want to interfere with production systems during the working day.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Aggregate and Report
&lt;/h3&gt;

&lt;p&gt;The biggest mistake small teams make is generating scan reports that nobody reads. My approach is brutal simplicity: one daily email with three numbers.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Critical findings:&lt;/strong&gt; drop everything and fix these today&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;High findings:&lt;/strong&gt; plan remediation this week&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Delta from yesterday:&lt;/strong&gt; are things getting better or worse?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If all three numbers are zero, the email is one line: "No critical or high findings. All clear." That takes two seconds to read and confirms your systems are in good shape.&lt;/p&gt;

&lt;p&gt;For management reporting, I generate a monthly summary showing the trend over time. A chart that shows critical findings decreasing week over week is the most powerful evidence you can present to justify your security programme.&lt;/p&gt;




&lt;h2&gt;
  
  
  Handling the Results Without Drowning
&lt;/h2&gt;

&lt;p&gt;A scanning pipeline that generates findings is only valuable if you can act on them. With a team of one to five people who also handle helpdesk tickets, infrastructure projects and everything else, you need a triage system that is ruthless about prioritisation.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Three-Bucket Approach
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Bucket 1: Fix immediately (critical severity, internet-facing).&lt;/strong&gt; These are the findings that could lead to a breach tomorrow. Known exploited vulnerabilities on public-facing systems. Exposed admin panels. Default credentials. Drop whatever you are doing and patch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bucket 2: Fix this sprint (high severity, or critical on internal systems).&lt;/strong&gt; These are serious but not imminently exploitable. Missing patches on internal servers, weak TLS configurations, outdated container base images. Schedule them into your normal work cycle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bucket 3: Accept or suppress (medium/low, or known exceptions).&lt;/strong&gt; Some findings are informational. Some are false positives for your environment. Some are on systems you are decommissioning next month. Mark these as accepted with a reason and move on. Do not let them clutter your dashboard.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tracking Remediation
&lt;/h3&gt;

&lt;p&gt;You do not need a GRC platform. A simple tracking method works - I have used everything from a shared spreadsheet to issues in a Git repository. What matters is recording:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What was found and when&lt;/li&gt;
&lt;li&gt;Who is responsible for fixing it&lt;/li&gt;
&lt;li&gt;The target remediation date&lt;/li&gt;
&lt;li&gt;When it was actually fixed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This creates an audit trail. When someone asks "how do you manage vulnerabilities?" you can show them a documented process with evidence of findings being identified and resolved. That is what auditors and cyber insurers actually want to see.&lt;/p&gt;

&lt;p&gt;If you are building out your security monitoring more broadly, a &lt;a href="https://dev.to/blog/2026-03-19-siem-strategy-it-leaders/"&gt;SIEM strategy&lt;/a&gt; can help you correlate scan findings with other security events across your environment.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Free Tools Cannot Do
&lt;/h2&gt;

&lt;p&gt;I am a strong advocate for open source scanning, but I am not going to pretend it covers everything. There are genuine gaps you should be aware of.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Authenticated web application scanning&lt;/strong&gt; is where commercial tools still have an edge. Nuclei excels at unauthenticated checks, but crawling behind a login page and testing business logic requires tools like Burp Suite Professional or a manual pen test. Budget for an annual pen test from a CREST-certified provider if your organisation handles sensitive data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Compliance-specific scanning&lt;/strong&gt; for PCI DSS, ISO 27001 or Cyber Essentials often requires specific tooling or assessor-approved scan providers. OpenVAS can help you prepare, but the official scan needs to come from an approved vendor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cloud-native security posture management&lt;/strong&gt; (CSPM) for AWS, Azure or GCP is not covered by these tools. If you run cloud infrastructure, look at open source options like Prowler (AWS) or ScoutSuite (multi-cloud) to complement your scanning pipeline.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Attack surface management&lt;/strong&gt; - discovering assets you did not know you had - requires a different approach. Tools like Subfinder and httpx from ProjectDiscovery can help enumerate your external attack surface, but that is a topic for another post.&lt;/p&gt;




&lt;h2&gt;
  
  
  Getting Started This Week
&lt;/h2&gt;

&lt;p&gt;If you do nothing else, do this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Install Nuclei&lt;/strong&gt; on any Linux machine. It is a single binary with no dependencies. Scan your public-facing domains tonight.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Install Trivy&lt;/strong&gt; and scan your Docker images. You will likely find critical CVEs in base images you have not updated.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set up a cron job&lt;/strong&gt; to run both scans daily. Even without fancy reporting, the scan results accumulate and give you a baseline.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create a simple target list.&lt;/strong&gt; Every IP address, every domain, every container image. You cannot scan what you have not listed.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can add OpenVAS and Lynis later once you have the basics running. Start small, automate early, and expand as you build confidence.&lt;/p&gt;

&lt;p&gt;If a scan does find something critical and you suspect a compromise, having a &lt;a href="https://dev.to/blog/2026-03-15-ransomware-response-playbook/"&gt;ransomware response playbook&lt;/a&gt; ready means you are not making decisions under pressure.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Mindset Shift
&lt;/h2&gt;

&lt;p&gt;The real value of automated scanning is not the tools. It is the shift from reactive to proactive security. Most small IT teams only think about vulnerabilities when something goes wrong - a failed audit, a near-miss incident, a news story about the latest critical CVE.&lt;/p&gt;

&lt;p&gt;Running daily scans changes that dynamic. You start each morning knowing the state of your infrastructure. You catch issues before auditors do. You build a track record of proactive security that makes a material difference to your organisation's risk posture.&lt;/p&gt;

&lt;p&gt;You do not need a security operations centre to do this. You need a VM, four open source tools and an hour to set up some cron jobs. The hardest part is starting.&lt;/p&gt;

</description>
      <category>security</category>
      <category>opensource</category>
      <category>devops</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Home Lab Network Segmentation: A Practical Guide with VLANs, OPNsense and Proxmox</title>
      <dc:creator>Daniel Glover</dc:creator>
      <pubDate>Wed, 01 Apr 2026 13:17:06 +0000</pubDate>
      <link>https://dev.to/danieljglover/home-lab-network-segmentation-a-practical-guide-with-vlans-opnsense-and-proxmox-3dd5</link>
      <guid>https://dev.to/danieljglover/home-lab-network-segmentation-a-practical-guide-with-vlans-opnsense-and-proxmox-3dd5</guid>
      <description>&lt;p&gt;Most home lab guides skip the boring bit. They show you how to spin up containers and virtual machines, but leave everything sitting on a single flat network where your NAS, your experimental Kubernetes cluster and your kids' tablets all share the same broadcast domain. That is fine until your latest Docker experiment gets compromised and suddenly has line of sight to every device in your house.&lt;/p&gt;

&lt;p&gt;I run a segmented home lab built on Proxmox and OPNsense. It is not theoretical - it is the network I use every day. This guide walks through exactly how I structured it, why I made the choices I did, and how you can do the same thing over a weekend.&lt;/p&gt;

&lt;p&gt;If you want the enterprise version of this conversation, I have written a separate &lt;a href="https://dev.to/blog/2026-03-09-network-segmentation-guide/"&gt;network segmentation strategy guide&lt;/a&gt; aimed at IT leaders. This post is the hands-on, home lab version.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Bother Segmenting a Home Lab?
&lt;/h2&gt;

&lt;p&gt;The short answer: containment.&lt;/p&gt;

&lt;p&gt;A flat network means every device can talk to every other device. Your Proxmox host, your IoT smart plugs, your work laptop and that sketchy container you pulled from Docker Hub last Tuesday all exist in the same trust zone. If any one of them gets compromised, the attacker has unrestricted lateral movement across everything you own.&lt;/p&gt;

&lt;p&gt;Segmentation fixes this by creating boundaries. A compromised IoT device cannot reach your NAS. A rogue container cannot scan your management interfaces. Each segment has explicit rules about what traffic is allowed in and out.&lt;/p&gt;

&lt;p&gt;Beyond security, segmentation gives you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Broadcast domain control.&lt;/strong&gt; IoT devices are notoriously chatty. Isolating them stops mDNS and SSDP noise from polluting your production VLANs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A realistic test environment.&lt;/strong&gt; If you work in IT, your home lab should mirror enterprise patterns. Segmented networks with firewall rules are how production environments work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Traffic visibility.&lt;/strong&gt; When each VLAN has defined purposes, firewall logs become meaningful. You can see exactly what is talking to what.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Architecture
&lt;/h2&gt;

&lt;p&gt;Here is the network layout I use. Yours will differ based on your hardware and needs, but the principles apply universally.&lt;/p&gt;

&lt;h3&gt;
  
  
  VLAN Design
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;VLAN ID&lt;/th&gt;
&lt;th&gt;Name&lt;/th&gt;
&lt;th&gt;Subnet&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Management&lt;/td&gt;
&lt;td&gt;10.0.0.0/24&lt;/td&gt;
&lt;td&gt;OPNsense, switch management, IPMI/iDRAC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Trusted&lt;/td&gt;
&lt;td&gt;10.0.10.0/24&lt;/td&gt;
&lt;td&gt;Personal devices, workstations, phones&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;IoT&lt;/td&gt;
&lt;td&gt;10.0.20.0/24&lt;/td&gt;
&lt;td&gt;Smart home devices, cameras, sensors&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;Lab&lt;/td&gt;
&lt;td&gt;10.0.30.0/24&lt;/td&gt;
&lt;td&gt;Experimental VMs, containers, dev work&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;50&lt;/td&gt;
&lt;td&gt;Servers&lt;/td&gt;
&lt;td&gt;10.0.50.0/24&lt;/td&gt;
&lt;td&gt;Production services - NAS, Plex, Pi-hole&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;99&lt;/td&gt;
&lt;td&gt;Guest&lt;/td&gt;
&lt;td&gt;10.0.99.0/24&lt;/td&gt;
&lt;td&gt;Guest Wi-Fi, fully isolated&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Six VLANs is enough for most home labs. I have seen people create 15 or more and then spend their weekends debugging firewall rules instead of actually using their lab. Start with fewer segments and split later if you need to.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Design Decisions
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Management VLAN on VLAN 1.&lt;/strong&gt; Some people insist on moving management off the default VLAN. In an enterprise, I agree. At home, keeping management on VLAN 1 simplifies initial switch configuration since untagged traffic lands there by default. The important thing is that only management devices live on it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Separate IoT and guest networks.&lt;/strong&gt; IoT devices need internet access and sometimes local communication with each other (Hue bridges, for example). Guests need internet only. Keeping them separate means you can allow IoT-to-IoT traffic within the VLAN while locking guests down completely.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lab VLAN with restricted outbound.&lt;/strong&gt; The lab VLAN has internet access but cannot initiate connections to any other internal VLAN. This is where I run anything experimental. If something goes wrong, the blast radius is contained.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hardware You Need
&lt;/h2&gt;

&lt;p&gt;You do not need enterprise gear. Here is the minimum:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A VLAN-capable managed switch.&lt;/strong&gt; Unmanaged switches do not understand VLAN tags. A TP-Link TL-SG108E (around thirty quid) handles eight ports with full VLAN support. If you need more ports or PoE, the Netgear GS308EPP is solid.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A router/firewall that supports VLANs.&lt;/strong&gt; OPNsense or pfSense running on dedicated hardware or as a VM. I run OPNsense virtualised on Proxmox, which works brilliantly but requires a bit more setup.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VLAN-aware access points (optional).&lt;/strong&gt; If you want segmented Wi-Fi (and you should), your access points need to support multiple SSIDs mapped to VLANs. UniFi APs do this well. So do TP-Link Omada devices.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Setting Up VLANs on OPNsense
&lt;/h2&gt;

&lt;p&gt;I am assuming you have OPNsense installed and working as your gateway. If you are running it as a VM on Proxmox, make sure the virtual network interface is configured as a VLAN trunk (more on that in the Proxmox section below).&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Create VLAN Interfaces
&lt;/h3&gt;

&lt;p&gt;Navigate to &lt;strong&gt;Interfaces &amp;gt; Other Types &amp;gt; VLAN&lt;/strong&gt; and create each VLAN:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Parent interface:&lt;/strong&gt; The physical (or virtual) interface connected to your managed switch&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VLAN tag:&lt;/strong&gt; The ID from your design (10, 20, 30, 50, 99)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Description:&lt;/strong&gt; Something meaningful - "Trusted", "IoT", "Lab"&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 2: Assign and Configure Interfaces
&lt;/h3&gt;

&lt;p&gt;Go to &lt;strong&gt;Interfaces &amp;gt; Assignments&lt;/strong&gt;. Each VLAN appears as an available interface. Assign each one, then configure it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;IPv4 Configuration Type:&lt;/strong&gt; Static IPv4&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IPv4 Address:&lt;/strong&gt; The gateway IP for that subnet (e.g. 10.0.10.1/24 for Trusted)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Enable the interface and save.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Configure DHCP
&lt;/h3&gt;

&lt;p&gt;For each VLAN interface, navigate to &lt;strong&gt;Services &amp;gt; ISC DHCPv4&lt;/strong&gt; (or Kea, depending on your OPNsense version) and enable DHCP:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Range:&lt;/strong&gt; Leave room for static assignments. I typically use .100 to .200 for dynamic and reserve .1 to .99 for static mappings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DNS servers:&lt;/strong&gt; Point to your Pi-hole or Adguard instance if you run one, otherwise use your preferred public DNS.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gateway:&lt;/strong&gt; The OPNsense interface IP for that VLAN.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 4: Firewall Rules
&lt;/h3&gt;

&lt;p&gt;This is where segmentation actually happens. Without firewall rules, VLANs are just addressing schemes - traffic still flows freely through your router.&lt;/p&gt;

&lt;p&gt;My baseline rules follow a simple philosophy: &lt;strong&gt;deny everything between VLANs, then allow specific exceptions.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For every VLAN interface, create these rules in order:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Allow DNS to OPNsense.&lt;/strong&gt; Allow UDP/TCP 53 to the VLAN's gateway IP. Devices need to resolve names.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Allow DHCP.&lt;/strong&gt; This usually works automatically, but add an explicit allow for UDP 67/68 if needed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Block RFC1918 to other VLANs.&lt;/strong&gt; Create a rule that blocks traffic to 10.0.0.0/8, 172.16.0.0/12 and 192.168.0.0/16. This single rule prevents inter-VLAN traffic without needing to enumerate every subnet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Allow internet.&lt;/strong&gt; A default allow rule for traffic destined to non-RFC1918 addresses.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Exceptions I use:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Trusted VLAN can access the Servers VLAN on specific ports (SSH, HTTP/HTTPS, SMB for NAS access).&lt;/li&gt;
&lt;li&gt;IoT VLAN can reach specific services on the Servers VLAN (my Home Assistant instance needs to talk to smart devices, so I allow established/related connections back).&lt;/li&gt;
&lt;li&gt;Nothing can initiate connections to the Management VLAN except the Trusted VLAN on the OPNsense web UI port.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The order matters. OPNsense evaluates rules top to bottom and stops at the first match. Put your allow rules above the block-RFC1918 rule, or they will never be reached.&lt;/p&gt;

&lt;h2&gt;
  
  
  Configuring Proxmox for VLANs
&lt;/h2&gt;

&lt;p&gt;If you run Proxmox, you need to tell it about your VLANs so virtual machines land on the correct segments.&lt;/p&gt;

&lt;h3&gt;
  
  
  Option 1: VLAN-Aware Bridge (Recommended)
&lt;/h3&gt;

&lt;p&gt;Edit your Proxmox network configuration. You want your main bridge to be VLAN-aware:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight conf"&gt;&lt;code&gt;&lt;span class="n"&gt;auto&lt;/span&gt; &lt;span class="n"&gt;vmbr0&lt;/span&gt;
&lt;span class="n"&gt;iface&lt;/span&gt; &lt;span class="n"&gt;vmbr0&lt;/span&gt; &lt;span class="n"&gt;inet&lt;/span&gt; &lt;span class="n"&gt;manual&lt;/span&gt;
    &lt;span class="n"&gt;bridge&lt;/span&gt;-&lt;span class="n"&gt;ports&lt;/span&gt; &lt;span class="n"&gt;eno1&lt;/span&gt;
    &lt;span class="n"&gt;bridge&lt;/span&gt;-&lt;span class="n"&gt;stp&lt;/span&gt; &lt;span class="n"&gt;off&lt;/span&gt;
    &lt;span class="n"&gt;bridge&lt;/span&gt;-&lt;span class="n"&gt;fd&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;
    &lt;span class="n"&gt;bridge&lt;/span&gt;-&lt;span class="n"&gt;vlan&lt;/span&gt;-&lt;span class="n"&gt;aware&lt;/span&gt; &lt;span class="n"&gt;yes&lt;/span&gt;
    &lt;span class="n"&gt;bridge&lt;/span&gt;-&lt;span class="n"&gt;vids&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="m"&gt;10&lt;/span&gt; &lt;span class="m"&gt;20&lt;/span&gt; &lt;span class="m"&gt;30&lt;/span&gt; &lt;span class="m"&gt;50&lt;/span&gt; &lt;span class="m"&gt;99&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With a VLAN-aware bridge, you assign VLANs per VM in the Proxmox GUI. When creating or editing a VM's network device, set the &lt;strong&gt;VLAN Tag&lt;/strong&gt; field to the appropriate VLAN ID. The VM's traffic is then tagged on that VLAN automatically.&lt;/p&gt;

&lt;p&gt;This is the cleanest approach. One bridge, all VLANs, per-VM tagging.&lt;/p&gt;

&lt;h3&gt;
  
  
  Option 2: Separate Bridges per VLAN
&lt;/h3&gt;

&lt;p&gt;If you prefer explicit separation, create a bridge for each VLAN:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight conf"&gt;&lt;code&gt;&lt;span class="n"&gt;auto&lt;/span&gt; &lt;span class="n"&gt;vmbr10&lt;/span&gt;
&lt;span class="n"&gt;iface&lt;/span&gt; &lt;span class="n"&gt;vmbr10&lt;/span&gt; &lt;span class="n"&gt;inet&lt;/span&gt; &lt;span class="n"&gt;manual&lt;/span&gt;
    &lt;span class="n"&gt;bridge&lt;/span&gt;-&lt;span class="n"&gt;ports&lt;/span&gt; &lt;span class="n"&gt;eno1&lt;/span&gt;.&lt;span class="m"&gt;10&lt;/span&gt;
    &lt;span class="n"&gt;bridge&lt;/span&gt;-&lt;span class="n"&gt;stp&lt;/span&gt; &lt;span class="n"&gt;off&lt;/span&gt;
    &lt;span class="n"&gt;bridge&lt;/span&gt;-&lt;span class="n"&gt;fd&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This works but gets unwieldy with many VLANs. I moved away from this approach after the fourth bridge.&lt;/p&gt;

&lt;h3&gt;
  
  
  OPNsense as a Proxmox VM
&lt;/h3&gt;

&lt;p&gt;If OPNsense runs on Proxmox (which I recommend for home labs - one box to rule them all), the setup is:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Pass the physical NIC through&lt;/strong&gt; to OPNsense as a trunk port on the VLAN-aware bridge with no VLAN tag set. This means OPNsense receives all tagged traffic and handles VLAN routing itself.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add a second NIC&lt;/strong&gt; for the WAN interface, either a separate physical port or a bridge connected to your ISP router.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The switch uplink port&lt;/strong&gt; must be configured as a trunk carrying all your VLAN tags.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This creates a clean architecture where Proxmox handles virtualisation and OPNsense handles all routing and firewalling.&lt;/p&gt;

&lt;h2&gt;
  
  
  Managed Switch Configuration
&lt;/h2&gt;

&lt;p&gt;Your managed switch needs to know which ports carry which VLANs. The terminology varies between manufacturers, but the concepts are the same.&lt;/p&gt;

&lt;h3&gt;
  
  
  Trunk Ports (Tagged)
&lt;/h3&gt;

&lt;p&gt;Trunk ports carry multiple VLANs simultaneously using 802.1Q tags. Configure trunk ports for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The port connected to your OPNsense box (or Proxmox host)&lt;/li&gt;
&lt;li&gt;Uplinks between switches&lt;/li&gt;
&lt;li&gt;Ports connected to VLAN-aware access points&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Access Ports (Untagged)
&lt;/h3&gt;

&lt;p&gt;Access ports strip VLAN tags and present untagged traffic to the connected device. Most endpoint devices (PCs, printers, NAS boxes) connect to access ports assigned to a single VLAN.&lt;/p&gt;

&lt;p&gt;For example, your NAS connects to a port that is an untagged member of VLAN 50 (Servers). The NAS sends and receives normal untagged Ethernet frames and never needs to know VLANs exist.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example: TP-Link Switch VLAN Table
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Port&lt;/th&gt;
&lt;th&gt;VLAN 1 (Mgmt)&lt;/th&gt;
&lt;th&gt;VLAN 10 (Trusted)&lt;/th&gt;
&lt;th&gt;VLAN 20 (IoT)&lt;/th&gt;
&lt;th&gt;VLAN 30 (Lab)&lt;/th&gt;
&lt;th&gt;VLAN 50 (Servers)&lt;/th&gt;
&lt;th&gt;VLAN 99 (Guest)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1 (OPNsense)&lt;/td&gt;
&lt;td&gt;Tagged&lt;/td&gt;
&lt;td&gt;Tagged&lt;/td&gt;
&lt;td&gt;Tagged&lt;/td&gt;
&lt;td&gt;Tagged&lt;/td&gt;
&lt;td&gt;Tagged&lt;/td&gt;
&lt;td&gt;Tagged&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2 (Desktop)&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;Untagged&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3 (NAS)&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;Untagged&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4 (AP)&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;Tagged&lt;/td&gt;
&lt;td&gt;Tagged&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;Tagged&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5-7 (Lab)&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;Untagged&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8 (Mgmt)&lt;/td&gt;
&lt;td&gt;Untagged&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Port 1 is the trunk to OPNsense carrying all VLANs. Port 4 is the trunk to the access point carrying the SSIDs you want broadcast over Wi-Fi.&lt;/p&gt;

&lt;h2&gt;
  
  
  Testing Your Segmentation
&lt;/h2&gt;

&lt;p&gt;Do not assume it works. Test it.&lt;/p&gt;

&lt;p&gt;From a device on each VLAN, try to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Ping the default gateway.&lt;/strong&gt; This should work on every VLAN. If it does not, check your interface assignments and DHCP config.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ping a device on another VLAN.&lt;/strong&gt; This should be blocked (unless you created a specific allow rule). If pings succeed between VLANs you did not explicitly allow, your firewall rules are wrong.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Access the internet.&lt;/strong&gt; Every VLAN except Management should have outbound internet access. Management only needs it for OPNsense updates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test your exceptions.&lt;/strong&gt; Can your trusted workstation reach the NAS via SMB? Can your phone reach Home Assistant? Verify every allow rule works as intended.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I keep a simple text file listing every test case and run through it whenever I change firewall rules. It takes ten minutes and has caught misconfigurations more than once.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common Mistakes
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Forgetting to allow DNS.&lt;/strong&gt; Devices cannot resolve hostnames, so everything appears "broken" even though network connectivity is fine. Always allow DNS to your resolver as the first rule on each VLAN.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Blocking established connections.&lt;/strong&gt; If you allow Trusted to connect to Servers on port 443, the response traffic needs to get back. OPNsense handles this with stateful firewall rules (it tracks connections automatically), but if you are writing manual rules elsewhere, remember to allow established and related traffic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Putting the management interface on an accessible VLAN.&lt;/strong&gt; Your OPNsense web UI, Proxmox console and switch management pages should only be reachable from the Management or Trusted VLAN. Do not leave management interfaces exposed to IoT or Guest.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Over-segmenting.&lt;/strong&gt; Every VLAN you add is a firewall ruleset you need to maintain. Six VLANs is practical. Twenty is a full-time job. Segment by trust level, not by device type.&lt;/p&gt;

&lt;h2&gt;
  
  
  Applying This to the Real World
&lt;/h2&gt;

&lt;p&gt;I run this exact setup as both my home network and my test environment for work. When I need to validate a &lt;a href="https://dev.to/blog/2026-03-09-network-segmentation-guide/"&gt;network segmentation strategy&lt;/a&gt; before proposing it to the board, I prototype it at home first. When I want to test whether a new &lt;a href="https://dev.to/blog/2026-03-07-privileged-access-management/"&gt;privileged access management&lt;/a&gt; tool works with segmented networks, I have a safe environment to do it.&lt;/p&gt;

&lt;p&gt;The crossover between home lab and professional IT is the real value here. Enterprise segmentation uses the same principles - VLANs, firewall rules, least-privilege access - just at a larger scale with more expensive hardware. If you can segment a home lab, you understand the fundamentals well enough to design or evaluate an enterprise network.&lt;/p&gt;




&lt;h2&gt;
  
  
  Where to Go from Here
&lt;/h2&gt;

&lt;p&gt;Once your basic segmentation is working, consider these next steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Intrusion detection.&lt;/strong&gt; OPNsense includes Suricata for IDS/IPS. Run it on your inter-VLAN traffic to catch suspicious patterns.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DNS filtering per VLAN.&lt;/strong&gt; Different Pi-hole or Adguard profiles for different segments. Block ads on Trusted, block everything dodgy on IoT, allow everything on Lab.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Firewall logging and monitoring.&lt;/strong&gt; Export OPNsense logs to a syslog server or Grafana dashboard. Visibility is the whole point of segmentation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;802.1X authentication.&lt;/strong&gt; For the truly committed, RADIUS-based port authentication ensures devices land on the correct VLAN automatically based on their credentials.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Network segmentation is not glamorous. Nobody posts their firewall rules on Reddit for upvotes. But it is one of those foundational practices that makes everything else in your home lab more secure, more manageable and more professionally relevant. Get it right once, and you will wonder how you ever ran a flat network.&lt;/p&gt;

</description>
      <category>homelab</category>
      <category>networking</category>
      <category>security</category>
      <category>proxmox</category>
    </item>
    <item>
      <title>API Security Best Practices: A Practical Guide for IT Leaders</title>
      <dc:creator>Daniel Glover</dc:creator>
      <pubDate>Tue, 31 Mar 2026 06:33:02 +0000</pubDate>
      <link>https://dev.to/danieljglover/api-security-best-practices-a-practical-guide-for-it-leaders-284a</link>
      <guid>https://dev.to/danieljglover/api-security-best-practices-a-practical-guide-for-it-leaders-284a</guid>
      <description>&lt;p&gt;APIs are the connective tissue of modern enterprise architecture. Every microservice, mobile app, SaaS integration and partner connection relies on them. But that ubiquity makes APIs one of the most attractive attack surfaces in your organisation.&lt;/p&gt;

&lt;p&gt;Gartner predicted that API attacks would become the most frequent attack vector by 2025 - and they were right. If you are an IT leader who has not yet built a deliberate API security strategy, now is the time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why API Security Deserves Board-Level Attention
&lt;/h2&gt;

&lt;p&gt;Most organisations have invested heavily in perimeter security, endpoint detection and identity management. APIs often fall through the cracks because they sit between these traditional domains. They are not a network problem, not purely an identity problem and not an application problem in the traditional sense.&lt;/p&gt;

&lt;p&gt;The result is a sprawl of APIs - internal, external, partner-facing and sometimes forgotten - with inconsistent security controls. I have seen organisations with hundreds of APIs where fewer than half had any form of authentication beyond a static API key.&lt;/p&gt;

&lt;p&gt;The business risk is real. A single misconfigured API can expose customer data, enable account takeover or allow competitors to scrape proprietary information at scale.&lt;/p&gt;

&lt;h2&gt;
  
  
  The OWASP API Security Top 10
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://owasp.org/API-Security/" rel="noopener noreferrer"&gt;OWASP API Security Top 10&lt;/a&gt; is the best starting point for understanding API-specific risks. The 2023 edition highlights these critical vulnerabilities:&lt;/p&gt;

&lt;h3&gt;
  
  
  Broken Object Level Authorisation (BOLA)
&lt;/h3&gt;

&lt;p&gt;This is the number one API vulnerability for good reason. It occurs when an API endpoint accepts an object identifier from the user but fails to verify that the user has permission to access that specific object. An attacker simply changes the ID in a request to access another user's data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to do:&lt;/strong&gt; Implement authorisation checks on every data access function. Never rely on client-side filtering. Use random, non-sequential identifiers to make enumeration harder.&lt;/p&gt;

&lt;h3&gt;
  
  
  Broken Authentication
&lt;/h3&gt;

&lt;p&gt;APIs that implement authentication incorrectly - weak token generation, missing token validation, or credentials sent in URLs - are trivially exploitable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to do:&lt;/strong&gt; Use established standards like OAuth 2.0 and OpenID Connect. Implement token expiry and rotation. Never accept API keys as the sole authentication mechanism for sensitive operations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Unrestricted Resource Consumption
&lt;/h3&gt;

&lt;p&gt;APIs without rate limiting or resource quotas are vulnerable to denial-of-service attacks and cost-based attacks against cloud-hosted services.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to do:&lt;/strong&gt; Implement rate limiting per user, per endpoint and per IP. Set maximum payload sizes. Monitor for unusual consumption patterns.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building Your API Security Strategy
&lt;/h2&gt;

&lt;p&gt;Rather than treating API security as a purely technical exercise, approach it as a governance and architecture challenge. Here is a practical framework.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Discover and Inventory Your APIs
&lt;/h3&gt;

&lt;p&gt;You cannot secure what you do not know about. Most organisations significantly underestimate their API count. Shadow APIs - those created by development teams without central oversight - are particularly dangerous.&lt;/p&gt;

&lt;p&gt;Start with automated discovery using API gateway logs, network traffic analysis and code repository scanning. Build a living inventory that captures each API's purpose, owner, authentication method, data sensitivity and lifecycle status.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Standardise Authentication and Authorisation
&lt;/h3&gt;

&lt;p&gt;Establish organisation-wide standards for API authentication. At minimum:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OAuth 2.0 for user-facing APIs with delegated access&lt;/li&gt;
&lt;li&gt;Mutual TLS (mTLS) for service-to-service communication&lt;/li&gt;
&lt;li&gt;Short-lived tokens with automatic rotation&lt;/li&gt;
&lt;li&gt;Scoped permissions following least-privilege principles&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Extend your identity-first security approach explicitly to cover non-human identities including service accounts, API clients and automated workflows.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Implement API Gateways as Policy Enforcement Points
&lt;/h3&gt;

&lt;p&gt;An API gateway is your single point of control for cross-cutting security concerns. Use it to enforce:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Authentication&lt;/strong&gt; - Validate tokens before requests reach backend services&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rate limiting&lt;/strong&gt; - Protect against abuse and denial-of-service&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Request validation&lt;/strong&gt; - Check payload schemas, reject malformed requests&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Logging&lt;/strong&gt; - Capture every request for audit and anomaly detection&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Do not rely on individual development teams to implement these controls consistently. Centralise them at the gateway layer.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Shift Security Left
&lt;/h3&gt;

&lt;p&gt;API security testing should happen during development, not after deployment. Integrate these practices into your DevSecOps pipeline:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;API specification review&lt;/strong&gt; - Mandate OpenAPI or AsyncAPI specs and review them for security issues before any code is written&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automated security scanning&lt;/strong&gt; - Run tools like OWASP ZAP or Burp Suite against API endpoints in CI/CD&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contract testing&lt;/strong&gt; - Verify that APIs behave according to their specification and reject unexpected inputs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Threat modelling&lt;/strong&gt; - Include APIs in your threat modelling exercises, focusing on data flows and trust boundaries&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. Monitor and Respond
&lt;/h3&gt;

&lt;p&gt;Runtime API security monitoring is essential because static analysis cannot catch every vulnerability. Focus on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Anomaly detection&lt;/strong&gt; - Baseline normal API usage patterns and alert on deviations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sensitive data exposure&lt;/strong&gt; - Scan API responses for unintended data leakage&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Authentication failures&lt;/strong&gt; - Monitor for brute force attempts and credential stuffing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Geographic anomalies&lt;/strong&gt; - Flag API calls from unexpected locations&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Common Mistakes I See IT Leaders Make
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Treating API keys as secrets.&lt;/strong&gt; Static API keys are not authentication - they are identification at best. They get committed to repositories, shared in documentation and leaked in client-side code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ignoring internal APIs.&lt;/strong&gt; The assumption that internal APIs are safe because they sit behind a firewall is dangerous. Lateral movement after initial compromise is a standard attacker technique.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Over-exposing data.&lt;/strong&gt; APIs that return entire database records when the client only needs two fields create unnecessary risk. Design APIs to return the minimum data required.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No versioning or deprecation strategy.&lt;/strong&gt; Old API versions with known vulnerabilities persist because nobody has a plan to retire them.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Practical Starting Point
&lt;/h2&gt;

&lt;p&gt;If you are starting from scratch, prioritise these five actions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Audit your API inventory&lt;/strong&gt; - Find every API, document its owner and classify its data sensitivity&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deploy an API gateway&lt;/strong&gt; - Centralise authentication, rate limiting and logging&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Adopt OAuth 2.0&lt;/strong&gt; - Replace static API keys with token-based authentication for all sensitive APIs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add API testing to CI/CD&lt;/strong&gt; - Automate security scanning for every API change&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitor runtime behaviour&lt;/strong&gt; - Implement anomaly detection for API traffic patterns&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;None of these require massive investment. Most can be implemented incrementally alongside existing projects.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Strategic View
&lt;/h2&gt;

&lt;p&gt;API security is not a one-off project. As your organisation adopts more microservices, integrates more SaaS platforms and builds more partner ecosystems, your API surface will only grow.&lt;/p&gt;

&lt;p&gt;The IT leaders who get ahead of this treat API security as a platform capability - something that is built once, maintained centrally and consumed by every development team. Those who treat it as an afterthought will find themselves reacting to breaches that were entirely preventable.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://danieljamesglover.com/blog/2026-03-13-api-security-best-practices/" rel="noopener noreferrer"&gt;danieljamesglover.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>api</category>
      <category>webdev</category>
      <category>devops</category>
    </item>
    <item>
      <title>IT Disaster Recovery Planning That Works: A Practical Guide</title>
      <dc:creator>Daniel Glover</dc:creator>
      <pubDate>Sun, 22 Mar 2026 07:32:37 +0000</pubDate>
      <link>https://dev.to/danieljglover/it-disaster-recovery-planning-that-works-a-practical-guide-4hn7</link>
      <guid>https://dev.to/danieljglover/it-disaster-recovery-planning-that-works-a-practical-guide-4hn7</guid>
      <description>&lt;p&gt;Every IT leader has a disaster recovery plan. Most of them do not work. That is not cynicism - it is what the data tells us. Industry research consistently shows that over 70% of organisations that test their DR plans discover critical gaps.&lt;/p&gt;

&lt;p&gt;I have been through enough real incidents to know that the gap between a DR plan document and actual recovery capability is often enormous. The plan says four hours. Reality says four days.&lt;/p&gt;

&lt;p&gt;If you are an IT leader responsible for keeping systems running, this guide covers how to build a DR plan that survives contact with an actual disaster.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why most DR plans fail
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The document problem
&lt;/h3&gt;

&lt;p&gt;Most DR plans are documents written once, approved by leadership, and filed away. Within six months, they are partially obsolete because infrastructure changes constantly.&lt;/p&gt;

&lt;h3&gt;
  
  
  The assumption problem
&lt;/h3&gt;

&lt;p&gt;DR plans are built on assumptions: the network will be available, DNS will resolve, the backup site has capacity, the team will be reachable. Stack them together and you have a house of cards.&lt;/p&gt;

&lt;p&gt;I learned this the hard way when a data centre power failure also took out the network equipment we needed to reach our backup site. Nobody had questioned the network connectivity assumption.&lt;/p&gt;

&lt;h3&gt;
  
  
  The people problem
&lt;/h3&gt;

&lt;p&gt;Disasters happen at 3 AM on a bank holiday weekend when your lead engineer is on a flight. Technical systems can be designed for resilience. People cannot be patched.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building a DR plan that actually works
&lt;/h2&gt;

&lt;p&gt;A working DR plan is not a document. It is a capability.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Define what matters
&lt;/h3&gt;

&lt;p&gt;Classify systems into tiers based on business impact:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tier 1 - Critical:&lt;/strong&gt; Direct revenue impact. RTO under one hour, RPO near zero.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tier 2 - Important:&lt;/strong&gt; Significant impact but workarounds exist. RTO 4-8 hours.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tier 3 - Standard:&lt;/strong&gt; Can tolerate extended outages. RTO 24-48 hours.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tier 4 - Low priority:&lt;/strong&gt; Recover when possible.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This forces difficult conversations about what the business actually needs. I have seen organisations classify 80% of their systems as Tier 1, which means nothing is truly prioritised.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Map your dependencies
&lt;/h3&gt;

&lt;p&gt;Every system depends on other systems. Draw dependency maps explicitly. Include external dependencies like cloud providers, SaaS tools, and CDNs.&lt;/p&gt;

&lt;p&gt;Pay special attention to shared dependencies. If your Tier 1 application and your monitoring system both depend on the same DNS provider, you will lose visibility at the moment you need it most.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Design for recovery, not just resilience
&lt;/h3&gt;

&lt;p&gt;Resilience prevents failures. Recovery is what happens when prevention fails. Most organisations over-invest in resilience and under-invest in recovery.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Automated failover&lt;/strong&gt; for Tier 1. If it requires human intervention, it is not Tier 1 ready.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Documented manual procedures&lt;/strong&gt; for Tier 2. Step-by-step runbooks a competent engineer who has never seen the system can follow.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rebuild procedures&lt;/strong&gt; for Tier 3+. Infrastructure as code and tested restoration scripts.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 4: Automate everything you can
&lt;/h3&gt;

&lt;p&gt;Manual recovery procedures are unreliable. People make mistakes under pressure.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Infrastructure as code for rebuilding environments&lt;/li&gt;
&lt;li&gt;Automated backup verification (restore and verify, not just check completion)&lt;/li&gt;
&lt;li&gt;Automated failover testing in production&lt;/li&gt;
&lt;li&gt;Runbook automation over Word documents&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every manual step is a potential failure point.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5: Test relentlessly
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tabletop exercises (quarterly):&lt;/strong&gt; Walk through scenarios. Cheap and effective.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Component testing (monthly):&lt;/strong&gt; Test individual recovery procedures.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Full DR tests (biannually):&lt;/strong&gt; Execute complete recovery. Expensive but essential.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chaos engineering (ongoing):&lt;/strong&gt; Introduce controlled failures.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 6: Document for humans
&lt;/h3&gt;

&lt;p&gt;Write for the person executing at 3 AM:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Short sentences. Clear instructions. No ambiguity.&lt;/li&gt;
&lt;li&gt;Decision trees, not novels.&lt;/li&gt;
&lt;li&gt;Contact lists with phone numbers, not just Slack handles.&lt;/li&gt;
&lt;li&gt;Version control with Git, not SharePoint.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 7: Plan for communication
&lt;/h3&gt;

&lt;p&gt;Communication failures during incidents cause more lasting damage than the technical issues. Include internal templates, external procedures, and status page management.&lt;/p&gt;

&lt;h2&gt;
  
  
  The cloud does not solve this
&lt;/h2&gt;

&lt;p&gt;Cloud providers offer infrastructure resilience but cannot protect against application-level failures, configuration errors, vendor outages, or account-level issues.&lt;/p&gt;

&lt;p&gt;Your cloud DR strategy should include the ability to operate independently of any single provider, at least for Tier 1 services.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting started
&lt;/h2&gt;

&lt;p&gt;If your DR plan has not been tested in over a year:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Run a tabletop exercise this month.&lt;/strong&gt; Pick a realistic scenario and walk through your response.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test one backup restoration this week.&lt;/strong&gt; Time it. Verify the data. Compare to your RTO.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Update your contact list today.&lt;/strong&gt; Remove leavers, add joiners.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Schedule regular testing.&lt;/strong&gt; Quarterly tabletops, monthly component tests, biannual full tests.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The best time to test your DR plan was six months ago. The second best time is this week.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://danieljamesglover.com/blog/2026-02-23-it-disaster-recovery-plan-guide/" rel="noopener noreferrer"&gt;danieljamesglover.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>disasterrecovery</category>
      <category>devops</category>
      <category>infrastructure</category>
      <category>cloud</category>
    </item>
    <item>
      <title>The IT Skills Crisis: A Practical Framework for Building Your Team</title>
      <dc:creator>Daniel Glover</dc:creator>
      <pubDate>Sat, 21 Mar 2026 07:32:43 +0000</pubDate>
      <link>https://dev.to/danieljglover/the-it-skills-crisis-a-practical-framework-for-building-your-team-1nkg</link>
      <guid>https://dev.to/danieljglover/the-it-skills-crisis-a-practical-framework-for-building-your-team-1nkg</guid>
      <description>&lt;p&gt;Three years ago, I had what I thought was a solid IT team. Strong on infrastructure, reliable on support, capable of keeping the lights on for our e-commerce operation. We had good people doing good work.&lt;/p&gt;

&lt;p&gt;Today, that same team composition would leave us dangerously exposed. Not because the people are wrong, but because the skills the business needs have fundamentally changed.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Ground Has Shifted
&lt;/h2&gt;

&lt;p&gt;Cast your mind back to early 2023. ChatGPT had just launched. Most organisations were still mid-way through cloud migrations. Cybersecurity was important but not yet the board-level obsession it has become.&lt;/p&gt;

&lt;p&gt;Now look at where we are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AI is embedded in operations.&lt;/strong&gt; Not as a novelty, but as a core tool. Your team needs to understand AI integration, prompt engineering, data pipelines, and governance frameworks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloud is the default.&lt;/strong&gt; On-premises infrastructure has not disappeared, but the centre of gravity has shifted. Your team needs deep cloud-native skills.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security is everything.&lt;/strong&gt; Post-quantum cryptography, zero trust architecture, supply chain security, AI-powered threat detection. The security skills gap has widened enormously.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automation has eaten the routine.&lt;/strong&gt; Ticket routing, user provisioning, monitoring response, patch management. If your team is still doing these manually, you are paying human rates for robot work.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The traditional IT operations role is being compressed from both sides. Automation handles the routine. Specialist skills are needed for the complex work. The middle ground is shrinking fast.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Roles That Have Changed
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The Traditional Sysadmin
&lt;/h3&gt;

&lt;p&gt;Three years ago, we had dedicated system administrators managing on-premises servers. Today, most of that infrastructure runs in the cloud. A sysadmin who cannot write Terraform or navigate Kubernetes is increasingly limited in what they can contribute.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Helpdesk Technician
&lt;/h3&gt;

&lt;p&gt;First-line support has been transformed by AI-powered service desks, self-service portals, and automated resolution workflows. The role has morphed into something closer to customer experience and technical problem-solving. Soft skills and analytical thinking matter more than knowing how to reset a password in Active Directory.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Network Engineer
&lt;/h3&gt;

&lt;p&gt;Software-defined networking, cloud-native networking, and zero trust architectures have transformed what it means to manage a network. Traditional knowledge of switches, routers, and VLANs is still valuable, but it is no longer sufficient.&lt;/p&gt;

&lt;h3&gt;
  
  
  The New Hybrid Roles
&lt;/h3&gt;

&lt;p&gt;What has emerged are hybrid positions that blend disciplines:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cloud Security Engineer&lt;/strong&gt; - combining infrastructure, cloud, and security expertise&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DevOps/Platform Engineer&lt;/strong&gt; - bridging development and operations with automation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI Operations Specialist&lt;/strong&gt; - managing AI model deployment, monitoring, and governance&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Identity and Access Management Specialist&lt;/strong&gt; - as zero trust makes identity the new perimeter&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Engineer&lt;/strong&gt; - managing the pipelines that feed both business intelligence and AI&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These roles did not exist in most IT departments three years ago. Now they are critical.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Retraining vs Hiring Dilemma
&lt;/h2&gt;

&lt;p&gt;Do you retrain your existing team or hire new people? The honest answer is both.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Case for Retraining
&lt;/h3&gt;

&lt;p&gt;Your existing team knows your business. They understand your systems, your culture, your customers. That institutional knowledge cannot be replicated by a new hire. Retraining is also significantly cheaper - the average cost of replacing a technical employee is typically one to two times their annual salary.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Case for Hiring
&lt;/h3&gt;

&lt;p&gt;Some skills gaps are too wide to bridge through training alone. If you need a senior cloud architect and your most experienced infrastructure person has never worked outside on-premises environments, that is a two to three year development journey.&lt;/p&gt;

&lt;h3&gt;
  
  
  My Approach: The 70/30 Rule
&lt;/h3&gt;

&lt;p&gt;In our team, I work roughly to a 70/30 split. Seventy per cent of our skills gap is addressed through retraining and upskilling. Thirty per cent requires strategic hiring for critical capability gaps we cannot develop fast enough internally.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building a Skills Matrix
&lt;/h2&gt;

&lt;p&gt;Before you can close the gap, you need to see it clearly.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Define the Skills You Need
&lt;/h3&gt;

&lt;p&gt;Start with your technology strategy, not your current team. For us, that produced five priority areas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cloud-native infrastructure (Azure, AWS, IaC, containers, serverless)&lt;/li&gt;
&lt;li&gt;Cybersecurity (zero trust, threat detection, incident response)&lt;/li&gt;
&lt;li&gt;Automation and DevOps (CI/CD, scripting, platform engineering)&lt;/li&gt;
&lt;li&gt;AI and data (AI integration, data pipelines, ML operations)&lt;/li&gt;
&lt;li&gt;Leadership and communication (vendor management, stakeholder communication)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 2: Assess Current Capabilities
&lt;/h3&gt;

&lt;p&gt;Use a four-point scale:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Awareness&lt;/strong&gt; - understands the concept but cannot execute&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Developing&lt;/strong&gt; - can execute with guidance&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Competent&lt;/strong&gt; - can execute independently&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expert&lt;/strong&gt; - can lead others and handle complex scenarios&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Involve team members in the assessment. They often have the most accurate view of their own capabilities.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Map the Gaps
&lt;/h3&gt;

&lt;p&gt;Plot current capabilities against required. The gaps become immediately visible.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Build Individual Development Plans
&lt;/h3&gt;

&lt;p&gt;Align organisational needs with individual motivation. Forcing someone into a role they have no interest in is a recipe for poor outcomes.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Practical Framework for Upskilling
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Dedicated Learning Time
&lt;/h3&gt;

&lt;p&gt;We allocate one half-day per fortnight as protected learning time. No tickets, no meetings, no interruptions. This sounds expensive. It is. But it is cheaper than hiring replacements when your team leaves because their skills are stagnating.&lt;/p&gt;

&lt;h3&gt;
  
  
  Certification Pathways
&lt;/h3&gt;

&lt;p&gt;We fund relevant certifications for every team member, typically two per year. Current priorities: Azure/AWS cloud, CompTIA Security+ and CySA+, Terraform and Kubernetes, and emerging AI certifications.&lt;/p&gt;

&lt;h3&gt;
  
  
  Project-Based Learning
&lt;/h3&gt;

&lt;p&gt;The most effective learning happens on real work. I deliberately assign stretch projects that push people into their development areas. This requires accepting that things will take longer. That is the investment.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mentoring and Knowledge Sharing
&lt;/h3&gt;

&lt;p&gt;We run fortnightly technical sessions where team members present what they have learned. Where we have hired specialists, part of their role is explicitly to mentor and upskill existing team members.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Human Side
&lt;/h2&gt;

&lt;p&gt;Skills matrices and development plans are the easy part. The hard part is the human element. Some team members will resist change. Some will feel threatened. The key is honest, compassionate communication about where the industry is heading, combined with genuine investment in helping people get there.&lt;/p&gt;

&lt;p&gt;The IT skills crisis is real. But it is not insurmountable. The leaders who invest in their teams now will have a significant competitive advantage. Those who ignore it will find themselves constantly hiring, constantly onboarding, and never quite keeping up.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://danieljamesglover.com/blog/2026-02-16-it-skills-crisis-team-building/" rel="noopener noreferrer"&gt;danieljamesglover.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>leadership</category>
      <category>career</category>
      <category>itleadership</category>
      <category>hiring</category>
    </item>
  </channel>
</rss>
