阿里云 OSS 注册与配置(从零开通到可用 AK/SK)标准流程文档

阿里云 OSS 注册与配置(从零开通到可用 AK/SK)标准流程文档

目标:完成 OSS 服务开通 → 创建 Bucket → 创建 RAM 用户 → 获取 AK/SK → 授权访问 OSS ,让后端(Java/其他语言)能正常访问 Bucket。

适用对象:第一次使用阿里云 OSS 的个人/团队账号。


目录

    1. 准备:账号与实名
    1. 开通 OSS 服务
    1. 创建 Bucket(存储空间)
    1. 创建 RAM 用户并获取 AK/SK(AccessKey)
    1. 给 RAM 用户授权 OSS 权限(关键)
    1. 验证配置是否正确(最小验证法)
    1. 常见错误与对照排查
    1. 安全建议(必读)
  • 附录 A:最小权限策略模板示例

1. 准备:账号与实名

  1. 注册阿里云账号(手机号/邮箱均可)。
  2. 完成实名认证:
    • 个人实名认证或企业实名认证均可。
  3. 充值/开通支付方式(OSS 会按量计费)。

备注:未实名通常无法完整使用云产品,或权限受限。


2. 开通 OSS 服务

  1. 登录阿里云控制台。
  2. 在产品与服务中找到 对象存储 OSS
  3. 首次进入会提示开通服务,按引导完成开通。

开通完成后,你将可以进行 Bucket 创建、权限管理等操作。


3. 创建 Bucket(存储空间)

3.1 创建入口

  • 控制台 → 对象存储 OSS → Bucket 列表创建 Bucket

3.2 创建时必须确认的字段

  1. Bucket 名称

    • 全局唯一(整个阿里云范围内不能重复)
    • 只能使用小写字母、数字、短横线 -
    • 建议:项目名-环境-用途,例如:java-zzyl-elias
  2. 地域(Region)

    • 例如:华北2(北京)、华东1(杭州)等
    • 选择建议:
      • 服务端部署在哪个地域,Bucket 尽量同地域,延迟低、流量成本低
    • 后续 Java 配置会用到地域对应的 Endpoint
  3. 存储类型

    • 标准存储(常用默认)
    • 低频/归档等按需选择
  4. 读写权限(ACL)

    • 推荐:私有(Private)
    • 公共读/公共读写仅在明确需要且做好安全措施时使用

创建成功后,记录以下信息:

  • bucketName:Bucket 名称
  • region:地域(例如北京)
  • endpoint:地域 Endpoint(后续 SDK 配置用)

4. 创建 RAM 用户并获取 AK/SK(AccessKey)

目的:不要用主账号长期在代码里放 AK,推荐用 RAM 子账号 + 最小权限。

4.1 创建 RAM 用户

  1. 控制台 → 访问控制 RAM
  2. 用户 → 创建用户
  3. 填写:
    • 登录名/显示名:自定义
  4. 勾选 OpenAPI 调用访问 (非常关键)
    • 这会让你能创建 AccessKey(AK/SK)

4.2 创建 AccessKey(AK/SK)

  1. 进入刚创建的 RAM 用户详情
  2. 访问方式/认证管理中找到 AccessKey
  3. 点击创建 AccessKey
  4. 保存好:
    • AccessKeyId(AK)
    • AccessKeySecret(SK)

注意:SK 通常只在创建时显示一次,务必保存。丢失只能重新生成并替换。


5. 给 RAM 用户授权 OSS 权限(关键)

如果没有授权,会出现典型报错:

  • AccessDenied
  • The bucket you access does not belong to you
  • 或访问某些 API 被隐式拒绝(ImplicitDeny)

5.1 授权入口

  1. RAM 控制台 → 用户
  2. 选择你的 RAM 用户
  3. 点击 添加权限

5.2 权限选择方式(两种)

方式 A:直接使用系统策略(简单)

适合快速验证或学习环境:

  • AliyunOSSFullAccess:OSS 全权限(不建议生产长期使用)
方式 B:自定义最小权限策略(推荐)

适合生产环境:只允许访问某个 bucket 的某些动作(Put/Get/Delete 等)。

做法:

  1. RAM 控制台 → 权限管理 → 策略 → 创建策略(JSON)
  2. 写入最小策略(示例见附录 A)
  3. 将策略授权给该 RAM 用户

6. 验证配置是否正确(最小验证法)

验证目标:确认 AK/SK + endpoint + bucketName + 权限 正确。

