RAM账号权限管理最佳实践

更新时间:
复制 MD 格式

本文介绍如何使用阿里云 ROS 的公共模板,一键创建完整的多环境(开发、测试、生产)基础设施,并自动配置 RAM 用户、用户组、角色和权限策略,实现企业级账号权限管理。

方案概述

本方案使用阿里云资源编排服务(ROS)的公共模板,一键创建完整的多环境(开发、测试、生产)基础设施,并自动配置 RAM 用户、用户组、角色和权限策略,实现企业级账号权限管理。适用于需要按环境隔离资源、按职责分配权限的团队协作场景。

业务场景

某项目需要划分开发、测试、生产三套独立环境,不同团队成员(运维、开发、测试)只能访问各自环境的资源。本方案通过 ROS 自动化完成以下治理目标:

  • 资源隔离:三套环境使用独立的 VPC、ECS、RDS、OSS,通过资源组进行逻辑分组。

  • 权限分离:运维、开发、测试人员通过 RAM 用户组获得不同权限。

  • 安全访问:通过 RAM 角色和 STS 令牌实现临时授权,而非长期 AccessKey。

RAM 权限管理核心概念

概念

说明

本方案中的应用

RAM 用户

组织中需要访问云资源的人员或应用程序

创建 3 个 RAM 用户:sts_dev、sts_prod、sts_test。

用户组

将相同职责的 RAM 用户分组并统一授权

创建 6 个用户组:运维(sa)、开发(dev)、测试(test)、三种环境对应的程序用户组。

RAM 角色

颁发短时有效的 STS 访问令牌,比长期 AccessKey 更安全

创建 3 个角色,分别对应三环境的临时访问权限。

资源组

将不同环境的云资源逻辑分组,实现资源级别的访问控制

开发、测试、生产各一个资源组。

权限模型架构图

本方案的权限模型架构如下:

                    阿里云主账号
                        │
            ┌───────────┼───────────┐
            ↓           ↓           ↓
        运维用户组    开发用户组    测试用户组
         (sa)        (dev)       (test)
            │           │           │
            ↓           ↓           ↓
     ┌──────────┐ ┌──────────┐ ┌──────────┐
     │ 开发环境  │ │ 测试环境  │ │ 生产环境  │
     │ 资源组    │ │ 资源组    │ │ 资源组    │
     │          │ │          │ │          │
     │ VPC      │ │ VPC      │ │ VPC      │
     │ ECS      │ │ ECS      │ │ ECS      │
     │ OSS      │ │ OSS      │ │ OSS      │
     │ RDS      │ │          │ │          │
     └──────────┘ └──────────┘ └──────────┘
            ↑           ↑           ↑
        RAM角色      RAM角色      RAM角色
       (STS临时授权) (STS临时授权) (STS临时授权)

创建的资源清单

序号

资源名称

ROS 资源类型

数量

用途说明

1

专有网络 VPC

ALIYUN::ECS::VPC

3

开发、测试、生产各一个独立 VPC。

2

交换机 VSwitch

ALIYUN::ECS::VSwitch

3

三环境各一个交换机。

3

安全组

ALIYUN::ECS::SecurityGroup

3

三环境各一个安全组。

4

ECS 云服务器

ALIYUN::ECS::Instance

3

三环境各一台 ECS。

5

RDS MySQL 数据库

ALIYUN::RDS::DBInstance

1

数据库实例。

6

OSS 存储空间

ALIYUN::OSS::Bucket

5

开发、测试、生产、代码发布、其他共 5 个 Bucket。

7

RAM 用户组

ALIYUN::RAM::Group

6

运维、开发、测试 + 三环境程序用户组。

8

RAM 用户

ALIYUN::RAM::User

3

开发、测试、生产各一个 RAM 用户。

9

RAM 角色

ALIYUN::RAM::Role

3

三环境各一个 STS 临时授权角色。

部署完成后获得的结果

