密钥安全与最小权限

用专用子账号,不要用主账号密钥

插件的 AccessKey 会写入数据库。如果用云厂商主账号 (阿里云 RAM 、腾讯云子账号体系之外) 的密钥,一旦数据库泄露,攻击者就能操作你账号下的所有资源。正确做法是为插件建一个只有目标桶权限的子账号。

阿里云 OSS 策略示例

在 RAM 访问控制新建用户 (如 wpsss-mysite),创建 AccessKey,然后挂一条自定义策略:

{
  "Version": "1",
  "Statement": [{
    "Effect": "Allow",
    "Action": [
      "oss:PutObject", "oss:GetObject", "oss:DeleteObject",
      "oss:GetObjectMeta", "oss:HeadObject",
      "oss:ListObjects", "oss:ListObjectsV2",
      "oss:GetBucketInfo", "oss:GetBucketLocation"
    ],
    "Resource": [
      "acs:oss:*:<你的UID>:<你的桶名>",
      "acs:oss:*:<你的UID>:<你的桶名>/*"
    ]
  }]
}

这套权限覆盖插件全部功能:上传、下载、删除、分片上传、桶间复制、体检。不需要的权限一个都不给。

ECS 服务器免密钥 (仅阿里云)

如果 WordPress 跑在阿里云 ECS 上,可以不填 AccessKey,改用 RAM 角色:在高级设置的 「凭证」 下拉选 「ECS 实例 RAM 角色」,并填 「RAM 角色名」,插件通过 ECS 元数据接口取临时密钥。临时密钥每小时轮换,比长期密钥更安全。注意安全组要放行 100.100.100.200(元数据服务) 。

密钥的日常管理

  • 设置页里已保存的密钥显示为 「已保存」,留空保存时保持不变——换密钥时填新值,不用重填旧的。
  • 导出设置 JSON 不包含密钥;换站迁移时密钥要重新填。
  • 怀疑泄露就立刻在云控制台禁用该 AccessKey,插件侧换新的。