跳转到主要内容

PGSTY SILO 博客

  • SILO Console 2.4.1 发布

    发布于 发布注记

    ReleaseConsole

    Featured Image for SILO Console 2.4.1 发布

    SILO Console v2.4.1 于 2026 年 9 月 16 日发布,源码为 1360e26d976d。 本版接入 pkg v3.14.1 与 mcli 20260916,收紧匿名分享代理,支持多对象流式 ZIP 下载,并提供带签名和构建溯源的发布制品。 共享下载 #52 的修复将匿名代理限制为 配置的 S3 源站上的对象内容 GET 请求,拒绝重定向、系统路径和通过查询参数选择的非下载操作。 公开对象、预签名链接和指定版本下载继续可用。不需要新增一个关闭分享的环境变量。 感谢 …

    SILO Console v2.4.1 于 2026 年 9 月 16 日发布,源码为 1360e26d976d。 本版接入 pkg v3.14.1 与 mcli 20260916,收紧匿名分享代理,支持多对象流式 ZIP 下载,并提供带签名和构建溯源的发布制品。 共享下载 #52 的修复将匿名代理限制为 配置的 S3 源站上的对象内容 GET 请求,拒绝重定向、系统路径和通过查询参数选择的非下载操作。 公开对象、预签名链接和指定版本下载继续可用。不需要新增一个关闭分享的环境变量。 感谢 …

  • Go 1.27 TLS 默认值与 OIDC Discovery 故障形态

    发布于 设计

    设计TLSOIDC运维

    Featured Image for Go 1.27 TLS 默认值与 OIDC Discovery 故障形态

    SILO 工具链迁移到 Go 1.27 后,Server TLS 修复 48e184652 (“fix(tls): honor Go key exchange defaults across transports”)移除了显式曲线覆盖。本文记录 TLS 层的变化、issue #154 调查中形成的按阶段诊断方法,以及管理员在身份系统启动即失踪时需要的事实。 发布边界,截至 2026-09-16: Server 20260903 已使用 Go 1.27.1,但不包含 48e184652;后者是 …

    SILO 工具链迁移到 Go 1.27 后,Server TLS 修复 48e184652 (“fix(tls): honor Go key exchange defaults across transports”)移除了显式曲线覆盖。本文记录 TLS 层的变化、issue #154 调查中形成的按阶段诊断方法,以及管理员在身份系统启动即失踪时需要的事实。 发布边界,截至 2026-09-16: Server 20260903 已使用 Go 1.27.1,但不包含 48e184652;后者是 …

  • 请求头截止时间:绝对头部上限与滚动的正文空闲超时

    发布于 设计

    设计HTTPS3评审

    Featured Image for 请求头截止时间:绝对头部上限与滚动的正文空闲超时

    本文记录 Server HTTP 读取截止时间的修复,作为 PR #196 的一部分合入 main(修复 055030ea5)。 截至 2026-09-16: 修复在核验过的 main 40220bd836cb 上;不在已发布的 Server 20260903 中。 证据类别: 合成实验——直接 TCP 对照(头部限 100 ms、头部用 400 ms 完成,标准 Go 拒绝而旧 SILO 返回 204),以及真实单盘进程探针(flag 与环境变量两种入口都拒绝 400 ms 慢头,且健康请求继 …

    本文记录 Server HTTP 读取截止时间的修复,作为 PR #196 的一部分合入 main(修复 055030ea5)。 截至 2026-09-16: 修复在核验过的 main 40220bd836cb 上;不在已发布的 Server 20260903 中。 证据类别: 合成实验——直接 TCP 对照(头部限 100 ms、头部用 400 ms 完成,标准 Go 拒绝而旧 SILO 返回 204),以及真实单盘进程探针(flag 与环境变量两种入口都拒绝 400 ms 慢头,且健康请求继 …

  • 副本元数据归一化:可信复制不得重新注入什么

    发布于 设计

    设计复制S3评审

    Featured Image for 副本元数据归一化:可信复制不得重新注入什么

    本文记录可信复制接收端如何为副本恢复元数据的修复,合入 Server main 为 PR #194(修复 4fcdf37ce,合并为 9f3037e941)。 截至 2026-09-16: 修复在核验过的 main 40220bd836cb 上;不在已发布的 Server 20260903 中。 来源: 生产逻辑采纳 Mikhail Khadarenka 的 PR #187;合并后的改动保留其作者身份,并把范围收敛到经评审验证的边界。 证据类别: 针对真实单盘与 16 盘纠删后端的 64 叶 …

    本文记录可信复制接收端如何为副本恢复元数据的修复,合入 Server main 为 PR #194(修复 4fcdf37ce,合并为 9f3037e941)。 截至 2026-09-16: 修复在核验过的 main 40220bd836cb 上;不在已发布的 Server 20260903 中。 来源: 生产逻辑采纳 Mikhail Khadarenka 的 PR #187;合并后的改动保留其作者身份,并把范围收敛到经评审验证的边界。 证据类别: 针对真实单盘与 16 盘纠删后端的 64 叶 …

  • 复制标签排序:修订时间戳、墓碑与复活

    发布于 设计

    设计复制S3评审

    Featured Image for 复制标签排序:修订时间戳、墓碑与复活

    本文记录对象标签在复制中如何保序的两个缺陷的分析与修复,分别合入 Server main 为 PR #193(修复 03027727d)与 PR #196(修复 680eac66e)。 截至 2026-09-16: 两个修复均已在核验过的 main 40220bd836cb 上;不在已发布的 Server 20260903 中,请用链接的 PR 识别包含它们的构建。 交付边界: 仅源码级验收(回归测试 + R4–R8 集成运行,PR #196 的 11 项检查全部通过)。本记录不确立任何 …

    本文记录对象标签在复制中如何保序的两个缺陷的分析与修复,分别合入 Server main 为 PR #193(修复 03027727d)与 PR #196(修复 680eac66e)。 截至 2026-09-16: 两个修复均已在核验过的 main 40220bd836cb 上;不在已发布的 Server 20260903 中,请用链接的 PR 识别包含它们的构建。 交付边界: 仅源码级验收(回归测试 + R4–R8 集成运行,PR #196 的 11 项检查全部通过)。本记录不确立任何 …

  • mcli 20260916 发布

    发布于 发布注记

    Releasemcli

    Featured Image for mcli 20260916 发布

    版本: RELEASE.2026-09-16T00-00-00Z · 软件包: 20260916000000.0.0 · 源码: e952aa78f10a。 相对 20260913 的变化 接入 silo-pkg v3.14.1、上游 minio-go v7.3.1-0.20260915093545-32e1f32cb176 和 JWX v3.3.0。CopyObject 会重试并报告 HTTP 200 响应内嵌的 S3 错误,避免复制失败后授权 mv 删除源对象;JWX 正确转义输出 JSON …

    版本: RELEASE.2026-09-16T00-00-00Z · 软件包: 20260916000000.0.0 · 源码: e952aa78f10a。 相对 20260913 的变化 接入 silo-pkg v3.14.1、上游 minio-go v7.3.1-0.20260915093545-32e1f32cb176 和 JWX v3.3.0。CopyObject 会重试并报告 HTTP 200 响应内嵌的 S3 错误,避免复制失败后授权 mv 删除源对象;JWX 正确转义输出 JSON …

  • mcli 20260913 发布

    发布于 发布注记

    Releasemcli

    Featured Image for mcli 20260913 发布

    版本: RELEASE.2026-09-13T00-00-00Z · 软件包: 20260913000000.0.0 · 源码: 4f609a4d。 相对 20260903 的变化 mirror --remove --watch 保留目标端历史版本。 服务重启的 dry run 只显示计划,不执行重启;明确非交互环境行为。 传输与 S3 Select 出错时返回失败;空上传遵守显式校验和参数;quiet 模式下仍输出 pipe JSON。 布尔环境变量接受 on/off,修复跨平台 …

    版本: RELEASE.2026-09-13T00-00-00Z · 软件包: 20260913000000.0.0 · 源码: 4f609a4d。 相对 20260903 的变化 mirror --remove --watch 保留目标端历史版本。 服务重启的 dry run 只显示计划,不执行重启;明确非交互环境行为。 传输与 S3 Select 出错时返回失败;空上传遵守显式校验和参数;quiet 模式下仍输出 pipe JSON。 布尔环境变量接受 on/off,修复跨平台 …

  • silo-pkg 3.14.0 发布

    发布于 发布注记

    Releasepkg

    Featured Image for silo-pkg 3.14.0 发布

    v3.14.0 于 2026-09-13 发布, 源码为 827f8109。 消费者直接引用 github.com/pgsty/silo-pkg/v3。 密码策略迁移 本版改变授权语义。 公共方法 Policy.IsAllowedActions 默认报告 admin:ChangeMyPassword,除非被明确拒绝; admin:CreateUser 必须显式授权。配套 Server/Console 中,单独拒绝 CreateUser 不再锁定调用者自己的密码, 拒绝 …

    v3.14.0 于 2026-09-13 发布, 源码为 827f8109。 消费者直接引用 github.com/pgsty/silo-pkg/v3。 密码策略迁移 本版改变授权语义。 公共方法 Policy.IsAllowedActions 默认报告 admin:ChangeMyPassword,除非被明确拒绝; admin:CreateUser 必须显式授权。配套 Server/Console 中,单独拒绝 CreateUser 不再锁定调用者自己的密码, 拒绝 …

  • SN-2026-011:修复与发布状态

    发布于 安全编年史

    Securitysilo

    Featured Image for SN-2026-011:修复与发布状态

    截至 2026-09-13: SN-2026-011 已在 Server 主分支修复,起始提交为 123325430。 最新公开 Server RELEASE.2026-09-03T13-18-01Z 及此前公开版本仍受影响。 pkg v3.14.0、mcli 20260913 发布不代表已经发布修复版 Server。 持有签名 PUT 请求的一方可以添加未签名的 x-amz-copy-source,将获准写入变成对签名密钥有权读取的其他对象的复制。 如果目标允许匿名读取,被复制的私有内容可能因 …

    截至 2026-09-13: SN-2026-011 已在 Server 主分支修复,起始提交为 123325430。 最新公开 Server RELEASE.2026-09-03T13-18-01Z 及此前公开版本仍受影响。 pkg v3.14.0、mcli 20260913 发布不代表已经发布修复版 Server。 持有签名 PUT 请求的一方可以添加未签名的 x-amz-copy-source,将获准写入变成对签名密钥有权读取的其他对象的复制。 如果目标允许匿名读取,被复制的私有内容可能因 …

  • 桶配置复制:来源时间、删除与确定性收敛

    发布于 设计

    设计复制S3评审

    Featured Image for 桶配置复制:来源时间、删除与确定性收敛

    #77 是已复现的站点复制正确性问题。接收端把来源时间改成到达时间,可能拒绝真正较新的删除;部分配置删除后不再导出时间,断线期间遗漏的删除也无法被 heal 找回。单独补一个 DELETE 分支不能解决这两个问题。 合并状态(2026-09-12): 修复与研究归档已通过 PR #180 合入 main(48ec10312),#77 已关闭。合并前 9 项 CI 检查全部通过。 评审边界: 计划经过四轮 Claude Code Opus 5 Max 审查,最后两轮通过;实现完整审查、修正复审和最 …

    #77 是已复现的站点复制正确性问题。接收端把来源时间改成到达时间,可能拒绝真正较新的删除;部分配置删除后不再导出时间,断线期间遗漏的删除也无法被 heal 找回。单独补一个 DELETE 分支不能解决这两个问题。 合并状态(2026-09-12): 修复与研究归档已通过 PR #180 合入 main(48ec10312),#77 已关闭。合并前 9 项 CI 检查全部通过。 评审边界: 计划经过四轮 Claude Code Opus 5 Max 审查,最后两轮通过;实现完整审查、修正复审和最 …

  • 复制可靠性:删除完成、MRF 可见性与 resync 取消

    发布于 设计

    设计复制S3评审

    Featured Image for 复制可靠性:删除完成、MRF 可见性与 resync 取消

    本文记录 #153、#152、#137 的分析、方案取舍、评审与实施结论。三者属于同一组复制可靠性问题,但分别发生在操作分类、后台恢复可见性和任务生命周期上,不能靠一个统一的重试补丁解决。 截至 2026-09-09: PR #162 已合并为 d1105bbb,三个 issue 均已关闭。被测 PR head 的八项检查与合并后主干的 Go CI、VulnCheck 全部通过。 第二轮,2026-09-16: PR #196(修复 0c61128d2,验证记录 aea3882c9)修复了复制 …

    本文记录 #153、#152、#137 的分析、方案取舍、评审与实施结论。三者属于同一组复制可靠性问题,但分别发生在操作分类、后台恢复可见性和任务生命周期上,不能靠一个统一的重试补丁解决。 截至 2026-09-09: PR #162 已合并为 d1105bbb,三个 issue 均已关闭。被测 PR head 的八项检查与合并后主干的 Go CI、VulnCheck 全部通过。 第二轮,2026-09-16: PR #196(修复 0c61128d2,验证记录 aea3882c9)修复了复制 …

  • 未签名的 Header 不属于请求

    发布于 设计

    设计安全SigV4CopyObjectPresigned兼容性

    Featured Image for 未签名的 Header 不属于请求

    本文记录 SILO 的未签名头覆盖修复,核心提交为 123325430,已通过 PR #173 合并,台账编号 SN-2026-011。该问题由 Oren Yomtov 针对已发布版本报告,并在本地两条签名路径上均已复现。 2026-09-11 状态: 原始修复已推送,并通过 PR #173 合并。下文的后续签名与正文校验修复也已通过 PR #177 合并,8 项 PR 检查全部通过。源码验证与正式发布分别计数:当前已发布的 9 月 3 日 Server 版本尚未包含这些修复。 范围: …

    本文记录 SILO 的未签名头覆盖修复,核心提交为 123325430,已通过 PR #173 合并,台账编号 SN-2026-011。该问题由 Oren Yomtov 针对已发布版本报告,并在本地两条签名路径上均已复现。 2026-09-11 状态: 原始修复已推送,并通过 PR #173 合并。下文的后续签名与正文校验修复也已通过 PR #177 合并,8 项 PR 检查全部通过。源码验证与正式发布分别计数:当前已发布的 9 月 3 日 Server 版本尚未包含这些修复。 范围: …

  • SILO Console 2.4.0 发布

    发布于 发布注记

    ReleaseConsole

    Featured Image for SILO Console 2.4.0 发布

    v2.4.0 于 2026-09-08 发布, 源码为 c103d08e。 9 月 16 日更新: 当前版本为 Console v2.4.1。本篇保留 v2.4.0 的行为与依赖记录。 已发布行为 对象目录默认每页 100 条,可选 50、100、250、500、1000。每页只发一次 S3 continuation-token 请求;排序、筛选和选择作用于当前页,不扫描整个目录,没有无限制的“全部”模式。 版本删除绑定选定对象,目录删除限制在其前缀内。生命周期编辑保留独立动作和界面未暴露的字段 …

    v2.4.0 于 2026-09-08 发布, 源码为 c103d08e。 9 月 16 日更新: 当前版本为 Console v2.4.1。本篇保留 v2.4.0 的行为与依赖记录。 已发布行为 对象目录默认每页 100 条,可选 50、100、250、500、1000。每页只发一次 S3 continuation-token 请求;排序、筛选和选择作用于当前页,不扫描整个目录,没有无限制的“全部”模式。 版本删除绑定选定对象,目录删除限制在其前缀内。生命周期编辑保留独立动作和界面未暴露的字段 …

  • mcli 20260903 正式发布

    发布于 发布注记

    发布mcli

    Featured Image for mcli 20260903 正式发布

    发布日期: 2026-09-03 · 版本: RELEASE.2026-09-03T07-13-05Z · 源码: a2ef95c0 距离 mcli 20260806 二十八天,本次发布汇总了客户端此后积累的全部变更。工具链升级到 Go 1.27.1,共享依赖栈与 SILO 家族对齐,silo-pkg 以自有模块路径导入,go.mod 如实描述二进制的构建来源。fork 以来第一个真正的新命令 —— mcli checksum verify —— 到来了,它对端点实际返回的字节只读地核验存储的 …

    发布日期: 2026-09-03 · 版本: RELEASE.2026-09-03T07-13-05Z · 源码: a2ef95c0 距离 mcli 20260806 二十八天,本次发布汇总了客户端此后积累的全部变更。工具链升级到 Go 1.27.1,共享依赖栈与 SILO 家族对齐,silo-pkg 以自有模块路径导入,go.mod 如实描述二进制的构建来源。fork 以来第一个真正的新命令 —— mcli checksum verify —— 到来了,它对端点实际返回的字节只读地核验存储的 …

  • Silo 20260903 正式发布

    发布于 发布注记

    Releasesilo

    Featured Image for Silo 20260903 正式发布

    2026-09-13 状态: 这仍是最新已发布 Server,发布依赖未改变。后续安全、存储与依赖修复目前在 main,包括尚未发布的 SN-2026-011 修复。独立 mcli/pkg 的新版不替换本制品内容;见组件矩阵。 版本日期: 2026-09-03 · 正式发布: 2026-09-04 · 版本: RELEASE.2026-09-03T13-18-01Z · 上一版本: RELEASE.2026-08-06T00-00-00Z SILO 20260903 是首个完整使用 Silo …

    2026-09-13 状态: 这仍是最新已发布 Server,发布依赖未改变。后续安全、存储与依赖修复目前在 main,包括尚未发布的 SN-2026-011 修复。独立 mcli/pkg 的新版不替换本制品内容;见组件矩阵。 版本日期: 2026-09-03 · 正式发布: 2026-09-04 · 版本: RELEASE.2026-09-03T13-18-01Z · 上一版本: RELEASE.2026-08-06T00-00-00Z SILO 20260903 是首个完整使用 Silo …

  • SILO Server 20260903 发布前复审

    发布于 设计

    DesignReviewSecurityCompatibilityRelease

    Featured Image for SILO Server 20260903 发布前复审

    这是 SILO 20260903 背后的发布前长期工程记录:为什么不能直接接受早期“所有问题都已解决”的结论,独立复审发现了什么,修复如何收窄,以及复审时距离生产发布还差哪些门禁。链接的发布说明记录了之后的正式交付结果。 结论: 6e112d1856d4f3655f30fc81ee47e9f43d50d8f3 源码候选在代码层面可以 GO 到远端复审;生产发布仍是有条件 GO,必须等待远端 CI、Test Release、tag 与构件校验、签名、容器发布及公开 pull 验证完成。 基线: …

    这是 SILO 20260903 背后的发布前长期工程记录:为什么不能直接接受早期“所有问题都已解决”的结论,独立复审发现了什么,修复如何收窄,以及复审时距离生产发布还差哪些门禁。链接的发布说明记录了之后的正式交付结果。 结论: 6e112d1856d4f3655f30fc81ee47e9f43d50d8f3 源码候选在代码层面可以 GO 到远端复审;生产发布仍是有条件 GO,必须等待远端 CI、Test Release、tag 与构件校验、签名、容器发布及公开 pull 验证完成。 基线: …

  • SILO 20260903 安全说明:SN-2026-006 至 010

    发布于 安全编年史

    安全S3SSE-CReplicationIAM

    Featured Image for SILO 20260903 安全说明:SN-2026-006 至 010

    已随 SILO 20260903 发布。 这些修复属于 RELEASE.2026-09-03T13-18-01Z。从 20260806 到 20260903 的完整升级边界、组件、验证证据与已知延期见完整发布说明。 本公告汇总 SILO Server 最终复审发现的五个相关安全问题,覆盖客户提供的加密密钥、客户端可控复制 header、管理状态变更与显式对象版本删除。 SN-2026-006 至 SN-2026-010 是分叉内部的 security-note 编号,不是 CVE,也没有登记到 …

    已随 SILO 20260903 发布。 这些修复属于 RELEASE.2026-09-03T13-18-01Z。从 20260806 到 20260903 的完整升级边界、组件、验证证据与已知延期见完整发布说明。 本公告汇总 SILO Server 最终复审发现的五个相关安全问题,覆盖客户提供的加密密钥、客户端可控复制 header、管理状态变更与显式对象版本删除。 SN-2026-006 至 SN-2026-010 是分叉内部的 security-note 编号,不是 CVE,也没有登记到 …

  • 显式版本删除现在要求 DeleteObjectVersion

    发布于 发布注记

    发布安全IAMS3兼容性

    Featured Image for 显式版本删除现在要求 DeleteObjectVersion

    发布状态: 此变更已在 pgsty/silo#104 中实现,对应 Issue #58。本文发布本身不代表 某个服务器版本、软件包、镜像或部署已经包含该变更。 SILO 现在按照请求实际执行的删除类型选择权限: 请求 所需权限 未携带 versionId s3:DeleteObject 版本 UUID s3:DeleteObjectVersion 显式 versionId=null s3:DeleteObjectVersion DeleteObjects 对每个 XML 条目独立应用映射 此前 …

    发布状态: 此变更已在 pgsty/silo#104 中实现,对应 Issue #58。本文发布本身不代表 某个服务器版本、软件包、镜像或部署已经包含该变更。 SILO 现在按照请求实际执行的删除类型选择权限: 请求 所需权限 未携带 versionId s3:DeleteObject 版本 UUID s3:DeleteObjectVersion 显式 versionId=null s3:DeleteObjectVersion DeleteObjects 对每个 XML 条目独立应用映射 此前 …

  • 鉴权前不做 I/O,Header 不授予权限

    发布于 设计

    设计安全CORSReplicationSSE-C兼容性

    Featured Image for 鉴权前不做 I/O,Header 不授予权限

    本文记录以 PR #101(938603458 至 04b097fd9)合并进 SILO 的 CORS 热路径与复制请求信任边界修复。 截至 2026-09-03 的状态: PR #101 已于 2026-09-01 合并进 main,并带四个后续提交:Snowball 逐条目信任隔离(ff44527a3)、Snowball worker 间保留请求默认值(ab3ae99ca)、复制有效性探针校验复制权限(c9ad74673)且合成 key 置于规则前缀下(5db7be4ee)。实现、定向与 …

    本文记录以 PR #101(938603458 至 04b097fd9)合并进 SILO 的 CORS 热路径与复制请求信任边界修复。 截至 2026-09-03 的状态: PR #101 已于 2026-09-01 合并进 main,并带四个后续提交:Snowball 逐条目信任隔离(ff44527a3)、Snowball worker 间保留请求默认值(ab3ae99ca)、复制有效性探针校验复制权限(c9ad74673)且合成 key 置于规则前缀下(5db7be4ee)。实现、定向与 …

  • SILO 应该修复 ListMultipartUploads 吗?Issue #79 兼容性设计评审

    发布于 设计

    设计S3兼容性分段上传

    Featured Image for SILO 应该修复 ListMultipartUploads 吗?Issue #79 兼容性设计评审

    这是 SILO Issue #79 的问题说明、设计分析与决策记录。 9 月 16 日实现与升级契约 PR #198 保留 mr javad seydi 的原始元数据与扫描实现,并追加维护者对 marker 消失、发现覆盖不足、取消确认和升级诊断的修复。发布前的兼容性修复将默认模式恢复为 legacy,严格模式仅通过进程环境显式启用。本节说明这些源码变更。Server 20260903 不包含此修复;源码实现也不代表生产性能与部署验收完成。 下方 8 月 30 日的分析保留为历史设计记录。 列表 …

    这是 SILO Issue #79 的问题说明、设计分析与决策记录。 9 月 16 日实现与升级契约 PR #198 保留 mr javad seydi 的原始元数据与扫描实现,并追加维护者对 marker 消失、发现覆盖不足、取消确认和升级诊断的修复。发布前的兼容性修复将默认模式恢复为 legacy,严格模式仅通过进程环境显式启用。本节说明这些源码变更。Server 20260903 不包含此修复;源码实现也不代表生产性能与部署验收完成。 下方 8 月 30 日的分析保留为历史设计记录。 列表 …