模板成功执行后,将获得以下资源与配置:

  • 三套独立的网络环境(开发、测试、生产各有独立 VPC、交换机、安全组和 ECS)。

  • 一个 RDS MySQL 数据库实例。

  • 五个 OSS 存储空间(开发、测试、生产、代码发布、其他)。

  • 六个 RAM 用户组(运维、开发、测试 + 三环境程序用户组)已配置相应权限策略。

  • 三个 RAM 用户(sts_dev、sts_prod、sts_test)已分配到对应用户组。

  • 三个 RAM 角色(用于 STS 临时授权)。

  • 资源栈输出中提供各环境的 AccessKey ID 和 AccessKey Secret。

image

前提条件

在使用本模板前,请确认以下条件:

  1. 账号权限:阿里云账号需要具有 ECS、VPC、RDS、OSS 和 RAM 产品的创建权限。

  2. 资源组准备:需提前为开发、测试、生产三个环境分别创建资源组,并获取对应的资源组 ID。创建资源组的操作可在创建资源组中完成。

部署环节

部署参数

资源组参数(需提前创建)

参数名

类型

说明

示例值

开发资源组 ID

String

开发环境资源所在的资源组 ID。

rg-aekzs3xmizs****

生产资源组 ID

String

生产环境资源所在的资源组 ID。

rg-aekzko7fsuj****

测试资源组 ID

String

测试环境资源所在的资源组 ID。

rg-aekzsvnra53****

VPC 网络参数

参数名

类型

说明

示例值

开发环境专有网络网段

String

开发环境 VPC 地址段。

172.16.0.0/12

生产环境专有网络网段

String

生产环境 VPC 地址段。

10.0.0.0/8

测试环境专有网络网段

String

测试环境 VPC 地址段。

192.168.0.0/16

交换机可用区

String

三环境共用的交换机可用区 ID。

华东 1 可用区 K

开发交换机网段

String

开发环境交换机子网段,必须为对应 VPC 的子网段。

172.16.10.0/24

生产交换机网段

String

生产环境交换机子网段,必须为对应 VPC 的子网段。

10.0.10.0/24

测试交换机网段

String

测试环境交换机子网段,必须为对应 VPC 的子网段。

192.168.10.0/24

ECS 参数

参数名

类型

说明

示例值

实例规格

String

ECS 实例规格(三环境共用)。

ecs.c5.large

镜像

String

ECS 操作系统镜像,默认使用 centos_7。

centos_7

系统盘类型

String

ECS 系统盘类型,支持 cloud_efficiency、cloud_ssd、cloud_essd、cloud、ephemeral_ssd。

cloud_efficiency

系统盘空间

Number

系统盘大小,取值范围为 40~500,单位为 GB。

40

实例密码

String

ECS 登录密码,长度为 8~30 个字符,需同时包含大写字母、小写字母、数字和特殊字符。

-

RDS 参数

参数名

类型

说明

示例值

类型与版本号

String

RDS 数据库类型和版本。

MySQL-5.7

实例规格

String

RDS 实例规格。

rds.mysql.s2.large

存储空间

Number

RDS 存储空间,取值范围为 5~1000,步长为 5 GB。

5

OSS 参数

参数名

类型

说明

示例值

读写权限

String

OSS 存储空间文件访问权限,支持 private(私有)、public-read(公共读)、public-read-write(公共读写)。

private

存储类型

String

OSS 存储空间文件存储类型,支持 Standard(标准)、IA(低频访问)、Archive(归档)。

Standard

开发存储空间名称

String

开发环境 OSS Bucket 名称。

ros-projects-dev

生产存储空间名称

String

生产环境 OSS Bucket 名称。

ros-projects-prod

测试存储空间名称

String

测试环境 OSS Bucket 名称。

ros-projects-test

代码发布空间名称

String

代码发布 OSS Bucket 名称。

ros-projects-code

其他存储空间名称

String

其他用途 OSS Bucket 名称。

ros-projects-other

发布存储空间发布目录

String

