<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>KES on SILO</title>
    <link>https://silo.pgsty.com/tags/kes/</link>
    <description>Recent content in KES on SILO</description>
    <generator>Hugo</generator>
    <language>en</language>
    
    
    
      <lastBuildDate>Sat, 24 Oct 2026 18:19:49 +0800</lastBuildDate>
    
    
      <atom:link href="https://silo.pgsty.com/tags/kes/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
        <title>SILO, KES and OpenBao: Key Ownership and Recovery</title>
        <link>https://silo.pgsty.com/blog/design/kes-openbao/</link>
        <pubDate>Sun, 18 Oct 2026 00:00:00 +0000</pubDate>
        
        <guid>https://silo.pgsty.com/blog/design/kes-openbao/</guid>
        <description>&lt;p&gt;SILO integrates with external key-management systems through &lt;a href=&#34;https://github.com/pgsty/kes&#34;&gt;PGSTY KES&lt;/a&gt; (&lt;code&gt;MINIO_KMS_KES_ENDPOINT&lt;/code&gt;). &lt;a href=&#34;https://silo.pgsty.com/blog/release/kes-20261018/&#34;&gt;PGSTY KES 20261018&lt;/a&gt; (source &lt;a href=&#34;https://github.com/pgsty/kes/commit/2f7e741db905d7ea755967b29666657d819d7ad0&#34;&gt;&lt;code&gt;2f7e741db905&lt;/code&gt;&lt;/a&gt;) is deployed independently of the four-component SILO build graph and migrates the KES AWS Secrets Manager backend to AWS SDK for Go v2 while preserving existing SILO/KES key formats and OpenBao KV v2 compatibility.&lt;/p&gt;&#xA;&lt;h2 id=&#34;architecture&#34;&gt;Three services, three responsibilities&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Service&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Owns&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Calls&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;SILO&lt;/td&gt;&#xA;      &lt;td&gt;Object bytes and object encryption metadata; encrypts/decrypts object contents&lt;/td&gt;&#xA;      &lt;td&gt;KES over HTTPS (mTLS) to generate/decrypt data keys&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;PGSTY KES&lt;/td&gt;&#xA;      &lt;td&gt;Application identities, key-access policies, and the key API; wraps/unwraps data keys&lt;/td&gt;&#xA;      &lt;td&gt;OpenBao KV v2 to store/retrieve root keys&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;OpenBao&lt;/td&gt;&#xA;      &lt;td&gt;Persistent KES root-key records, backend access control, and its own recovery material&lt;/td&gt;&#xA;      &lt;td&gt;Its configured storage backend&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-665f8840-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;text&#34; data-td-line-count=&#34;3&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-665f8840-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+-------------+       mTLS (KES API)       +-------------+    AppRole / TLS    +--------------------+&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;| SILO Server | -------------------------&amp;gt; |  PGSTY KES  | ------------------&amp;gt; | OpenBao (KV v1/v2) |&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+-------------+  MINIO_KMS_KES_ENDPOINT    +-------------+   keystore.vault    +--------------------+&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;&lt;code&gt;MINIO_KMS_KES_ENDPOINT&lt;/code&gt; must point to the &lt;strong&gt;KES endpoint&lt;/strong&gt; because OpenBao does not implement the KES key-wrapping API. KES accesses OpenBao through its &lt;code&gt;keystore.vault&lt;/code&gt; driver (&lt;code&gt;version: v2&lt;/code&gt; for OpenBao KV v2 mounts). The same &lt;code&gt;kes&lt;/code&gt; executable provides both the server and the administration CLI, and multiple stateless KES instances can share a single OpenBao backend.&lt;/p&gt;</description>
      </item>
    <item>
        <title>PGSTY KES 20261018 Released</title>
        <link>https://silo.pgsty.com/blog/release/kes-20261018/</link>
        <pubDate>Sun, 18 Oct 2026 00:57:52 +0800</pubDate>
        
        <guid>https://silo.pgsty.com/blog/release/kes-20261018/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Release:&lt;/strong&gt; &lt;a href=&#34;https://github.com/pgsty/kes/releases/tag/RELEASE.2026-10-18T00-00-00Z&#34;&gt;RELEASE.2026-10-18T00-00-00Z&lt;/a&gt; · &lt;strong&gt;Package:&lt;/strong&gt; &lt;code&gt;20261018000000.0.0&lt;/code&gt; · &lt;strong&gt;Source:&lt;/strong&gt; &lt;a href=&#34;https://github.com/pgsty/kes/commit/2f7e741db905d7ea755967b29666657d819d7ad0&#34;&gt;&lt;code&gt;2f7e741db905&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;This is the first maintained PGSTY release of the Key Encryption Service (KES). &lt;strong&gt;KES is a standalone stateless service&lt;/strong&gt; for SILO deployments that require external KMS-backed server-side encryption (see the &lt;a href=&#34;https://silo.pgsty.com/compatibility/versions/&#34;&gt;component matrix&lt;/a&gt;).&lt;/p&gt;&#xA;&lt;h2 id=&#34;changes&#34;&gt;Changes&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Establish PGSTY maintenance and release pipelines while preserving upstream copyright, attribution, and third-party licenses. The executable and system packages remain &lt;code&gt;kes&lt;/code&gt;, and the Go module path remains &lt;code&gt;github.com/minio/kes&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Build with &lt;strong&gt;Go 1.27.2&lt;/strong&gt;, refresh dependencies, and migrate the AWS Secrets Manager backend from the deprecated AWS SDK for Go v1 to &lt;strong&gt;AWS SDK for Go v2&lt;/strong&gt;. Preserve YAML configuration fields, explicit credential precedence, custom endpoints, and stored key formats (continuing to ignore &lt;code&gt;~/.aws/config&lt;/code&gt; and SDK endpoint environment overrides).&lt;/li&gt;&#xA;&lt;li&gt;Preserve the KES HTTP API, &lt;code&gt;MINIO_KMS_KES_*&lt;/code&gt; configuration settings, existing root keys, and encrypted objects so existing SILO + KES deployments can upgrade in place without key migration.&lt;/li&gt;&#xA;&lt;li&gt;Add upgrade, rollback, and restart integration suites pairing SILO with OpenBao KV v2 and the Moto Secrets Manager emulator, restarting SILO at each version transition so in-memory key caches cannot mask compatibility regressions.&lt;/li&gt;&#xA;&lt;li&gt;Ship signed Git tags, GitHub build provenance attestations, GPG-signed RPMs, and non-root container images, with the built-in &lt;code&gt;kes update&lt;/code&gt; self-updater disabled.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;upgrade&#34;&gt;Deployment and upgrade&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;In a server-side encryption deployment, SILO encrypts object contents, KES authenticates mTLS client requests and wraps or unwraps data encryption keys (DEKs), and OpenBao persists the root key encryption keys (KEKs). Point &lt;code&gt;MINIO_KMS_KES_ENDPOINT&lt;/code&gt; at &lt;strong&gt;KES&lt;/strong&gt;, not OpenBao (see the &lt;a href=&#34;https://silo.pgsty.com/blog/design/kes-openbao/&#34;&gt;KES and OpenBao design note&lt;/a&gt; for architecture boundaries and recovery requirements).&lt;/p&gt;</description>
      </item>
    
  </channel>
</rss>
