<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Security-Policy on johanneskueber.com</title><link>https://johanneskueber.com/tags/security-policy/</link><description>Recent content in Security-Policy on johanneskueber.com</description><generator>Hugo</generator><language>en_US</language><lastBuildDate>Mon, 27 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://johanneskueber.com/tags/security-policy/index.xml" rel="self" type="application/rss+xml"/><item><title>Country-based access control with Envoy Gateway (and the TCP-listener trap)</title><link>https://johanneskueber.com/posts/2026-07-27-envoy-gateway-geoip-country-blocking/</link><pubDate>Mon, 27 Jul 2026 00:00:00 +0000</pubDate><guid>https://johanneskueber.com/posts/2026-07-27-envoy-gateway-geoip-country-blocking/</guid><description>&lt;p&gt;The goal was simple: everything on the public gateway should only answer requests originating from one country. Most of the self-hosted services behind it have no business being reachable from the other side of the planet, and a country allowlist at the edge cuts the background noise of credential-stuffing and vulnerability scanners down to almost nothing before a request ever reaches an application.&lt;/p&gt;
&lt;p&gt;Envoy Gateway can do this natively since v1.8 with the MaxMind GeoIP filter and an authorization &lt;code&gt;SecurityPolicy&lt;/code&gt;. The configuration is small. Getting it to actually apply, however, took a detour through a translator bug that freezes the entire control plane — so this article covers both the working configuration and the problems encountered on the way there.&lt;/p&gt;</description></item></channel></rss>