<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>Rio Wiraldhani — Technical Writing</title>
    <link>https://riowiraldhani.my.id/blog</link>
    <description>Senior DevOps engineer working across cloud infrastructure, Kubernetes, automation, security operations, and compliance-ready systems.</description>
    <language>en</language>
    <item>
      <title>Scan Dependency CVEs with Syft and Grype in GitHub Actions</title>
      <link>https://riowiraldhani.my.id/blog/syft-grype-github-actions-cve-scanning</link>
      <guid isPermaLink="true">https://riowiraldhani.my.id/blog/syft-grype-github-actions-cve-scanning</guid>
      <description>Use SBOM-based scanning to identify vulnerable dependencies before running code locally or building images in CI.</description>
      <pubDate>Sat, 18 Jul 2026 04:28:13 GMT</pubDate>
    </item>
    <item>
      <title>Wazuh Ansible Series</title>
      <link>https://riowiraldhani.my.id/blog/ansible-series</link>
      <guid isPermaLink="true">https://riowiraldhani.my.id/blog/ansible-series</guid>
      <description>A Wazuh-by-Ansible series covering deployment, SAML, configuration, rule tuning, malware detection, backups, and Zeek telemetry.</description>
      <pubDate>Fri, 03 Jul 2026 12:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Integrate Zeek Network Telemetry with Wazuh (Part 11)</title>
      <link>https://riowiraldhani.my.id/blog/wazuh-ansible-series-part-11-zeek-network-telemetry-into-wazuh</link>
      <guid isPermaLink="true">https://riowiraldhani.my.id/blog/wazuh-ansible-series-part-11-zeek-network-telemetry-into-wazuh</guid>
      <description>How to install Zeek on selected hosts, collect JSON logs with the Wazuh agent, and promote them into custom network-security rules.</description>
      <pubDate>Thu, 02 Jul 2026 01:30:53 GMT</pubDate>
    </item>
    <item>
      <title>Automate Wazuh Indexer Backups to Google Cloud Storage (Part 10)</title>
      <link>https://riowiraldhani.my.id/blog/wazuh-ansible-series-part-10-automating-wazuh-indexer-backups-to-google-cloud-storage</link>
      <guid isPermaLink="true">https://riowiraldhani.my.id/blog/wazuh-ansible-series-part-10-automating-wazuh-indexer-backups-to-google-cloud-storage</guid>
      <description>How I backed up Wazuh index data to Google Cloud Storage, kept snapshots for 9 days, and trimmed live index data to 7 days with three small moves.</description>
      <pubDate>Wed, 24 Jun 2026 22:56:41 GMT</pubDate>
    </item>
    <item>
      <title>Scheduled YARA Malware Detection with Wazuh (Part 9)</title>
      <link>https://riowiraldhani.my.id/blog/wazuh-ansible-series-part-9-custom-malware-detection-with-yara-scheduled-scanning</link>
      <guid isPermaLink="true">https://riowiraldhani.my.id/blog/wazuh-ansible-series-part-9-custom-malware-detection-with-yara-scheduled-scanning</guid>
      <description>Build scheduled YARA malware scanning with Wazuh and Ansible to detect custom file signatures beyond traditional antivirus coverage.</description>
      <pubDate>Tue, 23 Jun 2026 16:00:19 GMT</pubDate>
    </item>
    <item>
      <title>Scheduled Malware Scanning with ClamAV and Wazuh (Part 8)</title>
      <link>https://riowiraldhani.my.id/blog/wazuh-ansible-series-part-8-scheduled-malware-scanning-with-clamav-wazuh</link>
      <guid isPermaLink="true">https://riowiraldhani.my.id/blog/wazuh-ansible-series-part-8-scheduled-malware-scanning-with-clamav-wazuh</guid>
      <description>How I added recurring ClamAV scans as a reporting layer on top of on-access protection, with clean Wazuh alerts and per-directory audit visibility.</description>
      <pubDate>Sun, 21 Jun 2026 11:53:53 GMT</pubDate>
    </item>
    <item>
      <title>Real-Time Malware Blocking with ClamAV On-Access (Part 7)</title>
      <link>https://riowiraldhani.my.id/blog/wazuh-ansible-series-part-7-real-time-malware-blocking-with-clamav-on-access</link>
      <guid isPermaLink="true">https://riowiraldhani.my.id/blog/wazuh-ansible-series-part-7-real-time-malware-blocking-with-clamav-on-access</guid>
      <description>How I set up ClamAV on-access scanning with clamonacc, clamd, AppArmor, and Wazuh, then narrowed the protection scope so it stays stable on real hosts.</description>
      <pubDate>Sat, 20 Jun 2026 12:12:03 GMT</pubDate>
    </item>
    <item>
      <title>Build a ClamAV Database Mirror with Ansible (Part 6)</title>
      <link>https://riowiraldhani.my.id/blog/wazuh-ansible-series-part-6-building-centralized-clamav-database-mirror-with-ansible</link>
      <guid isPermaLink="true">https://riowiraldhani.my.id/blog/wazuh-ansible-series-part-6-building-centralized-clamav-database-mirror-with-ansible</guid>
      <description>How I built an internal ClamAV mirror using Nginx to serve virus definitions, cutting 7.2GB/day of redundant egress traffic.</description>
      <pubDate>Fri, 19 Jun 2026 05:54:23 GMT</pubDate>
    </item>
    <item>
      <title>Wazuh Custom Rules for Alert Suppression (Part 5)</title>
      <link>https://riowiraldhani.my.id/blog/wazuh-ansible-series-part-5-custom-rules-for-alert-suppression-that-actually-work</link>
      <guid isPermaLink="true">https://riowiraldhani.my.id/blog/wazuh-ansible-series-part-5-custom-rules-for-alert-suppression-that-actually-work</guid>
      <description>How I wrote Wazuh suppression rules that silenced 300+ noise alerts per hour after four failed approaches.</description>
      <pubDate>Wed, 17 Jun 2026 14:56:25 GMT</pubDate>
    </item>
    <item>
      <title>Manage Wazuh Agent Profiles with Ansible (Part 4)</title>
      <link>https://riowiraldhani.my.id/blog/wazuh-ansible-series-part-4-managing-wazuh-agent-configuration-profiles-with-ansible</link>
      <guid isPermaLink="true">https://riowiraldhani.my.id/blog/wazuh-ansible-series-part-4-managing-wazuh-agent-configuration-profiles-with-ansible</guid>
      <description>How I managed different Wazuh agent ossec.conf profiles using inventory-owned files, host variables, and Ansible deployment roles.</description>
      <pubDate>Tue, 16 Jun 2026 13:37:34 GMT</pubDate>
    </item>
    <item>
      <title>Manage Wazuh Manager Configuration with Ansible (Part 3)</title>
      <link>https://riowiraldhani.my.id/blog/wazuh-ansible-series-part-3-managing-wazuh-manager-configuration-with-ansible</link>
      <guid isPermaLink="true">https://riowiraldhani.my.id/blog/wazuh-ansible-series-part-3-managing-wazuh-manager-configuration-with-ansible</guid>
      <description>How I managed Wazuh manager ossec.conf using inventory-owned files, local wrapper roles, and a controlled restart flow.</description>
      <pubDate>Mon, 15 Jun 2026 17:03:09 GMT</pubDate>
    </item>
    <item>
      <title>Wazuh SAML Authentication with Keycloak (Part 2)</title>
      <link>https://riowiraldhani.my.id/blog/wazuh-ansible-series-part-2-integrating-wazuh-saml-authentication-with-keycloak</link>
      <guid isPermaLink="true">https://riowiraldhani.my.id/blog/wazuh-ansible-series-part-2-integrating-wazuh-saml-authentication-with-keycloak</guid>
      <description>How I integrated Wazuh with Keycloak using SAML, group-based access, and Wazuh RBAC mapping.</description>
      <pubDate>Sun, 14 Jun 2026 17:27:50 GMT</pubDate>
    </item>
    <item>
      <title>Deploy Wazuh with Ansible (Part 1)</title>
      <link>https://riowiraldhani.my.id/blog/wazuh-ansible-series-part-1-how-to-deploy-wazuh-with-ansible</link>
      <guid isPermaLink="true">https://riowiraldhani.my.id/blog/wazuh-ansible-series-part-1-how-to-deploy-wazuh-with-ansible</guid>
      <description>A practical guide to building a maintainable Wazuh deployment repository using upstream roles, wrapper roles, and inventory-driven files.</description>
      <pubDate>Sun, 14 Jun 2026 16:49:39 GMT</pubDate>
    </item>
    <item>
      <title>Monitoring AWS Egress Traffic with EC2 NAT and Suricata</title>
      <link>https://riowiraldhani.my.id/blog/monitoring-aws-egress-traffic-with-ec2-nat-suricata</link>
      <guid isPermaLink="true">https://riowiraldhani.my.id/blog/monitoring-aws-egress-traffic-with-ec2-nat-suricata</guid>
      <description>Monitor AWS egress traffic by combining an EC2 NAT instance with Suricata for open-source network visibility and security analysis.</description>
      <pubDate>Wed, 10 Jun 2026 13:57:41 GMT</pubDate>
    </item>
    <item>
      <title>Reduce AWS NAT Gateway Costs with an EC2 NAT Instance</title>
      <link>https://riowiraldhani.my.id/blog/aws-ec2-nat-instance-cut-nat-gateway-costs-for-small-environments</link>
      <guid isPermaLink="true">https://riowiraldhani.my.id/blog/aws-ec2-nat-instance-cut-nat-gateway-costs-for-small-environments</guid>
      <description>A practical guide to building a self-managed NAT instance with Amazon Linux 2023, iptables, and AWS Graviton for private subnet internet access.</description>
      <pubDate>Tue, 09 Jun 2026 17:58:56 GMT</pubDate>
    </item>
    <item>
      <title>BAMF: Open-Source Teleport Alternative for SSH and Databases</title>
      <link>https://riowiraldhani.my.id/blog/bamf-open-source-teleport-alternative-ssh-databases</link>
      <guid isPermaLink="true">https://riowiraldhani.my.id/blog/bamf-open-source-teleport-alternative-ssh-databases</guid>
      <description>Centralized access.</description>
      <pubDate>Sat, 21 Feb 2026 13:08:25 GMT</pubDate>
    </item>
    <item>
      <title>Build a Centralized DAST Pipeline with ZAP, Nuclei, and GitHub Actions</title>
      <link>https://riowiraldhani.my.id/blog/centralized-dast-pipeline-zap-nuclei-github-actions</link>
      <guid isPermaLink="true">https://riowiraldhani.my.id/blog/centralized-dast-pipeline-zap-nuclei-github-actions</guid>
      <description>Build a reusable DAST pipeline with OWASP ZAP, Nuclei, OPA policy decisions, GitHub Actions, pull-request feedback, and audit-ready reports.</description>
      <pubDate>Mon, 02 Feb 2026 02:20:56 GMT</pubDate>
    </item>
    <item>
      <title>Keycloak Audit Logging for User Events and Admin Actions</title>
      <link>https://riowiraldhani.my.id/blog/keycloak-audit-logging-user-events-admin-actions</link>
      <guid isPermaLink="true">https://riowiraldhani.my.id/blog/keycloak-audit-logging-user-events-admin-actions</guid>
      <description>Build auditable Keycloak event logging so authentication and administrative identity actions remain searchable, attributable, and reviewable.</description>
      <pubDate>Sun, 11 Jan 2026 17:51:44 GMT</pubDate>
    </item>
    <item>
      <title>Kviklet Database Access Control for Audited SQL Workflows</title>
      <link>https://riowiraldhani.my.id/blog/kviklet-database-access-control-audited-sql</link>
      <guid isPermaLink="true">https://riowiraldhani.my.id/blog/kviklet-database-access-control-audited-sql</guid>
      <description>Evaluate Kviklet as an open-source platform for controlled production database access, approval workflows, audit logs, and temporary privileges.</description>
      <pubDate>Fri, 12 Dec 2025 18:20:33 GMT</pubDate>
    </item>
    <item>
      <title>Optimizing Kubernetes Autoscaling with KEDA, HPA, and Karpenter</title>
      <link>https://riowiraldhani.my.id/blog/optimizing-kubernetes-autoscaling-with-keda-hpa-karpenter</link>
      <guid isPermaLink="true">https://riowiraldhani.my.id/blog/optimizing-kubernetes-autoscaling-with-keda-hpa-karpenter</guid>
      <description>A practical guide to scaling Kubernetes workloads efficiently using KEDA, HPA, and Karpenter for high-demand environments.</description>
      <pubDate>Mon, 19 May 2025 04:54:30 GMT</pubDate>
    </item>
    <item>
      <title>Installing KEDA on Kubernetes with Helm: Production-Ready Setup</title>
      <link>https://riowiraldhani.my.id/blog/installing-keda-on-kubernetes-with-helm-production-ready-setup</link>
      <guid isPermaLink="true">https://riowiraldhani.my.id/blog/installing-keda-on-kubernetes-with-helm-production-ready-setup</guid>
      <description>Learn how to install and configure KEDA on Kubernetes with Helm for scalable, secure, and production-ready environments.</description>
      <pubDate>Mon, 19 May 2025 04:52:38 GMT</pubDate>
    </item>
    <item>
      <title>Build an AWS RDS to S3 ETL Pipeline with Jenkins</title>
      <link>https://riowiraldhani.my.id/blog/aws-rds-s3-etl-pipeline-jenkins</link>
      <guid isPermaLink="true">https://riowiraldhani.my.id/blog/aws-rds-s3-etl-pipeline-jenkins</guid>
      <description>Automate RDS exports to S3 with Jenkins, Glue Crawlers, and Athena for fast ETL, schema detection, and cost-efficient analytics.</description>
      <pubDate>Fri, 16 May 2025 12:16:18 GMT</pubDate>
    </item>
    <item>
      <title>How to Protect Amazon EKS Applications with ALB and AWS WAF</title>
      <link>https://riowiraldhani.my.id/blog/protect-amazon-eks-applications-alb-aws-waf</link>
      <guid isPermaLink="true">https://riowiraldhani.my.id/blog/protect-amazon-eks-applications-alb-aws-waf</guid>
      <description>Protect applications on Amazon EKS by associating AWS WAF controls with an Application Load Balancer provisioned for Kubernetes ingress.</description>
      <pubDate>Thu, 15 May 2025 10:07:03 GMT</pubDate>
    </item>
    <item>
      <title>Deploy Scalable Loki Logging on Amazon EKS with S3 Storage</title>
      <link>https://riowiraldhani.my.id/blog/deploy-loki-amazon-eks-s3-storage</link>
      <guid isPermaLink="true">https://riowiraldhani.my.id/blog/deploy-loki-amazon-eks-s3-storage</guid>
      <description>Deploy Loki on Amazon EKS with Amazon S3 object storage and configure a scalable foundation for centralized Kubernetes log collection.</description>
      <pubDate>Wed, 14 May 2025 03:16:23 GMT</pubDate>
    </item>
    <item>
      <title>How to Configure Apache Airflow SSO with Keycloak</title>
      <link>https://riowiraldhani.my.id/blog/apache-airflow-sso-keycloak</link>
      <guid isPermaLink="true">https://riowiraldhani.my.id/blog/apache-airflow-sso-keycloak</guid>
      <description>Configure Apache Airflow single sign-on with Keycloak to centralize user authentication and control access through an identity provider.</description>
      <pubDate>Sun, 11 May 2025 04:52:41 GMT</pubDate>
    </item>
    <item>
      <title>How to Deploy Keycloak on Kubernetes for SSO</title>
      <link>https://riowiraldhani.my.id/blog/deploy-keycloak-kubernetes-sso</link>
      <guid isPermaLink="true">https://riowiraldhani.my.id/blog/deploy-keycloak-kubernetes-sso</guid>
      <description>Deploy Keycloak on Kubernetes as a centralized identity provider for single sign-on, authentication, and application access management.</description>
      <pubDate>Sun, 11 May 2025 04:51:07 GMT</pubDate>
    </item>
    <item>
      <title>AWS Managed Prefix Lists for Reusable IP Allowlists</title>
      <link>https://riowiraldhani.my.id/blog/aws-managed-prefix-lists-ip-allowlists-security-groups</link>
      <guid isPermaLink="true">https://riowiraldhani.my.id/blog/aws-managed-prefix-lists-ip-allowlists-security-groups</guid>
      <description>Create reusable IP allowlists with AWS customer-managed prefix lists and apply them consistently across security groups and access controls.</description>
      <pubDate>Sun, 11 May 2025 04:21:48 GMT</pubDate>
    </item>
    <item>
      <title>How to Create an Amazon EKS Cluster with Managed Node Groups</title>
      <link>https://riowiraldhani.my.id/blog/amazon-eks-cluster-setup-managed-node-groups</link>
      <guid isPermaLink="true">https://riowiraldhani.my.id/blog/amazon-eks-cluster-setup-managed-node-groups</guid>
      <description>Create an Amazon EKS cluster, add managed worker nodes, configure kubectl access, and review the deployment workflow in this historical guide.</description>
      <pubDate>Sat, 11 Sep 2021 09:32:21 GMT</pubDate>
    </item>
    <item>
      <title>How to Manage Docker Containers with Portainer</title>
      <link>https://riowiraldhani.my.id/blog/portainer-docker-container-management</link>
      <guid isPermaLink="true">https://riowiraldhani.my.id/blog/portainer-docker-container-management</guid>
      <description>Install Portainer and use its web interface to manage Docker containers, images, networks, and volumes in this historical walkthrough.</description>
      <pubDate>Mon, 04 Jan 2021 14:12:15 GMT</pubDate>
    </item>
    <item>
      <title>How to Import an Existing Kubernetes Cluster into Rancher</title>
      <link>https://riowiraldhani.my.id/blog/import-existing-kubernetes-cluster-rancher</link>
      <guid isPermaLink="true">https://riowiraldhani.my.id/blog/import-existing-kubernetes-cluster-rancher</guid>
      <description>Import an existing Kubernetes cluster into Rancher and review its monitoring and cluster-management workflow in this historical guide.</description>
      <pubDate>Thu, 10 Dec 2020 06:47:05 GMT</pubDate>
    </item>
  </channel>
</rss>