认证与密钥
七彩云对象存储的 S3 接入通过 AccessKey + SecretKey 完成认证。相关密钥可在控制台生成。
密钥管理本身就是安全边界的一部分。接口能调通,不代表当前做法适合正式环境。
基本概念
AccessKey
AccessKey 用于标识你的访问身份,可以理解为“公开的账号标识”。
SecretKey
SecretKey 用于请求签名与身份校验,可以理解为“必须保密的密码”。
两者通常配合使用,缺一不可。

图示说明:这是 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. 前端偶发失败
如果前端直接持有长期密钥,往往会带来:
- 密钥泄露风险
- 难以限制调用范围
- 出问题后无法快速止损
这类场景建议改为服务端签发。