安全特性

Pipeline 架构

文件写入经过完整安全 pipeline(顺序不可变):

明文 → ① 算 MD5(去重 key)→ ② gzip 压缩 → ③ AES-256-CTR 加密 → ④ 物理存储
读取:物理读 → 解密 → 解压 → 明文

压缩必须在加密前(密文高熵不可压缩)。MD5 基于明文不受影响。

AES-256-CTR 分块加密(W1-A12)

初始化

# 生成 32 字节随机 master_key(CSPRNG)并自动开启加密
docker exec uldisk-dev-uldisk-1 php think encryption:init

执行后自动设置:

  • encryption.master_key = base64(32 字节随机密钥)
  • encryption.enabled = 1

特性

特性 说明
算法 AES-256-CTR(流式,无 padding,密文长度 = 明文长度)
密钥模型 开源版:1 admin = 1 master_key(key_id 固定 0)
IV 语义 每 chunk_md5 独立 IV,同 chunk 复用 IV 保证物理去重一致
性能 AES-NI 硬件加速,约 3.5ms/4MB chunk
向后兼容 旧 chunk 保持明文(per-chunk encrypted 标志决定是否解密)

配置项

默认值 说明
encryption.enabled 0 全局开关(0=关闭,1=开启)
encryption.master_key base64 编码的 32 字节密钥

S3 SSE 联动

S3 PutObject 带 x-amz-server-side-encryption: AES256 头时,该对象强制加密(无视全局开关)。

aws --endpoint-url http://localhost:8002/s3 s3api put-object \
    --bucket mybucket --key secret.txt \
    --body secret.txt \
    --server-side-encryption AES256

gzip 分块压缩(W1-A13)

配置项

默认值 说明
compression.enabled 0 全局开关
compression.types 见下 content_type 白名单(JSON 数组)

默认白名单:

["text/*", "application/json", "application/xml", "application/csv", "application/javascript"]

特性

  • 仅压缩可压缩格式(text/json/xml/csv/js),已压缩格式(jpg/png/mp4/zip)自动跳过
  • gzip level 6(默认平衡档)
  • 与加密叠加:压缩 → 加密(pipeline 顺序)
  • compressed 标志与 chunk_md5 1:1 绑定,物理 chunk 全局共享同一份压缩+加密产物

content_filter 内容过滤(W1-A11)

配置方式

在存储位置的 config JSON 中设置 content_filter

{
    "content_filter": "image/*"
}

匹配规则

  • 使用 fnmatch 模式匹配(同 shell glob)
  • 支持 image/*(允许所有图片)、!application/zip(排除 zip)等模式
  • 路由阶段校验,不匹配的 content_type 跳过此 position
  • content_type 未知(null)时跳过(防鸡生蛋问题)

示例

过滤规则 效果
image/* 仅允许图片写入此位置
text/*,application/json 仅允许文本和 JSON
!application/zip,!application/x-rar-compressed 排除压缩文件

507 容量不足处理(E6)

所有 position 容量满 / 被过滤 / 禁用时,抛出 InsufficientStorageException

协议 HTTP 状态 映射
WebDAV 507 Insufficient Storage SabreDAV 异常
S3 503 Slow Down S3 无 507,用 503 近似
REST API 200 + code=1 项目 JSON 封装

IO 类失败(写入失败、副本竞争)仍走 RuntimeException,不在此异常语义内。

原文标题:安全特性

原文文档:uldisk

原文地址:/read/augushong/ul-disk/zh-cn/1.0.0/6a3e73c598601/6a3e73d846a8a.html

原文平台:奥宏文档

1.0.0