<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Security</title><link>https://sourceforge.net/p/cordum/wiki/Security/</link><description>Recent changes to Security</description><atom:link href="https://sourceforge.net/p/cordum/wiki/Security/feed" rel="self"/><language>en</language><lastBuildDate>Fri, 30 Jan 2026 13:21:10 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/cordum/wiki/Security/feed" rel="self" type="application/rss+xml"/><item><title>Security modified by yaron Torgeman</title><link>https://sourceforge.net/p/cordum/wiki/Security/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v2
+++ v3
@@ -8,6 +8,7 @@
 - **API key required**: every request must include `X-API-Key` and `X-Tenant-ID`.
 - **Tenant enforcement**: empty tenant IDs are rejected.
 - **Fail-closed auth**: missing or invalid keys return 401.
+- **No insecure auth bypass**: `CORDUM_ALLOW_INSECURE_NO_AUTH=1` is dev-only and blocked in production.

 ## Production mode

@@ -44,4 +45,6 @@
 ## Client-side security

 The dashboard does not persist API keys in localStorage. Avoid embedding keys in
-`config.json` unless the UI is restricted to trusted operators.
+`config.json` unless the UI is restricted to trusted operators. If you do
+embed them, use `CORDUM_DASHBOARD_EMBED_API_KEY=1` and disable it in shared
+environments.
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">yaron Torgeman</dc:creator><pubDate>Fri, 30 Jan 2026 13:21:10 -0000</pubDate><guid>https://sourceforge.net6d017321d12ee94e12e0a05fa3a3d28be9442b2c</guid></item><item><title>Security modified by yaron Torgeman</title><link>https://sourceforge.net/p/cordum/wiki/Security/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">yaron Torgeman</dc:creator><pubDate>Fri, 30 Jan 2026 13:21:09 -0000</pubDate><guid>https://sourceforge.net441ed4c80e73d05964a8fe191a2c8f55435ce3cb</guid></item><item><title>Security modified by yaron Torgeman</title><link>https://sourceforge.net/p/cordum/wiki/Security/</link><description>&lt;div class="markdown_content"&gt;&lt;h1 id="h-security"&gt;Security&lt;/h1&gt;
&lt;p&gt;Cordum is designed for secure-by-default deployments. Use this checklist before&lt;br/&gt;
production.&lt;/p&gt;
&lt;h2 id="h-baseline-requirements"&gt;Baseline requirements&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;API key required&lt;/strong&gt;: every request must include &lt;code&gt;X-API-Key&lt;/code&gt; and &lt;code&gt;X-Tenant-ID&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tenant enforcement&lt;/strong&gt;: empty tenant IDs are rejected.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fail-closed auth&lt;/strong&gt;: missing or invalid keys return 401.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="h-production-mode"&gt;Production mode&lt;/h2&gt;
&lt;p&gt;Set &lt;code&gt;CORDUM_ENV=production&lt;/code&gt; (or &lt;code&gt;CORDUM_PRODUCTION=true&lt;/code&gt;) to enable strict&lt;br/&gt;
security checks. Production mode requires:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;TLS for HTTP and gRPC.&lt;/li&gt;
&lt;li&gt;TLS for Redis and NATS clients.&lt;/li&gt;
&lt;li&gt;A configured policy verification key.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="h-policy-signature-verification"&gt;Policy signature verification&lt;/h2&gt;
&lt;p&gt;Signed policies prevent tampering. Configure:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;SAFETY_POLICY_PUBLIC_KEY&lt;/code&gt; (base64 encoded)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SAFETY_POLICY_SIGNATURE&lt;/code&gt; or &lt;code&gt;SAFETY_POLICY_SIGNATURE_PATH&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If production mode is enabled and no public key is configured, the Safety Kernel&lt;br/&gt;
fails to start.&lt;/p&gt;
&lt;h2 id="h-metrics-exposure"&gt;Metrics exposure&lt;/h2&gt;
&lt;p&gt;Metrics endpoints bind to loopback in production by default. To expose them:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GATEWAY_METRICS_PUBLIC=1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SCHEDULER_METRICS_PUBLIC=1&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="h-key-management"&gt;Key management&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Rotate API keys regularly.&lt;/li&gt;
&lt;li&gt;Store secrets in a KMS or secret manager.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;CORDUM_API_KEYS_PATH&lt;/code&gt; for hot-reload without restarts.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="h-client-side-security"&gt;Client-side security&lt;/h2&gt;
&lt;p&gt;The dashboard does not persist API keys in localStorage. Avoid embedding keys in&lt;br/&gt;
&lt;code&gt;config.json&lt;/code&gt; unless the UI is restricted to trusted operators.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">yaron Torgeman</dc:creator><pubDate>Fri, 30 Jan 2026 13:21:08 -0000</pubDate><guid>https://sourceforge.net1bcea228f06014a0482a55b7668de48ba15e977e</guid></item></channel></rss>