跳到主要内容

认证与密钥

七彩云对象存储的 S3 接入通过 AccessKey + SecretKey 完成认证。相关密钥可在控制台生成。

密钥管理本身就是安全边界的一部分。接口能调通,不代表当前做法适合正式环境。

基本概念

AccessKey

AccessKey 用于标识你的访问身份,可以理解为“公开的账号标识”。

SecretKey

SecretKey 用于请求签名与身份校验,可以理解为“必须保密的密码”。

两者通常配合使用,缺一不可。

Access Keys 页面示意

图示说明:这是 Access Keys 相关页面示意。开发接入时,先确认当前账号下已有可用的 AccessKey / SecretKey。

平台接入基础参数

  • Endpoint:https://s3.7caiyun.com
  • Region:us-west
  • 认证方式:AccessKey + SecretKey

推荐的密钥管理方式

服务端持有密钥

如果你的业务需要上传、下载、删除文件,或者生成签名链接,建议由服务端持有密钥并完成这些操作。

这样做的好处是:

  • 密钥不暴露给浏览器或客户端
  • 更容易做权限控制
  • 更方便记录日志和审计

前端不要直接暴露密钥

不要把 AccessKey / SecretKey 直接写在以下位置:

  • 浏览器前端代码
  • 小程序前端代码
  • 移动端可逆向包体
  • 公开代码仓库
  • 页面内联脚本

如果前端确实需要直接上传,请优先设计为:

  • 服务端签发临时凭证或签名参数
  • 服务端生成预签名上传链接
  • 前端只拿到短期可用的受限授权

环境隔离建议

建议至少区分:

  • 测试环境密钥
  • 生产环境密钥

不要多个环境混用同一套密钥,否则出现问题时很难排查,也不利于权限收敛。

安全建议

  • 不要把 SecretKey 发到群里或工单里
  • 不要把密钥写进前端配置文件
  • 不要把密钥提交到 Git 仓库
  • 怀疑泄露时立即更换密钥
  • 定期清理不再使用的测试密钥
  • 如果有多人协作,尽量不要长期共用同一套密钥

推荐的环境变量方式

export S3_ENDPOINT="https://s3.7caiyun.com"
export S3_REGION="us-west"
export S3_ACCESS_KEY="<your-access-key>"
export S3_SECRET_KEY="<your-secret-key>"

程序通过环境变量读取,而不是在源码中写死:

const endpoint = process.env.S3_ENDPOINT;
const region = process.env.S3_REGION;
const accessKeyId = process.env.S3_ACCESS_KEY;
const secretAccessKey = process.env.S3_SECRET_KEY;

常见错误

1. 签名错误

可能原因:

  • AccessKey / SecretKey 填错
  • Region 没有使用 us-west
  • Endpoint 没有使用 https://s3.7caiyun.com
  • 本地系统时间偏差过大
  • 请求方式与 SDK 配置不匹配

2. 能连上但权限不足

可能原因:

  • 当前密钥没有目标 Bucket 的操作权限
  • Bucket 是私有的,但代码按公有逻辑访问
  • 上传、下载、列举对象使用了不同账号或环境

3. 前端偶发失败

如果前端直接持有长期密钥,往往会带来:

  • 密钥泄露风险
  • 难以限制调用范围
  • 出问题后无法快速止损

这类场景建议改为服务端签发。

相关页面