开发环境 OSS 存储目录。

release

发布存储空间生产目录

String

生产环境 OSS 存储目录。

prod

RAM 参数

参数名

类型

说明

示例值

运维用户组名称

String

运维团队的 RAM 用户组名称。

sa

开发用户组名称

String

开发团队的 RAM 用户组名称。

dev

测试用户组名称

String

测试团队的 RAM 用户组名称。

test

开发环境程序用户组名称

String

开发环境程序账号用户组。

app-dev

生产环境程序用户组名称

String

生产环境程序账号用户组。

app-prod

测试环境程序用户组名称

String

测试环境程序账号用户组。

app-test

开发权限用户名

String

开发账号 RAM 用户名称。

sts_dev

生产权限用户名

String

生产账号 RAM 用户名称。

sts_prod

测试权限用户名

String

测试账号 RAM 用户名称。

sts_test

部署方式

方式一:通过 ROS 公共模板部署(推荐)

  1. 登录资源编排控制台。

  2. 在左侧导航栏,选择模板 > 公共模板 > 解决方案模板。

  3. 在搜索框中输入 RAM 进行搜索,找到模板RAM账号权限管理。

  4. 单击创建资源栈。

  5. 在配置参数页面,输入资源栈名称,并按上述参数表填写。

  6. 单击下一步:检查并确认,然后单击创建。

  7. 在左侧导航栏,选择资源栈,在资源栈列表页面单击目标资源栈ID,在资源栈信息页签查看资源栈状态,等待状态变为CREATE_COMPLETE。

  8. 单击资源栈的输出页签,获取各环境的 AccessKey ID 和 AccessKey Secret。

方式二:通过 ROS IaC Code 部署

IaC Code 是面向云基础设施的 AI 基础设施即代码助手,可根据自然语言描述生成 ROS 模板并部署,使用方式参见IaC Code快速入门。

# Prompt
帮我搭建一个多环境权限管理体系,包含开发/测试/生产三套环境。
要求:
1. 三套独立的VPC网络(开发172.16.0.0/12、测试192.168.0.0/16、生产10.0.0.0/8)。
2. 三套环境各创建一台ECS实例。
3. 创建一个RDS MySQL 5.7数据库实例。
4. 创建5个OSS Bucket(开发/测试/生产/代码发布/其他)。
5. 创建6个RAM用户组:运维(sa)、开发(dev)、测试(test)、三环境程序用户组(app-dev/app-prod/app-test)。
6. 创建3个RAM用户(sts_dev/sts_prod/sts_test)并分配到对应用户组。
7. 创建3个RAM角色用于STS临时授权。
8. 资源栈输出各环境的AccessKey ID和AccessKey Secret。

部署后操作

验证权限配置

  1. 在资源栈输出页签获取各环境的 AccessKey。

  2. 使用开发环境的 AccessKey 验证权限隔离。

以下命令需要先安装阿里云 CLI。若您尚未安装,请先完成安装。具体操作请参见安装阿里云 CLI。
# 配置开发环境的AccessKey
aliyun configure --profile dev

# 验证:开发用户应能访问开发资源组的ECS
aliyun ecs DescribeInstances --RegionId cn-hangzhou

# 验证:开发用户只能查看到开发资源组的ECS资源

常见问题

OSS Bucket 创建失败,提示名称已存在

原因:OSS Bucket 名称全球唯一,示例名称可能已被其他用户占用。

解决方案:

  • 修改 OSS Bucket 名称,添加项目前缀或随机后缀,例如 myproject-dev-2024。

  • Bucket 名称规则:3~63 个字符,仅含小写字母、数字和短划线(-)。

RAM 用户创建后如何使用?

  1. 在资源栈输出页签获取各 RAM 用户的 AccessKey。

  2. RAM 用户可通过RAM 用户登录地址使用主账号 ID、用户名和密码登录控制台。

  3. 应用程序可使用 AccessKey 通过 SDK 或 CLI 访问对应环境的云资源。