6.1 必须确认的三件事

  1. endpoint 与 bucket 地域一致

    • 例如 bucket 在北京:endpoint 必须是 oss-cn-beijing.aliyuncs.com
  2. bucketName 必须是纯 bucket 名

    • 正确:java-zzyl-elias
    • 错误:java-zzyl-elias,改了的啊(多了逗号/注释会导致访问不存在/访问别人 bucket)
  3. RAM 用户确实对该 bucket 有权限

    • 至少要具备你要调用的动作权限(PutObject/GetObject 等)

6.2 典型验证方式(任选其一)

  • 使用 OSS 控制台手动上传文件(验证 bucket 可用)
  • 使用 OSS Browser(官方工具)用 AK/SK 登录并上传
  • 后端写最小测试:列 bucket、上传一个小文件(需要你项目 SDK 支持)

7. 常见错误与对照排查

7.1 Access key id should not be null or empty

含义:程序运行时 没有拿到 AK。常见原因:

  • 配置没加载(YAML 前缀不对、未绑定、环境变量没设置)
  • AK 写错字段名(accessKeyId 为空)
  • 使用了环境变量凭证提供器,但系统环境变量没配

排查:打印(脱敏)配置是否为空;确认运行配置里环境变量是否设置。


7.2 The bucket you access does not belong to you

含义:访问的 bucket 不属于当前 AK 所属账号或未被授权。常见原因:

  • bucketName 写错(多了字符/注释/空格)
  • 使用了另一个账号的 AK
  • RAM 策略没有授权访问该 bucket(隐式拒绝)

7.3 AccessDenied / ImplicitDeny

含义:权限不足。处理方式:

  • 给 RAM 用户补充策略权限
  • 确认策略的 Resource 指向正确 bucket
  • 确认 Action 包含你调用的 API(例如 oss:GetBucketAcloss:PutObject

8. 安全

  1. 不要把 AK/SK 明文写进 Git 仓库
  2. 最小权限原则
    • 只给必要 Action
    • 只允许访问指定 bucket
  3. 定期轮换 AK
  4. 生产环境推荐 STS 临时凭证
  5. 泄露处理
    • 立即禁用/删除该 AccessKey
    • 生成新 Key 并替换应用配置

附录 A:最小权限策略模板示例

场景:允许某 RAM 用户对指定 bucket 做上传/下载/删除(只对 bucket 内对象生效)。

将下面 JSON 中的 java-zzyl-elias 替换为你的 bucket 名称:

json 复制代码
{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "oss:PutObject",
        "oss:GetObject",
        "oss:DeleteObject",
        "oss:ListObjects"
      ],
      "Resource": [
        "acs:oss:*:*:java-zzyl-elias",
        "acs:oss:*:*:java-zzyl-elias/*"
      ]
    }
  ]
}

说明:

这个"java-zzyl-elias"是我自己去的bucket名称

  • acs:oss:*:*:bucketName/* 表示 bucket 下所有对象
  • 如需更严格,可把 /* 细化到某个前缀目录,例如 java-zzyl-elias/upload/*
相关推荐
小北方城市网5 小时前
Redis 分布式锁高可用实现:从原理到生产级落地
java·前端·javascript·spring boot·redis·分布式·wpf
六义义6 小时前
java基础十二
java·数据结构·算法
ʚB҉L҉A҉C҉K҉.҉基҉德҉^҉大6 小时前
自动化机器学习(AutoML)库TPOT使用指南
jvm·数据库·python
哈__6 小时前
多模融合 一体替代:金仓数据库 KingbaseES 重构企业级统一数据基座
数据库·重构
老邓计算机毕设6 小时前
SSM医院病人信息管理系统e7f6b(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·医院信息化·ssm 框架·病人信息管理
毕设源码-钟学长6 小时前
【开题答辩全过程】以 基于SpringBoot的智能书城推荐系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
2601_949613027 小时前
flutter_for_openharmony家庭药箱管理app实战+药品分类实现
大数据·数据库·flutter
笨手笨脚の7 小时前
深入理解 Java 虚拟机-03 垃圾收集
java·jvm·垃圾回收·标记清除·标记复制·标记整理
莫问前路漫漫7 小时前
WinMerge v2.16.41 中文绿色版深度解析:文件对比与合并的全能工具
java·开发语言·python·jdk·ai编程
九皇叔叔7 小时前
【03】SpringBoot3 MybatisPlus BaseMapper 源码分析
java·开发语言·mybatis·mybatis plus